Plugin-Config: ENV seedet nur fehlende Settings (fill-if-missing) + ensureWavelog #6

Merged
oe6dxd-automation merged 1 commits from feat/plugin-config-fill-if-missing into main 2026-10-25 22:18:47 +01:00

Problem

Plugin-Config „funktioniert, wird aber nicht angezeigt" / geht bei Deploy verloren.

  • ensureMicrohamSettings und ensureOpenWebRxBandmapSettings überschrieben in prod ihre Settings bei jedem Start aus ENV → UI-Änderungen gingen bei jedem Deploy/Neustart verloren.
  • rms.wavelog.cat hat kein ensure* und liest getSetting(key, ctx.env.WAVELOG_*). Steht die Config nur in ENV, wirkt sie (Fallback), ist aber nie in plugin-state → in der Admin-UI unsichtbar. Die UI zeigt nur runtime.pluginState.settings[pluginId] (server/index.js Z.6590 & 7154).

Fix — Modell „State gewinnt, ENV seedet"

  • ensureMicrohamSettings + ensureOpenWebRxBandmapSettings → fill-if-missing: ENV seedet ein Feld nur, wenn es in plugin-state fehlt; danach bleibt der gespeicherte/UI-Wert erhalten und überlebt Deploys.
  • Neues ensureWavelogSettings (fill-if-missing) seedet baseUrl/radioName/timeoutMs → sichtbar in der UI, UI-Edits persistent.
  • vswr.*/oauth ensure* waren bereits fill-if-missing → unverändert.
  • Secrets bewusst NICHT geseedet (SMTP-authPass, oauth-clientSecret, debug-remoteToken) → dürfen nicht in plugin-state.json/UI landen.

Tests (VM114, node v20)

  • node --check ✅
  • Logik-Harness (extrahiert die echten Funktionen): seedet aus ENV wenn leer; behält vorhandene Werte (microham audioChunkMs/device/EQ-Kette, bandmap csvPath, wavelog radioName) → kein Overwrite beim Deploy. 11/11 OK.

Zugehörig

Deploy-Repo-PR entfernt die per-Deploy-Löschung der Bandmap-Keys (deploy.yml), sonst würde Bandmap trotz Fix bei jedem Deploy re-geseedet. Reihenfolge: erst diesen PR mergen, dann den Deploy-Repo-PR (dessen Merge löst den Deploy aus, der beide Stände zieht).

🤖 Generated with Claude Code

## Problem Plugin-Config „funktioniert, wird aber nicht angezeigt" / geht bei Deploy verloren. - `ensureMicrohamSettings` und `ensureOpenWebRxBandmapSettings` **überschrieben** in prod ihre Settings bei **jedem Start aus ENV** → UI-Änderungen gingen bei jedem Deploy/Neustart verloren. - `rms.wavelog.cat` hat **kein** `ensure*` und liest `getSetting(key, ctx.env.WAVELOG_*)`. Steht die Config nur in ENV, wirkt sie (Fallback), ist aber nie in `plugin-state` → in der Admin-UI **unsichtbar**. Die UI zeigt nur `runtime.pluginState.settings[pluginId]` (server/index.js Z.6590 & 7154). ## Fix — Modell „State gewinnt, ENV seedet" - `ensureMicrohamSettings` + `ensureOpenWebRxBandmapSettings` → **fill-if-missing**: ENV seedet ein Feld nur, wenn es in plugin-state fehlt; danach bleibt der gespeicherte/UI-Wert erhalten und überlebt Deploys. - Neues **`ensureWavelogSettings`** (fill-if-missing) seedet `baseUrl`/`radioName`/`timeoutMs` → sichtbar in der UI, UI-Edits persistent. - `vswr.*`/`oauth` `ensure*` waren bereits fill-if-missing → unverändert. - **Secrets bewusst NICHT geseedet** (SMTP-`authPass`, oauth-`clientSecret`, debug-`remoteToken`) → dürfen nicht in `plugin-state.json`/UI landen. ## Tests (VM114, node v20) - `node --check` ✅ - Logik-Harness (extrahiert die echten Funktionen): seedet aus ENV wenn leer; **behält** vorhandene Werte (microham audioChunkMs/device/EQ-Kette, bandmap csvPath, wavelog radioName) → kein Overwrite beim Deploy. 11/11 OK. ## Zugehörig Deploy-Repo-PR entfernt die per-Deploy-Löschung der Bandmap-Keys (`deploy.yml`), sonst würde Bandmap trotz Fix bei jedem Deploy re-geseedet. **Reihenfolge:** erst diesen PR mergen, dann den Deploy-Repo-PR (dessen Merge löst den Deploy aus, der beide Stände zieht). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
oe6dxd-automation added 1 commit 2026-10-25 22:13:27 +01:00
Problem: In prod überschrieben ensureMicrohamSettings und
ensureOpenWebRxBandmapSettings ihre Plugin-Settings bei JEDEM Start aus
ENV → UI-Änderungen gingen bei Deploy/Neustart verloren. rms.wavelog.cat
hatte gar kein ensure* → seine (nicht-geheime) ENV-Config wirkte zwar via
getSetting-Fallback, war aber nie in plugin-state und damit in der Admin-UI
unsichtbar ("funktioniert, wird aber nicht angezeigt").

Fix (Modell: State gewinnt, ENV seedet):
- ensureMicrohamSettings + ensureOpenWebRxBandmapSettings auf fill-if-missing
  umgestellt: ENV seedet ein Feld nur, wenn es in plugin-state fehlt; danach
  bleibt der gespeicherte/UI-Wert erhalten und überlebt Deploys.
- Neues ensureWavelogSettings (fill-if-missing) seedet baseUrl/radioName/
  timeoutMs aus ENV → in der UI sichtbar, UI-Edits persistent.
- vswr-/oauth-ensure* waren bereits fill-if-missing (unverändert).
- Secret-Plugins (SMTP/oauth-Secrets/debug-Token) bewusst NICHT geseedet
  (dürfen nicht in plugin-state.json/UI landen).

Hinweis: Dazu gehört eine Deploy-Repo-Änderung (entfernt die per-Deploy-
Löschung der Bandmap-Keys in deploy.yml), sonst würde Bandmap weiter
re-geseedet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
oe6dxd-automation merged commit 49b1964a76 into main 2026-10-25 22:18:47 +01:00
oe6dxd-automation deleted branch feat/plugin-config-fill-if-missing 2026-10-25 22:18:47 +01:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ARCG/ARCG-Remote-Station-Software#6