github music-assistant/server 2.11.0b9
2.11.0 BETA 9

pre-release49 minutes ago

📦 Beta Release

Changes since 2.11.0b8

🚀 New Providers

🚀 Features and enhancements

  • Easier setup code copy option in setup flow for Tidal/Spotify/Audible music provider (by @afeldman1 in #6268)
  • Let synced lyrics lead the AI Radio post onset (by @jpittelkow in #6882)
  • OpenSubsonic: move a track within a playlist (by @pcc0x in #7032)
  • Party: add configurable number of votes required to skip a song (by @martinbuergi in #7081)
  • Let the sleep timer stop at the end of the current item or chapter (by @fmunkes in #7209)
  • Add bookmarks for audiobooks and podcast episodes (by @fmunkes in #7292)
  • Sync YouTube Music podcast progress (by @OzGav in #7293)
  • Show and control an app on a linked protocol player MA did not start (by @Simanias in #7312)
  • Pair Sendspin players on the Home Assistant host with their local token (by @chrisuthe in #7315)
  • Update metadata now replaces outdated details (by @OzGav in #7338)
  • Refresh item now clears a track's measured volume (by @OzGav in #7339)
  • Support bookmarks in the Audiobookshelf provider (by @fmunkes in #7344)
  • Give speakers a bit more lead on just-in-time music sources (by @marcelveldt in #7355)
  • Refuse playlist edits whose positions no longer hold the expected tracks (by @pierosavi in #7359)
  • Raumfeld: follow the host to a new address (by @Simanias in #7364)
  • Raumfeld: call the speakers and the host's web service without hassfeld (by @Simanias in #7367)
  • Raumfeld: follow the host's rooms and zones without hassfeld (by @Simanias in #7368)
  • Raumfeld: show each speaker's software version (by @Simanias in #7369)
  • Allow smart playlists to exclude favorites (by @dmoo500 in #7372)
  • Allow admins to combine statistics of several users (by @fmunkes in #7375)
  • Sort artist releases by full release date before paging (by @dmoo500 in #7376)
  • Play the live Apple Music radio stations (by @jordiboehme in #7377)
  • Feature/auracast provider improvements (by @Yagoor in #7379)
  • Builtin MCP server for AI assistants and Home Assistant (by @marcelveldt in #7381)
  • Tell which player holds Spotify instead of waiting 15 seconds (by @marcelveldt in #7382)
  • Spotify Soloist: no more silence between tracks (by @marcelveldt in #7384)
  • Play artists faster on providers without an artist tracks listing (by @apophisnow in #7390)
  • Keep disliked genres out of radio, mixes and autoplay (by @apophisnow in #7393)
  • Squeezelite: report the player names set in Music Assistant to the clients (by @lawrence-jeff in #7402)
  • Play Deezer hi-res tracks at their real sample rate and bit depth (by @jpmenil in #7403)
  • Spotify setup: Soloist as the default engine and updated wizard text (by @marcelveldt in #7416)
  • Offer this device as the Music Quiz venue player (by @marcelveldt in #7417)
  • Swap descriptions to the new language after a language change (by @OzGav in #7423)
  • Add seek support to the AriaCast receiver (by @meiser79 in #7426)
  • Raumfeld: follow the speakers' events instead of polling them (by @Simanias in #7427)
  • Deezer: sync playback with the Deezer app (by @jdaberkow in #7428)
  • Stop adding MediaItemImage objects for images outside of subsonic (by @khers in #7431)
  • Turn on offline players through their power control (by @marcelveldt in #7435)
  • Default MusicCast players to MP3 output (by @jerome-pouiller in #7440)
  • Deezer: more metadata and a few small improvements (by @jdaberkow in #7441)
  • Power off idle players through their power control (by @marcelveldt in #7446)
  • Add a queue's items to an existing playlist (by @pierosavi in #7447)
  • Choose how long a paused player stays paused before it stops (by @marcelveldt in #7451)
  • Subsonic setup refactor (by @khers in #7456)
  • Handle m4a albumartists tag (by @NasaGeek in #7459)
  • Jump to a letter in the artist, album and track libraries (by @OzGav in #7468)
  • Pick between provider and own resume progress by one rule everywhere (by @fmunkes in #7482)
  • Add resume timestamps to providers where available (by @fmunkes in #7483)
  • Grey out library podcasts and radio stations if their provider no longer has them (by @OzGav in #7490)
  • Put the speaker's queue back after a Music Quiz game (by @marcelveldt in #7491)
  • Support higher sample rate and bit depth for Sendspin sources (by @maximmaxim345 in #7506)
  • Play line-ins on Sendspin players at the source's sample rate (by @maximmaxim345 in #7507)
  • Deezer: play hi-res and add a stream quality setting (by @jdaberkow in #7512)
  • Add player options to the Sonos provider (by @fmunkes in #7531)
  • Make Subsonic provider use the last modified bookmark date (by @khers in #7536)
  • Re-order M3U playlists (by @OzGav in #7539)
  • Sync Hue lamps on Home Assistant's ZHA without a Hue bridge (by @marcelveldt in #7540)
  • Reorder tracks in Spotify playlists (by @OzGav in #7543)
  • Reorder tracks in Qobuz playlists (by @OzGav in #7544)
  • YouTube Music: edit and reorder your playlists (by @MarvinSchenkel in #7553)
  • Add icon for the statistics controller (by @MarvinSchenkel in #7555)
  • Add playlist reordering to the Audiobookshelf provider (by @fmunkes in #7572)
  • Add a perceived energy level to track audio metadata (by @MarvinSchenkel in #7589)
  • Send supported artist types with the provider (by @fmunkes in #7595)
  • Replace the MilkDrop color tint setting with the artwork palette (by @jozefKruszynski in #7622)
  • Keep the order of in-progress audiobooks and podcasts when providers sync progress (by @fmunkes in #7658)
  • Report the progress time from Audiobookshelf, gPodder and Overcast (by @fmunkes in #7659)
  • Link an artist to a newly added music service when its page is opened (by @marcelveldt in #7689)

🐛 Bugfixes

  • Use LMS synchronisation logic for squeezelite sync groups (by @Carunga in #6477)
  • Keep the last Squeezelite volume when its cache entry expires (by @thelad-dev in #6944)
  • Fix Spotify Connect position counting the pause after a resume (by @maximmaxim345 in #7040)
  • Keep same-name artists on one streaming provider apart via MusicBrainz (by @OzGav in #7124)
  • Fix Home Assistant player updates failing on non-text media_content_id (by @MarvinSchenkel in #7152)
  • Fix Bluesound multi-zone players missing on routed networks (by @MarvinSchenkel in #7159)
  • Keep ICY flow streams flowing in small writes instead of one write per metadata interval (by @MarvinSchenkel in #7166)
  • Raumfeld: a room of several speakers keeps its player (by @Simanias in #7180)
  • Stop album and track refreshes from renaming shared artists (by @OzGav in #7201)
  • Fix Roku Media Assistant player queue stalls and end-of-stream detection (by @kees in #7217)
  • Hide source-only Sendspin devices from the player menu by default (by @maximmaxim345 in #7223)
  • Give a DIDL player the whole track's duration for a flow stream (by @Simanias in #7224)
  • Allow pairing a Sendspin device again after it was unpaired (by @maximmaxim345 in #7337)
  • Keep SoundCloud signed in by refreshing its access token (by @robsonke in #7343)
  • Time out hanging MAC address lookups (by @OzGav in #7346)
  • Load chapters of audiobooks played from a listing (by @fmunkes in #7349)
  • Raumfeld: a speaker keeps its player when it moves to another room (by @Simanias in #7350)
  • Fix Open Subsonic remote image URLs being passed to getCoverArt (by @anatosun in #7351)
  • Fix Apple TV pairing not working (by @cleverer in #7352)
  • Fix missing played status on a Spotify podcast episode page (by @OzGav in #7353)
  • Link artists whose MusicBrainz page uses a play.qobuz.com link (by @OzGav in #7354)
  • Re-form a speaker group faster and keep the next track ready when its leader drops (by @marcelveldt in #7356)
  • Fix Sendspin output staying unavailable on some AirPlay and Cast speakers (by @maximmaxim345 in #7357)
  • Keep a playing group on Sendspin when a Sendspin speaker joins (by @maximmaxim345 in #7358)
  • Fix misleading reconnect text on Sendspin devices another server took (by @maximmaxim345 in #7361)
  • Start at 0:00 when seeking to the start of an audiobook or episode (by @fmunkes in #7363)
  • Keep regular providers off in safe mode (by @marcelveldt in #7394)
  • Keep Sonos playing when the queue changes under it (by @marcelveldt in #7395)
  • Squeezelite: start announcements on the small buffer (by @lawrence-jeff in #7400)
  • Fix missing search_name indexes on upgraded libraries (by @CasperNaudts in #7404)
  • Keep HLS radio playing through stalls of its CDN (by @jordiboehme in #7407)
  • Say at once that Spotify is busy elsewhere instead of after loading the playlist (by @marcelveldt in #7408)
  • Keep Spotify playing after a speaker drops a track instead of skipping through the queue (by @marcelveldt in #7409)
  • Reject control characters in concat file lists (by @chrisuthe in #7412)
  • Strip control characters from AirPlay now-playing metadata (by @chrisuthe in #7413)
  • Don't store a disabled state for providers that can't be disabled (by @marcelveldt in #7414)
  • Fix iBroadcast tracks with additional genres being skipped during sync (by @flagoworld in #7415)
  • Recognize the browser's own web player when opened from the Home Assistant sidebar (by @marcelveldt in #7418)
  • Fix AriaCast receiver playback on a linked protocol player (by @meiser79 in #7425)
  • Fix Music Quiz rounds stuttering at the start on Sendspin players (by @marcelveldt in #7433)
  • Fix Spotify going silent for 20 s at a track change (by @marcelveldt in #7436)
  • Add Legacy Auth option to subsonic setup flow (by @khers in #7439)
  • Fix abrupt Spotify song changes when your account has crossfade on (by @marcelveldt in #7442)
  • Stop refreshing the YouTube Music session from Music Assistant (by @bbauti in #7448)
  • Fix Sendspin group going silent after a leader switch with a visualizer member (by @MarvinSchenkel in #7461)
  • Fix the first Music Quiz round stuttering at the start (by @marcelveldt in #7466)
  • Keep an artist's other folders when its artist.nfo changes (by @marcelveldt in #7475)
  • Squeezelite: give the visualization setting a plain string default (by @lawrence-jeff in #7476)
  • Accept whole numbers for float API arguments (by @pierosavi in #7477)
  • Keep queue state and log unload errors when the server stops (by @marcelveldt in #7478)
  • Fix ARD Sounds search failing when a show or station has no social media links (by @OzGav in #7496)
  • Fix AirPlay group members drifting apart after a corrected cold start (by @cTopher in #7503)
  • Check player access for every player in a grouping command (by @marcelveldt in #7511)
  • Play media on the player you picked when it is in a group (by @marcelveldt in #7518)
  • Reconnect the MPD player when its connection drops silently (by @lucamartinetti in #7522)
  • Reassemble chunked client messages on the remote access API channel (by @jozefKruszynski in #7537)
  • Prevent clipping when volume normalization raises a quiet track (by @marcelveldt in #7538)
  • Fix missing covers in Music Assistant playlists (by @OzGav in #7546)
  • Fix stale album links of local files whose album tag changed (by @OzGav in #7548)
  • Stop Cast speakers replaying earlier tracks at the end of a queue (by @marcelveldt in #7549)
  • Stop the end of a queue being cut off on Cast and Bluesound speakers (by @marcelveldt in #7550)
  • Back off AirPlay control reconnects for receivers that keep failing (by @MarvinSchenkel in #7554)
  • Fix Cast speakers dropping out during longer playback (by @marcelveldt in #7559)
  • Replace the HTTP profile setting with a fixed content length toggle (by @marcelveldt in #7560)
  • Bound ffprobe/ffmpeg tag probes with a timeout (by @OzGav in #7584)
  • Tidal: name album artists and playlist owners in search results (by @jozefKruszynski in #7585)
  • Give up on a play request that takes longer than a minute (by @marcelveldt in #7601)
  • Stop artists from fetching their whole catalogue when played or opened (by @marcelveldt in #7602)
  • Skip post load work for a provider unloaded while registering (by @jozefKruszynski in #7612)
  • Fix silent HomePod mini 2 and failing AirPlay group starts (airplay-cli v0.5.10) (by @musicassistant-bot[bot] in #7615)
  • Fix AirPlay pairing with Apple TV and HomeView on OS 27.2 (by @marcelveldt in #7632)
  • Fix AirPlay pairing on OS 27.2 and show HomePod controls in the Home app (airplay-cli v0.5.11) (by @musicassistant-bot[bot] in #7633)
  • Fix silent AirPlay 2 playback on Shairport Sync receivers (by @marcelveldt in #7662)
  • Reject oversized ID3 tags before scanning local audio files (by @marcelveldt in #7667)
  • Fix silent Shairport Sync speakers after the first AirPlay 2 stream (airplay-cli v0.5.12) (by @musicassistant-bot[bot] in #7668)
  • Release AirPlay speakers on stop and let another app take them over (by @marcelveldt in #7671)
  • Release AirPlay speakers on stop and notice when another app takes them over (airplay-cli v0.5.13) (by @musicassistant-bot[bot] in #7673)

🎨 Frontend Changes

Other Changes

  • Revert "Pair Sendspin players on the Home Assistant host with their local token" (by @chrisuthe in #7370)
  • Fix the Home Assistant player test that broke dev (by @marcelveldt in #7473)

🧰 Maintenance and dependency bumps

79 changes
  • Bump pywam from 0.2.0 to 0.2.3 (by @FSund in #7322)
  • Bump av from 18.1.0 to 19.0.2 (by @dependabot[bot] in #7324)
  • Bump astral-sh/setup-uv from 10.3.2 to 10.3.3 (by @dependabot[bot] in #7340)
  • Clear up two misleading log lines (by @marcelveldt in #7362)
  • Mark every provider as core or community maintained (by @marcelveldt in #7383)
  • Let new models sort fields and listing types land without failing the server (by @marcelveldt in #7389)
  • Use the reverse-DNS _meta key for the Home Assistant user in MCP tool calls (by @marcelveldt in #7396)
  • Fix rare Spotify playback hangs and wrong settings after the session rework (by @marcelveldt in #7397)
  • Add regression tests for the image loader, ingress sign-in and playlist mapping guards (by @chrisuthe in #7398)
  • Fix five flaky tests that block the merge queue (by @fmunkes in #7405)
  • Bump CodSpeedHQ/action from 5.6.0 to 5.6.3 (by @dependabot[bot] in #7411)
  • Skip upstream-only workflows on forks (by @balloob in #7420)
  • Core player queues replace 'music provider' with 'music source' (by @remon1496 in #7432)
  • Install the frontend from its GitHub release instead of PyPI (by @marcelveldt in #7434)
  • Similar tracks and the Discover row no longer freeze the server on large libraries (by @marcelveldt in #7437)
  • Bump the music-assistant-libs group with 3 updates (by @dependabot[bot] in #7443)
  • Revert "Default MusicCast players to MP3 output" (by @fmunkes in #7458)
  • Run the nightly release an hour earlier (by @marcelveldt in #7460)
  • Raumfeld: test connecting to the host, registering rooms and the setup flow (by @Simanias in #7464)
  • Drop a stale comment in the Pandora error handler (by @chrisuthe in #7469)
  • Document community providers: merging your own, fixes and backports (by @chrisuthe in #7470)
  • Show the right YouTube Music podcast progress when an episode starts (by @OzGav in #7471)
  • Bump docker/login-action from 4.7.0 to 4.8.0 (by @dependabot[bot] in #7479)
  • Drop the settings migrations for upgrades from 2.9 (by @marcelveldt in #7481)
  • Give Home Assistant a token for the MCP server (by @marcelveldt in #7485)
  • Bump usearch to 2.26.6 and numkong to 7.8.7 (by @chrisuthe in #7495)
  • Complete onboarding when the setup wizard finishes, not when the first provider is added (by @marcelveldt in #7509)
  • Refill the speaker's buffer faster after a short server hiccup (by @marcelveldt in #7513)
  • Keep audio pipes off the disk so a busy disk cannot freeze playback (by @marcelveldt in #7514)
  • Keep Spotify audio steady after a short server hiccup (by @marcelveldt in #7515)
  • Check player access for the sleep timer commands (by @marcelveldt in #7516)
  • Let a user switch off their own speaker while it is part of a group (by @marcelveldt in #7517)
  • Check player access for commands that are passed on to a group (by @marcelveldt in #7523)
  • Keep a group playing when a play request on one of its players cannot start (by @marcelveldt in #7524)
  • Remove Auracast (by @OzGav in #7527)
  • Play on a speaker right after it leaves its group (by @marcelveldt in #7529)
  • Stop two tests failing when a task list update lands mid-test (by @marcelveldt in #7530)
  • Stop a storage test failing when the CI runner stalls briefly (by @marcelveldt in #7532)
  • Faster Sonos grouping right after an earlier group change (by @marcelveldt in #7534)
  • Update the Hue Entertainment library to 0.6.0 (by @marcelveldt in #7535)
  • Keep Sonos playing when another Music Assistant server on the network restarts (by @marcelveldt in #7545)
  • Require ffmpeg 8.0 or newer (by @marcelveldt in #7558)
  • Keep playing while an Endless Mix fetches new tracks (by @marcelveldt in #7564)
  • Describe both Hue Lights Sync backends in the setup notes (by @marcelveldt in #7567)
  • Mark everything that ships with the server as built-in (by @marcelveldt in #7575)
  • Remove the ffmpeg 7.1.1 workaround for niconico video audio (by @marcelveldt in #7587)
  • Auto Release skips empty releases and waits for the stable backport PR (by @MarvinSchenkel in #7590)
  • Bump peter-evans/create-pull-request from 8.1.2 to 8.1.3 (by @dependabot[bot] in #7597)
  • Document that one action never fans out over a music service's catalogue (by @marcelveldt in #7598)
  • Stop playback from requesting music services that asked us to wait (by @marcelveldt in #7600)
  • Stop a whole library folder from being played in one go (by @marcelveldt in #7604)
  • SoundCloud: make far fewer requests and respect rate limits (by @marcelveldt in #7605)
  • Deezer: respect rate limits on all requests (by @marcelveldt in #7606)
  • Show at most 100 releases of an artist so big discographies stay quick (by @marcelveldt in #7607)
  • YouTube Music: make fewer requests and respect rate limits (by @marcelveldt in #7608)
  • Spotify: list album tracks with one request instead of two (by @marcelveldt in #7609)
  • Load the texts of a provider that is installed later (by @marcelveldt in #7613)
  • Let the server load providers from a second folder (by @marcelveldt in #7614)
  • Install the requirements of community providers next to the server, never over it (by @marcelveldt in #7616)
  • Fix a test-order failure in the built-in favorites playlist tests (by @marcelveldt in #7621)
  • Make the queue transfer tests independent of how fast the machine is (by @marcelveldt in #7626)
  • Artist Events no longer queues a metadata refresh for every artist (by @marcelveldt in #7654)
  • Rate limit the iTunes artwork and Genius lyrics lookups (by @marcelveldt in #7655)
  • Rate limit requests to Audible (by @marcelveldt in #7656)
  • Fix music files failing to import while the server is busy (by @marcelveldt in #7660)
  • Last.fm top tracks list your own library instead of searching every music service (by @marcelveldt in #7663)
  • Pausing a squeezelite group member on its own device now pauses the whole group (by @marcelveldt in #7669)
  • Count only the albums and artists that are in your library (by @marcelveldt in #7675)
  • Remove the old database alias for library items (by @marcelveldt in #7677)
  • Collect metadata only for the artists and albums in your library (by @marcelveldt in #7678)
  • State the artist albums limit in the development guide (by @marcelveldt in #7681)
  • Test that a queue keeps its user when a play request runs out of time (by @marcelveldt in #7682)
  • Keep the dependency report within the size GitHub allows for a comment (by @marcelveldt in #7683)
  • Fetch a YouTube Music podcast once when its page opens (by @marcelveldt in #7684)
  • Show Last.fm top tracks again after a failed request (by @marcelveldt in #7685)
  • Count the genres the genre list shows (by @marcelveldt in #7686)
  • Look up fewer tracks for Last.fm similar tracks and radio (by @marcelveldt in #7687)
  • Open more discography albums by trying the editions that can be found (by @marcelveldt in #7688)
  • Update aioslimproto to 3.4.1 (by @marcelveldt in #7691)

🙇 Thanks to our contributors

Special thanks to the following contributors who helped with this release:

@Carunga, @CasperNaudts, @FSund, @MarvinSchenkel, @NasaGeek, @OzGav, @Simanias, @Yagoor, @afeldman1, @anatosun, @apophisnow, @balloob, @bbauti, @cTopher, @chrisuthe, @cleverer, @dmoo500, @flagoworld, @fmunkes, @iwismer, @jdaberkow, @jerome-pouiller, @jordiboehme, @jozefKruszynski, @jpittelkow, @jpmenil, @kees, @khers, @lawrence-jeff, @lucamartinetti, @Lucide, @marcelveldt, @martinbuergi, @maximmaxim345, @meiser79, @mikkelke, @pcc0x, @pierosavi, @remon1496, @robsonke, @stvncode, @tabler, @TanStack, @thelad-dev

Don't miss a new server release

NewReleases is sending notifications on new releases.