Send presets and select on broadcast with groups; unicast only for
per-device settings. V1 select as [preset_id, step?]. Sequence steps
use beat counts; manual presets get select each beat, auto only on
step change. Bridge downlink router, Pi envelope delivery, and tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace serial/Wi-Fi driver transport paths with WebSocket bridge client,
binary espnow_wire delivery, device announce registry, and restructured
espnow-sender (AP + broadcast passthrough). Includes docs and tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
- Serve GET /settings as JSON by removing duplicate HTML route (use /settings/page for the standalone UI).
- Save global_brightness via PUT; broadcast to connected drivers; push saved level when outbound WS connects.
- Zones UI loads brightness from GET /settings only (no localStorage).
- Bump led-driver submodule for settings.save on brightness with save flag.
- Extend API doc and endpoint tests for global_brightness.
Co-authored-by: Cursor <cursoragent@cursor.com>