v0.9.0
Headline: ha-paneld can now render the Home Assistant dashboard itself. 0.9 changes the project's stance: previously a headless agent that always deferred dashboard rendering to the HA Companion app, ha-paneld now offers its own built-in renderer (experimental, off by default) so a panel can run as a single-app appliance. The Companion app remains today's default and a permanently supported path. Everything below is cumulative since v0.8.7.
Added
- Built-in dashboard renderer (experimental) — ha-paneld renders the HA dashboard in its own WebView: authenticated with the same
external_authcontract the Companion uses, provisioned with zero typing on the panel (provision.sh --builtin --ha-urlwith--ha-tokenor--ha-user/--ha-pass), and integrated with the watchdog/kiosk machinery as a first-class dashboard target. Engineered for weeks-long unattended uptimes: the page freezes while the screen is off (~70% renderer CPU saved), a handshake watchdog reloads a dashboard that fails to actually connect (with backing-off retries and a clean "Reconnecting…" screen instead of a browser error page), memory is bounded by invisible screen-off reloads, renderer crashes are contained and rate-limited (falling back to the admin launcher rather than churning), and a definitively revoked login latches with on-panel fix instructions instead of retrying forever. - Renderer quality-of-life — camera streams autoplay (with fullscreen video and native confirm/alert handling), instant pull-to-refresh (drag down re-navigates the live frontend; double-pull for a full reload), an optional idle return-to-home, an edge-to-edge fullscreen mode (bars revealed by an edge swipe), a "Clear renderer storage" remote heal, and private-CA HTTPS support (user-installed CAs are trusted, matching the Companion).
- Light/dark theming across every surface — the web UI follows each viewing browser's light/dark preference (with a
?theme=light|darkoverride for testing); a "Dark mode" toggle on the Display card themes ha-paneld's own screens and sets the built-in dashboard's default colour scheme on panels without a system dark-mode setting (Android 9 and older); a theme picked inside HA always wins. - The Configure page follows settings changed outside it — an open Configure tab auto-reloads when the panel's settings change via the API, an HA entity, or another browser; unsaved edits are never destroyed (a banner offers the reload instead).
- Honest handling of features that need root — on a panel without root, the features that require it are shown greyed with a lock note (never hidden) so you can see what's unavailable and why; the no-root Install picker offers a Download APK link for a manual update, and the installer states plainly at provision time which capability tier your panel is in.
- One-click switch from the Companion — picking the built-in renderer borrows an installed Companion's sign-in automatically (root panels), so trying it is a single picker change.
- LED effects —
strobe,blinkandpulsethrough HA's native lighteffectselector. - MQTT over TLS —
ssl:///mqtts://broker URLs connect over TLS with the default trust store (CA-signed brokers validate; port defaults to 8883). --prereleaseinstall channel —install.sh … | bash -s -- --prerelease(andprovision.sh --prerelease) installs the newest release-candidate instead of the latest stable, for testing pre-release builds.
Changed
- Dashboard settings get their own Configure card with a known-renderers-only picker, and Configure cards carry maturity badges ("skunk-works" / "experimental") so pre-release surfaces are labelled.
- The performance page attributes cost honestly — sampling is far lighter, the sampler's own probe cost is shown as its own row, and the built-in renderer's hosting cost is labelled as such.
- Companion auto-update settings step back when there's no Companion — hidden from the form and their HA entities withdrawn on Companion-less panels; listed after ha-paneld's own update settings.
Fixed
- A cumulative pass of renderer and platform fixes shipped across the rcs, highlights: a renderer crash-loop can no longer churn the panel all night; a revoked login is recoverable from the Configure tab; kiosk/watchdog returns no longer reload a healthy dashboard; switching an existing panel to the built-in renderer reclaims the HOME role from the Companion; the soft navbar's Reload could force-stop ha-paneld itself on a builtin panel; settings side-effects (fullscreen, dark mode) now truly apply on save; a stale "Companion update available" notice can no longer outlive an uninstall; the Rockchip
/dev/ledjniRGB-LED driver is labelled accurately for non-rk3576 SoCs;provision.shlogin failures explain themselves and credentials with special characters work; vendor-tamed panels bring the dashboard up promptly after taming the vendor home launcher.
Full Changelog: v0.8.7...v0.9.0