Ava 0.7.2 - Fable +
First, thank you to everyone who brought some sunlight here
Before this release begins, I want to thank everyone who has supported Ava with a donation. This list has no ranking and is not ordered by amount: Ricardo, dmzdumnezo, daydy16, Someone, Lone Baggie, Kristian Lorbetzki, laowusun, and Tweakers Pentode. Thank you.
Independent development is not sunny every day. Much of it is one person awake late with a bug that refuses to repeat consistently, a test device he cannot afford, or a repair that exposes another problem on a different old tablet. A donation does not make those problems disappear. It does tell me that someone on the other side of the screen values Ava and wants to help it continue. That is more than money. It is the certainty that these late nights do not remain inside my room; eventually, they reach somebody else's home.
Thank you as well to everyone who responded publicly on Reddit. Thank you to u/cdmn1 for the comment; to u/QuaintStaircase for saying, even through disappointment, that the household had already moved to Ava and explaining why that trust existed; and to u/russilker for running, testing, and recommending Ava across roughly twenty different Portal and Echo Show devices. No emulator can replace a home containing that much varied hardware.
Thank you also to u/Yard-Overall in the Facebook Portal thread for celebrating the innovation happening in the community; to u/FuzzyWuzzyWuzHebert for saying Ava finally brought a long-running Portal+ voice-assistant project to the point where it could genuinely be used; and to u/psavage123456 for reporting the Device Admin failure on a second-generation Portal+, which directly informed this release's display-lock and panel-power repairs. My thanks again to itsgreat2misha for sharing a Portal tutorial that helps new users finish the installation. Some people brought encouragement, some brought a fault report, and some brought a guide. Every kind of response became part of making Ava better.
The words from @daydy16, @rdehuyss, @realroywalker, @zmd22, and @deergitseason in GitHub #188 restored some of the motivation to keep refining Ava. I especially appreciate @deergitseason returning with the result that 0.7.1 had been the most stable Portal release so far and that Bluetooth with Bermuda had remained solid. Thank you also to swifty in the Home Assistant community: saying that Ava turns devices headed for the trash into useful parts of a home describes the fable this project set out to tell.
FABLE does not claim that an old device can magically become young. It says that enough real support, honest feedback, and persistence can still change how its story ends. Thank you for giving me more reason to keep doing this carefully.
Please also take a look at Dashie Kiosk
During an ordinary bit of browsing, I opened Dashie's Google Play page. What moved me first was not its feature list, but the warm, lived-in photographs taken by a real family. They reminded me what Home Assistant means to me: not another count of features on a screen, and not a contest over which developer moved faster, but technology finally returning to a home and making one family's daily life a little better.
That is why I genuinely want to recommend Dashie Kiosk here. I have quietly followed the project for some time. I saw its author wrestle with its direction and seriously consider open sourcing it. I know that when one person slowly builds something from nothing, none of those choices are easy. Dashie has shaped its Home Assistant kiosk for Android tablets and televisions, photo screensavers, cameras, voice, and Music Assistant into something distinctly its own. This is not a polite exchange of recommendations. It is my honest feeling after watching the project: I wish you well, and I hope Dashie travels far.
0.7.1 made many old devices trustworthy with the screen off again. 0.7.2 asks the harder follow-up: when Bluetooth briefly goes quiet, two players disagree, a wake-word engine listens through a full day of television, and an old tablet still has to carry the home interface, can Ava recover without asking the user to intervene?
The answer is yes. This release does not buy reliability with more permanent background load. It improves the decisions Ava makes, keeps recovery measured, and moves more of the work that must run continuously into efficient native paths. This is a second, deeper pass across Bluetooth, voice, music, and the tablet experience.
Home Assistant finally has its own place inside Ava
Ava no longer treats Home Assistant only as a dashboard to display. Connection Settings can now discover local Home Assistant instances or sign in directly with a URL and long-lived access token. Once connected, Ava lists the full Assist pipeline collection, lets users choose the preferred pipeline, and directly adjust its language, conversation agent, speech-to-text engine, text-to-speech engine, and voice.
Weather, media players, Quick Entities, Dawn cards, Simple Clock status items, and scene editing can now search and select entities instead of requiring a copied entity ID. Additional controls can keep Bluetooth scan mode and service-call permission aligned with Home Assistant, or send light, scene, and media actions directly through WebSocket instead of waiting for another path to relay them.
Cameras also move beyond periodically refreshed still images. After sign-in, Quick Entity can request a real HLS stream from Home Assistant and use the same authenticated session for protected camera frames and media artwork. If live streaming is unavailable, Ava retains its existing camera fallbacks. Camera tiles also gain gesture zooming and free panning in this release, making it possible to enlarge the doorway, yard, or room area that actually matters instead of accepting one fixed crop.
Path: Ava Settings -> Connection -> Home Assistant
Bluetooth Presence AI: an on-device radio inference engine
For the first time, Ava connects the complete Bluetooth presence path across rooted, Shizuku, and ordinary non-root Android devices. Even without Root or Shizuku, enabling Android's built-in Device Admin lock permission allows the device to use local inference, dark-screen verification, and automatic return to sleep as one complete path. There is no need to flash or modify the operating system, and this capability is no longer reserved for the small set of unlockable devices.
0.7.2 introduces the new Presence AI on-device inference engine. It is not a general-purpose cloud model, but a local intelligent decision system built specifically for Bluetooth presence: household presence data does not need to be uploaded, and inference continues without an internet connection. It upgrades presence from a simple timeout into multi-signal temporal reasoning. Ava creates a dynamic advertising cadence fingerprint for every tracked device, then fuses RSSI movement, bonded connections, ambient radio activity, and correlated silence across other devices. One device disappearing and an entire receiver going deaf are now different events. When several devices vanish together, cohort-silence correlation resets the scan generation and waits for new radio evidence instead of turning one Android failure into an “everyone left” report.
The core Dark Wake Verification technology is a reversible dark-screen radio transaction. It runs only when an away verdict is about to take effect. Ava first proves that the device can safely return to sleep, creates a pure-black low-brightness protection layer without rewriting the user's brightness setting, then briefly restores Android's complete scan window. Switching between filtered and unfiltered scanning can recapture a phone that rotated its private address while the screen was off. The transaction either commits fully and returns the display to sleep or rolls back safely when its preconditions fail. A genuine user touch always has the highest priority and immediately takes ownership of the screen.
Scanner recovery follows a tiered self-healing decision tree: session rotation, independent liveness probing, main-scanner reconstruction, and only then system-level recovery. Each deeper stage requires stronger evidence of failure. If Bluetooth and Wi-Fi share a radio path, dangerous recovery is vetoed outright. Every inference is time-bounded, so even a household that genuinely leaves together is never held home indefinitely.
This is not Bluetooth scanning with the power turned up. It gives an Android device dedicated intelligence about its radio environment. Private-address rotation, screen-off power restrictions, and several devices falling silent together no longer leave Ava with only a countdown timer. Ava does not believe someone left merely because it heard nothing; it first proves that it can still hear.
Longer voice answers no longer stop at ten seconds
With streaming TTS enabled, longer weather reports, questions, or local AI responses could previously be cut off at around ten seconds. Audio was still arriving from upstream, but because the final signal came slightly later, Ava mistook a healthy long response for a stalled session.
Ava no longer ends playback on one fixed ten-second countdown. As long as new audio continues to arrive, it patiently plays through to the real ending; recovery takes over only after the stream has genuinely stopped making progress. Thank you to @realroywalker for the complete Portal Mini and Portal 10 logs in GitHub #191, which exposed the failure at exactly the moment the old timer fired.
C++ OpenWakeWord: not another tune-up, but an engine rewrite
Ava first turns each piece of sound into a 96-dimensional acoustic representation. It does not memorize one rigid “correct” waveform. It describes the pronunciation, rhythm, and continuity that make up a spoken phrase, giving different languages, accents, speaking speeds, and everyday connected speech room to sound natural. Users around the world should not have to slow down deliberately, separate every syllable, or imitate the accent a machine expects. They can wake Ava in the way they normally speak.
Ava also does not merely wrap OpenWakeWord behind another interface. Its new native C++ path reads supported ONNX graphs itself, reconstructs their convolution, pooling, and activation stages, then turns a model designed around complete audio windows into a continuously running streaming engine. Instead of recomputing nearly two seconds of audio on every cycle, Ava retains the completed state of every layer and advances only the newly arrived sound.
On the current embedding model, the traditional full-window path performs about 41.96 million convolution multiply-accumulates per inference, while only about 5.61 million belong to genuinely new audio. Stateful streaming removes roughly 86% of that repeated work. Two streaming graphs offset by half a step alternate their output, reducing the scoring interval from 80 ms to 40 ms. Short, quickly spoken wake words can therefore be caught closer to their score peak without keeping the CPU at full load simply to improve response time.
Multiple wake words do not each run another complete audio model. Ava extracts one shared representation and sends it to the lightweight classifier for each active phrase. If a newly imported model does not match the streaming graph shape, the engine automatically falls back to the complete ONNX path. The fast path is an optimization, not a restriction on which models can run.
OpenWakeWord now behaves more sensibly around continuous household sound. One short score spike is no longer enough to wake the device; a detection must hold across a brief consecutive window. After a trigger, the score must fall before the detector rearms, preventing television dialogue, repeated TTS, or residual echo from firing again as soon as a cooldown expires.
Ava also fixes the first utterance after engine startup being swallowed by a false cooldown, and retunes the speech lookback used in quiet rooms. Short, quickly spoken wake words can be caught near their strongest score. After a conversation, the engine performs a light reset rather than creating an obvious deaf period. Sensitivity remains under user control, but it now works together with temporal confirmation, rearming, and voice activity instead of merely moving one threshold.
microWakeWord: native regression verification for children and female voices
microWakeWord receives an important reconstruction of its own. After the streaming model fires, Ava retrieves the complete contiguous wake phrase from its audio ring buffer, runs it back through the Ava Pro custom C++ audio frontend, and performs an independent regression check with the same microWakeWord model. It no longer trusts one isolated high-scoring frame, but it also no longer rejects a genuine wake simply because the second pass begins from a cold frontend.
The new verifier follows the user's active sensitivity and adds calibrated room for cold frontend state, short-phrase boundaries, and a partially filled sliding window. The low-score rearm period that prevents duplicate wakes is no longer mistaken for a second requirement to detect the phrase again. Lighter, shorter, and higher-pitched child and female voices are therefore no longer disproportionately filtered at the final verification step.
This regression path has completed 100 hours of continuous sample validation, covering children, women, adult men, quiet speech, fast connected speech, and different distances, with every target regression sample passing. microWakeWord is no longer merely a compatibility engine that remains available. It is a stable option refined through Ava Pro's native verification path.
Know immediately whether an old device can keep up
Some devices appear completely healthy: the microphone is live and the satellite is running, yet no spoken wake word ever works. The problem may not be sensitivity at all. An old CPU may simply be unable to complete OpenWakeWord inference in real time.
Voice Stats now shows the wake engine's processing headroom, including average time, peak time, and the real-time limit. It turns clearly red when the device cannot keep up. Users no longer need to keep changing a sensitivity setting that can never solve the problem or discover the answer by chance in a log. Thank you to @daydy16 for finding this blind spot with two real older devices in GitHub #190.
Two wake words, each with its own light
Wake Word 1 and Wake Word 2 can now have independent motion and transparency as well as independent colors. One can feel lively while the other remains restrained. During listening and speaking, the glow follows the actual voice level without ever becoming completely invisible. Every adjustment previews immediately, so users do not have to leave the page repeatedly just to see the result.
More wake words, available directly in Ava
The Wake Word Library is now a complete online entry point. Users can search models, inspect their author and source, follow download progress, and install compatible OpenWakeWord models from Ava's curated catalog or the community collection. Downloads are checked for format and integrity, while source and license information remain attached to each model.
Curated and community content have clear boundaries. The Wake Word 1 / 2 pickers contain Ava's bundled and curated choices. Nearly one hundred community models remain in the separate library until the user explicitly chooses one, so downloading a model no longer floods both pickers automatically. The library also paints its search and list skeleton immediately, rather than looking frozen while a slow catalog request completes.
The library can now import a ZIP, a bare OpenWakeWord .onnx model, or matching JSON and model files. Ava generates a usable configuration when only an ONNX model is supplied, while batch imports report successes and failures separately. Locally trained and offline-saved models no longer need to be placed into Ava's folders by hand.
Path: Ava Settings -> Voice Configuration -> Wake Word Library
Every Ava shares the same moment in the song
Late Music Assistant or Sendspin state should not leave a group of Ava devices showing different tracks, positions, or pause states. 0.7.2 strengthens Ava's own peer synchronization. Play, pause, resume, and seek changes carry an explicit new state across the local network, while a device that joined late or missed one update can converge from later packets.
The leading and following devices continuously calibrate their displayed position. They no longer freeze on different seconds after pausing, begin a resumed track apart and only align later, or ignore a seek made on the other device. In groups with several Ava devices, one stable peer becomes the progress reference so devices do not correct one another in a loop. Leaving a group or clearing its queue also removes stale track identity, artwork, and progress together.
This does not replace Music Assistant or Sendspin. It completes the final Ava-to-Ava leg when upstream state is briefly incomplete.
The music window is now a control surface
The detailed Music Assistant player gains a complete sidebar. Users can inspect and reorder Up Next, search songs, albums, and playlists, play a playlist or add a track to the queue, and favorite the current item. The Speakers page manages groups and member volume. Sync controls can automatically calibrate delay for this device and other Ava devices, then remotely adjust another device's five-band EQ and lyric timing.
The same sidebar now contains the sleep timer, autoplay, track crossfade, queue clearing, and multi-device window linking. Expanding or collapsing one player can do the same on its paired device. When synchronization ends, users can choose whether the other device's old queue and now-playing state should be cleared as well.
Sendspin itself now makes stronger recovery decisions around dead streams, track changes, seeks, pause and resume, and queue clearing. It confirms that audio has genuinely stopped before skipping an unplayable item. A brief silence no longer starts a skip storm, and stale progress can no longer pull the display behind audio that has already been heard.
Tablet Settings now behave like a tablet interface
Landscape tablets gain a true split Settings layout: the directory remains on the left while the current page opens on the right. Expanded information uses the full pane, while pages that need room, such as Software Update, automatically open at full width. Music Assistant login, statistics, and handle sheets reorganize for their pane instead of stretching a phone layout sideways.
Settings are also reordered. Device Services now follows Connection, with Device Control and Device Logs at the top. Home and System, Display, Sensors, and the remaining capabilities are grouped by purpose. Common destinations appear earlier, while Software Update, launcher controls, automatic restart, and display controls are easier to locate. Users can still disable landscape split mode and retain the familiar single-page navigation.
Dozens of Settings pages received another split-pane pass during these two days. Bottom handles, expanded explanations, entity search, and Device Logs now scroll correctly inside the active pane instead of becoming top-heavy or being clipped by the right pane. The main service card and rotation recovery use a lightweight centered loading ring, so waiting for service state no longer shifts the whole interface.
Path: Ava Settings -> Device Services
Open household apps directly from Home Assistant
Apps explicitly selected for Minimal Launcher can now appear as a dropdown entity in Home Assistant. An automation can open a chosen app, select Ava Pro to return to the desktop, or use Close current app to dismiss the third-party interface currently on screen. This action never closes Ava itself, and the selector returns to “Not selected” afterward so the same automation can be triggered again at any time.
If Ava really falls, it can now bring itself back
The new Crash recovery option brings Ava back to the screen after its process ends unexpectedly. A separate watchdog covers the harder failure where the process still exists but the interface no longer responds. Ava records the reason and attempts recovery; if the same failure happens twice within a short window, a fuse stops automatic restarts so the device cannot fall into an endless loop.
Abnormal end records retain the latest 20 crashes, renderer deaths, interface stalls, user restarts, and external exits on the device, including stall duration and an available stack trace. These records are not exposed remotely by default. They appear on the page or in an authorized remote console only after the user enables Show and export logs.
New installations enable crash recovery by default. Upgraded installations retain their previous choice and are not forced on. Android 10 and later require Display over other apps before Ava can actually return to the screen after a crash.
Path: Ava Settings -> Device Services -> Restart & Exit / Device Logs
More repairs
- Presenting the music window over AOD no longer tears down and rebuilds the full screensaver layer, preventing a bright one-frame flash.
- Display sleep, device lock, and panel power are tracked separately, preventing one successful action from reporting a different state to Home Assistant.
- Camera entity previews recover from blank frames and brief connection failures more reliably.
- Pull-to-refresh in WebView now begins only when the page is genuinely at the top, avoiding conflicts with left-edge navigation and the system top bar. If the status bar is revealed by a swipe, Ava also restores immersive display automatically.
- Browser first paint, split-pane loading, and screensaver handoff now use bounded waits and malformed-state guards, so one stuck page cannot hold the screensaver or the other pane indefinitely.
- Notification animations, desktop widgets, network connections, and service listeners now release their old callbacks during rotation, rebuilding, and disconnects instead of accumulating them over long runtimes.
- ESPHome connections now skip unknown message types and reject abnormally oversized frames, preventing one unfamiliar or damaged message from taking down the entire connection.
- Simple Clock receives further 12-hour, background, and AM/PM layout fixes.
- TTS speaking animation is no longer blocked by the overlay permission for Floating Subtitles when that feature is disabled, so new installations see normal audio movement.
- New installations place Restart / Exit and Dark Mode at the front of the sidebar by default; existing users keep their saved order unchanged.
0.7.2 does not make Ava louder. It makes the abilities that must remain in the background misjudge less, compete less, and require fewer moments where the user has to return and put things back in order.