Replace media card with full redesign: rectangular album art (180px) with
background fetcher, track title + artist display, volume icon + percentage,
progress bar, and 7-button transport row (playlist, skip-back, seek-back,
play/pause, seek-forward, skip-forward, search) with Apple-style opacity
focus. Add scroll-wheel seek and back-button card mode exit.
Replace all media SVG icons with Wolf Kit Rounded Line icons from SVGRepo
(CC Attribution, author: thewolfkit): play, pause, skip-back, skip-forward,
seek-back, seek-forward, playlist (line-3), search, volume.
Fix vacuum card: add config fallback for custom button cards, expand entity
subscriptions for derived entities, fix clean command segment format, remove
fill, increase image size to 160px.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the static config.json with a dynamic pairing flow: the TV
shows a 6-digit PIN, the user enters it on the HA pairing web page,
and the TV polls for the provisioned token. On success the token is
persisted and the WS connection fetches entity config via luma/get_config.
New modules:
- ha_token: atomic read/write/remove of HA credentials file
- ha_pairing: background HTTP poll service with getrandom PIN generation
Key changes:
- Settings UI: new HA section with URL entry, connect/disconnect, PIN display
- ha_client: WS config fetch (luma/get_config), Option<u64> pending tracking
- main.rs: token-based startup, pairing effects consolidated into effects()
- renderer: cached GL uniform locations (u_aa, u_texture, u_clip_rounded,
u_clip_radius, u_edge_fade) — no more per-batch GetUniformLocation calls
- view.rs: extracted card_glow() helper, slider_card_target() method
- Pairing thread detached (no join in Drop) to avoid blocking the render loop
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implement the full Home Assistant tab with room-based navigation
and glass-morphism card rendering:
- Toggle card: on/off for lights, switches, covers with state indicator
- Range card: dimmable lights with brightness bar and D-pad ±10% control
- Climate card: current/target temp, HVAC mode, D-pad ±0.5°C, sparkline
- Action card: one-shot activation for scenes and scripts
- Vacuum card: summary card that opens room selection modal
- Weather card: hero card with condition icon, temp, humidity, wind
Navigation: room tabs (horizontal pills), card grid (3-col), vacuum
modal with room multi-select, cleaning mode cycle, and start button.
Back button cascades: vacuum modal → card grid → room tabs → Home page.
Glass design: rgba(255,255,255,0.12) fill, 22px radius, 1px border at
0.15 opacity, elevated shadow on focus. Accent color #7EB8DA for active
entities, warm orange for heating, cool blue for cooling.
Wires Effect::Ha to dispatch toggle/brightness/temperature/scene/vacuum
service calls through ha_client. Adds 6 new SVG icons matching the
existing Lucide stroke style.
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>