Skip to content

Releases: knoop7/Ava-Pro

week

Choose a tag to compare

@knoop7 knoop7 released this 04 Sep 19:08
a85b206
Ava Pro 0 7 5 UI Banner

Patch

This is the patch after 0.7.5 shipped. Thank you @open-forest for #211.

  • Bluetooth claims no longer sit forever. Simulated slots and LAN UDP stay. A claim expires: this panel keeps it through the 25-second scan rest; a quiet peer is gone after 20 seconds.
  • A stronger panel can take a slot. Takeover needs about 8 dB more, held 12 seconds, three times. Old AVA_CLAIM:id:address packets still work; no RSSI cannot win.
  • Home Assistant unsubscribe does not drop a live claim. Full-slot recovery looks at real GATT only, so a BTHome occupancy does not freeze the scanner.
  • Android 12 and below get a fake sidebar blur. It follows the Liquid Glass slider. The plate stays thicker. Overlays stay as thicker material and do not fake a blur.
  • Device Controls uses two tiles. Restart/exit and crash records sit side by side, blue refresh and grey log.
  • STT on the D-handle sits inner-top, not mid-screen.
  • Long STT wraps on the mic (11 characters × 3 lines) instead of being thrown to the tail.
  • The bubble moves out and up. Opaque plate, kiss the inner D edge, stay on-screen, never flip to the wall.
  • Button and Hybrid no longer leak wake chrome. Tap or hold does not show the ripple, Esper orb, or edge meters.
  • Button-turn TTS no longer flashes a black floor. The full-screen caption gradient stays off until the wake orb needs it.
  • Loud TTS no longer trips Stop. A virtual pad is subtracted from the microphone during playback. Nothing extra is played from the speaker.
  • Sendspin auto-calibrate locks 0 at the speaker jack. It subtracts the path in front of the DAC. The delay slider is unchanged.
  • Cold start no longer hides overlay Back when weather binds after Dream Clock.
  • Settings chrome waits 10 seconds after the last touch before folding.

Ava 0.7.5 - week

gathers what landed in the same week: a new device can inherit an existing setup, wake detection can adapt to the room, devices without a suitable wake phrase or with only a remote remain usable, and spoken volume can rise with ambient noise.

New devices inherit setup with a pairing code

Adding another tablet no longer means configuring voice, browser, mods, and widgets from scratch. Two Ava devices on the same LAN transfer directly: the sender shows a six-digit pairing code, the receiver enters it, and the copy starts. The window stays open for five minutes. The exchange is encrypted on the LAN — no cloud, no USB stick.

Interface and services, browser, voice, music, mods, launcher icons, and widget layout can be selected individually. Home Assistant and Music Assistant credentials are excluded by default. MAC address and ESPHome node name never leave the source, so Home Assistant treats the receiver as a new device. Nothing is applied until the receiver confirms. First-run onboarding does not open pairing; Send or Receive is started from Backup & restore.

Path: Ava Settings -> Backup & restore -> Clone

Wake words learn on-device to cut hallway false triggers

Passing the hallway or leaving the television on can wake a wall tablet. This week adds on-device wake learning. Wakes that become a conversation are kept as positive samples; no-text and immediately cancelled wakes count as negative. Samples stay on the device. Recordings are not uploaded.

A newly trained verifier does not replace the factory one immediately. It is published only after cross-validation: at least 90% of genuine wakes retained, false-wake rejection not worse. Until there is enough evidence, the factory verifier remains. Open Wake Word and microWakeWord share this layer. Open's embedding path now runs as on-device C++ instead of ONNX. The settings page shows learning state, with retrain and clear.

Path: Ava Settings -> Voice configuration -> Wake learning

Start talking from a floating button, without a wake word

Mac_2026-09-05 02 53 49

When a wake phrase is inconvenient, a floating microphone on the left or right edge can start the session. It rests as a D-handle and becomes a disc when pulled out. Three modes:

  • Voice keeps the wake word and hides the button
  • Button starts sessions only from the microphone; wake detection, the catalog, and earcons turn off together
  • Hybrid allows either the wake word or the button

A tap lets VAD finish the utterance; hold-to-talk submits on release. A tap during STT or TTS stops the turn and starts listening again. Playing music ducks while the user speaks. User text appears beside the button; the reply uses a centered three-line subtitle. Devices with only a remote can move through Settings with the D-pad and open the sidebar with the menu key. Touch devices do not boot with a selection box.

Path: Ava Settings -> Voice configuration -> Wake mode

Spoken volume rises automatically with room noise

A weather announcement can be too loud at night and too quiet when the room is busy. #209 asked for automatic gain from ambient noise, without lowering the user's setting.

Idle microphone level estimates room noise and adds on top of the TTS slider. A quiet room keeps the set value. A loud room can add about 55 percentage points, never past full scale. The slider marks quiet, normal, noisy, and loud. The Home Assistant volume entity follows the actual output. Off by default.

Path: Ava Settings -> Voice configuration -> Voice reply

Dream Clock adds a full-bleed analog and a flip face

Mac_2026-09-05 02 30 46 Mac_2026-09-05 02 30 38

A wall tablet can stay on as a clock without remaining on the original circular analog. Dream Clock now has two families. Mechanical is the existing circular analog, chosen only in Settings. StandBy has a full-bleed analog page and a flip page; swipe up or down on the overlay to switch. Hours, minutes, and optional seconds flip independently. Hiding seconds stretches the hour and minute cards. Swipe left or right through 52 themes — Obsidian, Porcelain, Aurora, and others — not a three-way black, white, and color set. 12-hour time and League Gothic or system fonts are optional.

The flip page can run a local countdown: 5, 10, or 25 minutes. A custom duration appears only after a Home Assistant timer.* is bound. Zero can play an alarm; a tap on the clock stops it. select.dream_clock_flip_style can be published so a Home Assistant choice applies immediately, and a swipe on the device writes back. An optional switch shows or hides the overlay remotely. Smart AOD fades a dark cover after idle; taps through 85% depth still hit the clock, and a first tap above that only wakes. The settings button can be locked with a long press so it no longer appears.

Path: Ava Settings -> Screensaver -> Dream Clock

Update disclosure leads with this device

When a release is available, the disclosure sheet leads with this device: Update or Later. Other devices wait for the next step, so the sheet does not list the whole house first. The Home Assistant update entity can check again immediately, without waiting for the 12-hour cycle. Later is remembered and does not return on every launch.

Path: Ava Settings -> Device service -> Software update

Music keeps old and new servers in sync

Current Music Assistant uses a Noise handshake; older servers still use plaintext hello. Both paths remain. A failed handshake falls back for three minutes. Cover, artist, and title update after a track change. Lyrics that fail a duration fit are skipped. Clock calibration follows time already leaving the speaker, not a separate delay model. The default DSP recognizes German "Stopp" spoken closer to "schtopp" or "shtop" without a separately trained stop word.

The first 300 ms of TTS playback is guarded so the announcement does not interrupt itself.

Liquid Glass on the sidebar and overlays

Mac_2026-09-05 02 45 17

Liquid Glass is used on the sidebar, floating windows, notifications, volume, and the bottom dock. Settings list cards stay clear. With glass on, the sidebar keeps vertical inset, sits 10 dp off the screen edge, uses rounded corners, and dissolves at the scroll edges — 30 dp in portrait, 20 dp in landscape. Intensity defaults to 50%, with a two-second preview on the slider. Light mode uses a thin edge; dark mode uses black-grey. Turning it off leaves no blur on Dream Clock or the browser. Opening the sidebar covers the system navigation bar. Floating app-window title bars stay opaque.

The Home Assistant header insets only the inner buttons, so the bar no longer tears a gap. Light and dark switch in-page, without a full reload. On Facebook Portal compact desktops, app icons no longer cover the store. Rooted floating windows no longer create a virtual display as uid 0. New landscape installs default to left index and right detail; portrait stays single-column. Settings, Permission Manager, and Mod Store support remote-control focus navigation.

Path: Ava Settings -> App style -> Liquid Glass

Community

  • Android 5.1 crashed on launch: the alarm, onboarding permissions, toast, and camera check called APIs that exist only on Android 6, which became `NoSuchMet...
Read more

2018

Choose a tag to compare

@knoop7 knoop7 released this 28 Aug 16:52
c0eb346
Ava Pro 0 7 4 Game Banner

Patch

Shipped after 0.7.4, included in the current build.

Wake strictness can go further. The engine's own sensitivity has a ceiling — turning it up more does not get more accurate, it just stops hearing you. The Wake word 1 and Wake word 2 sliders are now two zones: the left side is the same sensitivity as before; past the end, two extra confirmation steps begin.

  • Strict+: after a wake is heard, Ava checks it once more. Fewer false wakes. The Open engine is slightly slower; micro does not add wait.
  • Max: the strictest check. Far away or spoken softly, the phrase may be missed.

Leave it alone for daily use. If the TV or a hallway passer-by keeps waking the tablet, try Strict+ first. Crossing a step ticks the vibrator; devices with no motor stay quiet. On Android 12 and older tablets the sliders often had no haptic at all — that is now wired through the rest of Settings as well.

Path: Ava Settings -> Voice Configuration -> Wake word

  • If a settings file is damaged, Ava keeps a backup before restoring factory defaults. Home Assistant login and wake words are no longer wiped with no copy left.
  • If the system temporarily revokes “display over other apps”, voice-message receive and similar switches are not permanently turned off. When the permission returns, the features are still on.
  • The “ignore battery optimization” system prompt appears at most once per device. A service restart or crash recovery will not ask again. You can still grant it later from onboarding, the permission page, or service settings.
  • Repeated background-service restarts no longer keep growing memory.
  • After Browser Health Steward is turned off, a dashboard that is using too much memory still refreshes itself at a quiet moment, so older tablets do not flash white in a crash loop.

Ava 0.7.4 - 2018

In 2018, these tablets went up on the wall. 1 GB RAM, system WebView frozen at Chromium 69. That year, HA's custom cards were a few lines of simple HTML. Eight years later, these tablets need to run Bubble card, glassmorphism, UIX, WebRTC camera streams.

0.7.4 makes them run.

System WebView is now the default path

Running today's HA frontend on a 2018 tablet, heavy custom cards render wrong. For three years the answer was always "install the Gecko engine pack": a second process, a second memory footprint, a second set of permissions, two OTAs, 200 MB of RAM stripped from a tablet already scraping by.

The compatibility layer moves into the system WebView. Syntax is lowered on the fly so old engines parse today's JavaScript. Missing APIs are polyfilled. Camera cards stop flashing white. 32-bit memory exhaustion self-heals instead of crash-looping. What gets intercepted is syntax lowering only; on failure, original bytes are returned; card logic is never modified. The Gecko pack can be uninstalled and kept as an escape pod; the same compatibility layer is now in the Gecko pack too. The 200 MB it used to eat now lets dashboard, intercom, and camera run simultaneously without dropping frames, for the first time on old hardware.

The layer reaches down to Chromium 69. Modern border-radius, spacing, icon sizes, and small buttons such as Add integration and Add assistant no longer break their edges on old engines. Popup cards stay inside the viewport instead of overflowing the scrollbar and Ava's sidebar. The HA navigation bar insets slightly so it no longer fights the sidebar. Calendar cards no longer flash white on unrelated entity-registry pushes.

The browser sidebar gains page zoom: tap to expand the slider in place, bidirectional with the Home Assistant scale entity, collapsed when idle. New installs turn sidebar tools on by default (Tampermonkey stays off), so the first open already shows them. The Web console input has an expand control so long scripts can be written fullscreen before send.

Off-screen cards pause layout and paint, WebSocket subscription density steps down under the screensaver, CSS animations and audio/video decoding pause when the browser is hidden. Same 2018-2026 tablet, lower CPU and GPU load than 0.7.3, better touch response.

Path: Ava Settings -> Display & Browser -> Browser settings

Experimental

  • Stop-word engine echo handling rewritten: the assistant is reading the weather forecast, you say "stop", nothing happens. The machine's own audio is bouncing from the speaker back into the microphone, swamping the human voice. 0.7.4 feeds the playback reference signal into the detector, learns per-band echo-path gains, subtracts the machine contribution from the mic signal, and classifies on the remaining "human evidence." Reliable barge-in during TTS playback. See Wiki.

Bayesian occupancy fusion

A wall-mounted tablet sits on the wall, screen on. Does it know someone is present?

A PIR sensor triggers when someone moves in the next room. Face detection fails in low light. A single sensor is always caught between false triggers and missed detections.

Six observation sources fuse into a single occupancy probability on-device: face, frame motion, touch, vibration, proximity, voiceprint. Fusion is not a vote. Four layers stack: Bayes gives each signal its own weight of evidence — a face is near-certain, a faint desk vibration only a weak hint; hive inertia keeps a sitting person from being marked gone, while a brief walk-through fades fast; causal hysteresis stops the state flickering around the threshold; the house prior rides the existing LAN identity beacon, so when another room just saw someone, this room believes its first weak signals sooner.

Path: Ava Settings -> Advanced -> Experimental

Fixes

  • Floating app window, all Android versions covered: Android 7–9 use system freeform mode; Android 10+ prefer scrcpy virtual display mirror, degrading to freeform when the mirror cannot start.
  • Gecko engine pack installer improved: when ROM rewrites the APK and breaks SHA comparison, installation is confirmed by version code.
  • Fixed update popup reappearing after killing the app.
  • Browser sidebar handle matches main app sidebar: 72 dp visual length, 36 dp hit width.
  • Screensaver WebView correctly inherits font size and dark-mode sync from the main browser.
  • Fixed screen-brightness fallback fighting the active-window overlay on non-root / non-Shizuku devices.
  • Home-screen core-service widget now shows connecting, disconnected, and error, not only running and stopped; the music widget shows artist and progress; the sensor widget backfills its history wave from HA, and its corner icon prefers the one stored on the matching quick entity.
  • Sendspin paired progress is bidirectional: a finger seek moves both sides, a track change reseats the timeline from the start, and artist/title no longer linger after unpair.
  • With the cluster website console on, the HA device page gains a Visit button that opens this device's Fleet console.

Thanks

Thank you to @ds2000(#204) for diagnosing and fixing microphone capture recovery after audio server restart; to everyone whose issues, logs, recordings, and screenshots shaped this release. 2018 hardware deserves 2026 designs.

BOUNCE

Choose a tag to compare

@knoop7 knoop7 released this 26 Aug 10:19
1a73dd3
Ava Pro 0 7 3 Banner

Post-release patch

Fixed after 0.7.3 shipped, included in the current build:

  • @wsardisson(#200): Onboarding "Add this device" now shows the actual ESPHome port the service binds, not a hardcoded 6053.
  • @wsardisson(#201): ESPHome node name no longer gains a _2 suffix on every service restart — stale NSD registration is cleared before re-announcing, so voice_action services stop accumulating in Home Assistant.
  • @wsardisson(#202): Intercom inbound path no longer wedges after service restarts and permission changes — incoming rings and accepts are no longer silently dropped until a full reboot.
  • @wsardisson(#203): Call state machine rejects mismatched accept/hang-up against stale session IDs, preventing peers from desyncing after rapid hang_up/start churn. Incoming auto-answered calls now dismiss the screensaver and surface the call UI.

Additional fixes in this patch:

  • Settings Style page adds a manual Display scale slider (75%–200%, 5% steps). The scale wraps the whole UI consistently — density, dp dimensions, and every layout breakpoint move together, so a misconfigured panel that reports too-large dp widths no longer leaves every sp/dp rendering physically tiny. 100% short-circuits to the untouched context, so devices that never touch the slider keep today's rendering bit for bit. When the reported configuration is outside the design envelope (common on white-label tablets), Ava offers the slider once as a nudge. The same page also toggles landscape split view and the main-list bottom pull-handle. Path: Ava Settings -> Advanced -> Settings style

  • Wake continuity: ok_nabu and other wake words can fire in quick succession — one sentence no longer drops the session. In continuous conversation mode, after TTS finishes a continue chime plays and the satellite re-enters listening with the same HA conversation ID, no wake word needed. Wake pre-roll capture buffers mic frames from the moment the wake fires, through the earcon and arbiter chain — speech spoken over the chime is spliced to the queue head when the uplink opens, so HA's first frame is your voice, not the chime tail. TTS echo self-trigger protection: when the assistant's response text contains the wake phrase, wake detection is held for the estimated TTS duration so the assistant cannot wake itself; wake and stop channels are separated, so a response mentioning the stop phrase does not lock wake, and a response mentioning the wake phrase does not lock stop.

  • Stop-word model selection: invalid or stale model IDs fall back to the built-in DSP detector instead of leaving stop detection broken.

  • Wake word no longer fires during TTS playback; cursor wake-up timing window tightened.

  • Floating subtitle overlay no longer leaks the player surface on dismiss.

  • Toast rendering on irregular DPI screens no longer clips or offsets.

  • Bluetooth presence RSSI threshold no longer over-triggers on marginal signal fluctuation.

  • Software Update release-notes fingerprint stable across same-day fetches.

  • Floating window rotate/resize geometry persisted and restored across orientation changes.

  • Chorus Wake arbiter no longer drops a yield under rapid multi-device wake collision.

  • Screen brightness fallback on non-Root devices no longer fights the active window overlay.

  • HA entity state sync replays a full snapshot when watched entities change, preventing stale values after reconnect.

Ava 0.7.3 - BOUNCE

multi-device wake arbitration, ESPHome Noise encryption, an ADB control gate, graded WebView performance scheduling, Settings search, a complete French interface, a screen-off CPU keep-alive, a model-free "Stop" barge-in detector, Home Assistant WebSocket direct connection, a floating app window, a Camera Vision mod, and Android 14+ mod loading repair, while raising the built-in ESPHome baseline to 2026.10.1.

Performance: giving the CPU back to the device

0.7.3 is built around performance. The three most CPU-hungry pipelines — wake-word detection, stop-word recognition, and WebView rendering — all went on a diet at the same time.

The wake-word engine continues on its C++ native streaming architecture, cutting compute by roughly 86% versus the old approach. A 96-dimensional acoustic embedding is shared across all wake words, so one inference pass serves multiple keywords; per 40 ms scheduling tick, inference cost stays well under the real-time budget. 0.7.3 further tightens scheduling after silence — once quiet is confirmed, expensive inference pauses within 150–250 ms, dropping idle-frame CPU usage to near zero.

Stop-word recognition discards the machine-learning model entirely — zero TFLite, zero ONNX, zero inference cost, zero model loading, zero GPU/NPU usage, zero extra memory. The new native DSP engine cuts stop-word CPU usage by nearly 100% versus the old model-based approach: the old path ran a neural-network inference every frame, the new path only does lightweight signal processing on the few frames where sound is actually present — idle-frame cost is zero. Accuracy is higher, not lower — all 27 behavioral tests pass, covering child, female, male, and deep/creaky voices, gain invariance holds from 0.25× to 8× clipping, and a quiet room produces zero false triggers where the old model could not.

WebView rendering introduces three performance tiers and layered scheduling. Off-screen cards pause layout and paint, subscriptions step down when covered by the screensaver, and CSS animations plus audio/video decoding pause when the browser is hidden — each layer tunable on its own. Select browser_power_mode in Home Assistant to swap gears in real time — no restart.

Together, these three mean the same tablet runs wake detection, intercom, and a dashboard simultaneously at lower CPU load — quieter fans, less heat, longer battery. Bounce light, and you bounce high.

Floating app window: Ava Pro's own floating-window technology

Mac_2026-08-26 17 15 07

A wall-mounted tablet is a Home Assistant dashboard, but it is also an Android device — checking a delivery, replying to a message, opening a calculator, watching a camera, scanning a QR code should not bury the dashboard. 0.7.3 lets selected apps open in a draggable, resizable floating window instead — the dashboard keeps refreshing underneath, the window floats on top, and neither gets in the other's way.

This is not Android's native freeform multi-window. Native freeform is gated by system version, vendor customization, and desktop-mode toggles — most tablets simply do not support it or ship with a broken implementation. Ava Pro's own floating-window technology: the target app runs on an independent virtual display created by Ava, its video is hardware-decoded H.264 streamed straight onto a floating TextureView, and touch events are forwarded back verbatim over the control channel — to the target app it is just a normal screen, to the user it is a real window floating over the dashboard. Drag the title bar to move, drag the bottom-right corner to resize, and the window's position and size are remembered for next time. One window at a time, globally unique.

A few scenarios: someone rings the doorbell, a camera window floats up over the dashboard to see who it is without switching away; a recipe app floats beside the temperature card while you cook; a calculator floats for homework while the dashboard's light controls stay untouched; scanning a QR code, checking a tracking number, replying to a message — all without leaving the desktop.

Requires Shizuku (ADB mode) or Root, and Android 12L or newer. When the requirements are not met, it falls back to fullscreen automatically, never blocking. In the Minimal Launcher app picker, tag an app with the window icon to enable it.

Path: Ava Settings -> Service features -> Minimal Launcher -> App picker

Camera Vision: one camera, three senses

0.7.3 adds Camera Vision to the Mod Store — a mod that turns the device camera into a Home Assistant sensing hub.

Once installed, the camera becomes a live camera entity in Home Assistant with selectable front/back lens, frame rate, resolution, and JPEG quality. On top of that, it runs three on-device recognition modes simultaneously, all on by default, each independently toggleable:

  • Face detection: BlazeFace Full Range Sparse, detecting faces up to 5 m with XNNPACK acceleration. Exposes "person detected" and "face count" sensors.
  • Gesture recognition: BlazePalm + 21-point hand landmark, recognizing open palm and finger count. Exposes "open palm" and "gesture" sensors.
  • QR scanning: ZXing decode, automatically parsing Home Assistant tag URLs and reporting tag IDs. Exposes "last QR", "HA tag ID", and "scan count" sensors.

The most practical piece is Screensaver Person Wake: it hooks face detection into Ava's screensaver — you walk up, the screensaver dismisses; you stay, it does not come back; you walk away, the idle countdown resumes. Far more reliable than Ava's built-in brightness-difference probe. Detection runs on a separate thread from capture, so the live preview stays smooth.

Camera Vision is mutually exclusive with Camera Stream Mod: when enabled it owns the camera, and Ava's built-in remote camera steps aside so the two pipelines never fight over Camera2.

0.7.3 also fixes JAR-based mod loading on Android 14+ — the system refuses writable DEX/JAR files, so JARs are now marked read-only immediately after writing, checked again be...

Read more

Fable +

Choose a tag to compare

@knoop7 knoop7 released this 23 Aug 12:47
8da7aa3
16-bit pixel-art game banner for Ava Pro 0 7 2

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 voic...

Read more

0.7.1

Choose a tag to compare

@knoop7 knoop7 released this 18 Aug 16:40
e50861e
Ava Pro 0 7 1 Rally Banner

Note: The latest version, released on August 23, 2026, is now 0.7.2, an enhanced and fixed version. Version 0.7.1 had an excessively long update cache, causing some older users to be unable to upgrade. You can directly click "Reinstall" to upgrade.


Ava 0.7.1

This release begins with an apology

I owe a sincere apology to @jxlarrea and the voice-satellite-card-integration project.

Ava's previous VS wake-word catalog redistributed 12 model pairs trained by its author without preserving the original MIT copyright and permission notice, and without clearly naming their author and source. Ava did independently rewrite the C++ inference engine, but an engine implementation and the models it runs are separate works. Rewriting the engine never made those trained models Ava's work. Redistributing them without meeting their attribution and license requirements was my mistake, and I take responsibility for it.

I also want people to know that there is a specific person standing behind Ava. There is no company, no team, and no carefully planned product roadmap here. There is only me. I am not wealthy. I have no budget to train a complete multilingual wake-word collection, and I cannot afford AI coding assistance. Quietly, I should admit that even today I do not own a genuinely capable tablet. To repair Bluetooth on non-root devices, I could only buy another inexpensive device and repeat the same screen-off waits and failures. None of Ava's features were strategy. Each one was my late-night answer to the same question: why could this old device not become a little more useful?

Ava has brought me no income, resources, or better opportunity, The pleasure of making something that did not exist, watching an old device light up again, and learning that someone genuinely placed it in a living room or bedroom also belongs to me. Ava began without a larger ambition. I simply enjoyed building it and hoped that something I loved might make other Home Assistant users a little happier. That small reason was what kept me going.

I genuinely admired this author and respected his ability to turn ideas into working software. I saw him as part of what made this community feel special, and I naively assumed he would not mind Ava using those models. When that familiar admiration suddenly became a licensing dispute, evidence comparison, and the possibility of a takedown, someone I had liked began to feel unfamiliar. As the two projects also accumulated more similar ideas, I reacted defensively and treated the licensing issue as competition. That was my disappointment and emotion, not a fact, and it cannot be used to deny his rights. Open source does not mean the absence of terms. My circumstances explain why I took a shortcut; they do not absolve me of it.

This experience also made me reconsider how far Ava should go. What left me most hopeless was not only removing the models, but realizing for the first time that something so personal, made from such uncomplicated enthusiasm, could one day need repeated explanations for why it exists. As other projects add Bluetooth proxy support, I would rather see users finally gaining more choice than another comparison beginning.

0.7.1 is not the end of Ava. I will remain responsible for the stability, compatibility, and security of its existing capabilities, and I will continue fixing problems users genuinely encounter. But I am tired.

In #185, the original request was to add the missing attribution and license notice; removing the models was the resolution I chose. Ava 0.7.1 removes them from the release and online catalog and will no longer download or redistribute them. Future catalog entries expose their author, source, license, and integrity information. I apologize again to the author and to users affected by this change.

Existing installations are not left behind

The update does not reset voice settings. The former VS Wake Word engine selection migrates automatically to OpenWakeWord. Compatible ONNX files already stored on a device remain local and are not redistributed by Ava; they can be removed from the Wake Word Library. When no usable model remains, Ava falls back to the built-in Ok Nabu model. microWakeWord remains available at any time.

OpenWakeWord is more than a new label. Ava rebuilt the runtime as a native C++ pipeline. Multiple wake words share one audio analysis pass, avoiding repeated work; startup now primes the required context, and returning from a conversation no longer needs a long warm-up. Echo-cancelled and noise-suppressed audio can follow the same capture path into detection, while Voice Stats shows each model's live score and threshold.

The library can now import compatible .onnx files directly and use a new catalog carrying author, source, license, and checksum metadata. The goal is straightforward: faster, more efficient, and more transparent local wake-word detection on ordinary Android devices, without Root or a continuously involved cloud service.

Sensitivity now means what the user selected

Thank you to @ds2000 for uncovering a long-hidden problem in #187. Some models allowed their bundled cutoff to override the sensitivity selected in Settings, so the control appeared to move while detection did not. The selected value now governs live detection and confirmation, and near-threshold rejections leave useful diagnostic evidence.

Old friends, Bluetooth is finally worth another try

Thanks again to @ds2000 for the detailed report in #186. I have also kept quietly returning to one old friend's comment on Reddit. He still called Bluetooth proxy and room-to-room intercom Ava's genuinely irreplaceable capabilities, but also said plainly that the proxy went stale and calls sometimes failed. I kept that sentence with me. The hardest part of reusing an old tablet is never making something work once with the screen on. It is whether voice, Bluetooth, and the network still behave as if nothing happened after the display has been off all night. To investigate that properly, I bought a non-rootable device with my own money and repeatedly left it screen-off, woke it, disconnected it, reconnected it, and ran it for long periods. I can now say this responsibly: if screen-off Bluetooth made you leave Ava before, come back and try 0.7.1.

Ava is not merely scanning for longer. While the screen is on, it gradually learns the addresses, manufacturer identifiers, and service characteristics that nearby devices actually advertise. Once the display turns off, Ava dynamically injects those targets into the filtered BLE scan sessions Android permits to remain active. Sessions rotate periodically, changed device identities can be learned again, and Ava waits quietly when there is no valid target instead of starting an empty scan that can never return anything. On non-root devices, screen-off used to feel like Android had closed a door on Bluetooth. 0.7.1 reconnects that path within the limits the system provides.

A quiet room is no longer diagnosed as broken Bluetooth. Brief advertisement silence, exhausted scanner slots, and registration failures do not trigger an aggressive adapter reset. Low-end chips keep one scanner that actually works instead of making two listeners compete for the same radio. On MediaTek, Unisoc, and other hardware where Bluetooth recovery can disturb the underlying Wi-Fi path, Ava deliberately avoids recovery that could take the satellite off the network. Rooted devices can still use the deeper native HCI/MGMT scan path. Ordinary non-root devices use the new screen-off filter injection and self-maintaining sessions without requiring a custom ROM or a permanently running Shizuku service.

This is not simply Bluetooth appearing to remain enabled. It lets Ava continue serving as a Home Assistant Bluetooth proxy and presence node with the display off, without allowing one mistaken recovery attempt to destabilize the entire device. After this rebuild, Bluetooth has moved from an experiment toward something that can be left on a wall and tested over the long term.

Voice and video calls no longer treat one lost packet as goodbye

LAN calling received its own concentrated stability rebuild. A single lost UDP packet could previously prevent the other device from ringing, leave the call screen behind after hangup, or wake a declined call again when delayed data arrived. Call and hangup signals are now retransmitted at short intervals, while duplicate packets are recognized and discarded. A declined or ended session cannot ring again. In a group call, one departing device ends only its own connection instead of taking the rooms still talking down with it.

The video receiver now releases and rebinds its port correctly. After a brief network interruption, service restart, or a previous call that did not exit cleanly, a black remote preview can rebuild itself. Incomplete frames with missing chunks expire instead of occupying memory while waiting for data that will never arrive. When a peer receives a new Wi-Fi address, Ava discards the stale destination and resolves it again. Front and rear camera switching, self-preview, and the remote picture retain the correct orientation, with Smooth, High, and Ultra quality choices for both old tablets and stronger local networks.

Voice, video, and control traffic remain inside the home LAN. This is not trying to replace a s...

Read more

COMPASS

Choose a tag to compare

@knoop7 knoop7 released this 14 Aug 14:12
d55f624
Ava Pro 0 7 0

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 UpdateUpdate 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 MASync → 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 ConfigWake WordWake Word LibraryImport 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 → SettingsDevices & servicesESPHome → 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...

Read more

HERITAGE 2

Choose a tag to compare

@knoop7 knoop7 released this 13 Aug 03:18
737bbb6
0.6.9

Ava 0.6.9 - HERITAGE 2

Some devices have already been part of the home for years. They may hang on a wall or rest beside the bed, their cases marked by time, still showing a familiar dashboard and playing familiar sounds every day.

HERITAGE 2 is about carrying that life forward. A brief network problem should preserve the screen being viewed and the music being heard. Older devices should not carry extra weight simply to gain new features, and connected features can be used separately or left at any time. Version 0.6.9 makes reminders, screensavers, music, and everyday settings feel more at home on the displays that have stayed with us.

Better reminders around the home

When the washing finishes, a window is left open, or the doorbell rings, the wall panel can now show a more suitable notification. Important messages can fill the screen. Everyday reminders can use a small banner placed at the top, center, or bottom. A long message begins on one line and expands when tapped.

Thank you to @matkastner for sharing this everyday need in #173. 0.6.9 adds a notification scene library where built-in, URL-based, and locally created scenes live together. Each scene can be previewed, copied, and edited. Its title, message, color, animation, and sound can all be configured directly.

The icon library is also much larger. Search by name or scroll to reveal more choices. Icons load as needed, keeping the picker comfortable on older tablets. A banner now uses its selected color as a soft wash, while a white banner keeps a clear edge in the light theme. An optional, faint Home Assistant mark can also sit in the corner.

After saving, new and recently edited scenes appear near the top. Leaving after a temporary preview does not create an unfinished scene, and returning from preview or editing brings the list back to the same place. On landscape screens, the preview and save controls stay centered instead of stretching across the display.

These scenes can be triggered through the Notification Scene entity in Home Assistant, making them useful for doorbells, washing machines, windows, and air-quality automations.

Path: Ava Settings -> Interaction -> Displays & Scenes -> Notification Scenes

Camera views can temporarily use the screensaver

When motion is detected at the door at night, Home Assistant can display the camera on the screensaver layer. Closing it returns to the dashboard exactly where it was.

Thank you to @matkastner for sharing this setup in #174. The screensaver timeout can now be set to 0. The dashboard then remains visible during ordinary idle time, while Home Assistant can still open the screensaver when needed. To restore an automatic screensaver later, simply choose a normal waiting time again.

With the two-way screensaver switch enabled, the panel and Home Assistant show the same state. Dismissing the screensaver on the panel turns the HA switch off. Opening or closing it from HA updates the panel immediately.

Calibrate each Ava separately

When the same song is playing in the living room and kitchen, a slight timing difference may become noticeable while standing between them. The sync delay control in the Music Assistant console can adjust one Ava until the beat from both rooms meets again.

Every device also has a different speaker. A bedside unit may have too much bass, while voices may sound dull on an older kitchen tablet. The new five-band equalizer can tune each Ava separately instead of applying one sound to every room.

Sync delay and the five-band equalizer are controls made specifically for Ava devices. They work through local communication between Ava players, so both the device showing the controls and the player being adjusted need a current Ava version that supports them. Other Music Assistant players can still join playback and synchronization normally; their sound can be adjusted through the controls they provide themselves.

When several current Ava devices are available, the music console lists the adjustable players together. From the living room, the timing and sound of the living room, bedroom, and kitchen can each be calibrated. The console continues to support phones, portrait wall panels, landscape displays, and tablets.

Adjust lyrics by ear

Some lyric sources naturally run a little early or late, while an older device may add a small amount of playback delay. The music console now includes lyric controls. Offset moves the lyrics within a 500 ms range in either direction, helping the highlighted words meet the voice again. Changes appear immediately and are remembered.

Follow offers five levels: Steady, Calmer, Default, Closer, and Tight. Default suits most listening. Move toward Steady for gentler transitions, or toward Tight when lyrics should return to the current line more quickly after scrubbing, skipping a track, or a brief network disturbance. With the three-line lyric view, tapping the lyrics also reveals a temporary fine-adjustment bar without leaving the player.

A music overlay that is easier to enter and leave

When the player opens before a song arrives, it shows a waiting state. If no media arrives, the overlay closes itself. Clearing the queue or leaving a synchronized group also clears the previous cover, title, and progress.

At a track change, the cover and backdrop move naturally to the next song. Playlist covers that have already loaded remain visible when scrolling back. If the fullscreen player has no visible back button, holding an empty area for two seconds reveals it.

After the player collapses into the music orb, hidden lyrics and backdrop animation stop refreshing. Expanding it again returns to the current song. A network recovery or playback-state refresh now respects the shape the user chose, so the orb does not suddenly expand by itself. Stopping the service also closes its music connections and playback work.

While scrubbing, reading lyrics, or using a player control, the surface remains present instead of hiding halfway through the action. In portrait, the entire right edge no longer opens the music console over the lyrics. A touch can reveal the handle, and the visible handle can then be tapped to enter, reducing accidental openings while scrolling lyrics. Long song and artist names also adapt to the available room instead of sending both lines across the screen at once.

More reliable pause and track changes

When music is paused, the progress bar holds at the audible position. After resuming, progress moves again when sound actually returns. Scrubbing also keeps lyrics and the progress bar closer to what is playing.

If a playlist briefly stalls while moving naturally to the next track, playback can recover. A pause requested by the user remains paused.

When the network slows and Music Assistant cannot return the queue in time, the current cover and progress remain visible. After Sendspin reconnects, a later outage begins again with a short retry delay.

Clearer speech while audio is playing

While Ava is playing music, a prompt, or a long spoken reply, software echo cancellation works to preserve the nearby person's voice. Several sounds playing together are handled as one playback mix, reducing speaker audio without making the person's words unnecessarily thin.

The processing stays on the device. Most homes can keep the default Adaptive + Standard setting. Increase cancellation strength gradually only when recordings received by Home Assistant still contain clear playback from Ava.

Expressions that follow the reply

The orb can show happy eyes for good news and different expressions for an apology or an important warning.

During a long answer, the expression can change as the captions move to the next page. The eyes change during a blink while the orb color stays steady. The text is evaluated directly on the device.

An update page made for reading

The software update page now shows the release cover and full notes. Portrait screens read from top to bottom. Landscape screens place the release notes and installation choices in separate columns. Recent installable versions can be selected directly.

Recently viewed notes and covers remain available on a slow network. Chinese and Russian network environments can try available mirrors. Ava keeps only the three latest covers and clears them over time. If a cover has not loaded yet, a soft transition background is shown instead of leaving an empty area.

When the same version number has a newer build, the button says Update. When the same content is already installed, it says Reinstall, making the next action clearer.

Ava Pro built-in firmware package updated to 2026.09.1

Version 0.6.9 officially updates the built-in Ava Pro firmware package to 2026.09.1. It provides one matching foundation for Pro voice, audio, and long-running operation, allowing the related app fixes to work against the same firmware generation.

From 0.6.8 to 0.6.9: 30 fixes

These fixes were developed continuously from 0.6.8 through 0.6.9. They came from consecutive voice sessions, all-day playback, repeated screen changes, and panels left running for long periods. Each issue may look small alone, but together they can make an everyday display gradually slow down or fail at an awkward moment.

TTS replies (5 fixes)

  1. Standard TTS no longer waits for the entire floating caption to be laid out before speaking, so a long reply starts promptly.
  2. Floating captions now appear reliably over the screensaver during standard TTS, avoiding replies that can be heard but not seen.
  3. During consecutive requests, play...
Read more

protocol +

Choose a tag to compare

@knoop7 knoop7 released this 11 Aug 14:12
c797479
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 skippin...

Read more

0.6.7

Choose a tag to compare

@knoop7 knoop7 released this 08 Aug 10:34
f2464b3
Ava Pro 0 6 7 Patch Banner (2)

Ava 0.6.7 - PATCH

First, Thank You @lone-baggie
Special thanks to @lone-baggie for putting Ava on a Portal Mini and recording what it is genuinely like to use at home. This was more than a showcase: the video let us see Ava waking, replying, and sharing the dashboard in everyday life.

Watch on YouTube: Portal Mini as Home Assistant voice satellite · Lone Baggie's channel

Ava often has several jobs at once: a dashboard stays open on the wall, music fills the living room, and someone may call for it at any moment. 0.6.7 helps those moments flow together. Music resumes where you left it, lyrics know when to wait through an instrumental break, replies are easier to read, and a page that loses its way can find home again.

Replies No Longer Crowd the Bottom Edge

After Ava wakes, recognition and response text now appears like a restrained caption below the voice orb. It finds a suitable position in portrait and landscape, stays within three lines, and changes more gently. There is no large panel covering the dashboard, and the text no longer competes with the sound animation along the bottom.

Mac_2026-08-08 16 37 28

How to Enable Floating Subtitles

  1. Open Ava Settings -> Voice -> Voice Reply.
  2. Set TTS mode to Standard TTS. Streaming TTS starts speaking sooner but does not currently support floating subtitles.
  3. Under Interface, turn on Floating subtitle overlay.
  4. The first time, allow Ava to display over other apps when Android asks.

Your words and the assistant's reply will then appear over the current dashboard or app during a conversation.

Pause Now, Return to the Same Song

After pausing, tucking away the player, or briefly losing a music source, reopening the player could show an old title or forget the position and duration. Ava now remembers the cover, song, and position that were actually playing. Resume brings back the familiar view; only a real track change clears it.

Seeking, jumping backward, or changing tracks in Music Assistant also moves the player and lyrics to the right place. While the Detailed Metadata player is open for lyrics, the screensaver stays out of the way.

Path: Ava Settings -> Interaction -> Media & Playback -> Detailed metadata

Lyrics Understand Instrumental Breaks

When a song reaches an instrumental passage, the previous line should not hang around until the singer returns. Ava now turns timed gaps in the middle of a song into a gently filling display. Longer breaks receive a few more marks; when the song is ending, the lyrics simply settle without adding stray notes.

Long English lines, rap verses, and narrow screens now move more smoothly instead of stopping and jumping. In portrait, title and artist have separate lines so long metadata no longer becomes a crowded block.

Karaoke also adds community AMLL word-synced lyrics. Ava searches AMLL, LRCLIB, and QQ Music together, then considers the title, artist, album, and duration before choosing. Results arrive sooner and are less likely to confuse a studio track with a live version or another song with the same name.

Multiple Rooms Feel Like One Song

The most noticeable multi-room problem starts subtly: the living room and bedroom begin together, then slowly develop an echo. Sendspin now responds to small delays earlier without making a device repeatedly speed up and slow down. Long listening sessions and track changes stay together more consistently.

If an older device becomes overloaded or goes silent after an audio change, Ava also tries to reconnect by itself instead of leaving a player that still shows the song but produces no sound.

If wake-up feels affected on a particular device while its speaker is playing, open Ava Settings -> Voice -> Microphone -> Echo cancellation and enable Smart echo cancellation. This depends on the device's microphone and speaker behavior; it is not a general Ava wake-up issue.

Health Steward Knows How Much Rest Is Needed

An older tablet with a busy Home Assistant dashboard should not have to choose between running at full effort and stopping completely. Health Steward now eases the workload in steps. It first groups bursts of state changes before updating the screen. If a screensaver only covers the page briefly, the dashboard waits where it is; after a long absence or genuine device pressure, animations, video, and other expensive work can rest too. Revealing the page no longer means reconnecting everything from the beginning each time.

Cards outside the visible part of the screen can wait to be drawn until you scroll to them, while their entity data continues to update. A complicated custom card also no longer makes the whole page abandon optimization simply because every entity cannot be identified.

In dual-page mode, one dashboard is allowed to settle before the other begins loading, preventing two heavy pages from fighting during a cold start. The side being used stays responsive while the other takes a lighter pace. Even identical left and right addresses keep the two-pane layout the user selected. A screensaver no longer jumps over pages that are still preparing, and stopping Ava's main voice service no longer leaves an unattended black screensaver behind.

Under the Health Steward master switch, Entity stream scheduling, Chunked card rendering, and Dormant load reduction can now be controlled separately, and Entity filtering remains independent too. They are separated because every device and dashboard handles the workload differently: if a custom card is incompatible, only the relevant option needs to be turned off, while the other protections against lag, heat, and battery drain can stay enabled.

The occasional ERR_UNSAFE_PORT on the right pane after repeated refreshes is also fixed. Internal light and dark changes are no longer mistaken for websites, and clearing cache, cookies, or history from the sidebar now refreshes both active panes together.

Path: Ava Settings -> Browser -> WebView Health Steward (Beta)

Everyday Features at a Glance

The Interaction home screen is reorganized around four familiar activities: Media & Playback, Displays & Scenes, Intercom & Calls, and Entities & Shortcuts. Landscape gives the frequently used music entry more presence, while portrait keeps text and icons aligned consistently across every card.

On small screens, longer descriptions stay within two lines and can be dragged to read. Fully expanding them requires two taps, reducing accidental activation when picking up the device. Category names are also aligned across six languages.

Path: Ava Settings -> Interaction

Less Guesswork During Updates

The update page now clearly says whether it is downloading, waiting for the Android confirmation prompt, or unable to load because of the network, with a direct Retry action. Longer translated button labels resize instead of wrapping awkwardly.

Ava can also distinguish a genuinely new release from a rebuilt package carrying the same version more reliably, reducing missed updates and repeated reminders after an update is already installed.

Portal-class devices are still subject to Android install privileges. If the system refuses the package, Shizuku, root, device-owner provisioning, or adb install from a computer may still be required. Investigation continues in #164.

Portal System Bar Control

Following @realroywalker's testing in #156, portal-support 1.3.0 can leave the system bars visible, hide the top status bar, or hide both top and bottom bars from Home Assistant.

The feature is off by default and needs the appropriate system permission. An edge swipe may still reveal the bars temporarily; full Lock Task protection against system gestures is not included yet.

Other Polish

  • Ambient sound detection: The former “Baby cry” label is now the more everyday “Noise,” covering crying or distress sounds and clearly warning that this category may produce more false alerts. This avoids presenting it as a dedicated baby monitor.
  • Manual voiceprint recording no longer mistakes normal-volume or shorter speech for “not heard” so easily, while genuine silence still asks you to try again.
  • The Mod update footer now adapts its text to the available width, so the author's name is no longer squeezed out.
  • The Root page now clearly explains that Ava works without Root. On an already rooted device, Root is simply an optional path to higher privileges.
  • Noise suppression and echo cancellation preview cards are no longer covered by the Voice Stats handle.
  • After pause and resume, the music button, position, and duration remain consistent.
  • Update states, Interaction categories, and lyric-source labels are aligned across supported languages.

0.6.6

Choose a tag to compare

@knoop7 knoop7 released this 06 Aug 16:55
d2e788a
0.6.6

Ava 0.6.6 - Precision

0.6.5 taught Ava to rest when nobody is watching; 0.6.6 spends its effort on singing, listening, and wall mounting: lyrics can fill the screen, dashboards on older tablets feel smoother, wake word triggers less often from room noise, and you can hear microphone and echo processing on the device itself.

Detailed Metadata: Lyrics Focus

Building on 0.6.5 Expanded Lyrics, the Detailed Metadata player adds Lyrics Focus: tap the cover to switch between the full player and full-screen lyrics (off by default to save resources). When expanded, lyrics follow the current line in the center; scroll to browse and double-tap a line to resume playback from there. Portrait and landscape remember whether you expanded until you tap the cover again. Lyrics stay tighter after track changes and no longer jump around when paused.

Path: Ava Settings -> Interaction -> Media & Playback -> Detailed metadata

Karaoke Lyrics and Lyric Matching

Optional Karaoke lyrics (Beta): the active line lights up left to right with the vocal, with softer line transitions and less reliance on zoom to keep time.

QQ Music and LRCLIB search together with stricter matching: fewer wrong songs, less confusion between live and studio versions, and no forced lyrics when artist metadata is incomplete.

Path: Ava Settings -> Interaction -> Media & Playback -> Karaoke lyrics (Beta)

Sendspin Sync

During long multi-room playback, devices are less likely to drift apart slowly after a track change.

Music Overlay FAB

Fixed the floating button sometimes failing to reappear after auto-hide when playback starts again.

WebView Health Steward

Further improvements for #161-style sluggish dashboards and incomplete custom card state on older hardware.

Entity filtering stays off by default; turn it on when needed to lighten the page. For complex custom cards, paste the opening type: custom:... line from the card editor to keep full updates. When the browser is hidden or covered by a screensaver, page animations and media rest, Home Assistant push updates pause, and everything resumes when you return. The floating browser adds memory- and frame-rate-saving options (System WebView; Gecko unchanged).

Path: Ava Settings -> Browser -> WebView Health Steward (Beta)

microWakeWord and Speech Gating

Wake word behavior is a focus this release. Room noise could still cause false wakes. A lightweight speech gate now waits for something closer to human speech before wake scoring, reducing empty triggers from TV hum, bumps, and similar sounds. Threshold display in Voice Stats is also more consistent.

Path: Ava Settings -> Voice -> Wake word / Voice Stats

Hear It Yourself: Noise Suppression and Echo Cancellation

At the bottom of Smart noise suppression and Echo cancellation, record a short clip and listen on the spot to compare before and after processing; the echo page also offers a quick test, with data kept only on the device. Helps you sanity-check issues like those in #157—whether that matches pipeline recordings saved in Home Assistant still depends on device and settings. Software echo cancellation is also a bit smoother, with less choppy artifacts.

Path: Ava Settings -> Voice -> Microphone -> Smart noise suppression / Echo cancellation

Single-Lens Camera

Incorporates @gilcu2 fix from PR #163: devices with only a rear camera no longer stay black forever because the app locked onto a missing front camera.

Path: Ava Settings -> Experimental -> Device camera

In-App Updates (Kiosk-Class Devices)

For #164 (e.g. Portal: adb install works but in-app update does not), the install flow was adjusted; some devices may improve. Many still need Shizuku, root, or adb install from a PC. Thanks to @lone-baggie

Path: Ava Settings -> About / Software update · Home Assistant Update entity

Other

  • Website Console: Takes effect immediately on first enable; no need to force-stop and reopen Ava.
  • Simple clock: Portrait weather icon position tweaked.
  • Floating browser: Back label aligned with the back arrow.
  • Localization: Fixed mixed translations and overly long strings.