Debian buster base matches the TV's glibc version. Includes fake
WEBOS_NDK wrapping standard cross-compiler, stub shared libraries
for luna-service2 and glib-2.0, and a build script that produces
a deployable ARM soft-float binary.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Self-contained HTML page that connects to HA WebSocket for entity
discovery, provides visual editing of rooms/cards/weather/vacuum
config, and exports config.json. Hosted from HA's /local/ directory.
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>
Extend Luma-style dark theme to two more Enact web overlays:
- com.webos.app.notificationcenter: dark pills, transparent
compositor, notification-specific components
- com.webos.app.gameoptimizer: same plus GameItem, GameButton,
GameSwitch, GamePanel custom components
Rename build.js → build.cjs (ESM compat) and update to build
all three themes from a single script.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
Build script minifies and base64-encodes the theme for telnet transfer.
Outputs to settings-theme/dist/ (gitignored).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Enact-injected CSS/JS theme that makes com.palm.app.settings fully
transparent so the Luma wallpaper shows through. Uses PalmSystem
compositor transparency + a global wildcard to strip all backgrounds,
then selectively restores dark pills (0.65 opacity) on menu items and
white pills on focused elements.
Key features:
- Dark transparent pills on all menu items (both sidebar tabs and
content items)
- White pill + dark text on focused items
- Collapsed sidebar: white circle with dark icon for selected tab
- Disabled items: forced opacity on content children to remain readable
- All CSS transitions/animations disabled to prevent grey intermediate
states during navigation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Bind-mounts a transparent web page over LG Home that launches Luma
via WebOSServiceBridge, with a subscription-based background watcher
as fallback. Tested on LG 65NANO813PA, webOS 6.5.3.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>