github music-assistant/server 2.11.0b3
2.11.0 BETA 3

pre-release3 hours ago

📦 Beta Release

Changes since 2.11.0b2

🚀 New Providers

🚀 Features and enhancements

  • Register Plex Connect players on plex.tv so mobile Plexamp apps can discover them (by @markjohnson303 in #4570)
  • Implement Apple Music external ID lookup (ISRC/UPC) (by @dmoo500 in #5353)
  • Implement Spotify external ID lookup (ISRC/UPC) (by @dmoo500 in #5356)
  • Show transcripts for Pocket Casts podcast episodes (by @OzGav in #5895)
  • Add triple J Hottest to ABC radio provider (by @Kludgy4 in #6140)
  • Play podcast episodes and radio stations from a browse folder (by @OzGav in #6232)
  • Use album.nfo album artist when the tag is missing (by @OzGav in #6233)
  • Tidal: add track and album lookup by ISRC and barcode (by @jozefKruszynski in #6248)
  • Music sources get an owner and can be shared with household members (by @marcelveldt in #6255)
  • Deezer: External id lookup (by @jdaberkow in #6257)
  • Align party and music quiz plugin icons with the frontend menu (by @MarvinSchenkel in #6258)
  • Members can add and manage their own music sources (by @marcelveldt in #6267)
  • Profiler: tell mapped files from heap growth in memory reports (by @marcelveldt in #6273)
  • Diagnostics dump includes the memory split and the full profiler report (by @marcelveldt in #6275)
  • Default the global autoplay setting to off (by @MarvinSchenkel in #6276)
  • Let members pick who to share a music source with (by @marcelveldt in #6284)
  • Personal Music Assistant playlists: private by default, shareable with other members (by @marcelveldt in #6285)
  • Shuffle and repeat now work for Spotify Connect and other sources playing on Sonos (by @marcelveldt in #6292)
  • Show the Home Assistant system account as a protected system user (by @marcelveldt in #6296)
  • Play through your own account of a service, never through someone else's (by @marcelveldt in #6297)
  • Let admins create their own user roles (by @marcelveldt in #6299)
  • Let everyone play AI Radio stations (by @marcelveldt in #6301)
  • Control shuffle and repeat for any service playing on Sonos (by @marcelveldt in #6304)
  • Let anyone who may share a playlist pick the members to share it with (by @marcelveldt in #6325)
  • Warn once per album folder about a missing ALBUMARTIST tag (by @balloob in #6330)
  • Wake sleeping Sonos portable speakers automatically (by @MarvinSchenkel in #6342)
  • Load Plex library metadata in batches instead of one item at a time (by @RyanAtTanagra in #6353)
  • Sync a Plex library as soon as Plex reports that it changed (by @RyanAtTanagra in #6354)
  • Let the sample rates setting apply to Sonos players (by @RyanAtTanagra in #6356)
  • Add external id lookup to Qobuz provider (by @teancom in #6357)
  • Report the stream server address over the API (by @marcelveldt in #6370)
  • Collapse Tidal quality variants in artist listings (by @jozefKruszynski in #6386)
  • Add support for authors and narrators to the filesystem providers (by @fmunkes in #6399)
  • Add support for audiobook collections to the filesystem providers (by @fmunkes in #6400)
  • Serve the app on the first-time setup page (by @marcelveldt in #6403)
  • Use the loudness provided by Tidal (by @StollD in #6406)
  • Apply the announcement volume consistently on grouped speakers (by @marcelveldt in #6412)
  • Nicovideo: show the MFA code as separate digit boxes (by @marcelveldt in #6444)
  • Allow playing playlist tracks sorted by date added (by @kees in #6455)
  • Record when each Deezer playlist track was added (by @kees in #6457)
  • Apple Music: carry the album releaseDate into metadata.release_date (by @sven-debug in #6461)
  • Favorites are personal, and you can dislike (by @marcelveldt in #6482)
  • Disliked tracks stay out of the music Music Assistant picks for you (by @marcelveldt in #6483)
  • Show the publish date on more podcast episodes (by @OzGav in #6486)
  • Give podcasts without a category the Spoken Word genre (by @OzGav in #6487)
  • Match tracks and albums on other services by ISRC and barcode before searching (by @marcelveldt in #6489)
  • Fill in library items and link music services through MusicBrainz (by @marcelveldt in #6490)
  • Link existing libraries to MusicBrainz in the background (by @marcelveldt in #6496)
  • Keep disliked artists and albums out of generated playback (by @marcelveldt in #6507)
  • Send YouTube Music track likes and dislikes to your account (by @marcelveldt in #6508)
  • Show an artist's full discography from MusicBrainz (by @marcelveldt in #6509)
  • Fill in the audio quality of a linked music source when it is first played (by @marcelveldt in #6516)
  • Let library writers refresh a library item from their music services (by @marcelveldt in #6521)

🐛 Bugfixes

  • Make the skip command accurate enough for fixed 10 and 30 second buttons (by @OzGav in #5794)
  • Record a failed analysis session in the failures overview (by @OzGav in #6138)
  • Properly surface "Other versions" of an album from Youtube Music (by @NasaGeek in #6159)
  • Fix DSD PCM buffer accounting and bound retention (by @mwd102 in #6177)
  • Subsonic scrobbler: credit plays to the playing user's server account (by @pcc0x in #6200)
  • Deezer: keep cover art and artist on user-uploaded tracks (by @jdaberkow in #6202)
  • Keep provider item lookups scoped to their own media type (by @jdaberkow in #6203)
  • Scope favorite and library writes to the sources the acting user may write to (by @pcc0x in #6212)
  • Route generic LinkPlay OEM devices to the generic WiiM backend (by @OzGav in #6223)
  • Plex provider - incorrectly accepts empty media container as lyrics (by @caraar12345 in #6229)
  • Keep local playlist covers in subfolders instead of replacing them with a collage (by @OzGav in #6230)
  • Stop TuneIn sync treating non-favourite stations as failed items (by @OzGav in #6231)
  • Keep Sonos S1 playback events from blocking the event loop (by @OzGav in #6235)
  • Keep the duplicate track walk from freezing the library database (by @OzGav in #6236)
  • Cancel the prewarm of the old next track when a queue is replaced (by @MarvinSchenkel in #6238)
  • Update Yoto API dependency with Oauth refresh token fixes (by @pantsman0 in #6240)
  • Skip corrupt audio files instead of crashing the play request (by @OzGav in #6242)
  • Don't mark a track unplayable when a speaker only probes it (by @marcelveldt in #6243)
  • Tidal: fix playback of tracks that have a Dolby Atmos version (by @jozefKruszynski in #6244)
  • Let repeat take priority over autoplay (by @MarvinSchenkel in #6250)
  • Fix Jellyfin 12 playback and artwork (by @MarvinSchenkel in #6251)
  • Fix a single-track Endless Mix looping over the same few songs (by @MarvinSchenkel in #6254)
  • Show the station logo instead of the previous track's artwork when a radio starts (by @OzGav in #6256)
  • Fix preset slot assignment and xml encoding in Bose Soundtouch (by @fmunkes in #6260)
  • Fix ariacast sticky active player on second session and beyond (by @arthurbre in #6261)
  • Fix the Profiler plugin leaking memory during CPU profiling (by @marcelveldt in #6266)
  • Keep the MilkDrop visualizer alive on tracks longer than the audio buffer (by @jozefKruszynski in #6272)
  • Fix saving the sharing of a music source when its owner or a shared member is disabled (by @marcelveldt in #6277)
  • Stop Sonos speakers cutting out a couple of tracks in (by @marcelveldt in #6278)
  • Fix ListenBrainz scrobbler blocking startup while validating its token (by @marcelveldt in #6289)
  • Make AmpliPi setup aware of controllers that are already configured (by @mcaulifn in #6293)
  • fix issue with forwarded hls substream urls (by @jfeil in #6295)
  • Stop Sonos speakers logging an error on every queue change (by @marcelveldt in #6302)
  • Ask to re-authenticate Last.fm when its login stops working (by @marcelveldt in #6303)
  • Stop a hostname in the Published IP address setting from breaking playback (by @marcelveldt in #6305)
  • Fix Pandora album pages failing to open (by @OzGav in #6308)
  • Fill in unplayable album tracks from another provider (by @OzGav in #6310)
  • Fix Squeezelite players sometimes playing static instead of music (by @marcelveldt in #6311)
  • Prevent ListenBrainz scrobbling from hanging when the service is unresponsive (by @marcelveldt in #6312)
  • Remove a playlist from the list of users who lose access to it (by @marcelveldt in #6314)
  • Fix Squeezelite players going silent when switching tracks quickly (by @marcelveldt in #6316)
  • Keep retrying YouTube Music when the PO Token server is not up yet (by @CodeCommander in #6326)
  • Close pyatv session when an AirPlay control connect or pairing is cancelled (by @balloob in #6329)
  • Hold back every caller while a provider rate limit is active (by @balloob in #6332)
  • Import deferred provider modules off the event loop (by @balloob in #6333)
  • Retry Wikipedia requests that hit a rate limit or an overloaded backend (by @balloob in #6335)
  • Log an unavailable player at debug level while polling (by @balloob in #6336)
  • Let users control their own connected client player (by @MarvinSchenkel in #6340)
  • Random library mixes now favor your least-played tracks (by @MarvinSchenkel in #6343)
  • Show Qobuz tracks played outside the library in Recently played (by @chrisuthe in #6347)
  • Keep one music provider from breaking every version lookup (by @stvncode in #6351)
  • Drop provider mappings for items the provider no longer has (by @RyanAtTanagra in #6355)
  • Fix library artists and albums picking up an invalid provider link (by @marcelveldt in #6362)
  • Ensure that the in-library view doesn't "lose" media items during a socket update in Audiobookshelf (by @fmunkes in #6363)
  • Return HTTP 400 instead of 500 for a non-JSON login request body (by @MarvinSchenkel in #6371)
  • Treat YouTube Music as a realtime source (by @MarvinSchenkel in #6373)
  • Fix OpenSubsonic credential preservation during reconfiguration (by @teancom in #6376)
  • Preserve localized setup errors across providers and flow aborts (by @teancom in #6382)
  • Stop the audio analysis background scan from spawning a task per track (by @balloobbot in #6384)
  • Update py-opensonic to 10.4.1 (by @khers in #6388)
  • Fix announcements on a speaker group playing out of sync (by @marcelveldt in #6392)
  • Remove stale author/narrator links when an audiobook is overwritten (by @fmunkes in #6397)
  • Ensure an updated author or narrator reaches the library in a sync (by @fmunkes in #6398)
  • Fix shuffle/repeat failing on players playing a dynamic mix (by @marcelveldt in #6404)
  • Move the ibroadcast item mapping to strings only (by @robsonke in #6405)
  • Fix a crash caused by a broken leftover player setting (by @marcelveldt in #6410)
  • Fix false permission error opening an artist page (by @marcelveldt in #6411)
  • Log an error when Bandcamp returns invalid JSON (by @teancom in #6417)
  • Improved syncing in case it fails halfway on a single item (by @robsonke in #6418)
  • Updates token management to allow PlexHome users to import their own libraries (by @romain38 in #6426)
  • Keep the stale mapping pass from emptying a library on mismatched ids (by @RyanAtTanagra in #6427)
  • Fix resume position after fallback announcements (by @sickkick in #6429)
  • Fix Snapcast volume/mute routing to idle native player when Sendspin is active (by @tortfeaser in #6432)
  • Fix YTMusic album resolution crash on null audioPlaylistId (by @frosty-geek in #6435)
  • Fix AirPlay speaker ignoring stop after a failed playback start (by @marcelveldt in #6439)
  • Fix external auth consent banner being hidden by ad-blocker filters (by @lanquarden in #6443)
  • Show an error when your ListenBrainz token stops working (by @marcelveldt in #6447)
  • Fix missing text on the Sendspin token pairing screen (by @marcelveldt in #6448)
  • Attribute synced progress to the reporting provider instance (by @fmunkes in #6450)
  • Stop a group's queue when it is powered off outside Music Assistant (by @marcelveldt in #6452)
  • Fix Roku players providers failing to unload (by @kees in #6454)
  • Keep VBAN receiver open while sender is idle (by @sprocket-9 in #6456)
  • Skip CUE sheets with a missing audio file when browsing (by @OzGav in #6463)
  • Reconnect radio streams that go silent before playback gives up (by @OzGav in #6466)
  • Break up a lead speaker's group when it's powered off from Music Assistant (by @marcelveldt in #6467)
  • Allow a speaker to rejoin a group right after the group broke up (by @marcelveldt in #6473)
  • Fix a speaker group going silent when one room is powered off while another joins (by @marcelveldt in #6474)
  • Share one player-access check across the core (by @marcelveldt in #6475)
  • Better mime type handling squeeze sync group (by @Carunga in #6476)
  • Fix Spotify dropping out on Sonos after resuming near the end of a track (by @marcelveldt in #6497)
  • A dislike no longer adds the track to your streaming library (by @marcelveldt in #6498)
  • Keep manually linked genres when a music provider syncs (by @MarvinSchenkel in #6499)
  • Only defer the next-track preload for realtime single-stream sources (by @marcelveldt in #6500)
  • Fix an idle sync group dissolving in the middle of a member change (by @marcelveldt in #6501)
  • Stop Apple Music from adding empty albums whose songs were withdrawn from the catalog (by @MarvinSchenkel in #6502)
  • Resume audiobooks and podcast episodes at their saved position when the queue moves on (by @MarvinSchenkel in #6503)
  • Acquire the narrators from book metadata in Audiobookshelf (by @fmunkes in #6504)
  • Fix an announcement or play command on a grouped speaker locking up during a group change (by @marcelveldt in #6505)
  • Fix a play command on a synced speaker locking up during a group change (by @marcelveldt in #6510)
  • Fix Nicovideo feed artists not matching library items (by @marcelveldt in #6511)
  • Keep the library's housekeeping state when the music settings are saved (by @marcelveldt in #6514)
  • Keep task schedules and run history when saving the Tasks settings (by @marcelveldt in #6522)
  • Pin the RNG in the smart playlist headroom test (by @balloob in #6524)
  • Keep a group playing when the speaker leading it is powered off (by @marcelveldt in #6525)
  • Keep the WiiM queue on the right track when an event is missed (by @MarvinSchenkel in #6532)
  • Keep filling a seed pool past one unproductive radio batch (by @balloob in #6535)
  • Don't flag cleanly finished HTTP audio streams as failed (by @MarvinSchenkel in #6536)

🎨 Frontend Changes

🧰 Maintenance and dependency bumps

70 changes

🙇 Thanks to our contributors

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

@Carunga, @CodeCommander, @Kludgy4, @MarvinSchenkel, @NasaGeek, @OzGav, @RyanAtTanagra, @Simanias, @StollD, @arthurbre, @balloob, @balloobbot, @caraar12345, @chrisuthe, @dmoo500, @fmunkes, @frosty-geek, @internationalized, @jdaberkow, @jfeil, @jozefKruszynski, @kees, @khers, @kieranhogg, @lanquarden, @marcelveldt, @markjohnson303, @mcaulifn, @mwd102, @pantsman0, @pcc0x, @pierosavi, @remon1496, @robsonke, @romain38, @sickkick, @sprocket-9, @stvncode, @sven-debug, @teancom, @tortfeaser, @trisweb

Don't miss a new server release

NewReleases is sending notifications on new releases.