📦 Nightly Release
Changes since 2.10.0.dev2026080604
🚀 New Providers
- Add Storytel provider integration (by @jonasbp2011 in #4054)
🚀 Features and enhancements
- Support getting OpenSubsonic radio stations from music source (by @frjol in #5150)
- Start audio overlays without a delay (by @marcelveldt in #5379)
- Date quiz songs without an ISRC by artist and title (by @marcelveldt in #5386)
- Apple Music: batch library sync requests to cut API usage (by @MarvinSchenkel in #5391)
- More accurate release years for Music Quiz songs (by @marcelveldt in #5413)
🐛 Bugfixes
- Align Spotify app volume with MA player volume on connection (by @OzGav in #5303)
- Better crossfades on tracks with long outros, ambient blends and mastered fade-outs (by @MarvinSchenkel in #5365)
- Fix missing mute control for universal group players (by @marcelveldt in #5375)
- Fix playback stopping after the first track on grouped Sonos speakers (by @marcelveldt in #5385)
- Keep the chosen metadata language when other settings are saved (by @marcelveldt in #5396)
- Keep manually set radio name and artwork in playlists (by @OzGav in #5404)
- Plex: fix artist top tracks always being empty (by @MarvinSchenkel in #5405)
- Fix Sonos S1 speakers hanging after a failed subscription (by @marcelveldt in #5406)
- Fix Bluesound players cutting off the end of a track (by @marcelveldt in #5408)
- Fix playback from Home Assistant failing with a permission error (by @MarvinSchenkel in #5410)
- Keep a synced pair of speakers muted when the group volume changes (by @marcelveldt in #5420)
🎨 Frontend Changes
- Add Timeline view for MusicBrainz artist events (by @dmoo500 in #2042)
- Fix the Discord playback position after seeking (by @marcelveldt in #2299)
- Restrict the test workflow to read-only repository access (by @marcelveldt in #2311)
- Remove an unused config setting type (by @marcelveldt in #2310)
- Run the test suite once per commit (by @marcelveldt in #2309)
- Cover the config link buttons in the disabled-state tests (by @marcelveldt in #2305)
- Import the API client normally in the companion and auth plugins (by @marcelveldt in #2294)
- Clean up unused props on the player bar timeline (by @marcelveldt in #2300)
- Player card no longer uses its own copy of the queue lookup (by @marcelveldt in #2293)
- Only load track waveforms while something is showing them (by @marcelveldt in #2295)
- Stop the player timeline animating when there is no track length (by @marcelveldt in #2296)
- Document when a queue counts as active (by @marcelveldt in #2297)
- Add tests for the settings field disabled state (by @marcelveldt in #2283)
- Share the app mount helper across the initialization tests (by @marcelveldt in #2288)
- Fix the playback position shown in Discord Rich Presence (by @marcelveldt in #2291)
- Party guest page no longer changes your selected player (by @marcelveldt in #2290)
- Stop test runs from reporting success when errors escape a test (by @marcelveldt in #2292)
Other Changes
- Keep ffmpeg's per-input read options with the input they belong to (by @marcelveldt in #5407)
🧰 Maintenance and dependency bumps
26 changes
- Notice when AI Radio loses its AI or text-to-speech engine (by @marcelveldt in #5309)
- Only fail the dependency security check on vulnerabilities a PR introduces (by @marcelveldt in #5346)
- Avoid duplicate provider requests for the same uncached data (by @marcelveldt in #5370)
- Reattach a player control after it comes back (by @marcelveldt in #5377)
- Add test coverage for protocol settings shown next to a player's own (by @marcelveldt in #5383)
- Fix mismatched default when reading the preferred output protocol setting (by @marcelveldt in #5384)
- ⬆️ Update music-assistant-models to 1.1.181 (by @musicassistant-bot[bot] in #5388)
- Ard sounds rebrand (by @OzGav in #5389)
- Show the real buffer depth default per device (by @marcelveldt in #5390)
- Avoid redundant Sonos S1 speaker polls after commands (by @marcelveldt in #5394)
- Accept AI quiz answers that arrive wrapped in a code fence (by @marcelveldt in #5395)
- Make the Home Assistant registry-race tests wait for the actual fetch (by @marcelveldt in #5399)
- Bound the Trivia quiz AI response the same way as the distractor parser (by @marcelveldt in #5400)
- Use one shared rule for trusting album release info in Music Quiz (by @marcelveldt in #5401)
- Don't demand a setup setting the user cannot fill in (by @marcelveldt in #5403)
- Only announce the publish IP for network discovery (by @marcelveldt in #5411)
- Remove unused extra_args parameter from ffmpeg helpers (by @marcelveldt in #5412)
- Stop stream options from piling up on repeated plays of the same item (by @marcelveldt in #5414)
- ⬆️ Update music-assistant-models to 1.1.182 (by @musicassistant-bot[bot] in #5419)
- Fix playback position being dropped from the player state (by @marcelveldt in #5421)
- Fix a misleading comment about player output settings (by @marcelveldt in #5423)
- Make the streamserver's internal address list private (by @marcelveldt in #5425)
- ⬆️ Update music-assistant-models to 1.1.183 (by @musicassistant-bot[bot] in #5427)
- Document the native libraries needed to run the tests locally (by @marcelveldt in #5429)
- ⬆️ Update music-assistant-frontend to 2.17.260 (by @musicassistant-bot[bot] in #5436)
- Open Subsonic: Add API token based authentication and update to py-opensonic 10.3.0 (by @khers in #5438)
🙇 Thanks to our contributors
Special thanks to the following contributors who helped with this release:
@MarvinSchenkel, @OzGav, @dmoo500, @frjol, @jonasbp2011, @khers, @marcelveldt