Skip to content

Starry

Latest

Choose a tag to compare

@knoop7 knoop7 released this 23 Jul 07:51
17d4b5d
AVA 0 6 1

Ava 0.6.1 - Every Screen, One System

Ava 0.6.1 is the largest upgrade we have shipped so far. Ava is no longer limited to being a voice satellite running on one Android device: it can now become the desktop on that device, manage a room of Ava terminals, deploy and maintain other Android devices, receive media from more ecosystems, and update itself through Home Assistant.

This release also introduces Ava's new visual identity. The new warm-brown geometric A replaces the previous app icon across standard, round, adaptive and Android 14 monochrome launchers. The unnecessary launch screen has been removed, while existing users keep their current theme choice.

Ava Fleet: One Place for Every Terminal

The new Ava Fleet console turns one Ava device into a local management station for the rest of the home. Ava terminals discover each other over the local network, while Android devices reached through ADB can join the same operational wall even when they are not yet running the Ava Fleet service. When UDP discovery and ADB refer to the same IP, Fleet merges both sources into one device instead of showing duplicates.

The device wall has been rebuilt as a responsive control-room view with full-frame previews, grid and list modes, search, uptime and concise status overlays. Cached screenshots remain visible during refresh, skeleton states replace empty flashes, and the layout adapts from a two-column phone view to larger desktop grids. Light and dark appearances are distinct, while optional Motion-powered transitions are loaded from a CDN and respect reduced-motion preferences.

Open a device to inspect its complete status, control its screen, send Android keys and gestures, open a shell, read logs, manage installed Mods, review Bluetooth settings, or edit Ava configuration without walking to each panel. For an ADB-connected device, Fleet first warms a screenshot and then loads manufacturer, model, Android version, uptime, CPU, memory and thermal data only when its Parameters page is opened. This keeps the device wall light while still providing a full inspection on demand. The settings editor follows Ava's real settings structure, saves changes back to the selected Ava device, and supports backup, import, export, reusable templates and transferring a configuration between devices.

When Root or Shizuku is available, Fleet can launch an embedded scrcpy service for a responsive live view. A lightweight one-shot screenshot path remains available for monitoring and device-wall previews, avoiding a permanent high-bitrate stream on every terminal. Access is protected by the Fleet password and sensitive API routes require authentication.

Fleet also includes an on-device ADB host. Its primary path connects to devices already exposing ADB on port 5555, with Android 11+ wireless-debugging pairing available as a separate flow. Connections are remembered, the local host remains available for self-management, and network devices can be removed without confusing them with the host's own ADB transport.

  • Apps lists user, system, disabled or all packages on the selected device. It can open an application, force-stop it, enable or disable it, clear its data, export its APK, or install a new APK.
  • Files provides multi-device access to shared storage. It can browse storage roots and folders, upload and download files, create folders, rename entries and delete files. The file-manager UI is loaded from an online CDN instead of increasing the APK size, while all operations are restricted to shared-storage paths.

This ADB path uses a compact ARM binary and therefore depends on the host device allowing compatible native execution.

Path: Ava Settings -> Experimental -> Cluster Management

The initial Fleet password is 1234. Change it before using Fleet on a shared network.

A Real Android Desktop

The optional Home launcher has been rebuilt into a complete multi-page workspace rather than a simple row of application shortcuts.

Applications and Android widgets can be dragged from their drawers and placed freely on the current page. Items follow the finger with a dedicated drag layer, show placement outlines, settle into the selected cell, and can move across page edges. Empty trailing pages are removed automatically. Each orientation keeps its own measured layout so rotating the device no longer stretches widgets or leaves unreachable rows and columns.

Widgets can be resized directly on the workspace, including widgets whose providers do not expose ideal sizing behavior. Ava now maintains independent widget geometry and refresh state for every instance, preventing one widget's size or update cycle from changing another. The first Ava-native widget provides a configurable title and description with responsive text sizing.

The desktop can be locked against edits while still allowing a long press to reopen desktop tools. Users can choose icon size and shape, use a third-party icon pack without Ava reshaping its supplied icons, hide application labels, select a static photo wallpaper, or return to no wallpaper. Light mode adds a restrained icon edge treatment for visibility without changing the selected theme.

Long-press and two-finger gestures open the desktop controls with a soft blur and fade. Application actions and widget removal remain contextual, while portrait, landscape, small screens and unusual DPI values receive separate capacity and spacing calculations.

Dynamic wallpapers and desktop folders are intentionally not included. Both were tested during development, but dynamic wallpaper redraws competed with Android widget updates, while folders added complexity without improving Ava's wall-panel workflow.

Updates Through Home Assistant

Ava now publishes a native Update entity to Home Assistant. It reads the full GitHub release description, distinguishes stable and beta artifacts, compares the installed APK artifact rather than relying only on the visible version number, and can therefore detect a rebuilt APK published under the same version.

Starting an update from Home Assistant downloads the APK through Android's Download Manager so progress remains visible in the system notification area. Root or Shizuku can complete installation with minimal interaction; devices without a privileged installer fall back to Android's normal package installer. The entity is placed under diagnostics and reports the current version as up to date when the installed artifact already matches the release.

The regular in-app stable updater remains separate. Choosing Later now remembers the dismissed stable version instead of repeatedly interrupting the user, while the Home Assistant entity remains available for administrators who intentionally deploy beta or rebuilt artifacts.

Wake-Word Engines Rebuilt

The VS Wake Word engine received a substantial native rewrite. Ava now owns its C++ inference path, including ONNX model loading, log-mel processing, CTC decoding, threshold gates, consecutive-hit modes, cooldowns and clean post-dialogue reset behavior. This fixes models that were extremely difficult or impossible to trigger on some devices and gives downloaded models enough metadata to use their intended decoding strategy.

VS models can now be discovered in an online catalog, downloaded with visible progress, removed again, and selected directly for Wake Word 1 or Wake Word 2. A downloaded model is added to the active library immediately instead of showing as missing or requiring an application restart. The interface also explains the practical difference between microWakeWord and VS Wake Word so users can choose an engine for their language, model and hardware rather than assuming one is universally better.

microWakeWord now performs a fast second verification over the captured wake phrase. A chance confidence spike is no longer enough: the same model must confirm the contiguous audio sample at a slightly stronger threshold before Ava opens the assistant. This dual-stage path specifically reduces false wakes caused by television and background conversation while preserving the existing voiceprint check when voiceprint protection is enabled.

Thanks to @meiser79 for the Echo Show 8 testing and the detailed confidence observations in #116. The report identified both sides of the problem: VS models that could not be activated and microWakeWord false triggers that sat only slightly above the detection threshold.

Bluetooth That Survives the Screen Turning Off

Bluetooth presence and proxy operation now adapt when Android locks the screen. Ava uses targeted filters, a bounded wake lock and duty-cycled compatibility scanning instead of assuming every manufacturer will keep a normal application scan alive. When a vendor stack stalls, Ava first pauses and restarts scanning without disrupting Wi-Fi; Shizuku can request a deeper Bluetooth recovery, while rooted devices can use the bundled native HCI/MGMT scanner when Android's public scanner is no longer sufficient.

The low-level path detects common chipset and manufacturer quirks, coordinates presence, proxy and advertising ownership, and avoids repeatedly killing the Bluetooth process. This is especially important on older or lower-memory hardware where Bluetooth and Wi-Fi share resources.

IRK support introduced in 0.6.0 is also completed with a tracked-device management sheet. Users can now retry automatic bond-store lookup or paste, replace and clear a 32-character hexadecimal or Base64 IRK manually. Ava validates and normalizes the key, then uses it only as a fallback for resolvable private addresses; an exact MAC match always wins.

Thanks to @tar-gezed for continued Xiaomi, Oppo and Galaxy Watch testing and logs in #112, @ET1963 for the Samsung S10e lock-screen report in #122, and @rdehuyss for additional testing on older Android hardware.

An IRK can identify a device that is still advertising under a rotated address. It cannot force a phone or watch to advertise after its operating system stops broadcasting in Doze.

AirPlay and Camera Streaming Mods

The new AirPlay Receiver Mod turns Ava into an AirPlay audio and video target. It includes service discovery, classic AirPlay pairing and decryption, audio rendering and DACP controls, video playback, rotation, aspect and fit controls, picture-in-picture, and video download. Music receives a cover-tinted full-screen presentation with playback metadata and an ambient waveform, while exclusive-media coordination prevents Ava's own player and other renderer Mods from fighting for the screen or audio session.

This is an AirPlay receiver, not Google Cast support. The Google Cast request in #111 remains a different protocol and should not be considered completed by this Mod.

Path: Mod Store -> Features -> AirPlay Receiver

The new Camera Stream Mod forwards the device camera to Frigate, go2rtc or another NVR over MJPEG or RTSP. Users can choose the protocol, image quality and software or hardware H.264 encoding. Starting and stopping follows Ava's main service rather than creating an unrelated permanent background service.

Because Android generally allows only one camera owner at a time, enabling Camera Stream disables Ava's conflicting remote-camera and camera-dependent screensaver options. Video calls request the camera independently when needed.

Path: Mod Store -> Features -> Camera Stream

TTS Fixed Again

A user report exposed a different TTS failure from the empty-stream problem fixed in 0.6.0: some Home Assistant Speak responses supplied a relative media path while Ava's stored server address did not contain the path components required to reach it. Ava now resolves Home Assistant media URLs through the same authenticated base-address logic used by cover and media requests.

The streaming state machine also receives another recovery pass. It can abandon a PCM stream that opened but never became audible, defer an early URL until it is clear that no PCM bytes are coming, and close the session correctly when upstream events arrive out of order. Thanks to @rdehuyss for reporting and helping isolate this failure.

Screensaver and Long-Running Stability

Screensaver camera frames now feed a lightweight motion probe so occupancy can suppress idle presentation without running unnecessary full analysis continuously. While the screensaver is visible, Ava can lower background CPU pressure and restore normal operation immediately when interaction resumes.

Fleet previews, WebView recovery, overlay ownership, Mod native libraries and low-memory service restarts were also hardened. Camera Stream owns camera-dependent settings visibly, AirPlay dependencies stay on the correct class loader, and zombie overlay or browser services are replaced instead of being left alive after Android reclaims their process resources.