+89
−39
+0
−67
+25
−1
+13
−0
Loading
Moves dependency information from per-endpoint api.ini to per-device
devices.ini, replacing client-side telemetry parsing with server-side
cascade via state-diff WebSocket events.
Key changes:
- devices.ini: add depends-on and ping-using to each active device
- api.ini: remove all depends-on lines (70 entries)
- deps.py: rewrite around device-level dep tree; _check_device walks
parent chain + ping check; skips self-ping for power/connection
endpoints to avoid circular 424 when toggling root devices
- stream.py: compute device_active topologically after each poll cycle,
project to endpoint_states, broadcast state-diff diffs; webcam_loop
now updates global_device_states[/webcam/clock]; send endpoint-roots
list and full state snapshot to each new WS client on connect
- dependency-guard.js: rewrite to consume state-diff events; ROOTS map
maps subsystem → root endpoint path; alwaysOn derived from
endpoint-roots message (root device = no depends-on in devices.ini);
fixes Stage/Camera/Camera2 showing active when telescope is off
Co-Authored-By:
Claude Sonnet 4.6 <noreply@anthropic.com>