Releases: music-assistant/server
Release list
2.11.0 NIGHTLY 2026083003
📦 Nightly Release
Changes since 2.11.0.dev2026082903
🐛 Bugfixes
- BBC Sounds return station catch-up menu to international users (by @kieranhogg in #6099)
🎨 Frontend Changes
🧰 Maintenance and dependency bumps
- Bump ya-passport-auth to 2.0.1 (by @trudenboy in #6090)
- Add a PR-description-quality review check (by @chrisuthe in #6100)
🙇 Thanks to our contributors
Special thanks to the following contributors who helped with this release:
2.11.0 NIGHTLY 2026082903
📦 Nightly Release
Changes since 2.11.0.dev2026082805
🚀 Features and enhancements
- SiriusXM Library Swap (by @MizterB in #5603)
- Add bluetooth audio constants (by @mzellho in #6052)
- Make Sendspin on Cast devices opt-in and mark it experimental (by @marcelveldt in #6081)
- Let speakers with guest access play without a setup step (by @marcelveldt in #6088)
🐛 Bugfixes
- Stop the CLAP weights download from timing out sonic_analysis setup (by @chrisuthe in #6053)
- Fix AirPlay player hanging when a seek fails to load its next stream (by @marcelveldt in #6076)
- Stop the music when a speaker is powered off outside Music Assistant (by @marcelveldt in #6077)
- Stop the music when a group dissolves around its leader (by @marcelveldt in #6083)
- Fix Spotify Connect group volume starting at 100% (by @OzGav in #6087)
- Decode percent-encoded usernames in Spotify account match checks (by @mescon in #6089)
🎨 Frontend Changes
- Tidy up the setup flow dialog (by @marcelveldt in #2673)
- Keep artwork whose provider is no longer loaded (by @ChrisB85 in #2670)
- Add a Copilot review instructions shard for frontend PRs (by @chrisuthe in #2672)
- Add match policy option to playlist import (by @marcelveldt in #2646)
- Fix playlist import match-policy version gate (by @marcelveldt in #2675)
- Send issues opened on the frontend repo to the support repo (by @marcelveldt in #2674)
🧰 Maintenance and dependency bumps
5 changes
- Keep a stop from cutting off playback that already restarted (by @marcelveldt in #6082)
- Detach a stereo pair from its group when it is powered off (by @marcelveldt in #6084)
- Add cross-repo frontend awareness to the review instructions (by @chrisuthe in #6091)
- Add shared-models awareness to the cross-repo review instructions (by @chrisuthe in #6092)
- Send issues opened on the server repo to the support repo (by @marcelveldt in #6094)
🙇 Thanks to our contributors
Special thanks to the following contributors who helped with this release:
@ChrisB85, @MizterB, @OzGav, @chrisuthe, @marcelveldt, @mescon, @mzellho
2.10.1
📦 Stable Release
Changes since 2.10.0
🚀 Features and enhancements
- Add bluetooth audio constants (by @mzellho in #6052)
- Make Sendspin on Cast devices opt-in and mark it experimental (by @marcelveldt in #6081)
- Let speakers with guest access play without a setup step (by @marcelveldt in #6088)
🐛 Bugfixes
- Snapcast: resume music after an announcement (by @MarvinSchenkel in #5968)
- Keep the AirPlay connection alive when seeking (by @marcelveldt in #6050)
- Fix an AirPlay speaker going silent when it joins a group (by @marcelveldt in #6051)
- Stop the CLAP weights download from timing out sonic_analysis setup (by @chrisuthe in #6053)
- Fix an AirPlay speaker going silent when two things start it at once (by @marcelveldt in #6054)
- Stop restarting an AirPlay speaker when a seek needs a moment (by @marcelveldt in #6055)
- Keep the queue on an audio player when a group leader drops out (by @marcelveldt in #6056)
- Fix a speaker staying silent after its group is joined with another one (by @marcelveldt in #6057)
- Stop AirPlay speakers in a group immediately on pause or stop (by @marcelveldt in #6058)
- Keep an AirPlay player's streaming mode under the user's control (by @marcelveldt in #6059)
- Make seeking forward in a slow source fast (by @marcelveldt in #6060)
- Add a 24-bit audio toggle for AirPlay players (by @marcelveldt in #6061)
- Fix a group member never re-joining after it drops off the network (by @marcelveldt in #6062)
- Fix a Spotify audiobook stopping when you seek to another chapter (by @marcelveldt in #6063)
- Fix Spotify not loading after updating to 2.10 (by @kiegsgroot in #6065)
- Fix the Apple TV progress bar disappearing after a track change (by @marcelveldt in #6067)
- Fix YouTube Music search finding nothing when the language is not English (by @marcelveldt in #6068)
- Fix grouping being unavailable while Spotify Connect plays (by @marcelveldt in #6070)
- Stop the music when you power off a speaker (by @marcelveldt in #6074)
- Stop random music playing after a notification clip (by @marcelveldt in #6075)
- Fix AirPlay player hanging when a seek fails to load its next stream (by @marcelveldt in #6076)
- Stop the music when a speaker is powered off outside Music Assistant (by @marcelveldt in #6077)
- Bump aioaudiobookshelf to 0.1.25 (by @fmunkes in #6078)
- Stop the music when a group dissolves around its leader (by @marcelveldt in #6083)
- Fix Spotify Connect group volume starting at 100% (by @OzGav in #6087)
- Decode percent-encoded usernames in Spotify account match checks (by @mescon in #6089)
🎨 Frontend Changes
- Scope audio sources in Browse to the selected player (by @marcelveldt in #2660)
- Fix the mobile player blur on Chromium browsers (by @marcelveldt in #2662)
- One shared code input for remote ID and pairing codes (by @marcelveldt in #2661)
- Fix loading spinners showing up too small (by @marcelveldt in #2669)
- Check the Python package builds in CI (by @marcelveldt in #2668)
- Silence the setuptools warning about the assets directory (by @marcelveldt in #2667)
- Clean up the Python packaging config (by @marcelveldt in #2666)
- Remove the unused VS Code workspace file (by @marcelveldt in #2665)
- Remove the unused webhint config file (by @marcelveldt in #2664)
- Remove the unused browser targets config file (by @marcelveldt in #2663)
- Tidy up the setup flow dialog (by @marcelveldt in #2673)
- Keep artwork whose provider is no longer loaded (by @ChrisB85 in #2670)
- Add a Copilot review instructions shard for frontend PRs (by @chrisuthe in #2672)
🧰 Maintenance and dependency bumps
6 changes
- Keep a live source on its player when moving it to another one fails (by @marcelveldt in #6045)
- Keep translation syncs and backport PRs out of the release notes (by @marcelveldt in #6048)
- Update airplay-cli to v0.5.3 (by @musicassistant-bot[bot] in #6071)
- Tidy up the source lookup in the seek command (by @marcelveldt in #6072)
- Keep a stop from cutting off playback that already restarted (by @marcelveldt in #6082)
- Detach a stereo pair from its group when it is powered off (by @marcelveldt in #6084)
🙇 Thanks to our contributors
Special thanks to the following contributors who helped with this release:
@ChrisB85, @MarvinSchenkel, @OzGav, @chrisuthe, @fmunkes, @kiegsgroot, @marcelveldt, @mescon, @mzellho
2.11.0 NIGHTLY 2026082805
📦 Nightly Release
Changes since 2.11.0.dev2026082704
🚀 Features and enhancements
- Report completed plays back to Tidal (by @jozefKruszynski in #5835)
🐛 Bugfixes
- Snapcast: resume music after an announcement (by @MarvinSchenkel in #5968)
- Keep the AirPlay connection alive when seeking (by @marcelveldt in #6050)
- Fix an AirPlay speaker going silent when it joins a group (by @marcelveldt in #6051)
- Fix an AirPlay speaker going silent when two things start it at once (by @marcelveldt in #6054)
- Stop restarting an AirPlay speaker when a seek needs a moment (by @marcelveldt in #6055)
- Keep the queue on an audio player when a group leader drops out (by @marcelveldt in #6056)
- Fix a speaker staying silent after its group is joined with another one (by @marcelveldt in #6057)
- Stop AirPlay speakers in a group immediately on pause or stop (by @marcelveldt in #6058)
- Keep an AirPlay player's streaming mode under the user's control (by @marcelveldt in #6059)
- Make seeking forward in a slow source fast (by @marcelveldt in #6060)
- Add a 24-bit audio toggle for AirPlay players (by @marcelveldt in #6061)
- Fix a group member never re-joining after it drops off the network (by @marcelveldt in #6062)
- Fix a Spotify audiobook stopping when you seek to another chapter (by @marcelveldt in #6063)
- Fix Spotify not loading after updating to 2.10 (by @kiegsgroot in #6065)
- Fix the Apple TV progress bar disappearing after a track change (by @marcelveldt in #6067)
- Fix YouTube Music search finding nothing when the language is not English (by @marcelveldt in #6068)
- Fix grouping being unavailable while Spotify Connect plays (by @marcelveldt in #6070)
- Stop the music when you power off a speaker (by @marcelveldt in #6074)
- Stop random music playing after a notification clip (by @marcelveldt in #6075)
- Bump aioaudiobookshelf to 0.1.25 (by @fmunkes in #6078)
🎨 Frontend Changes
- Fix loading spinners showing up too small (by @marcelveldt in #2669)
- Check the Python package builds in CI (by @marcelveldt in #2668)
- Silence the setuptools warning about the assets directory (by @marcelveldt in #2667)
- Clean up the Python packaging config (by @marcelveldt in #2666)
- Remove the unused VS Code workspace file (by @marcelveldt in #2665)
- Remove the unused webhint config file (by @marcelveldt in #2664)
- Remove the unused browser targets config file (by @marcelveldt in #2663)
🧰 Maintenance and dependency bumps
7 changes
- Keep a live source on its player when moving it to another one fails (by @marcelveldt in #6045)
- Prevent accidental stable auto-release while a release candidate is pending (by @MarvinSchenkel in #6047)
- Keep translation syncs and backport PRs out of the release notes (by @marcelveldt in #6048)
- Bump CodSpeedHQ/action from 5.0.3 to 5.2.1 (by @dependabot[bot] in #6066)
- Record why Spotify audiobook chapters cannot be fed ahead (by @marcelveldt in #6069)
- Update airplay-cli to v0.5.3 (by @musicassistant-bot[bot] in #6071)
- Tidy up the source lookup in the seek command (by @marcelveldt in #6072)
🙇 Thanks to our contributors
Special thanks to the following contributors who helped with this release:
@MarvinSchenkel, @fmunkes, @jozefKruszynski, @kiegsgroot, @marcelveldt
2.11.0 BETA 0
📦 Beta Release
Changes since 2.10.0rc7
🚀 Features and enhancements
- Report completed plays back to Tidal (by @jozefKruszynski in #5835)
- Improve local album and artist folder matching (by @marcelveldt in #5939)
- Add an icon for the
sendspin_sourceprovider (by @maximmaxim345 in #6023) - Show pairing codes as dedicated input boxes (by @marcelveldt in #6028)
- Remove the retired local audio provider on installs that never played through it (by @chrisuthe in #6029)
- Give the server a configurable name and external URL (by @marcelveldt in #6031)
- Approve new Sendspin devices with a single click (by @maximmaxim345 in #6035)
- Enable Spotify Connect or AirPlay Receiver from the player's own settings (by @marcelveldt in #6042)
- Keep other players' Spotify Connect and AirPlay devices alive when one daemon fails (by @marcelveldt in #6043)
🐛 Bugfixes
- Snapcast: resume music after an announcement (by @MarvinSchenkel in #5968)
- Spotify Connect no longer disappears when a different account connects (by @marcelveldt in #6019)
- Selecting a source no longer takes five seconds to start playing (by @marcelveldt in #6021)
- Cancel in-flight finalizes before freeing analysis models (by @chrisuthe in #6024)
- Retry Sonic Analysis when a track loses its CLAP windows (by @chrisuthe in #6034)
- Keep the AirPlay connection alive when seeking (by @marcelveldt in #6050)
- Fix an AirPlay speaker going silent when it joins a group (by @marcelveldt in #6051)
- Fix an AirPlay speaker going silent when two things start it at once (by @marcelveldt in #6054)
- Stop restarting an AirPlay speaker when a seek needs a moment (by @marcelveldt in #6055)
- Keep the queue on an audio player when a group leader drops out (by @marcelveldt in #6056)
- Fix a speaker staying silent after its group is joined with another one (by @marcelveldt in #6057)
- Stop AirPlay speakers in a group immediately on pause or stop (by @marcelveldt in #6058)
- Keep an AirPlay player's streaming mode under the user's control (by @marcelveldt in #6059)
- Make seeking forward in a slow source fast (by @marcelveldt in #6060)
- Add a 24-bit audio toggle for AirPlay players (by @marcelveldt in #6061)
- Fix a group member never re-joining after it drops off the network (by @marcelveldt in #6062)
- Fix a Spotify audiobook stopping when you seek to another chapter (by @marcelveldt in #6063)
- Fix Spotify not loading after updating to 2.10 (by @kiegsgroot in #6065)
- Fix the Apple TV progress bar disappearing after a track change (by @marcelveldt in #6067)
- Fix YouTube Music search finding nothing when the language is not English (by @marcelveldt in #6068)
- Fix grouping being unavailable while Spotify Connect plays (by @marcelveldt in #6070)
- Stop the music when you power off a speaker (by @marcelveldt in #6074)
- Stop random music playing after a notification clip (by @marcelveldt in #6075)
🎨 Frontend Changes
- Show pairing codes as dedicated input boxes (by @marcelveldt in #2657)
- No more STABLE badge when adding a provider (by @marcelveldt in #2656)
- Show server name, addresses and remote access on the About page (by @marcelveldt in #2658)
- Show audio inputs and devices that need setup (by @maximmaxim345 in #2659)
- Scope audio sources in Browse to the selected player (by @marcelveldt in #2660)
- Fix the mobile player blur on Chromium browsers (by @marcelveldt in #2662)
- One shared code input for remote ID and pairing codes (by @marcelveldt in #2661)
- Fix loading spinners showing up too small (by @marcelveldt in #2669)
- Check the Python package builds in CI (by @marcelveldt in #2668)
- Silence the setuptools warning about the assets directory (by @marcelveldt in #2667)
- Clean up the Python packaging config (by @marcelveldt in #2666)
- Remove the unused VS Code workspace file (by @marcelveldt in #2665)
- Remove the unused webhint config file (by @marcelveldt in #2664)
- Remove the unused browser targets config file (by @marcelveldt in #2663)
🧰 Maintenance and dependency bumps
16 changes
- Hide the Sendspin legacy clients option (by @maximmaxim345 in #6025)
- Set up Spotify Connect and AirPlay Receiver once and pick the players they serve (by @marcelveldt in #6026)
- Use the new Sendspin mark for the provider icon (by @MarvinSchenkel in #6030)
- Pairing texts now say 'pairing code' instead of 'PIN' (by @marcelveldt in #6033)
- Update base image versions to 1.6.3 (by @marcelveldt in #6037)
- Clean up snapcast mdns records when the provider unloads (by @marcelveldt in #6038)
- Tidy up playback task handling when a Connect/AirPlay daemon is replaced (by @marcelveldt in #6040)
- Fix release creation failing on very large release notes (by @marcelveldt in #6041)
- Hide non-audio players from the scrobbler player picker (by @marcelveldt in #6044)
- Keep a live source on its player when moving it to another one fails (by @marcelveldt in #6045)
- Prevent accidental stable auto-release while a release candidate is pending (by @MarvinSchenkel in #6047)
- Keep translation syncs and backport PRs out of the release notes (by @marcelveldt in #6048)
- Bump CodSpeedHQ/action from 5.0.3 to 5.2.1 (by @dependabot[bot] in #6066)
- Record why Spotify audiobook chapters cannot be fed ahead (by @marcelveldt in #6069)
- Update airplay-cli to v0.5.3 (by @musicassistant-bot[bot] in #6071)
- Tidy up the source lookup in the seek command (by @marcelveldt in #6072)
🙇 Thanks to our contributors
Special thanks to the following contributors who helped with this release:
@MarvinSchenkel, @chrisuthe, @jozefKruszynski, @kiegsgroot, @marcelveldt, @maximmaxim345
2.11.0 NIGHTLY 2026082704
📦 Nightly Release
Changes since 2.10.0.dev2026082618
🚀 Features and enhancements
- Enable Spotify Connect or AirPlay Receiver from the player's own settings (by @marcelveldt in #6042)
- Keep other players' Spotify Connect and AirPlay devices alive when one daemon fails (by @marcelveldt in #6043)
🎨 Frontend Changes
- Scope audio sources in Browse to the selected player (by @marcelveldt in #2660)
- Fix the mobile player blur on Chromium browsers (by @marcelveldt in #2662)
- One shared code input for remote ID and pairing codes (by @marcelveldt in #2661)
🧰 Maintenance and dependency bumps
- Fix release creation failing on very large release notes (by @marcelveldt in #6041)
- Hide non-audio players from the scrobbler player picker (by @marcelveldt in #6044)
🙇 Thanks to our contributors
Special thanks to the following contributors who helped with this release:
2.10.0
📦 Stable Release
Changes since 2.9.13
⚠ Breaking Changes
- Retire the local audio provider in favor of the Sendspin add-on (by @chrisuthe in #5965)
🚀 New Providers
- Add Sveriges Radio provider (by @romany in #2974)
- Add Pocket Casts Provider (by @yfhyou in #3127)
- Add AI Radio Plugin (by @swiftbird07 in #3407)
- Add Yandex Station player provider v1.5.1 — local Glagol control, Alice playback intercept (by @trudenboy in #3605)
- Add playlist_metadata plugin for auto-generating playlist artwork (by @dmoo500 in #3786)
- Add Mamma Mi Radio music provider (by @florianhorner in #3836)
- Add Rainy Mood provider (by @jlpouffier in #3844)
- Move library recommendations to plugin provider and add new folders (by @dmoo500 in #3890)
- Add Bose SoundTouch player provider (by @Odn0 in #3891)
- Add Storytel provider integration (by @jonasbp2011 in #4054)
- feat(provider): Add Amplipi provider (by @mcaulifn in #4110)
- Add Music Quiz plugin: multiplayer guess-the-song game (by @TimoPtr in #4572)
- Add Google Drive filesystem provider (by @OzGav in #4581)
- Add Profiler provider for on-demand performance diagnostics (by @marcelveldt in #4653)
- Add Ambient Sounds provider with locally generated noise loops (by @marcelveldt in #4676)
- Add teddycloud provider (by @yoyixms in #4776)
- Add OneDrive filesystem provider (by @OzGav in #4791)
- Add Overcast podcast provider (by @OzGav in #5151)
- Add OpenAI Compatible provider for the AI features (by @marcelveldt in #5261)
- Add OpenAI text-to-speech provider (by @marcelveldt in #5262)
- Add ABC Radio Network music provider (by @OzGav in #5321)
- Add Sendspin
source@v1role support (by @maximmaxim345 in #5658)
🚀 Features and enhancements
- Improve stream URL handling with failover support (by @benklop in #2996)
- Add favorites support to Digitally Incorporated provider (by @benklop in #3458)
- Add support for audiobook collections (by @fmunkes in #3569)
- Adapt artist / audiobook controller for authors and narrators (by @fmunkes in #3570)
- Extend Local Audio Out provider with PulseAudio support (by @iVolt1 in #3724)
- Plex: Add extended recommendations with "Mixes For You" support (by @ajacobson in #3736)
- Plex: Add audiobook/podcast support with position sync (by @zenibako in #3748)
- Add CUE sheet support for filesystem providers (by @OzGav in #3751)
- Enhance play_media start_item parameter to allow latest podcast episode to be played and podcast/playlist to play from here (by @OzGav in #3832)
- Add birthday/memoriam recommendations via MusicBrainz (by @dmoo500 in #3833)
- Yandex Smart Home: update v1.4.x → v2.2.4 — playlists as sources, skill auto-create, shared auth layer (by @trudenboy in #3834)
- Use faster
stream/clearfor Sendspin track changes, behind a legacy toggle (by @maximmaxim345 in #3870) - feat(audible): resume playback position from Audible Whispersync (by @scootaash in #3893)
- Rewrite Deezer provider with GraphQL client (by @jdaberkow in #3900)
- Adapt core methods to allow providing a username for item retrieval (by @fmunkes in #4015)
- Add explicit filter to smart playlist rules (by @dmoo500 in #4095)
- Provide Tracking and UX for AA Failures and Retries (by @chrisuthe in #4167)
- feat(spotify): add curated browse for new releases and genres (by @x-ingo in #4177)
- Add API command to get the color palette for any image (by @marcelveldt in #4193)
- Localize server-provided strings (by @marcelveldt in #4200)
- Localized-name search for genres and playlists (by @marcelveldt in #4212)
- Key media item translation names by media type (by @marcelveldt in #4216)
- Localize genre descriptions server-side (by @marcelveldt in #4227)
- Localize error messages sent to API clients (by @marcelveldt in #4228)
- Localize provider-sync background-task names server-side (by @marcelveldt in #4238)
- Wire up provider status reporting (structured errors + derived status) (by @marcelveldt in #4242)
- Localize UnsupportedSystemError messages (by @marcelveldt in #4255)
- Localize user-facing provider error messages (by @marcelveldt in #4259)
- Localize core module names & descriptions server-side (by @marcelveldt in #4261)
- Localize player option labels server-side (by @marcelveldt in #4262)
- Respect container cgroup memory limits when detecting system memory (by @marcelveldt in #4269)
- Persist playback speed for audiobooks and podcast episodes (by @OzGav in #4270)
- Localize Last.fm recommendation row titles and subtitles (by @marcelveldt in #4276)
- Translate nugs recommendation folder names (by @marcelveldt in #4277)
- Make NicoVideo recommendation labels translatable (by @marcelveldt in #4279)
- Make Audible root browse-folder labels translatable (by @marcelveldt in #4281)
- Make Bandcamp recommendation and collection folder labels translatable (by @marcelveldt in #4282)
- Localize NetEase Cloud Music recommendation and playlist labels (by @marcelveldt in #4283)
- Enable multi-instance support for Pandora (by @mcaulifn in #4284)
- Localize Deezer browse and virtual-playlist labels (by @marcelveldt in #4285)
- Localize Yandex Music browse labels via the server translation system (by @marcelveldt in #4286)
- Localize Podcast Index browse folder labels (by @marcelveldt in #4287)
- Make Phish.in browse-folder labels translatable (by @marcelveldt in #4288)
- KION Music: localize browse & recommendation labels via server translations (by @marcelveldt in #4289)
- Lazy-import chardet to lower idle memory (by @marcelveldt in #4291)
- Support common-string references in the translations build (by @marcelveldt in #4298)
- Guard against hardcoded ConfigEntry strings (by @marcelveldt in #4304)
- Extract CLAP scalar scoring into pure score_scalars() (by @chrisuthe in #4307)
- Import genres from Plex into media item metadata (by @lebdim in #4312)
- Skip dynamic playlists in refresh scan, sync provider-owned name/images (by @mcaulifn in #4326)
- Import additional metadata from Plex into media items (by @lebdim in #4338)
- Persist localized playlist names so they survive the library (by @marcelveldt in #4341)
- Fix config entry categories: use translation keys instead of raw English strings (by @marcelveldt in #4349)
- Parse "Track" by Artist radio stream titles and use album for artwork (by @OzGav in #4364)
- Move volume normalization target level to streams global setting (by @marcelveldt in #4369)
- Allow Bandcamp feed and wishlist to be playable. (by @rnewman in #4371)
- Move queue-scoped settings (crossfade, volume normalization) to the queue (by @marcelveldt in #4373)
- mcp: add set_repeat tool to queue controls (by @steamEngineer in #4377)
- Use ICY StreamUrl cover art for radio streams when it is an image (by @OzGav in #4379)
- mcp: add explicit pause/resume playback tools (by @steamEngineer in #4390)
- mcp: add players ungroup tool (by @steamEngineer in #4391)
- Rename 'don't stop the music' to 'autoplay' (by @marcelveldt in #4404)
- Transfer playback to a new leader when unjoining a sync group leader (by @marcelveldt in #4412)
- Support
seekSendspin controller commands (by @maximmaxim345 in #4417) - Resolve player palette only on the media owner, not per grouped member (by @marcelveldt in #4425)
- Make the demo player provider a groupable end-to-end test bed (by @marcelveldt in #4428)
- Adjust Sonic Similarity base scoring and pools to allow for better matching and more meaningful presets (by @chrisuthe in #4429)
- Improve Search results from Sonic Similarity Plugin (by @chrisuthe in #4430)
- Add native player sleep timers (by @teancom in #4432)
- Add content_type to Genre schema with migration (by @jozefKruszynski in #4435)
- Enhance and fix podcast metadata (episode descriptions, chapters, parent-podcast name) in gPodder, iTunes Podcast and Podcast RSS Feed (by @chrisuthe in #4444)
- Configurable Autoplay with similar / library / playlist modes (by @marcelveldt in #4446)
- Smart Playlist: Use library artwork from metadata providers (by @dmoo500 in #4447)
- BBC Sounds: refactor for auntie-sounds 2.0 (by @kieranhogg in #4450)
- Unload idle audio-analysis models to reclaim memory (by @marcelveldt in #4452)
- Seed Last.fm personalized rows from recent plays (by @OzGav in #4457)
- Add playlist metadata infrastructure to MetadataProvider (by @dmoo500 in #4460)
- Genre content-type awareness: create/edit safety + targeted restore (by @jozefKruszynski in #4474)
- Smart shuffle for player queues (by @marcelveldt in #4475)
- Add support for podcast chapters in Audiobookshelf (by @fmunkes in #4478)
- Bounded managed pool for radio mode (by @marcelveldt in #4479)
- fastmcp_server: update provider to v0.13.3 (queue, library-URI, and playback tools + localizable config) (by @trudenboy in #4486)
- Load Discover recommendation rows on demand and improve Recently Played (by @chrisuthe in #4487)
- Extend podcast (by @chrisuthe in #4492)
- Dynamic radio playlists (replacing radio mode) (by @marcelveldt in #4498)
- Honour the queue's recency windows in provider dynamic stations (by @marcelveldt in #4500)
- Use radio playlists in the MCP play_media tool (by @marcelveldt in #4501)
- Add played_only parameter to library_items methods (by @dmoo500 in #4502)
- Play finite sources in a dynamic queue through once instead of recycling them (by @marcelveldt in #4503)
- Turn a queue with any dynamic source into one bounded smart-shuffled pool (by @marcelveldt in #4513)
- Add duration and last_played filters to Smart Playlist (by @dmoo500 in #4520)
- Add support for authors and narrators to audiobookshelf (by @fmunkes in #4526)
- Avoid back-to-back artists in dynamic queues (by @marcelveldt in #4528)
- Smart crossfade: DJ-style bass swap EQ (by @MarvinSchenkel in #4536)
- Global defaults for queue settings with per-queue override (by @marcelveldt in #4537)
- Explain the queue Global option via a per-option description (by @marcelveldt in #4540)
- Only expose container items as player queue sources (by @marcel...
2.10.0 RC 7
📦 RC Release
Changes since 2.10.0rc6
⚠ Breaking Changes
- Retire the local audio provider in favor of the Sendspin add-on (by @chrisuthe in #5965)
🚀 Features and enhancements
- Show fuller descriptions for BBC Sounds podcasts and shows (by @OzGav in #5924)
- Add per player HEOS playback transition configuration (by @Tommatheussen in #5978)
- Shuffle and repeat now work on a source your speaker runs itself (by @marcelveldt in #5993)
- Use album loudness only for albums you actually played (by @marcelveldt in #5994)
- Faster seeking on Spotify tracks played through Soloist (by @marcelveldt in #6000)
- Keep the home page in step when played state changes (by @OzGav in #6005)
🐛 Bugfixes
- 'Play next' now really plays the chosen track next on a dynamic queue (by @MarvinSchenkel in #5950)
- Use album loudness only when tracks really play as part of an album (by @marcelveldt in #5981)
- Notice when Spotify playback loses its pairing (by @marcelveldt in #5987)
- Seeking or resuming a Spotify track no longer cuts it off mid-song (by @marcelveldt in #5992)
- Add dark theme icon for MilkDrop Visualizer (by @jozefKruszynski in #6007)
🎨 Frontend Changes
- Continue setup as soon as you pick an option (by @maximmaxim345 in #2643)
- Shuffle and repeat no longer apply to something that stopped playing (by @marcelveldt in #2650)
- Show shuffle and repeat failures again, except the expected one (by @marcelveldt in #2652)
- Document how the shuffle and repeat controls pick the source they act on (by @marcelveldt in #2651)
- Surface retired providers correctly in the settings UI (by @chrisuthe in #2644)
- Show the full menu on discover page items (by @OzGav in #2624)
- Translate the provider stage badge (by @chrisuthe in #2629)
- Fix permission popups on cast dashboards (by @MarvinSchenkel in #2655)
- Replace butterchurn with maintained fork (by @jozefKruszynski in #2654)
- Lokalise translations update (by @github-actions[bot] in #2630)
🧰 Maintenance and dependency bumps
23 changes
- Count an album as played once, however its tracks are ordered in the queue (by @marcelveldt in #5991)
- Keep the position shown for a live source in step with the player (by @marcelveldt in #5995)
- Document which Spotify Soloist pairing failures are detected (by @marcelveldt in #5996)
- Show the right bit-perfect badge when two speakers share one live source (by @marcelveldt in #5997)
- Log how long a stream takes to deliver its first audio (by @marcelveldt in #5998)
- Report a slow player stop after pausing Spotify Connect (by @marcelveldt in #5999)
- Spread beat analysis over shorter steps so it stays out of playback's way (by @marcelveldt in #6001)
- Cleanup and small tweaks to the Spotify provider (by @marcelveldt in #6002)
- ⬆️ Update music-assistant-models to 1.1.200 (by @musicassistant-bot[bot] in #6003)
- ⬆️ Update music-assistant-frontend to 2.17.291 (by @musicassistant-bot[bot] in #6004)
- Stop leaving a subprocess running when closing it is cancelled (by @marcelveldt in #6006)
- Make the Smart Fades unloaded-model guards actually work (by @marcelveldt in #6008)
- ⬆️ Update music-assistant-models to 1.1.201 (by @musicassistant-bot[bot] in #6009)
- Let a cancelled virtual player creation finish cleaning up (by @marcelveldt in #6010)
- ⬆️ Update music-assistant-models to 1.1.202 (by @musicassistant-bot[bot] in #6011)
- Keep analysis models loaded while a track is still being analysed (by @marcelveldt in #6012)
- Keep the Smart Fades models as a single set (by @marcelveldt in #6013)
- Keep Spotify playing without a gap when a track repeats or the queue changes (by @marcelveldt in #6014)
- Stop logging an ordinary Spotify seek as a failure (by @marcelveldt in #6015)
- Don't stall cleaning up a virtual player that was already removed (by @marcelveldt in #6016)
- Free a cut Spotify channel's buffer as soon as nothing is reading it (by @marcelveldt in #6017)
- Add tests for where Spotify Soloist splits one track from the next (by @marcelveldt in #6018)
- ⬆️ Update music-assistant-frontend to 2.17.292 (by @musicassistant-bot[bot] in #6020)
🙇 Thanks to our contributors
Special thanks to the following contributors who helped with this release:
@MarvinSchenkel, @OzGav, @Tommatheussen, @chrisuthe, @jozefKruszynski, @marcelveldt, @maximmaxim345
2.10.0 NIGHTLY 2026082618
📦 Nightly Release
Changes since 2.10.0.dev2026082603
⚠ Breaking Changes
- Retire the local audio provider in favor of the Sendspin add-on (by @chrisuthe in #5965)
🚀 Features and enhancements
- Show fuller descriptions for BBC Sounds podcasts and shows (by @OzGav in #5924)
- Improve local album and artist folder matching (by @marcelveldt in #5939)
- Add per player HEOS playback transition configuration (by @Tommatheussen in #5978)
- Faster seeking on Spotify tracks played through Soloist (by @marcelveldt in #6000)
- Keep the home page in step when played state changes (by @OzGav in #6005)
- Add an icon for the
sendspin_sourceprovider (by @maximmaxim345 in #6023) - Show pairing codes as dedicated input boxes (by @marcelveldt in #6028)
- Remove the retired local audio provider on installs that never played through it (by @chrisuthe in #6029)
- Give the server a configurable name and external URL (by @marcelveldt in #6031)
- Approve new Sendspin devices with a single click (by @maximmaxim345 in #6035)
🐛 Bugfixes
- 'Play next' now really plays the chosen track next on a dynamic queue (by @MarvinSchenkel in #5950)
- Add dark theme icon for MilkDrop Visualizer (by @jozefKruszynski in #6007)
- Spotify Connect no longer disappears when a different account connects (by @marcelveldt in #6019)
- Selecting a source no longer takes five seconds to start playing (by @marcelveldt in #6021)
- Cancel in-flight finalizes before freeing analysis models (by @chrisuthe in #6024)
- Retry Sonic Analysis when a track loses its CLAP windows (by @chrisuthe in #6034)
🎨 Frontend Changes
- Surface retired providers correctly in the settings UI (by @chrisuthe in #2644)
- Show the full menu on discover page items (by @OzGav in #2624)
- Translate the provider stage badge (by @chrisuthe in #2629)
- Fix permission popups on cast dashboards (by @MarvinSchenkel in #2655)
- Replace butterchurn with maintained fork (by @jozefKruszynski in #2654)
- Lokalise translations update (by @github-actions[bot] in #2630)
- Show pairing codes as dedicated input boxes (by @marcelveldt in #2657)
- No more STABLE badge when adding a provider (by @marcelveldt in #2656)
- Show server name, addresses and remote access on the About page (by @marcelveldt in #2658)
- Show audio inputs and devices that need setup (by @maximmaxim345 in #2659)
🧰 Maintenance and dependency bumps
25 changes
- Spread beat analysis over shorter steps so it stays out of playback's way (by @marcelveldt in #6001)
- Cleanup and small tweaks to the Spotify provider (by @marcelveldt in #6002)
- Stop leaving a subprocess running when closing it is cancelled (by @marcelveldt in #6006)
- Make the Smart Fades unloaded-model guards actually work (by @marcelveldt in #6008)
- ⬆️ Update music-assistant-models to 1.1.201 (by @musicassistant-bot[bot] in #6009)
- Let a cancelled virtual player creation finish cleaning up (by @marcelveldt in #6010)
- ⬆️ Update music-assistant-models to 1.1.202 (by @musicassistant-bot[bot] in #6011)
- Keep analysis models loaded while a track is still being analysed (by @marcelveldt in #6012)
- Keep the Smart Fades models as a single set (by @marcelveldt in #6013)
- Keep Spotify playing without a gap when a track repeats or the queue changes (by @marcelveldt in #6014)
- Stop logging an ordinary Spotify seek as a failure (by @marcelveldt in #6015)
- Don't stall cleaning up a virtual player that was already removed (by @marcelveldt in #6016)
- Free a cut Spotify channel's buffer as soon as nothing is reading it (by @marcelveldt in #6017)
- Add tests for where Spotify Soloist splits one track from the next (by @marcelveldt in #6018)
- ⬆️ Update music-assistant-frontend to 2.17.292 (by @musicassistant-bot[bot] in #6020)
- Hide the Sendspin legacy clients option (by @maximmaxim345 in #6025)
- Set up Spotify Connect and AirPlay Receiver once and pick the players they serve (by @marcelveldt in #6026)
- ⬆️ Update music-assistant-models to 1.1.203 (by @musicassistant-bot[bot] in #6027)
- Use the new Sendspin mark for the provider icon (by @MarvinSchenkel in #6030)
- ⬆️ Update music-assistant-frontend to 2.17.293 (by @musicassistant-bot[bot] in #6032)
- Pairing texts now say 'pairing code' instead of 'PIN' (by @marcelveldt in #6033)
- ⬆️ Update music-assistant-models to 1.1.204 (by @musicassistant-bot[bot] in #6036)
- Update base image versions to 1.6.3 (by @marcelveldt in #6037)
- Clean up snapcast mdns records when the provider unloads (by @marcelveldt in #6038)
- ⬆️ Update music-assistant-frontend to 2.17.294 (by @musicassistant-bot[bot] in #6039)
🙇 Thanks to our contributors
Special thanks to the following contributors who helped with this release:
@MarvinSchenkel, @OzGav, @Tommatheussen, @chrisuthe, @jozefKruszynski, @marcelveldt, @maximmaxim345
2.10.0 NIGHTLY 2026082603
📦 Nightly Release
Changes since 2.10.0.dev2026082516
🚀 Features and enhancements
- Hide Sendspin token pairing method when PIN/code pairing is available (by @maximmaxim345 in #5975)
- Shuffle and repeat now work on a source your speaker runs itself (by @marcelveldt in #5993)
- Use album loudness only for albums you actually played (by @marcelveldt in #5994)
🐛 Bugfixes
- Use album loudness only when tracks really play as part of an album (by @marcelveldt in #5981)
- Notice when Spotify playback loses its pairing (by @marcelveldt in #5987)
- Seeking or resuming a Spotify track no longer cuts it off mid-song (by @marcelveldt in #5992)
🎨 Frontend Changes
- Select a player once its setup/pairing flow finishes (by @maximmaxim345 in #2642)
- Remember the artist page view mode across all artists (by @MarvinSchenkel in #2641)
- Bump @lucide/vue from 1.31.0 to 1.33.0 (by @dependabot[bot] in #2632)
- Bump happy-dom from 20.11.1 to 20.11.6 (by @dependabot[bot] in #2640)
- Continue setup as soon as you pick an option (by @maximmaxim345 in #2643)
- Shuffle and repeat no longer apply to something that stopped playing (by @marcelveldt in #2650)
- Show shuffle and repeat failures again, except the expected one (by @marcelveldt in #2652)
- Document how the shuffle and repeat controls pick the source they act on (by @marcelveldt in #2651)
🧰 Maintenance and dependency bumps
10 changes
- Bump
aiosendspinto 9.1.1 (by @maximmaxim345 in #5985) - ⬆️ Update music-assistant-frontend to 2.17.290 (by @musicassistant-bot[bot] in #5988)
- Count an album as played once, however its tracks are ordered in the queue (by @marcelveldt in #5991)
- Keep the position shown for a live source in step with the player (by @marcelveldt in #5995)
- Document which Spotify Soloist pairing failures are detected (by @marcelveldt in #5996)
- Show the right bit-perfect badge when two speakers share one live source (by @marcelveldt in #5997)
- Log how long a stream takes to deliver its first audio (by @marcelveldt in #5998)
- Report a slow player stop after pausing Spotify Connect (by @marcelveldt in #5999)
- ⬆️ Update music-assistant-models to 1.1.200 (by @musicassistant-bot[bot] in #6003)
- ⬆️ Update music-assistant-frontend to 2.17.291 (by @musicassistant-bot[bot] in #6004)
🙇 Thanks to our contributors
Special thanks to the following contributors who helped with this release: