📦 Beta Release
Changes since 2.9.0b6
🚀 New Providers
- Add MPD Player Provider (by @OzGav in #3337)
- Smart fades Audio Analysis provider (by @MarvinSchenkel in #3636)
🚀 Features and enhancements
- Apple Music: Add Unicode NFC normalization for artist/album/track names (by @jasonhollis in #2631)
- Add ability to take over Pandora stream during concurrent streaming error (by @cryptk in #3620)
- Add Tidal starred tracks virtual playlist (by @FL550 in #3653)
- Play from here respects user's sort order (by @philjackson in #3663)
- Apple Music: Add content rating check for explicit tracks (by @LosCV29 in #3669)
- Add per-player delay configuration for Sendspin players (by @maximmaxim345 in #3689)
- Add setting to replace Pause with Stop for DLNA (by @peteS-UK in #3704)
- Subsonic: Add option to always request stream of raw file (by @khers in #3710)
- Forward Sendspin Cast app logs to Music Assistant (by @maximmaxim345 in #3713)
🐛 Bugfixes
- QQMusic: Improve QR auth URL handling behind HA Ingress (by @xiasi0 in #3631)
- Tweak imageproxy (by @MarvinSchenkel in #3671)
- Several fixes for synced playback stability (by @marcelveldt in #3672)
- Filter stale podcast episodes (by @OzGav in #3673)
- Change Mother Earth Radio icon URL and corrupt SVGs (by @OzGav in #3674)
- Fix dynamic playlist refill discarding unplayed buffered tracks (by @dmoo500 in #3675)
- Sendspin: guard against negative track_progress in metadata (by @marcelveldt in #3681)
- Fix sync group session lifecycle and AirPlay late joiner sync (by @marcelveldt in #3682)
- Automatically clean up loudness measurements on media item deletion (by @MarvinSchenkel in #3687)
- Fix multiple (virtual) devices on the same host being merged. (by @MarvinSchenkel in #3688)
- Fix sync group dissolve+reform race with async providers (by @marcelveldt in #3691)
- Fix Jellyfin multidisc albums with same named tracks (by @MarvinSchenkel in #3692)
- Fix Volume control for Bluesound native devices (by @MarvinSchenkel in #3693)
- AudioBuffer: Only fire cancel callbacks when stream has not ended naturally (by @MarvinSchenkel in #3694)
- Fix MPD player removal reappearing after reload (by @marcelveldt in #3697)
- Fix race condition in AirPlay stream session client removal (by @marcelveldt in #3698)
- Fix is_dynamic guard not firing for playlists not yet synced to library (by @dmoo500 in #3699)
- Fix Mother Earth indicated audio quality (by @OzGav in #3701)
- Improve loudness measurement robustness (by @marcelveldt in #3703)
- Fix smart fades mixer sometimes choking up the flow stream + Smart Fades provider not starting on ARM (by @MarvinSchenkel in #3706)
- Bump aiohttp to 3.13.5 and ibroadcastaio to 0.6.0 (by @staticdev in #3707)
- Put pipewire dependency in the correct spot (by @apophisnow in #3708)
- Fix syncgroup state derivation and tighten lifecycle handling (by @marcelveldt in #3709)
- Fix duration parsing for M3U playlist items (by @marcelveldt in #3714)
- Fix AirPlay cleanup idling re-added clients (by @marcelveldt in #3716)
- Fix sync leader child state forwarding (by @marcelveldt in #3717)
- Forward syncgroup join/unjoin to the syncgroup player (by @marcelveldt in #3718)
- Fix audiobook controller not using userid in library_items call (by @fmunkes in #3719)
🎨 Frontend Changes
- Fix single provider stale filter bug (by @OzGav in #1698)
- Fix typo (by @OzGav in #1696)
- Move Sendspin delay configuration to player settings (by @maximmaxim345 in #1712)
- Fix clipping of last player cards on the Players widget of the Discover view (by @BQPVegas in #1690)
- Reload queue items after reset in fullscreen player (by @dmoo500 in #1710)
- Hide incompatible controls for dynamic playlists (by @dmoo500 in #1713)
- Fix toast in player settings (by @OzGav in #1569)
- Pass sort order to server for play from here (by @philjackson in #1699)
- Add edit radio station feature (by @OzGav in #1685)
🧰 Maintenance and dependency bumps
16 changes
- Bump docker/build-push-action from 7.0.0 to 7.1.0 (by @dependabot[bot] in #3638)
- Bump actions/github-script from 8 to 9 (by @dependabot[bot] in #3639)
- Add devenv Configuration for Consistent Developer Environments (by @staticdev in #3641)
- Bump softprops/action-gh-release from 2 to 3 (by @dependabot[bot] in #3677)
- Bump pyblu from 2.0.5 to 2.0.6 (by @dependabot[bot] in #3678)
- Bump pillow from 12.1.1 to 12.2.0 (by @dependabot[bot] in #3684)
- ⬆️ Update music-assistant-frontend to 2.17.147 (by @music-assistant-machine in #3685)
- Allow Pipewire devices to be detected by Local Audio when using docker (by @apophisnow in #3686)
- Update base image versions to 1.4.14 (by @apophisnow in #3695)
- Add diagnostics for AirPlay stream stalls and increase flow buffer (by @marcelveldt in #3696)
- ⬆️ Update music-assistant-frontend to 2.17.148 (by @music-assistant-machine in #3700)
- Bump Python to 3.14 (by @MarvinSchenkel in #3702)
- ⬆️ Update music-assistant-frontend to 2.17.149 (by @music-assistant-machine in #3711)
- Update beta and nightly image versions to 1.5.1 (by @apophisnow in #3712)
- Remove temporary airplay diagnostics (by @marcelveldt in #3720)
- Fix power control for squeezelite (by @marcelveldt in #3721)
🙇 Thanks to our contributors
Special thanks to the following contributors who helped with this release:
@BQPVegas, @FL550, @LosCV29, @MarvinSchenkel, @OzGav, @apophisnow, @cryptk, @dmoo500, @fmunkes, @jasonhollis, @khers, @marcelveldt, @maximmaxim345, @peteS-UK, @philjackson, @staticdev, @xiasi0