Two bugs surfaced when smoke-testing against a real OmniPro II: 1. Empty list after page load. _discoverViaList ran fire-and-forget; connectedCallback then synchronously checked _entryId (still null because await hadn't resolved) and skipped _loadList. The panel rendered "No programs match the current filters" forever — until the next 5-second poll tick, which never fires because _startRefreshTimer was also gated on the same null check. Fix: have _discoverViaList itself trigger _loadList and _startRefreshTimer after _entryId lands. The connectedCallback / updated paths can stay gated on _entryId; the discover path now takes ownership of "do the initial load too." 2. Dev installs with both a working entry and a setup_retry entry (mock container down, real panel up) had the panel pick the setup_retry one first and surface "panel not configured" on every call. Fix: prefer entries with state === "loaded" in the discover step, falling back to first entry only when none are loaded. Also: screenshot.py drops the seed-via-WS step (was unsafe — would write Programs to whatever entry is loaded, including real panels). Updates the in-page click helpers to walk the shadow DOM recursively instead of hardcoding HA's host-element path, so detail/editor screenshots work on the actual depth-8 element location. Smoke test against real panel: 154 programs render correctly with structured English, BEDTIME / OPEN BIG GAR / Zone 133 events all decoded, B. GAR MAN DOOR [SECURE] live-state badge visible. Detail panel + editor mode both function end-to-end.
114 KiB
2880x1800px
114 KiB
2880x1800px