mirror of
https://github.com/ALLFATHER-BV/wadamesh.git
synced 2026-09-27 15:48:07 +00:00
oumike. A firmware-wide appearance setting: Night stays the default and renders exactly as before, Day is a low-glare light palette with its own semantic roles for text, panels, fields, borders, controls, focus, charts, status colours and chat surfaces. Selecting a mode restarts, so every LVGL object is rebuilt from one coherent palette rather than half-repainted. There is a Night/Day selector in Settings, Display, the Control Center Theme chip is now a direct toggle whose sun/moon icon shows the active mode, and the standalone console UI has a matching Day palette. Main already carried the palette scaffolding for this, pinned to Night behind a comment saying it was waiting on this branch, so the merge mostly replaces those stubs with the real thing. The prefs schema needed care. The branch appended theme_mode as v54, but v54 and v55 were taken by boot_wifi_time/boot_wifi_open and loud_alerts before this merged, so the field moves to the tail behind them and the version becomes v56, with the trailing-field assert and the migration step moved to match. A packed struct read back at the wrong offsets is the failure this schema's asserts exist to prevent, so the invariants from both sides are kept rather than one replacing the other. That also surfaced a stale test: the v53 case asserted that v53 plus exactly two bytes was the whole struct, which stopped being true when loud_alerts landed and was not caught because the host test was not run then. It now counts every byte appended since and asserts the new fields come back at their defaults. The schema host tests pass. While there, the size comment said "about 500 bytes"; the struct is 114. Built on all nine S3 envs and both ESP32-P4 targets. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>