1. Home Sidebar Menu (New)
A slide-out sidebar from the screen edge that consolidates floating-window features (voice messages, browser, weather, clock, quick entity panel) and quick controls (camera recording, mic mute) into a single switchable menu. Top shows current voice service status; bottom provides Settings access.
Where to find it
- Enable: Settings → Device Services → Sidebar Settings → Enable Sidebar
- Use: Swipe from left/right edge handle (direction configurable)
- Per-item toggle: Settings → Device Services → Sidebar Settings
- Optional header hide: Settings → Device Services → Hide Home Header (requires Sidebar + Show Other App Icons)
Defaults
Disabled by default. Takes effect immediately without restart. Individual menu items also default off; enable the main feature switch first, then check it in Sidebar Settings.
Configurable entries
| Sidebar Item | Prerequisite Feature | Settings Path |
|---|---|---|
| Voice Messages | Enable Voice Messages | Settings → Extensions → Voice Messages & Calls |
| Browser | HA Remote Webpage | Settings → Web Browser |
| Weather | Weather Floating Window | Settings → Extensions → Scenes |
| Minimal Clock | Screensaver / Minimal Clock | Settings → Screensaver |
| Dream Clock | Dream Clock | Settings → Extensions → Scenes |
| Quick Entity Panel | Quick Entity | Settings → Extensions → Scenes |
| Recording Toggle | Camera Recording Mode | Settings → Advanced (Camera + Recording Mode) |
| Mic Mute | Always available | — |
| Settings | Always shown | Bottom of sidebar |
Usage notes
- Floating-window items are inoperable when voice service is not running; start the service first.
- Switching floating-window features requires "Display over other apps" permission; unauthenticated attempts redirect to system settings.
- With Sidebar + Desktop Icon mode enabled, the top-right service status moves to the right of the "Menu" header in the sidebar, tap to start/stop the master service. Home header can be hidden; Settings access shifts to the sidebar bottom.
Home scenarios
- Wall-mounted panel: Hide home header, keep only app icons and edge menu for a cleaner interface.
- Kitchen tablet: One-tap weather, clock, voice messages from sidebar without deep navigation.
- Bedroom device: Quick mic mute or dream clock toggle without disturbing the main view.
2. Wake Visual Feedback Upgrade
Clearer visual feedback during wake and conversation:
- Wake instant: Colorful ripple expanding from screen center (Android 13+ uses RuntimeShader with distorted halo + star particles; Android 7 uses soft circular diffusion; compatibility paths for other versions)
- Conversation (when floating subtitle is disabled): Full-screen edge glow that changes with state:
- Listening: Edge light breathes with microphone volume
- Processing: Slow breathing animation
- Speaking: Pulsates with TTS energy
- Dual wake-word color coding: Wake word 1 = green (#00FF88), wake word 2 = cyan (#00D4FF); ripple and edge light match the triggered wake word
Where to find it
- Edge glow session: Settings → Extensions → Interface, disable "Floating Subtitle Window" to enable full-screen edge glow
- Ripple only: Settings → Extensions → Interface → Floating Subtitle Window enabled; wake shows ripple, conversation content goes to subtitle floating window
- Wake-word colors: Determined by Wake Word 1 / Wake Word 2 in Settings → Voice Config
Technical notes
- Edge glow uses pre-rendered Gaussian blur bitmaps; per-frame cost is texture-only for performance
- Ripple animation driven by system uptime to prevent Kiosk devices with "animation duration = 0" from killing the effect instantly
- Android 7.0/7.1 optimized to clean circular diffusion without Shader dependency
Home scenarios
- Living room voice: Obvious ripple on wake so family can confirm the device heard
- Dual wake-word household: "OK Nabu" and "Hey Jarvis" in different colors; instant visual identification of which word triggered
- 24/7 wall display: Animation plays correctly even on low-power devices
3. Wake-Word Engine Fixes & Enhancements
0.4.8 introduced the VS wake engine; 0.4.9 completes stability and compatibility:
- Per-engine wake-word persistence: microWakeWord and vsWakeWord save their own active lists independently; switching engines no longer overwrites each other
- Cross-engine ID mapping: e.g., micro's
okay_nabuauto-maps to VS'sok_nabu; HA-configured wake words also resolve correctly - HA config sync: Home Assistant wake-word changes merge with local active lists compatibly, reducing "configured but not active" issues
- VS stop word:
ok_stopsupported as stop-word classifier under VS engine - Built-in VS models:
ok_nabu,hey_jarvis,ok_stop(stop word)
Where to find it
Settings → Voice Config (ESPHome)
- Wake engine: On-device (microWakeWord) / On-device (vsWakeWord)
- Wake word 1 / Wake word 2 + sensitivity
- Wake prompt tone, custom prompt tone
Home scenarios
- Switching from micro to VS: Individual wake-word selections are preserved; no reconfiguration needed
- HA voice assistant card: HA wake-word changes correctly map and take effect on Ava
- Dual wake words: Two words with independent sensitivity; trigger color and prompt tone can also differ (wake word 2 prompt tone in Settings → Voice Config)
Engine Comparison: microWakeWord vs vswakeword
| Dimension | microWakeWord | vswakeword |
|---|---|---|
| Architecture | TFLite binary classification | ONNX CTC phoneme decoding + edit distance |
| Model size | 50–80KB, uint8 quantized | 500KB |
| Inference | 10ms frame, stride 3 | 80ms cycle, 1300ms window, 128×40 feature map |
| Frontend | microfeatures | Adaptive noise floor + spectral VAD |
| Decision | 5-frame sliding window mean | Voice gate → CTC confidence → edit distance ≤1 → 2-hit confirm → 2s cooldown |
| Output | Scalar 0–1 probability | Phoneme sequence with traceability |
| Wake-word swap | Full retraining required | Manifest JSON hot-swap |
| CPU / memory | Minimal | Significantly higher |
| False wake defense | Threshold only (zero-sum trade-off) | Multi-layer independent gates |
| Interpretability | None | Phoneme-level debugging |
| Best for | Low-end Android 7 persistent background | Noise-sensitive, explainability-required deployments |
Trade-off summary
- microWakeWord: Lightweight sentinel. Fast, lean, but sensitivity and false acceptance are a direct exchange with no second defense line.
- vswakeword: Discriminating gatekeeper. Stronger noise rejection and phoneme-level explainability at the cost of CPU, power draw, and tuning complexity.