# Changelog ## April 2026 - Added Phase 1 TV power coordination on `infoscreen/groups/{group_id}/power/intent`. - Added `POWER_CONTROL_MODE` with `local`, `hybrid`, and `mqtt` behavior. - Added `src/power_intent_state.json` and `src/power_state.json` for power IPC and telemetry. - Added `infoscreen/{client_id}/power/state` publishing from `simclient.py`. - Added turn-off guard logic to avoid unintended TV-off races at event boundaries. - Added [TV_POWER_RUNBOOK.md](TV_POWER_RUNBOOK.md) and test tooling in `scripts/test-power-intent.sh`. ## March 2026 - Hardened event-trigger screenshots (`event_start`, `event_stop`) against periodic overwrite races. - Improved `latest.jpg` and `meta.json` synchronization for reliable dashboard updates. - Added self-healing for stale or invalid pending screenshot trigger metadata. - Improved display environment fallbacks (`DISPLAY=:0`, `XAUTHORITY`) for non-interactive starts. - Allowed periodic idle captures in development mode so dashboard previews stay fresh without active events. - Added content-type-aware trigger delays for event screenshots. - Changed screenshot transmission to a 1-second polling tick so triggered sends fire within <=1s. - Migrated dashboard payload to grouped schema v2 (`message`, `content`, `runtime`, `metadata`). ## November 2025 - Implemented the two-process screenshot pipeline (`display_manager.py` capture, `simclient.py` transmission). - Added Wayland/X11 screenshot tool fallback chains. - Extended dashboard payloads with screenshot and system metadata. - Extended scheduler event type support for `presentation`, `webuntis`, `webpage`, and `website`. - Added website autoscroll support via CDP injection and extension fallback.