Skip to content

fix(settings): gateway-failover slider reflects the persisted value - #187

Merged
CallMeTechie merged 1 commit into
masterfrom
fix/gateway-slider-render
Jun 25, 2026
Merged

CallMeTechie merged 1 commit into
masterfrom
fix/gateway-slider-render

Conversation

@CallMeTechie

Copy link
Copy Markdown
Owner

Fix: gateway-failover-Slider zeigt gespeicherten Wert (statt immer 90)

Beim Live-Spot-Check des Settings-Autosave-Audits gefunden (pre-existing, eigene Klasse — Render-Kontext, nicht Dirty-Check).

Symptom: Slider auf z. B. 120 setzen → PUT feuert + „Saved" → nach Reload steht er wieder auf 90. Entkoppelt bestätigt: api.put(120){ok:true}, Reload zeigt 90.

Root-Cause: Der gw-down-threshold-Slider ist das einzige server-gerenderte Settings-Feld (value="{{ settings.gateway_down_threshold_s or 90 }}"); alle anderen werden per JS-async-load*() befüllt. Aber res.locals.settings wird nirgends in den Seiten-Render injiziert → die Template-Variable settings ist undefiniert → der Slider rendert immer den or 90-Default.

Impact: Der Wert persistiert korrekt in die DB und wird von der Failover-Logik (gatewayHealth/rdpMonitor) genutzt — die UI spiegelt ihn aber nie wider, und ein erneutes Anfassen würde den echten DB-Wert mit 90 überschreiben (Datenverlust-Risiko).

Fix (Option A, minimal + sicher): Im Settings-Seiten-Route nur den einen benötigten Key injizieren — extraLocals.settings = { gateway_down_threshold_s: settings.get('gateway_down_threshold_s') } (kein getAll() → kein Secret-Exposure). Deckt alle 3 Themes ab (identisches Slider-Markup).

Test: tests/gateway_failover_render.test.js — PUT 150 → GET /settings → Slider rendert value="150" (vorher 90). Server-render via supertest, kein jsdom nötig.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Jrun6RoK7g75W5L8ZEpBzh

…e saved value

The gw-down-threshold slider is the only server-rendered settings value; the
'settings' template var was never injected into the page render, so the slider
always showed the hardcoded default 90 regardless of the persisted value (and a
subsequent slider touch would overwrite the real DB value with 90). Inject just
that one key (not getAll(), to avoid exposing secrets) for the settings page.
@CallMeTechie
CallMeTechie merged commit b3d2cba into master Jun 25, 2026
8 checks passed
@CallMeTechie
CallMeTechie deleted the fix/gateway-slider-render branch June 25, 2026 12:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant