This is the first release candidate of Panel Assistant 1.0, the Home Assistant integration. Read the caveats below before you install it, and please open an issue with the panel model and what you saw. The story of 1.0 is that MQTT and the move from the old panel app are gone for good, so this release only manages panels that 0.9.0 has already moved. In exchange Panel Assistant and the panel now talk over one connection for everything: the sidebar, updates, voice and settings, which is what makes most of the changes below possible. A lot changed; I have listed what you will notice rather than every commit.
Pairs with the 1.0.0-rc1 panel app. The panel app is published first, because Panel Assistant offers a panel only an app release that is on GitHub; each panel is offered the update once that release is out.
Before you install
- This is a release candidate. HACS offers it once the Pre-release switch of the Panel Assistant device in the HACS integration is on (Settings, Devices & services, HACS; the switch is under Diagnostic and disabled until you enable it). Please report any problems before the stable release.
- Every panel must already be on 0.9.0's panel app. Install Panel Assistant 0.9.0 first and let it move every panel off MQTT and the old app; 1.0 does neither. A panel still on the old app is refused, with a Repair asking you to go through 0.9.0 first.
- Panel Assistant 1.0 and the 1.0 panel app go together. This release speaks only the 1.0 panel app's connection. Every panel is offered the release candidate app once its release is published; a panel on an older app is told it needs the update, which Panel Assistant delivers over the panel's approved ADB connection, so a panel without one needs reconnecting by USB first.
- There is no way back to 0.9 for a panel. Android does not install an older build over a newer one.
- Going back to Panel Assistant 0.9.0 means restoring a backup. Make a Home Assistant backup before you install 1.0. While no panel runs the 1.0 app yet, restoring it brings 0.9.0 back; a panel already on the 1.0 app stays out of reach until Panel Assistant is on 1.0 again. Do not redownload 0.9.0 in HACS over 1.0: 1.0 removes a setting 0.9.0 relies on, and 0.9.0 would then hand panels it already moved back to MQTT.
- Two entities are gone. The separate camera snapshot image entity is removed; use the panel's camera entity. On a panel with a speaker the separate volume number is removed; use the media player's volume. A Repair names any automation or script that still uses either.
New
- An estimate while a panel reads its entities. Panel Assistant sends the panel Home Assistant's current entity count, keeping the last known count through a Home Assistant restart so a compatible panel app can show progress against an approximate total.
- Meta Portal setup during installation. On a Meta Portal, installing the panel app also turns off Meta's screensaver, which otherwise starts every time the screen sleeps, and hides Meta's swipe-up bar over the panel. Panel Assistant notes Meta's settings first and puts them back if you remove the panel app. Where Meta's firmware reports the home screen as set but still shows Android's Home chooser, both installers press Always for the panel app, and leave a chooser that offers any other app alone.
- Shelly Wall Display setup during installation. On a Shelly Wall Display, installing the panel app also switches off Shelly's corner overlay, so the dashboard is clean; Shelly's own interface stays reachable from the launcher button on the panel's navigation bar. Panel Assistant notes the overlay setting first and puts it back if you remove the panel app.
- Shelly Wall Displays are found by their own announcement. Panel Assistant now recognises the network announcement a Shelly Wall Display makes whether or not the panel app runs. A panel with the app follows it to a new address, and one without the app is offered under Discovered so you can install it.
- Full screen-off permission. Every install and update grants the panel app the permission it needs to switch the screen fully off on panels whose firmware keeps the screen on while powered, such as the Shelly X2i. Without it those panels dim instead.
- The right display and text size from the first boot. Where a panel's profile recommends a display size and text size, and the panel cannot set them itself, Panel Assistant sets them during installation, over the network or the USB installer. It does this only at installation, so a size you change later is left alone, and it puts back the earlier size if you remove the panel app. The Shelly X2i is the first panel with a recommendation.
- Proximity setup as part of setting up a panel. When a panel's proximity sensor needs setting up before a wave can wake it, Panel Assistant raises a Repair that explains how to start it from the panel's page in the sidebar, and clears it once the panel reports the setup saved.
- Panel voice commands. Say "show the kitchen page", "show Android settings" or "show the launcher" to the panel you are speaking to, and Home Assistant's own requests such as turning the screen off understand the panel's screen by its everyday name. The commands work in every language Panel Assistant ships, and a panel whose app is too old says it needs an update.
- Updates reach a panel Panel Assistant cannot address. When a panel's stored address does not answer but the panel is still connected to Home Assistant and can install its own update, Panel Assistant takes its backup and delivers the update over that connection.
- The USB installer gives Panel Assistant its way back to a panel that already has the app. Plugging such a panel in installs nothing: the installer has the panel trust Home Assistant and turns network ADB back on, so Panel Assistant can update it again. This is the way to 1.0 for a 0.9 panel Panel Assistant cannot reach, such as a Meta Portal after a restart or a Shelly Wall Display after a reset.
- A panel without network ADB can update itself with one tap. Install and update now give the panel app permission to install packages. On a panel Panel Assistant cannot reach over ADB, an update waits on the panel until someone taps Install in Android's confirmation; reconnecting the panel by USB brings back updates that need no tap.
- Show dashboard and Back buttons. Each panel has a Show dashboard button, which brings its dashboard to the front, and a Back button, which does what Android's Back does, so an automation can bring a panel back to its dashboard after a doorbell, an alarm or a video without a call to the panel's own address. Back appears only on a panel that can perform it: one whose accessibility service is running, or a rooted panel.
- USB debugging state on the device page. Each panel now reports whether USB debugging is on, as a diagnostic entity, so you can see whether a panel can still be reached for updates.
- A fuller device card. The panel's device shows its firmware, Android release and serial number, and a device another integration made for the same hardware, such as the Shelly integration's for a Shelly Wall Display, shows as linked on the device page.
- A warning for a panel that uses another Home Assistant. When you add a panel that is connected to a different Home Assistant, Panel Assistant tells you instead of adding it silently.
- The room goes quiet while you talk to a panel. When a panel starts listening, Panel Assistant turns down every other media player playing in the panel's Home Assistant area to a third of its volume, hidden ones included, so a speaker and its Music Assistant copy both go down whichever of them you hid, and mutes one that can only mute, such as some TVs. They stay down through any follow-up question and go back to exactly their volume when the conversation ends, unless someone changed a player's volume in the meantime. The panel's own player still pauses for the conversation.
- Dashboard theme, idle return and screen timeout in Home Assistant. Each panel offers a Dashboard theme select (Follow Home Assistant, Dark, Light or Ambient) and numbers for its idle return to home, in minutes, and Android's screen timeout, in seconds, which is the screensaver delay on a TV, so an automation can change them. Each follows the panel both ways and starts disabled. The screen timeout is available only while Prevent idle dim is off, because Prevent idle dim holds it at never.
Changed
- Repairs show how to fix the problem. Every Repair now has short, numbered steps, a link to the setting or instructions you need, and a Learn more link for the full explanation. The instructions are translated into every supported language, headings fit better on phones, and Repairs saved before the update get the new links too.
- The sidebar remembers how you configure panels. Your Basic or Advanced view, Descriptions choice and setting filter stay with you when you switch panels or reload the sidebar.
- Refreshed Pickles artwork. The sidebar's disconnected-panel illustration has been redrawn.
- A themed wait while a panel restarts. The sidebar fills the pane with a waiting card during a reboot, update or recovery, follows Home Assistant’s light or dark choice, and returns to the panel on its own without a blank white frame.
- MQTT is gone. Panel Assistant no longer offers a transport choice: every panel talks to Home Assistant over its native connection.
- The sidebar works for a panel Panel Assistant cannot reach. The sidebar no longer fetches a panel's pages from the panel. It shows the panel's own pages and passes their requests over the connection the panel keeps to Home Assistant, so a panel Panel Assistant cannot reach directly, for example on another network segment or behind a firewall, can still be viewed and configured from the sidebar, and while the panel restarts the sidebar retries on its own. A panel needs this release's panel app for its pages to open in the sidebar; until it updates, the sidebar shows that it could not be opened.
- Visit reaches a panel Panel Assistant cannot. On a panel's device page, Visit opens the panel in the sidebar whenever Panel Assistant can reach it. When it cannot, Visit opens the panel's own page at its last known address instead, from a browser on the panel's network, so you can put right whatever disconnected it; Visit returns to the sidebar once the panel answers. Panel Assistant also looks for a disconnected panel at the addresses its last connection reported, not only at the one it stored.
- A new panel connects without asking which account. After a USB or network install, including a reinstall of a panel Panel Assistant already knows, the panel connects as the Home Assistant account it signs in with during its setup, and Panel Assistant no longer stops to ask you to confirm that account, in the add dialog or as a Repair. If a panel that already has an account later signs in as a different one, Panel Assistant still asks you before it switches.
- Names and Areas stay in step. Renaming a panel's device or moving it to another Area in Home Assistant reaches the panel within seconds instead of at its next scheduled check, and renaming the panel renames its device card. The panel still decides which Area it uses, so an Area chosen on the panel itself is kept. A panel needs this release's panel app; until it updates, it picks the move up at its scheduled check as before.
- Every install makes the panel app the home screen and gives it the microphone. Both the network install and the USB install now set the home screen and grant the microphone where the panel has one, and every update and repair sets the home screen again, because Android forgets it when apps change. Before, a USB install did neither.
- A USB install lets Panel Assistant reach the panel afterwards. When you approve the panel's "Allow USB debugging" question during a USB install, you now approve Panel Assistant itself, and the installer finishes by switching on network debugging if it was off. Panel Assistant can then update and repair the panel over your network without the cable, as after a network install. Tick "Always allow from this computer" so the approval is remembered; if it is not, Panel Assistant asks for it again with a Repair. On a panel whose own firmware does not keep network debugging on, such as a Meta Portal, it stays on only until the panel restarts, as after a network install.
- A USB install grants the camera too, and adds the panel. Like a network install, the USB installer now gives the panel app the camera permission on panels that have a camera, so camera features work without an on-screen prompt, and the panel is added to Panel Assistant instead of waiting to be added by hand. It also removes the accessibility service entry an earlier update of the panel app retired.
- Install using USB opens the installer from its button. The step used to show a paragraph and a Submit that only went back to the menu, which looked like a failed install. It now says to plug the panel into this computer, and its button opens the copy of the USB installer published with this Panel Assistant release, so a later installer update never changes what your installed version talks to.
- Install versions follow your release channel. The install and update version lists offer only builds from the channel Panel Assistant itself is on.
- The panel app can always switch its screen fully off. Every install, update and repair now makes the panel app a device admin, with only the right to lock the screen. On a panel without root where Android's screen timeout does not take, the screen now switches fully off instead of dimming. If the panel has a screen lock PIN, waking it after such a screen-off asks for the PIN. Removing the panel app gives device admin up first, so removal works as before.
- The Assist entity follows the panel's voice assistant. While a panel's voice assistant is off, its Assist satellite entity is disabled by Panel Assistant instead of showing as unavailable, and it is enabled again when voice is turned on. Enabling the entity in Home Assistant turns the panel's voice assistant on without reloading it. An entity you disabled yourself is left alone.
- No separate volume number on a panel with a speaker. A panel's media player already shows and sets its volume, so Panel Assistant no longer adds a volume number for a panel that has one, and removes the number an earlier version added, so it does not linger as unavailable. If an automation or script still uses that number, a Repair names it: change it to the
media_player.volume_setaction on the panel's media player. A panel without a speaker keeps its volume number. - Camera snapshots use the camera entity. The separate snapshot image entity is removed. Taking a snapshot uses the camera's video stream, so the camera and microphone may stay active until the stream's normal timeout. Turning the camera off still stops capture.
- The permissions Repair names the way back to a missing overlay permission. On a panel whose only way to Android Settings is the panel app's navigation bar, such as a Meta Portal, the Repair now says that, in Swipe reveal or Always on mode, swiping up opens the Display over other apps setting when that permission is missing.
- Panels other apps know are offered when Panel Assistant starts and when you add a panel. Panel Assistant no longer starts on every device that joins your network: its DHCP discovery is removed. A panel Home Assistant knows through the Companion app, Fully Kiosk, ESPHome or the Shelly integration is listed under Settings, Devices & services, Discovered each time Home Assistant starts with Panel Assistant set up, and whenever you open Add integration for Panel Assistant, where the add form also lists it. Before your first panel is added, open Add integration to see them. A panel that announces network ADB, and a Shelly Wall Display, are still found on their own at any time.
Fixed
- Switching panels keeps the tab you are viewing. Moving from one panel to another in the sidebar opens the same tab, instead of returning to Dashboard; if the other panel does not offer that tab, it opens Dashboard.
- Reloading the sidebar keeps the current tab. A browser reload reopens the panel and tab you were viewing.
- Back from a device page returns to the right panel and tab. Opening a panel's Home Assistant device page from the sidebar now leaves a return point for the browser's Back button, including in Safari.
- Reconnect opens a separate sign-in window. Signing a panel back into Home Assistant from the sidebar now opens sign-in outside the panel's embedded page, so the browser can complete it.
- The sidebar recovers after waiting in Safari. When a panel's page is not ready yet, the sidebar keeps its waiting card visible and shows the page once it returns, instead of getting stuck waiting.
- A panel's pages load together after an update. The sidebar now uses the scripts and styles that belong to the page the panel returns, even before Home Assistant has caught up with its new build, so the page does not mix old and new versions.
- Preparing synchronised speech has a time limit. If preparing synchronised speech takes too long or the audio is too large, announcements and spoken replies fall back to playing on each panel independently.
- A room speaker that reconnects before it can accept its volume restore keeps its saved level for a retry when its state or volume next changes. A late report of the restored level ends the restore without another volume command. A volume changed by someone else is kept. A speaker that never answers a volume change, such as a Music Assistant player whose speaker lost power, is given up on after 10 seconds with a warning, so later voice turns still turn it down.
- Losing a panel connection mid reply ends the turn at once: the voice assistant no longer shows Responding after the panel reconnects, and ducked room speakers get their volume back, whether the reply was streamed or sent by URL. Stopping an announcement during preparation withdraws that listener while other panels continue.
- Sidebar subscriptions clean up when their reply arrives late. The USB release picker waits for bounded signature verification instead of giving up after fifteen seconds.
- With the matching panel app update, synchronised speech recovers when its audio connection closes, without disconnecting panel controls or replaying interrupted speech. Recovery also settles speech whose final audio is still draining, so it cannot leave the panel waiting indefinitely.
- Spoken replies and announcements keep their rescheduled final audio after a delay producing the stream.
- Installs and updates no longer fail on Magisk-rooted panels whose
su 0waits for input. Panel Assistant checks root on a su-rooted panel by trying each form of thesucommand in turn, but a form that never answered stopped the whole check, so on a Magisk panel, whosesu 0waits for input, an install or update failed as unreachable. A form that does not answer within a few seconds now gives way to the next one, over the network and in the USB installer. - Every dialog after an install says what it is. After a network install, Continue setup used to open a dialog with no title or text, only an Open website button. It now explains that the panel's setup page opens in a new tab, links to it, and asks you to select Done when you have finished. After a USB install, the dialog that opened the installer now closes with a message that the panel has been added, and the version page says the install is finished instead of still asking you to continue in the new window.
- A panel shows once under Discovered. A panel that announces itself in more than one way, such as a Shelly Wall Display known to the Shelly integration that also runs the panel app, used to appear twice under Settings, Devices & services, Discovered, and the second card stayed even after the panel was added. Now it appears once: the panel app's own announcement replaces any other card for it, adding the panel closes its other cards, a panel already added and running is not offered again, and Ignore on any of its cards hides the panel.
- A reinstalled panel rejoins its existing entry and finishes setup. When the panel app is reinstalled from scratch, even at a new address, Panel Assistant recognises the panel and keeps its entities, entity IDs and history, continues setup in the same dialog and leaves a display size you already set alone. Before, the panel stayed unavailable until it was added again by hand. Panel Assistant learns what it needs the first time it reaches each panel after you update, so a panel reinstalled before then is not recognised.
- Updates end with a clear result. When a panel refuses an update, Panel Assistant shows the panel's own reason straight away instead of waiting five minutes. An app that installed but did not start again is started once and checked before the result is reported.
- An update the panel cannot take says why. When a panel has APK upload switched off, or Home Assistant cannot download the release, the update now stops with that reason and leaves the installed app as it was. It used to ask the panel to fetch the release itself, which the 1.0 panel app no longer does, and then reported only that the panel had refused.
- The sidebar runs the version you installed. After Panel Assistant was updated, a browser could keep the previous version's sidebar from its cache, and a panel's pages in it then never finished loading. The sidebar is now loaded afresh for each version, a Home Assistant tab left open across the update reloads once when it next opens the sidebar, and the panel's pages refresh their live values when you return to them.
- Removing the panel app leaves the panel usable. Android refuses to uninstall an app that has been made a device admin, so Panel Assistant asks the panel app to give up device admin first. Removing the app from a Shelly Wall Display hands the home screen back to Shelly's launcher, a lost uninstall reply is checked on the panel rather than reported as a failure, and the removed panel's Repairs are cleared.
- The missing-permission warning says what is missing. When a panel refuses a permission at install, the warning in the log now names only the permissions it refused and what each one stops, including that a panel without the permission to install packages cannot install its own update with a tap.
- The USB installer's button matches its message. When the USB installer cannot fetch the app from Home Assistant, its message tells you to go back to Home Assistant and start again, and its button now says Back to Home Assistant rather than Try again.
- Both installers write the same text size. A custom panel profile whose recommended text size has more than six significant digits is now written the same way by the USB and network installers, and the USB installer no longer reports that size as unreadable after applying it.
- Panel sensors and details are shown accurately. A sensor the panel hides becomes unavailable straight away, and a sensor with no reading shows as unknown together with the panel's reason, instead of a stale value.
- Synchronised speech keeps working on a busy panel. A panel whose voice player took longer than five seconds to report itself after connecting, usually because the panel had just connected and was still sending its state, was dropped from synchronised speech until it next reconnected, and Home Assistant logged an error each time. Panel Assistant now waits for it, and announcements to that panel stay in step with the others.
- Repairs use the name you gave a panel. A panel renamed under Settings, Devices & services, Devices was still named by the name it was added under, often its network hostname, in Repairs and in some setup dialogs. They now use the device's name, as the rest of Home Assistant does.
- Reboot no longer reports an error when it works. Pressing a panel's Reboot could show "The panel is not connected to Panel Assistant, so the command was not sent" although the panel restarted, because it went down before it could answer. A panel that drops its connection after taking the reboot now counts as rebooting.
- A quieter Home Assistant log. Checking every panel for updates at once read the panel app's GitHub releases once per panel, which could use up GitHub's hourly limit for your network and fill the log with "The recent releases could not be authenticated". A check now reads them once for all panels, and at most every five minutes however often it is repeated, and when GitHub refuses, the warning gives its HTTP status. A panel that disconnects while its voice connection is starting no longer leaves a "Task exception was never retrieved" error, and a health check cut short by a change of the panel's address now says so instead of "Unable to read panel health".