- New ha_client.rs: background-thread WebSocket client using tungstenite
with rustls TLS. Handles auth, state subscription, service calls, and
recorder/statistics history fetch for climate graphs. Auto-reconnects
on disconnect with 5s delay.
- HaState added to State struct: tracks connection status, entity states,
and temperature history per entity.
- main.rs loads ha-home/config.json at startup, extracts all referenced
entity IDs, and creates the HaService. ha_tick() drains responses into
state each frame, matching the weather_tick pattern.
- tungstenite 0.24 added to Cargo.toml with handshake + rustls features.
All 84 existing tests pass.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move trampoline files (boot-hook, watcher, overlay) into trampoline/
subdirectory. Add upstream Luma v2.3.1 source at repo root with our
additions:
- Page::Ha (4th nav tab) with placeholder empty state
- HA tab config schema and default entity mapping (ha-home/)
- Nav keys renamed: "home" → "start", new "ha" tab between Apps and Settings
- All state.rs/view.rs/main.rs/tests.rs updated for 4-tab navigation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>