What’s New (v2.28.3 → v2.31.7)
Major Dashboard Redesign — the UI went through a full visual overhaul: device cards, header, toolbar, badges, filters, and list view were rebuilt to better match Home Assistant / Music Assistant
design language. Added grid/list view, adapter and status filters, bulk group actions, SVG icons instead of emoji, and a shared chip/badge system across the dashboard.
Configuration UI Overhaul — the Configuration section was refactored into a proper card-based settings surface with a cleaner hierarchy across General / Security / Bluetooth / Devices / Music
Assistant. Added a real Cancel action that restores the last saved state, improved section structure and helper text, and made the layout much closer to the redesign mockup.
Better Navigation & Device Management — adapter badges now deep-link straight into Configuration → Bluetooth, custom adapter names are editable, paired devices can be removed from the Bluetooth
stack directly from the UI, and Music Assistant sync-group badges open the correct MA settings page in a new tab.
Much Better Runtime Visibility — delay is now surfaced consistently across card and list views, playback progress and volume layout were cleaned up, list rows expose the same key runtime context
as cards, and adapter/status/group badges were visually unified. A large amount of follow-up polish fixed alignment drift, overlapping chips, duplicate status indicators, and empty placeholder
badges.
Two-Tier Device Control — device enable/disable became a first-class concept: the global enabled flag now fully removes a device from the BT / PulseAudio / Music Assistant stack, while BT
Release/Reclaim remains available for Bluetooth-only control. Released state now persists across restarts, and manually released devices are handled separately in health indicators.
Audio Routing & Restart Reliability — sink routing was hardened significantly. The bridge now validates and corrects sink routing after audio starts, fixes silent-speaker cases when PulseAudio
ignores PULSE_SINK, improves graceful restart behavior by muting sinks before restart and unmuting after audio stabilizes, and avoids false “zombie playback” restarts during track changes or
re-anchoring.
Security & Auth Hardening — added CSRF protection on login, CSP and X-Content-Type-Options headers, strict MAC / adapter validation against command injection, config upload size limits, sanitized
API error responses, and safer atomic config writes. The login handler was also split into dedicated per-flow handlers, and MFA session handling was tightened to prevent stale-session leakage.
Home Assistant Login / MFA Improvements — HA/Ingress username handling was improved multiple times, the actual HA user is now shown correctly, and v2.31.7 fixes a regression in direct HA login
with MFA/TOTP: the second-step authenticator form now preserves a valid CSRF token, so entering the TOTP code no longer fails with Invalid session. Please try again.
Bug Reporting & Diagnostics — added one-click bug reporting with auto-collected diagnostics, downloadable plain-text reports, recent log export, enriched system/runtime details, better
validation, and a redesigned modal flow. Issue-template integration was also improved so pre-filled reports land in the correct fields.
Update UX & Auto-Update — the header now shows runtime type, health indicators, update badges, a manual update check action, and a redesigned update modal with release notes preview. LXC
deployments gained one-click update support and optional AUTO_UPDATE.
Tests & CI — test coverage expanded substantially with dedicated tests for client lookup, MFA session safety, scan cooldown, and auth flow regressions. Current validation now passes with 223
tests, and CI was fixed to install libdbus-1-dev so dbus-python builds correctly in GitHub Actions.
Smaller UX Improvements — version badges link to GitHub releases, usernames link to the appropriate HA/MA profile, album-art popups no longer get clipped, empty states span the full grid width,
card hover no longer affects neighboring cards, and many small visual details across list/card/configuration views were polished for consistency.