github jxlarrea/kiosk-satellite v0.11.0-beta

latest releases: 2026.9.28, 2026.9.27, 2026.9.26...
one month ago

What's new in Kiosk Satellite v0.11.0-beta

Two big themes this release: a deep memory and CPU optimization pass for low-RAM devices (Fire tablets, Echo Shows, NSPanels) that could crash or lose the dashboard after a few hours, and a new native audio stack that gives Voice Satellite full control over which microphone and speaker it uses.

Important: Please update Voice Satellite to the latest version before installing this update.

New Features

  • Microphone and speaker selection for Voice Satellite (Settings > Voice Satellite, mirrored in the remote admin). Pin the wake word and voice turns to a specific microphone (built-in, Bluetooth headset, USB) and choose where Voice Satellite sounds play. Selections survive reboots and device swaps, follow hotplug (a Bluetooth mic reconnecting is picked up automatically, and capture falls back cleanly while it is away), and media playback deliberately keeps following the system route.
  • Native sound playback for Voice Satellite. Chimes, TTS responses, and announcement audio now play through the app instead of the WebView when a matching Voice Satellite version is installed: no more browser autoplay blocking, works with self-signed Home Assistant certificates, honors the speaker selection, streams TTS while the server is still synthesizing, reports playback levels so the reactive bar keeps animating, and applies volume changes mid-utterance.
  • Bluetooth aware routing. Headsets expose both their media profile and their call route; the app plays call-route sounds as communication audio (the only kind that route carries), marks the combinations Bluetooth physically cannot do (hi-fi output while the same headset's mic is in use), and brings the call link up and down as needed.

Bug Fixes

  • White dashboard after hours of uptime. When Android hung the WebView renderer under memory pressure the page stayed blank until an app restart; the app now detects an unresponsive renderer and rebuilds the WebView automatically, matching the existing recovery for renderer crashes.
  • Voice Satellite wake could break after a page reload with the WebSocket filter enabled. The filter dropped state updates for the satellite's own entities when they were not on the visible view, leaving wake word detection looking disabled and every wake silently hanging. The filter now always passes updates for the Voice Satellite device, whatever view is on screen.
  • Steady memory growth that could crash low-RAM devices over hours: screensaver slides and camera frames now release their decoded images instead of accumulating up to 100MB, the engine image cache is capped, openWakeWord no longer leaks a native inference object on every audio chunk, the remote admin no longer buffers events forever into vanished admin sessions, the built-in proxy no longer buffers Home Assistant traffic while the renderer is frozen, SendSpin no longer allocates a silence buffer proportional to a network outage, and malformed MJPEG camera streams can no longer grow a parse buffer without limit.
  • MQTT no longer hammers a broker that refused the connection on a background retry loop.
  • Local photo screensavers decode at panel resolution instead of full camera resolution, avoiding repeated 50MB and larger allocation spikes.

Improvements

  • Much lower idle CPU: the screensaver backdrop blur renders once per slide instead of every frame, the rotation overlay pauses while hidden, SendSpin stops writing real-time silence after streams end, audio drift correction writes in bulk, the full-screen clock wakes once per minute when seconds are hidden, and wake word inference reuses buffers instead of allocating ~30 times per second.
  • Fetching logcat from the remote admin no longer spikes memory by loading the whole log buffer three times over.

Don't miss a new kiosk-satellite release

NewReleases is sending notifications on new releases.