Plugin-Config: ENV seedet nur fehlende Settings (fill-if-missing) + ensureWavelog #6
Reference in New Issue
Block a user
Delete Branch "feat/plugin-config-fill-if-missing"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Plugin-Config „funktioniert, wird aber nicht angezeigt" / geht bei Deploy verloren.
ensureMicrohamSettingsundensureOpenWebRxBandmapSettingsüberschrieben in prod ihre Settings bei jedem Start aus ENV → UI-Änderungen gingen bei jedem Deploy/Neustart verloren.rms.wavelog.cathat keinensure*und liestgetSetting(key, ctx.env.WAVELOG_*). Steht die Config nur in ENV, wirkt sie (Fallback), ist aber nie inplugin-state→ in der Admin-UI unsichtbar. Die UI zeigt nurruntime.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.ensureWavelogSettings(fill-if-missing) seedetbaseUrl/radioName/timeoutMs→ sichtbar in der UI, UI-Edits persistent.vswr.*/oauthensure*waren bereits fill-if-missing → unverändert.authPass, oauth-clientSecret, debug-remoteToken) → dürfen nicht inplugin-state.json/UI landen.Tests (VM114, node v20)
node --check✅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: 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>