github knoop7/Ava 0.6.8
protocol +

5 hours ago
Ava Pro 0 6 8

Ava 0.6.8 - protocol +

Offline or Safe Before Merely Looking Smart

Ava is built for devices that stay on a wall, bedside table, or living-room shelf for a long time. It should recover when nobody is watching, but it should not ask for more privileges, depend on more cloud services, or repeatedly disturb a page just to appear clever.

The rule for 0.6.8 is simple: keep work local when it can be local; do not request a permission until a feature needs it; preserve the current view while offline; and retry only after a remote dashboard has genuinely failed and the network has returned. Every enhancement also needs an exit. Sendspin remains fully usable without a Music Assistant sign-in, and Ava's core features remain available without Root.

That is not reluctance to add features. It is the boundary a device living in someone's home should respect.

Many of the holes closed in 0.6.8 were not found by guessing in isolation. Community members put 0.6.7 into real homes and returned recordings, logs, reproduction steps, and even analysis of the packaged app down to the exact decision being made. The thanks below stay with the situations they helped uncover, because that feedback is part of this release.

The Dashboard Recovers After an Outage

A normal browser assumes someone is sitting in front of it. When a page fails, it waits for that person to refresh, change the address, or inspect the error. An automatic reload could otherwise discard a form, an unfinished sign-in, or active media.

An Ava dashboard is often unattended. If the router restarts overnight and Android leaves an error page behind, that page may still be there in the morning. 0.6.8 therefore adds one deliberately narrow recovery rule: only after a remote dashboard has already failed because of the network will Ava wait for a validated connection and retry it once.

A healthy page is never refreshed, local and intentionally offline content is left alone, and certificate or website errors are not mistaken for an outage. System WebView and Gecko follow the same rule. The goal is not a browser that takes control from its user, but a kiosk display that does not remain stranded after the network comes back.

Letting a Long-Running Dashboard Breathe

WebView Health Steward is no longer one master switch that binds every strategy together. 0.6.8 separates its main behavior into three choices. Entity-stream scheduling organizes bursts of state changes before handing them to the page and competes less with a finger while the dashboard is scrolling. Chunked card rendering leaves off-screen cards out of layout and paint until they approach the viewport while their data continues to update. Dormant quieting pauses animation and media work behind a hidden browser or screensaver, then resumes it when the dashboard returns.

This design reflects how a wall panel lives: it may run for days or months, while a Home Assistant page is commonly built with an actively used computer in mind. Ava does not repeatedly kill or reload the dashboard just to save some memory. It first removes work that cannot currently be seen or heard, preserving page state and a continuous return.

Low-memory devices can additionally enable Entity Filtering Technology. It retains only the state subscriptions the page appears to need, but unusually nested custom cards may not reveal every entity they use. If a card behaves incorrectly, the feature can simply be disabled, or the card editor's opening type: custom:... line can be added to Passthrough card types. Users maintain a short list of card types instead of dozens or hundreds of individual entity IDs as a dashboard changes.

Music Assistant Becomes Ava's Music Console

Mac_2026-08-11 22 15 10

0.6.8 formally integrates the Music Assistant WebSocket API. After sign-in, a touch-friendly music rail opens beside the detailed player, keeping everyday music controls available without leaving the dashboard. The music console supports every screen layout, adapting across phone-shaped displays, portrait wall panels, landscape screens, and smaller older devices instead of reserving its complete controls for large displays.

Sendspin here is not a ready-made player hidden behind Ava's interface. Ava rebuilt it step by step, from protocol messages, clock synchronization, buffering, and multi-room correction through to native C++ decoding and critical audio processing. Owning that playback foundation is what lets us tune it for older tablets, different Android audio devices, and real home networks instead of waiting for another player to make those decisions.

While cooking, you can see what is coming next, rearrange the queue, or jump directly to a track. You can browse playlists and play the whole list or one song. Moving to another room, you can transfer playback, adjust room volume and delay, or rebuild a synchronized speaker group. At bedtime, set an auto-stop timer, change repeat or shuffle, enable autoplay and smooth track transitions, favorite a song, or clear the queue.

These pages have also been tightened around real touch use. Tapping a song, playlist, or another device now produces a quiet waiting state instead of appearing to miss the press and then jumping unexpectedly. Up Next, Library, and Sync use a moving top selector to make the current location clear, while Speakers, Sync delay, Sleep, and More can all scroll fully on small and landscape screens.

Ava can find MA servers on the local network and also supports a manual address, account sign-in, and an optional mTLS client certificate. These credentials enable the richer controls only. Audio still travels through Sendspin; MA does not replace the existing audio path. If no MA account is configured, the server is temporarily unavailable, or the user signs out, Sendspin playback, progress, and lyric calibration continue to work.

Path: Ava Settings -> Interaction -> Media & Playback -> Music Assistant sign-in

Keeping Multiple Rooms Together

After speakers are synchronized, the rail separates This device from Other devices. When another room also runs a current Ava version, its sync delay can be adjusted from the screen in front of you. Other brands still honestly ask you to make the adjustment on that device rather than presenting a slider that cannot work. Returning to the center 0ms point gently snaps into place and shows Auto calibrate, making it easy to return to the baseline after a manual adjustment.

Music transfer also recognizes devices already synchronized with this one, so a member of the same group is not offered again as a transfer target. Some players retain the shared Up Next list after leaving a group, making both rooms appear to remain on the same session. Clear peer on unsync under More can remove that leftover list when a device leaves. It handles only the stale post-group queue; it does not attempt to restore, rewrite, or guess the other device's previous playlist.

Music Time Is Confirmed, Not Guessed

Thank you to @realroywalker for bringing three apparently separate symptoms together in #170: disabled media controls returning, a white flash over the browser at track changes, and the next song stopping about a second after it began naturally. Those precise steps showed that this was not a settings mistake, but a gap between overlay state and protocol timing.

All three problems reported in #170 are fixed in 0.6.8. After both Home Assistant and Music Assistant media controls are disabled, restarting the service no longer brings the music overlay back. Starting or changing a track no longer flashes an empty music layer over Browser Display, and a queue advancing naturally no longer stops the next song after about one second.

Player progress and lyrics become fragile when every part of the system holds a different clock. Ava's original calibration makes a light same-position seek when confirmation is needed. Instead of maintaining layers of guessed state, it asks the upstream server to return its authoritative position. That classic approach remains in the pure Sendspin path.

Music Assistant historically did not send updated progress after every pause, resume, and playback-state change, and paused time could continue to advance against the wall clock. MA later fixed those upstream behaviors in #4876 and #3250. Ava's calibration was effectively supplying the progress update that the server should have sent.

The complication is that an MA seek can reopen its playback and transcoding flow instead of merely moving a pointer. At a natural track boundary, the same harmless-looking calibration could make the next song start and then stop about a second later. 0.6.8 keeps the sound calibration model and narrows it in two explicit places: do not reseat during a natural track transition, and do not repeat it while MA is already supplying a reliable clock. Other genuine calibration cases still use it.

In daily use, resume no longer leaves progress and lyrics at the old position, a naturally advancing queue no longer cuts out, and seeking, changing tracks, or moving playback between rooms brings the cover, title, lyrics, and time back onto the same line. Current and older MA command variants are handled as well.

Lyrics Are Ready One Step Earlier

When MA is connected, Ava can use its synchronized lyrics and quietly prepare several tracks around the one currently playing. Reopening the player or skipping through a queue is therefore more likely to show lyrics immediately instead of beginning with a blank wait. If MA has no suitable timed lyrics, AMLL, LRCLIB, and QQ Music still take over as before.

The sweep for ordinary line-timed lyrics also pays more attention to language rhythm. Commas, full stops, and spaces create more natural pauses, while a short line no longer changes after illuminating only its first couple of characters. This remains a gentle estimate for lyrics without word timing; Ava does not present it as genuine word-synced data.

The single-line lyric shown in the expanded player and the three-line view shown outside it now own their layouts independently instead of fighting over the same display state. Blank rows in lyric files are filtered, while real instrumental gaps appear as ♫♫ to preserve the beat. The three-line view also lights at the actual start of the line instead of illuminating the opening lyric before the song reaches it.

Permissions Appear Only When They Matter

The new Permission Manager brings microphone, unrestricted battery, camera, notifications, overlay, display control, location, device administration, and Accessibility into one place, with a short explanation of why Ava may use each one.

It deliberately separates “Missing” from “Not granted.” A permission is missing only when a feature the user enabled actually requires it. When no active feature needs that capability, leaving it ungranted is a normal state rather than an error. A dedicated kiosk can still be prepared in advance without making an ordinary user feel that every Android privilege must be handed to Ava.

Path: Ava Settings -> Device -> Permission Manager

Each Mod Asks Only for the Privileges Its Features Need

Thank you to @realroywalker for describing in #169 what it means to reconnect a Portal to a computer after every reboot just to start Shizuku. Previously, one privileged capability could block an entire mod. Permissions are now separated by capability: Portal Mod can be enabled without a running Shizuku service, and its ordinary sensors and controls continue to work. Advanced features such as System Chrome and log-based face presence still state honestly that they need a one-time ADB, Shizuku, or Root grant instead of pretending to be available.

Flashlight Mod also changes from an action with no reliable feedback into a real Home Assistant switch. It reads the state Android reports, so HA does not continue showing the light as on after another app takes the camera, the device overheats, or the system turns the torch off. It can also fall back to a flash unit that is not attached to the rear camera. Thank you to @r.gil for contributing and testing this work on real Android 10 hardware in the flashlight-mod commit.

After upgrading to Ava 0.6.8, update both Portal Support and Flashlight Mod from Mod Store; old mod files do not gain these capabilities automatically. The flashlight switch requires Android 6.0 or newer, camera permission, and physical flash hardware.

Bring the Wall Display Back into Home Assistant

The new Screen Capture Mod addresses an ordinary need: from another room, check which dashboard the wall panel is showing, confirm that a message appeared correctly, or let an automation preserve one frame at an important moment. Press Take Screenshot in Home Assistant and the latest capture appears through the Screen camera entity. A LAN image address is also available, and an optional last-capture time can help automations decide whether the frame is fresh.

Each action captures one current frame. It does not continuously record the screen and does not use the device camera. Small, Medium, and Original sizes are available in the mod settings so a wall-panel image does not overload the Home Assistant camera entity. When a required capability is missing, Ava returns directly to Permission Manager, locates Accessibility, and highlights the Authorize control instead of leaving the user to search through several system pages. Newer Android versions can capture through Accessibility; older devices can still use an existing Shizuku or Root path.

After upgrading Ava to 0.6.8, install or update Screen Capture 1.0.5 from Mod Store.

Less Guesswork When Home Assistant Is Misconfigured

Thank you to @huaxinCLUB for describing the confusion precisely in #165: voice could control only entities whose names matched exactly, natural-language requests always received the fixed “could not understand” reply, and Home Assistant appeared to offer only Cloud processing. Ava's speech transport was working; the missing part was the conversation agent and local voice services behind the HA assistant.

Home Assistant can sometimes accept an incomplete voice-assistant setup and reveal the problem only when someone speaks. Ava now gives a small notice first. Only after the same permanent configuration problem occurs three times does it open a concise guide to the Speech-to-text, Text-to-speech, Conversation agent, and language fields under Settings -> Voice assistants. A temporary timeout or one misunderstood phrase never opens the guide.

When HA's default conversation agent repeatedly returns its fixed “could not understand” response, Ava can also explain that the assistant may recognize only predefined phrases and point to the configured conversation agent. Detection uses HA's complete official response in each language; an ordinary apology from an AI assistant will not trigger it.

This separation matters because Ava carries speech to the user's own Home Assistant and brings its result back. It should not silently reconfigure that assistant or disguise an upstream setup problem as an Ava failure.

New Ava installations also keep a stable Home Assistant identity for the same device. Clearing app data or reinstalling could previously make HA treat it as a brand-new ESPHome device, requiring options such as permission to perform Home Assistant actions to be confirmed again. The same device can now return to the same identity. Existing Ava installations keep their current name and identity unchanged; this fix does not migrate or recreate them.

Replies, Music, and Speech Flow Again

Thank you to @lone-baggie for repeatedly sharing the recordings Home Assistant actually received and comparing hardware and software processing on a Portal in #157. A later 0.6.7 home-use checklist usefully brought regressions in captions, screensaver layering, echo cancellation, and Music Assistant playback together in one place.

All four items in that checklist are resolved in 0.6.8. Standard TTS no longer waits for a long caption to finish paging before speech begins. Floating captions return above the screensaver. Speech after software echo cancellation is clearer without relying on excessive gain. On devices using only Music Assistant / Sendspin, playback also resumes reliably after voice volume changes, track commands, and spoken replies. Ava now gently ducks the music during voice interaction and restores it afterwards instead of interrupting it with a hard pause whose state could be lost.

Software echo cancellation is not simply a matter of making everything quieter. 0.6.8 rebuilds the complete treatment and continues bringing in proven voice-processing ideas, with the goal of moving toward the behavior of professional communication devices. Ava can be playing music, an alarm, or a spoken reply while still separating its own speaker from the person in the room. Playback moves into the background, while nearby and more distant speech stays clear, natural, and even in level.

The settings page now explains more clearly what these choices actually mean. The old labels Near, Living, and Open could sound as though they referred to how far a person stood from Ava. In fact, this choice is about how long sound lingers in the space around the device, so the labels are now the more accurate Small room, Adaptive, and Open plan. Most homes should start with the default Adaptive + Standard. Choose Small room for a bedroom, study, or similarly compact space; try Open plan when Ava sits across a connected living and dining area, among harder surfaces, or anywhere echoes linger longer.

Cancellation strength answers a different question: how firmly Ava should clean up its own remaining playback in the microphone. Move from Standard to Strong if recordings still clearly contain music or spoken replies; step back to Standard or Light if the person's voice begins to sound thin. It is not a room-size control, and stronger is not automatically better. Steady household sounds such as fans, air conditioning, and range hoods remain the job of smart software noise suppression rather than a reason to raise echo cancellation.

Standard and streaming voice replies are now both treated as sound coming from Ava itself, so the speaker's reply is not simply sent back into the next recognition turn. During continuous conversation, Ava also waits for a long reply to actually finish even when its reported playback length is inaccurate, avoiding a sentence being cut halfway and heard again by the next turn. The transition prompt now moves with the orb and uses short fades to remove the abrupt click, while an ordinary single-turn session clears the previous color so the next wake begins cleanly.

Thank you to @ds2000 for the complete logcat, confidence data, and packaged-app analysis in #166. It showed that hey_jarvis had already been heard at 0.99 confidence and was then asked to clear the ceiling threshold twice. microWakeWord now fixes that repeated-confirmation path: offline verification no longer requires the same wake phrase to fire twice, while Ava still checks the audio it just heard to reduce wake-ups from television and background conversation.

Everyday Polish

  • Settings subpages now use a short fade on entry and return. Navigation feels less abrupt without a decorative page-turn animation slowing older devices.
  • Long descriptions scroll internally only when they truly overflow. A finger placed on the description no longer lets the parent page steal the gesture, also removing landscape flicker and accidental scrolling.
  • System feedback is consolidated into Ava's restrained prompt bar, so download, permission, copy, and error messages no longer appear as a mix of unrelated Android Toast styles.
  • The voice orb no longer tears down and rebuilds its entire overlay between Listening, Processing, and Speaking. Breathing motion and captions remain continuous; the window is raised only when first shown or genuinely covered by the screensaver.
  • If a voice flow becomes stuck in Listening, the floating orb dismisses itself after a long period without speech instead of remaining over the dashboard forever.
  • If repeated opening and closing leaves a dual-dashboard or floating browser container dormant, Ava rebuilds the unresponsive surface instead of leaving a visible but unusable page.
  • Turning off both Home Assistant and Music Assistant media controls now also turns off the music overlay and its dependent display options, preventing a source-less control from being opened accidentally.
  • After the master service is turned off, the idle screensaver no longer keeps counting and quietly returns. Collapsing the full music player back to its small orb restarts the idle timer, so a player that was once expanded cannot block the screensaver indefinitely.
  • Update version, checksum, and download state are retained more reliably. Cold-start and app-switching decisions are steadier as well.

Don't miss a new Ava release

NewReleases is sending notifications on new releases.