COMPASS
Ava 0.7.0 - COMPASS
Patch release: every step finds its direction again
An update no longer needs someone watching it finish
The Software Update page now turns an uncertain wait into a process that can be understood at a glance. Download, verification, and installation remain inside the same button. Progress fills the button itself, with a percentage during download. Tap Tap to pause when it is time to leave the network or save bandwidth, then Tap to resume when ready; the download does not start over. Completed, awaiting system confirmation, and failed states remain visibly distinct, and a failed action can be retried directly instead of leaving behind a vanished progress bar and a question.
The version list also finds the space available on each screen. It shows up to three rows in portrait and four in landscape, opens upward when there is not enough room below, and adds scrolling fades only when releases actually overflow. A narrow wall panel and a wide desktop screen therefore keep their main controls visible.
When installing an older release, Ava now explains Android's real boundary: an older version cannot overwrite a newer one. After downloading and verifying the package, Ava guides the user through exporting settings, uninstalling the current Ava, and installing the prepared release. Exporting does not close the guidance, and choosing to return later keeps the package for six hours. Cleanup only touches APKs owned by Ava's updater, retaining the newest two; Gecko, browser, and personal downloads are left alone. Ava and Gecko update notifications stay visible while downloading and remove themselves when finished instead of lingering in the notification shade.
Background checks now follow the rhythm of a wall panel as well. The core service checks quietly every hour and updates only the Home Assistant update entity, without placing a dialog over the dashboard. When Auto Update is enabled, stable releases install in the background. Opening Software Update manually still leaves checking, reinstalling, and version selection in the user's hands. A rebuilt package from the same release is identified clearly as Update patch, rather than pretending to be an ordinary version jump.
Path: Settings → Software Update to view releases and pause or resume a download. Use Settings → Software Update → Update Options for automatic checks and updates. For an older release, use Export settings, then Uninstall, and finally install the downloaded package as shown by the guidance.
A run of unavailable tracks no longer unsettles the whole room
When a music-service login expires or several tracks are temporarily unavailable, Music Assistant may skip rapidly through a queue. Artwork, titles, and progress used to race through those failed items too, and the clock could remain still after a playable track was finally found. Ava now lets that burst settle, preserves the last song that genuinely played, and avoids asking the upstream service to seek or resume repeatedly. Once audio from the playable track arrives, its artwork and timeline land together and progress begins moving again.
Automatic calibration also gains a firmer reference. In addition to comparing one Ava with another, it now follows the playback time supplied by the Sendspin server. A group that includes an ordinary Music Assistant player, or several Ava devices sharing the same small common delay, can still move toward the correct moment instead of stopping because the Ava devices merely agree with one another. Manual delay, per-device tuning, and forced resynchronization remain in charge whenever they are being used.
If QQ Music, Spotify, or another provider has an expired login, that provider still needs to be signed in again from Music Assistant. Ava repairs the display, progress, and recovery around a rapid skip sequence; it does not pretend to restore an account that the upstream service can no longer use.
Path: Play music → open the full-screen player → Open MA → Sync → enable Automatic calibration. To restore an expired music login, open the corresponding provider in Music Assistant settings within Home Assistant.
A wake-word model that imports successfully should also answer
Thank you to @TaterTotterson for sharing the Hey Marcel wake-word model and training tools, which provided a complete sample for reproducing this compatibility gap. Some custom wake-word files appeared to import normally but never reacted when called. Different training tools can package their sound features at either of two cadences, while Ava previously understood only one. Ava now reads the model's own cadence at import and continuously supplies sound in the form it expects. Built-in wake words keep their existing behavior, while compatible custom models no longer remain silent simply because their cadence differs.
Compatibility was not bought by making wake detection permissive. The existing threshold, consecutive matches, and second offline verification all remain in place, protecting the room from accidental triggers caused by television, conversation, or a similar phrase. If one file has a shape that genuinely cannot be understood, only that model is disabled; the other wake words continue working.
Path: Settings → Voice Config → Wake Word → Wake Word Library → Import Wake Word File.
Patch release: an update should stay finished
Some Ava Pro devices had already installed a rebuilt 0.7.0 package from the same day, yet Home Assistant still showed different suffixes for Installed and Latest and raised the update again. The device was not actually behind. Silent installation replaced Ava before the old process had time to remember the package it had just installed.
Ava now records the publisher package before installation begins and rolls that record back only if installation fails. A match from any retained package record is enough to mark the update complete. Older installations without a complete record can also confirm the exact package by its byte size. That check does not rescan the whole APK, so it adds no noticeable wait on a wall panel. A same-version rebuild can still appear once when it is genuinely new, then stays dismissed after it has been installed instead of cycling in Home Assistant.
The Software Update page now follows the action in front of the user. Tap Update and the same button area shows download, verification, and installation progress instead of opening another dialog. Reinstall really downloads and installs the current release again rather than answering that it is already current. Choose an older release and Install This Version downloads and verifies that selected package, then guides installation through the route Android permits. Release covers appear from saved artwork first, refresh stale copies in the background, and prefetch recent covers together, making version browsing feel much quicker.
Path: Settings → Software Update → select a release, then use Update, Reinstall, or Install This Version; progress remains in the button area. The repeated same-version notification fix is automatic. Its update entity can be checked under Home Assistant → Settings → Devices & services → ESPHome → the corresponding Ava device.
Patch release: clearer direction for every touch on screen
These additions and refinements were completed on the morning after the original 0.7.0 release.
No new gesture language to memorize
Honestly, Ava did not rush to add gestures because using a device at home should not begin with memorizing a long list of swipes and corners. Walking past the panel at night may simply mean turning up the hallway light. Wet hands while cooking may need one familiar page immediately. A child, an older family member, or a guest should never have to stand in front of the screen wondering what the upper-left corner means or what drawing a shape might change. A home device should understand the intention of the moment, not ask everyone in the home to learn its language first.
That is also why Ava does not prescribe “a heart means bedtime” or “five fingers means mute.” The same movement means something different in every home: open the door camera, change the reading light, or simply return to the dashboard. Hard-wiring dozens of gestures may look powerful, but daily use becomes a memory test, followed by trial and error or an accidental change to something already running. A gesture should remove a step, not become another instruction manual.
That is why gestures appear only as a diagnostic Screen Gesture sensor in Home Assistant. They never perform an action by themselves, and there is nothing personal to record. Recognition stays on the device; a result is reported once and returns to idle after two seconds. A household can keep one or two movements that feel natural, give them familiar purposes through automations, and turn everything else off instead of memorizing it. Fingers and Corners, Digits, and Geometry can be enabled separately, including five fingers, pinch in or out, corner taps and swipes, full-screen swipes, drawn digits 0–9, and triangle, rectangle, check, X, heart, and wave shapes.
The most easily confused digits are judged more carefully. A vertical swipe and digit 1 are naturally the same stroke, so choosing one explains the conflict and turns off the other instead of leaving the user to diagnose it. The automation still makes the decision: a top-right tap can show the screensaver, five fingers can toggle the microphone, and a heart can call a bedtime scene. Without an automation, the sensor simply reports what happened.
Path: Settings → Device Service → Screen Touch Event → enable Gesture Detection. Then enable Fingers and Corners, Digits, or Geometry, and open Choose gestures to keep only the ones you need.
The wall panel's present state can become a condition
Advanced Diagnostics adds three useful kinds of wall-panel context. The first is what the device is doing: Music Playing can keep an automation from interrupting media, while Last Used App shows whether the panel has temporarily left Ava. The second is Bluetooth, useful for noticing when the adapter has been turned off. The third is Network Type, which distinguishes Wi-Fi, Ethernet, and no connection, especially useful for permanently wired panels.
Each entity remains optional and now has a clearer description of why it might be useful. Last Used App needs Android Usage Access, and enabling it opens the corresponding system permission page. Changing several diagnostic options no longer reloads the service after every tap. Ava collects the choices, synchronizes once when leaving the page, and shows Immediately syncing to Home Assistant, keeping lower-powered wall panels responsive.
Path: Settings → Device Service → Advanced Diagnostics → enable the main switch, then choose Music Playing, Last Used App, Bluetooth, and Network Type as needed. Return from the page to synchronize the changes.
The door camera is visible again, and the layout can stay put
Thank you to @bexem for the detailed report in #180. Doorbell, Reolink, and Frigate cameras placed in Quick Entity slots now resume their preview when the panel returns instead of leaving a dark empty frame. Relative and authenticated image addresses supplied by Home Assistant are connected correctly as well.
Once the panel is arranged, the new circular lock at the upper right keeps it that way. While locked, holding a light, temperature, or camera tile no longer makes it shrink, jump, or begin dragging. Unlock it only when the rooms need rearranging; the choice is remembered the next time the panel opens.
Path: Settings → Interaction → Quick Entity Control → place a camera.* entity in a slot. Open the Quick Entity panel, touch the screen to reveal the top controls, then use the lock icon at the upper right to lock or unlock the layout.
Voice volume now settles only after the final word
Thank you again to @realroywalker for listening through to the end and noticing the last rough edge in #179. Voice replies now wait for the final syllable before handing volume back to music. Nearby levels settle with a natural transition. A large change made from Settings or Home Assistant still lands immediately like an Android volume key, rather than stretching a long fade across the room.
The TTS range also expands from 15–100 to 10–100. Settings and the Home Assistant number entity share the same range, allowing a softer bedside reply at night. These refinements use the existing controls.
Path: Settings → Voice Config → Voice replies → Audio. Enable Show in Home Assistant on the same page when automations are needed.
The wall panel can tell when someone has touched it
Thank you to @matkastner for #182 and its practical home scenario. Ava can now expose a Screen Touch Event binary sensor to Home Assistant. It turns on when a hand touches the dashboard, then turns off after the chosen delay. Away Delay is adjustable from 2–60 seconds, with a five-second default on new installations; existing choices are preserved.
An automation can wait for it to remain off for five minutes before returning home or showing the screensaver, without mistaking a voice reply, camera refresh, or page update for someone touching the screen. Touch reporting covers the Ava home screen, Home Assistant dashboard, and screensaver, and follows the visible screen after an orientation change.
Path: Settings → Device Service → Screen Touch Event → enable Screen Touch Event, then adjust Away Delay below it.
No last-second twitch when the screensaver rests
Pixel Shift moves long-lived content slightly every 45 seconds to reduce persistent screen marks. Previously, hiding the screensaver or turning its display off could snap the picture back to the center just before it disappeared, making a wall clock look as though it twitched on the way out.
Now the display simply stops its timer and holds the current position until it is gone. A settings refresh while the screensaver is still visible only renews the timer instead of moving the content. When the screensaver appears again, it returns calmly to the center and waits 45 seconds before its first shift, rather than waking up already offset. Simple Clock and the Web screensaver share this refinement, so both now enter and leave with the same rhythm.
Path: Settings → Extensions → Simple Clock → Appearance & Status → Pixel Shift. For the Web screensaver, use Settings → Screensaver → Behavior & Wake → Pixel Shift.
Diagnostics: Search logs for ScreensaverPixelShift. pause: hold offset means the resting view kept its position, sync(reattach): keep means a visible view only renewed its timer, and sync(...): origin + schedule means it returned to center and began a new wait.
Settings no longer wake a stopped service
Diagnostic, screen, and sensor settings that update Home Assistant now share the same boundary: they synchronize only while Ava's main service is already running. If the service is stopped, the choice is saved for its next normal start instead of unexpectedly waking Ava. Duplicate synchronization from the Screen Touch, Brightness, and Screen Power pages has also been removed, while individual gesture choices still take effect immediately without a service restart.
A compass does not choose the destination; it offers direction when the way is unfamiliar. Version 0.7.0 still puts offline use and safety first, keeping everyday abilities on the device or local network wherever possible, then pointing different rooms, screens, and speakers in the same direction.
5.4 Synchronized Multi-Home Surround, fully connected
Version 0.7.0 officially completes Ava 5.4 Synchronized Multi-Home Surround. This is more than making several speakers play at once. Ava devices across the living room, kitchen, bedroom, and study become one coherent sound field: walk through the home and the beat does not split, the melody does not break, and music spreads naturally through the space instead of every device performing on its own.
Sync delay, automatic calibration, five-band equalizer, and lyric tuning now run end to end across the controlling and playing devices. Any Ava in front of you can read the real state of another group member and have that device apply the change. Timing can be moved precisely, everyday drift is continually gathered back in, and groups of three or more align each room separately so one late device cannot pull the whole field away. Older hardware without a precise playback clock can still approach the group conservatively.
Every room can keep its own character. Top Surround (AVA) opens the stage across the living room, while News broadcast (AVA) brings speech forward beside the bed, with five-band tuning retained per Ava. Lyrics are fully joined to multi-home playback as well: Offset returns words to the singer's entrance, while Follow controls how the next line moves with the performance. Local and remote devices can be tuned independently until sound, lyrics, and space arrive at the same moment.
This control belongs to Ava. Both the controlling and playing ends need the current Ava version, so ordinary Music Assistant players never show controls they cannot execute. An Ava is no longer only a screen or player; it is both a control center and a sound-field node for the entire multi-home music system.
Ava's Music Assistant Sendspin support was rebuilt step by step in C++. The music console searches tracks, albums, and playlists, including by microphone. Play something immediately or add it to Up Next, reorder a long queue, locate the current track, and continue with similar music. The complete console works on landscape, portrait, and square screens. Joining a group halfway through a song now brings artwork, title, artist, and progress across immediately. Changing groups clears the old pairing, while pause, previous, and next recover after a brief reconnection.
Path: Play music → open the full-screen player → Open MA. Search under Library, manage the queue under Up Next, then open Sync and select this device or another Ava for sync delay, automatic calibration, five-band EQ, and lyric tuning.
A fitting volume for every reply
Thank you to @realroywalker for pointing out a very ordinary problem: a reply that sounds right during the day can be too loud beside the bed, while loud music can make it hard to hear. TTS now has a target volume. Ava temporarily moves to that level while speaking, then returns to the previous media volume. Pressing a volume key during the reply only remembers where to return afterward, so a sentence does not suddenly jump in loudness.
Settings places system and TTS volume together for comparison. TTS volume can optionally appear in Home Assistant, making replies quieter late at night and normal again during the day. Changes made while Ava is speaking take effect immediately.
Path: Settings → Voice Config → Voice replies → Audio. Enable Show in Home Assistant on the same page when automations are needed.
No separate caretaker needed
Thank you to @mohammednafeel for sharing everyday use of Ava as the default home screen. Settings now includes Place all app icons and Clear desktop icons. Placement continues onto the next page when the current one is full; clearing removes icons while leaving widgets where they are. Holding the desktop also opens icon-size adjustment, with a live preview of how many icons fit in each row. Music, network, service, theme, and Home Assistant sensors can all become widgets, with text and spacing rearranged at smaller sizes.
Path: Settings → Device Service → Show other app icons for placement and clearing. Hold an empty part of the desktop → Icon size to resize icons. Hold the desktop → Widgets to place and resize widgets.
Sidebar items can now be reordered and renamed in words that make sense at home; leaving a name blank restores its default. A Restart and exit shortcut has also been added. If Ava is stuck on the desktop, or simply needs to be closed for another use, the controls no longer require a trip through several settings pages. Restart closes and opens Ava again, Exit closes only Ava, and Pin to wall keeps the current screen in place to reduce accidental escapes. Restart and Exit are also available as desktop action widgets and require a second tap to prevent accidents.
Path: Settings → Device Service → Sidebar settings to reorder, rename, and enable Restart and exit. Device controls are under Settings → Device Service → Restart and exit Ava; privileged devices show the corresponding console name. Desktop actions are under hold desktop → Widgets → Ava.
A wall-mounted Ava now looks after more of its own recovery. Crash self-healing can return it to the foreground after an unexpected process exit, while a confirmed screen stall starts an internal rescue. Two rescues within ten minutes stop further restarts, preventing a recovery loop. The latest 20 incident clues stay on the device. After Wi-Fi or Home Assistant returns, an expired connection is cleared and the replacement sends state again without a manual service restart. The bundled Ava Pro firmware package is updated to 2026.09.1.
Path: Settings → Device Service → Auto restart → Crash self-healing. The watchdog and latest 20 records are under Settings → Device Service → Abnormal end records. Home Assistant reconnection recovery is automatic and has no switch.
Fixes and thanks
Thank you to @deergitseason for reporting Music Assistant lyrics missing from the full-screen player, and to @waveriderai for reporting wake-word loss after touching the dashboard. Both are fixed. More than 30 further fixes cover TTS start timing and cleanup, other memory leaks, thread safety, Sendspin port recovery after a service restart, playback-control reconnection, lyrics on older Android versions, the square-screen player, desktop refresh, multi-device discovery, and exceptional-state recovery. Voice music search also removes stray sentence periods added by recognition, and the return bar no longer flickers occasionally.