Skip to content

v0.9.6

Choose a tag to compare

@github-actions github-actions released this 02 Aug 15:52
· 1130 commits to main since this release

Recommended installation

Do not use adb install directly. It installs the APK but does not complete ha-paneld's permissions, startup, configuration, and verification.

From macOS, Linux, Git Bash, or WSL, run:

curl -fsSL https://github.com/maxlyth/ha-paneld/releases/download/v0.9.6/ha-paneld-installer-v0.9.6.sh | bash

The ha-paneld-v0.9.6-manual-setup-required.apk asset is for manual or on-device sideloading. After installing it, open ha-paneld and complete the on-panel setup.

0.9.6 is a substantial update centred on guided onboarding, Home Assistant-native dashboard integration, presence-aware sleep, safer upgrades and backups, and better diagnosis and recovery for always-on panels. Existing v0.9.5 installations can update in place without resetting configuration or cleaning up Home Assistant entities.

Added

  • Guided first-run setup is available on the panel or at /setup from another device. It covers renderer readiness, Home Assistant browser sign-in, dashboard selection and entity filtering before the first dashboard load, and blocks incompatible browser engines with recovery guidance instead of showing a broken dashboard.

  • Auto sleep can combine touch and proximity activity with selected Home Assistant presence devices. It learns suitable delays and shows the reason for its current decision. You might get a better outcome with an automation written in Home Assistant, but this low-configuration panel-side solution might work for many users. The panel and Home Assistant sensors should share the same Home Assistant area.

  • Remote panel control. You can now simulate panel taps from the web UI, but only in Relaxed security mode, for obvious reasons. Click the screenshot in the Dashboard tab to access remote control. This is useful for navigating dashboard tabs remotely while trying to exercise full coverage of the entity filter. It is not designed to be a real-time, interactive, multi-touch terminal.

  • Use Home Assistant's native dashboard interface. I discovered during the 0.9.6 work that Home Assistant has a new external-bus interface that covers authentication and dashboard lifecycle capabilities we had previously built ourselves. For future compatibility, I chose to use Home Assistant's native interface where possible. This means the built-in renderer now requires Home Assistant 2026.4.2 or newer.

  • Storage, SQLite and Android power-safety monitoring now identify conditions that could leave a panel unreliable. The Dashboard, diagnostics, Home Assistant and installer surface actionable warnings. Android power settings can be repaired with verification where the platform permits it, with specific manual guidance otherwise.

Changed

  • The built-in renderer is now the default. Automatic renderer selection now prefers the built-in renderer because the performance gains over the Home Assistant Companion app are so transformative for most users that the remaining feature gap (multi-server support, Assist, notifications) is mostly irrelevant.

  • Dashboard entity filtering now understands more of what modern Home Assistant dashboards load. It follows dynamic and custom-card dependencies more accurately, warns when a dependency cannot be resolved safely, and avoids claiming a filter is complete when it may hide something the dashboard needs.

  • Log shipping now supports syslog over TCP or UDP and HTTP, with destination testing and clearer failure reporting. Fresh configurations and an explicit legacy syslog selection use TCP, while upgraded configurations that never stored a transport retain their previous UDP behaviour. If you relied on implicit defaults, review Configure after upgrading.

  • Configuration and recoverable application state now use a more durable SQLite-backed model. Upgrade directly from v0.9.5; installations older than v0.9.5 must first upgrade to v0.9.5 if their configuration must be preserved. New complete backups can include settings, profiles, eligible Companion login data and eligible same-panel durable application state, but entity catalogs and learned proximity or ambient histories are rebuilt after restore, so create a fresh .hpb after upgrading. An encrypted backup download is withheld if its sensitive temporary plaintext archive cannot be removed.

  • Ordinary upgrades now use defense-in-depth recovery. The installer always attempts an automatic settings export; with a usable root route it also requests an orderly shutdown and verifies one coherent database copy, with one legacy SQLite fallback for older builds. On unrooted panels, only the settings export can be copied off-panel automatically. An unavailable or invalid automatic copy is removed and reported prominently while package replacement continues with existing app data preserved; these automatic copies are not substitutes for a user-verified backup.

  • Local --apk provisioning and fleet installs now require Android Build-Tools with apksigner and aapt or aapt2. Fleet mode rejects --reset-config, --export, --id and device-scoped --restore before starting workers; --restore-fleet remains supported for portable fleet configuration.

  • --reset-config is deliberately irreversible and creates no backup. It requires the user to type RESET as confirmation, erases settings together with learned entity, proximity, ambient and revision state, and leaves the app, helper and unrelated applications installed. Fleet updates refuse this option. Create and verify a complete .hpb, or run a separate --export FILE when settings alone are sufficient, before resetting.

Fixed

  • Failed settings writes no longer appear successful or replace working configuration. A setting becomes visible only after durable storage succeeds, while a failed save leaves the previous value and active behaviour intact.

  • LAN discovery now recovers from silently stalled mDNS responders and network addresses that arrive late during boot. Recovery uses bounded retries and reports when automatic repair is exhausted instead of requiring an unexplained app or network restart.

  • Dashboard and Configure pages remain stable on small panels. Restored Dashboard placement no longer drifts to the wrong cards, narrow-screen headers no longer jump shortly after loading, and automatic-sleep refreshes preserve controls, focus, chart position and scroll state.

  • Provisioning recovers more reliably from slow first starts, Android-stopped applications and interrupted rooted upgrades. It waits within documented bounds, avoids configuration writes or Home Assistant token creation before the app answers, recovers cleanly when a rooted upgrade is interrupted and no longer rejects viable APK updates because of fixed storage margins or optional housekeeping copies.