⚠️ Important Notes
Attention! This release contains a big change in the way we let you interact with players that support multiple protocols. These will be merged into one single player, greatly improving the UX. If you are using Home Assistant, this could result in entities being renamed that will break automations and/or dashboards.
📦 Stable Release
Changes since 2.7.11
⚠ Breaking Changes
- Merge players with multiple protocols together (by @marcelveldt in #3150)
🚀 New Providers
- Add Pandora provider (by @OzGav in #2503)
- Add Bandcamp Music Provider (by @ALERTua in #2871)
- orf radiothek provider (by @DButter in #2968)
- Add SomaFM Radio provider (by @macegr in #2981)
- Add HEOS Player provider (by @Tommatheussen in #2986)
- Add Yandex Music provider (by @trudenboy in #3002)
- Add YouSee Musik provider (by @math625f in #3043)
- Added AriaCast Receiver plugin for Music Assistant (by @AirPlr in #3061)
- Add Zvuk Music provider (by @trudenboy in #3090)
- Add Emby Music Provider (by @hatharry in #3096)
- Add KION Music (MTS Music) provider (by @trudenboy in #3100)
- Add Dashie Kiosk player provider (by @jwlerch78 in #3180)
- Add NFS Filesystem Provider (by @OzGav in #3276)
🚀 Features and enhancements
- BBC Sounds: Reimplement now playing (by @kieranhogg in #2698)
- Plex connect: Improve queue loading performance (by @anatosun in #2735)
- Add Sendspin proxy for web player (by @marcelveldt in #2840)
- Improve login with Home Assistant flow (by @marcelveldt in #2847)
- Qobuz enable selection of stream quality level (by @OzGav in #2851)
- Add metadata support to HLS streams (by @OzGav in #2867)
- Plex Connect: Ungroup player before starting playback (by @anatosun in #2877)
- Enable multi-instance support for Audible provider (by @ztripez in #2879)
- Add configuration for Zeroconf discovery interfaces (by @vossim in #2880)
- Audible: Add podcast support and browse by author/series/narrator (by @ztripez in #2881)
- Add JWT-based authentication with backward compatibility (by @ztripez in #2891)
- Party mode (by @apophisnow in #2911)
- Enhanced Skip previous behavior (by @Bonusbartus in #2915)
- Change radio items order to play count descending (by @OzGav in #2918)
- Allow music providers to provide the "date_added" field to library items (by @marcelveldt in #2920)
- abs: parse "date added" into the MA library (by @fmunkes in #2923)
- Add method to move item to end of queue (by @Bonusbartus in #2929)
- Allow radio stations to be added to playlists (by @OzGav in #2951)
- Adds date_added field to Tidal provider (by @FL550 in #2969)
- Add 24 and 32-bit audio support for Sendspin (by @maximmaxim345 in #2977)
- SyncGroupPlayer: Inherit MULTI_DEVICE_DSP feature from group members (by @gnumpi in #2999)
- Add AAC/M4A support to tag parsing (by @OzGav in #3004)
- Implement Apple Music playlist browsing with folders (by @MizterB in #3008)
- hass_players: Show now playing info from external playback (by @ulilicht in #3015)
- YTMusic: Implement more aggressive caching (by @MarvinSchenkel in #3029)
- Add group volume mute support (by @scyto in #3034)
- Use streams server bind ip as spotify connect zeroconf bind interface (by @MarvinSchenkel in #3042)
- Don't force reload on all config changes (by @apophisnow in #3045)
- Add auto discovery to HEOS (by @Tommatheussen in #3056)
- Add album year from Deezer release_date (by @sfortis in #3063)
- Add PlayerOptions to backend and MusicCast (by @fmunkes in #3064)
- Bandcamp Rate Limiting (by @ALERTua in #3069)
- Support multiple artist and other tags in FLAC/OGG files (by @OzGav in #3076)
- feat(deezer): add Flow, Radios and Top Charts as recommendations (by @sfortis in #3077)
- Add generic short code authentication system (by @apophisnow in #3078)
- ABS: Use playback sessions, and optionally allow HLS stream (by @fmunkes in #3079)
- Fix local file system audiobook edge cases (by @OzGav in #3080)
- Add album year to track SQL query (by @sfortis in #3085)
- Enable IPv6 support for zeroconf, stream server and AirPlay DACP (by @fmurodov in #3086)
- Fix Yandex Music provider for lossless streaming support (by @trudenboy in #3093)
- Snapcast: Fix player availability issues and align state with server truth (by @gnumpi in #3104)
- Reduce FFmpeg cover-art storms (by @lukaszwawrzyk in #3109)
- Yandex Music: My Wave Browse folder and locale-based names (by @trudenboy in #3122)
- Radio Paradise revert to using enriched API endpoint (by @OzGav in #3130)
- feat(kion_music): add configurable My Mix settings and improvements (by @trudenboy in #3145)
- Yandex_music: Add FLAC lossless playback refactor, Lyrics support, Сurated collections, Extended recommendations etc (by @trudenboy in #3147)
- Add save_as_playlist command to player queue controller (by @chrisuthe in #3149)
- Update Sendspin provider to version 4.0 with many improvements (by @maximmaxim345 in #3158)
- Feat/genres-v2-implementation (by @jozefKruszynski in #3164)
- Expand PIN based auth in airplay 2 (by @hmonteiro in #3165)
- Update Alexa player provider (by @alams154 in #3167)
- Deezer: Add Genre and mood flows (by @jdaberkow in #3171)
- Cap Apple Music artwork resolution to 1000x1000 (by @OzGav in #3177)
- Add APEv2 tag parsing for WavPack/Musepack/Monkey's Audio (by @OzGav in #3185)
- Switch to MA MusicBrainz mirror (by @MarvinSchenkel in #3186)
- Add Sendspin to AirPlay bridge (by @marcelveldt in #3188)
- Add API to handle playback speed (by @andykelk in #3198)
- Add support for playlist syncing to the Audiobookshelf provider (by @fmunkes in #3207)
- Airplay2-configurable-latency (by @bradkeifer in #3210)
- Set audio format on Bandcamp track ProviderMapping (by @teancom in #3213)
- Bandcamp: validate login on init when credentials are configured (by @teancom in #3215)
- Adapt core to allow multiple media types in playlists (by @fmunkes in #3216)
- Clear internal HEOS queue before playing (by @Tommatheussen in #3219)
- Add genre icons and SVG handling to imageproxy (by @MarvinSchenkel in #3223)
- Subsonic: Reorder image metadata for artists (by @khers in #3227)
- Add custom URL endpoint for listenbrainz scrobble (by @relic664 in #3228)
- feat(genres): add merge genres functionality (by @jozefKruszynski in #3236)
- Fix Qobuz provider using HTTP instead of HTTPS for all API calls (by @teancom in #3246)
- Add manual mediaitem linking to genre (by @jozefKruszynski in #3248)
- Add Sendspin bridge for chromecast devices (by @marcelveldt in #3255)
- Implement language normalization function to the Alexa provider (by @mericon in #3266)
- Enhance SoundCloud streams for better seeking/resuming support (by @robsonke in #3298)
- Handle outdated TLS/SSL configuration in radio streams (by @OzGav in #3301)
- Fix album image missing from queue item responses (by @chrisuthe in #3302)
- Add missing select_source method for HEOS provider (by @Tommatheussen in #3305)
- Cleanup genre, alias and media item mapping orphans during sync (by @jozefKruszynski in #3306)
- Add configurable in-library podcast feeds syncing time to the iTunes Podcast Provider (by @fmunkes in #3308)
- Feature: Bandcamp Browse support (by @teancom in #3311)
- Add bit_rate to radio browser stream details (by @OzGav in #3318)
- Enable multi instance for scrobblers (by @OzGav in #3320)
- Add password pairing support for Airplay 2 devices (by @hmonteiro in #3325)
- Add support for OGG Vorbis radio streams (by @OzGav in #3326)
- Add genre exclusion feature to media items (by @jozefKruszynski in #3327)
- Add derived genres for local and smb providers (by @jozefKruszynski in #3349)
- Party mode enhancements (by @apophisnow in #3350)
- Add Lyrics and Karaoke to Party Mode (by @apophisnow in #3363)
- Narrow down genre linking during scan (by @jozefKruszynski in #3372)
- Extract date_added from Deezer API for library items (by @sfortis in #3377)
- Rename the last party mode things (by @apophisnow in #3381)
- Fix artist name splitting with semicolons and Vorbis multi-field handling (by @OzGav in #3390)
- Support id3v2.4 multi value tags (by @OzGav in #3395)
- Lyrics Viewer karaoke option for Party (by @apophisnow in #3404)
- Add three way genre visibility toggle (by @jozefKruszynski in #3408)
- Sync player elapsed time to frontend after significant drift. (by @MarvinSchenkel in #3411)
- Only show non empty genres for media type in library views (by @jozefKruszynski in #3418)
- Improve player drift detection + Airplay elapsed time improvements (by @MarvinSchenkel in #3422)
- Fix Sendspin reconnect races and add initial visualizer role support (by @maximmaxim345 in #3431)
- Global genre exclusion (by @jozefKruszynski in #3453)
- Extend Party mode configuration (by @marcelveldt in #3471)
🐛 Bugfixes
- Fix SSL configuration (by @marcelveldt in #2836)
- Fix config values not persisting when making changes (by @marcelveldt in #2839)
- Various small (bug)fixes (by @marcelveldt in #2846)
- Plex: fixed auth (by @anatosun in #2853)
- Fix missing totalCount parameter in ARD Audiothek provider (by @jfeil in #2854)
- Fix WiiM devices not starting as part of a group (by @MarvinSchenkel in #2855)
- Fix player removal event sent when player only temporary unavailable (by @marcelveldt in #2856)
- Fix resume loops when seeking a player group of providers that also resume (e.g. sqeezelite) (by @MarvinSchenkel in #2859)
- Attempt to fix webserver config not persisting (by @marcelveldt in #2860)
- fix: podcast parser helpers not handling exception (by @fmunkes in #2861)
- Fix thread safety issue in Subsonic streaming (by @marcelveldt in #2863)
- Fix link in Roku manifest (by @OzGav in #2866)
- Fix items not showing up in the library (filtering still not right) (by @arturpragacz in #2873)
- Fix Sonos S1 not reconnecting after having gone offline. (by @MarvinSchenkel in #2874)
- Audible: Fix authentication for new API token format (by @ztripez in #2875)
- Plex Connect: Fix Plex Connect timeline reporting (by @anatosun in #2876)
- Fix issue with remote_progress if user not logged in (by @jfeil in #2882)
- Add 2 guards for queue missing after client disconnect (by @balloob in #2884)
- Fix spotify podcast thumb image quality (by @OzGav in #2885)
- Prevent cache with media_item=None (by @balloob in #2886)
- Disconnect sendspin clients to allow clean shutdown (by @balloob in #2887)
- Fix OpenSubsonic ReplayGain loudness calculation (by @OzGav in #2893)
- Improve single artist detection when splitting (by @OzGav in #2899)
- Fix base queries to work with provider mapping filters (by @MarvinSchenkel in #2900)
- Fix track name stripping too agressive (by @OzGav in #2901)
- Fix multiple spotify connect instances reporting to the latest registered webservice callback (by @kneirinck in #2905)
- fix: MusicCast Pause (by @fmunkes in #2907)
- Fix invalid timeout value for TLS connections (by @mtdcr in #2908)
- Subsonic: Update Subsonic library and use new AsyncConnection (by @khers in #2910)
- Fix sql injection vulnerability (by @marcelveldt in #2916)
- Use bind ip of the stream server for Sendspin url (by @MarvinSchenkel in #2930)
- Fix Music Assistant playlist not being removed (by @OzGav in #2931)
- Fix webserver base url not persisting (by @MarvinSchenkel in #2935)
- fix: MusicCast: Handle a failed poll more gracefully (by @fmunkes in #2944)
- Fix players/get_by_name not always returning a result (by @OzGav in #2945)
- Sendspin web player race condition losing
client/hello(by @maximmaxim345 in #2946) - Fix Pandora authentication failures (by @OzGav in #2949)
- Subsonic Scrobble: Fix Subsonic interactions after the async change (by @khers in #2953)
- Prevent duplicate airplay player creation leaving player in invalid state (by @kdkavanagh in #2955)
- Fix Pandora only showing five stations (by @OzGav in #2956)
- fix: Ensure playlist ID is a string in Soundcloud provider (by @robsonke in #2957)
- Fix issues with progress bar jumps and time overflow (by @MarvinSchenkel in #2959)
- Fix content type for Sqeezelite multiclient streams (by @MarvinSchenkel in #2967)
- Fallback to stream.url if url_resolved is missing (by @MarvinSchenkel in #2972)
- Do not report progress on ffmpeg streaming error (by @fmunkes in #2973)
- fix(spotify_connect): ignore trailing sink event to prevent playback thrashing (by @prydie in #2976)
- fix(alexa): Fix issue with language on alexa skills for french and germany (by @vlacour97 in #2982)
- fix: Add support for AAC streaming route for universal groups (by @rccoleman in #2990)
- Fix pre announce typing (by @arturpragacz in #2998)
- fix(Tidal): Remove unnecessary deduping of recomendation rows (by @jozefKruszynski in #3006)
- Increase cache for local playlist tracks (by @MarvinSchenkel in #3007)
- Fix announcement for Sonos Play:1's (by @MarvinSchenkel in #3009)
- Fix chime validation for player groups (by @MarvinSchenkel in #3013)
- Fixes for the AirPlay provider (by @marcelveldt in #3014)
- Sqeezelite: Only use low latency threshold values when a plugin is active (by @MarvinSchenkel in #3018)
- Fix player lifecycle (enabling/disabling and config updates) (by @marcelveldt in #3024)
- Fix players unavailable of cast and bluesound provider (by @marcelveldt in #3027)
- Fix player sources in Sonos S1 (by @MarvinSchenkel in #3030)
- Don't filter unavailable player configs by default (by @marcelveldt in #3031)
- Fix Sonos looping announcements (by @MarvinSchenkel in #3032)
- Raise AudioException if ffmpeg encounters a demuxing error (by @fmunkes in #3035)
- Fix IndexError when Deezer track has no media available (by @sfortis in #3038)
- Fix Sqeezelite playing next enqueued song after announcement. (by @MarvinSchenkel in #3039)
- Fix not being able to ungroup dynamic group members (by @MarvinSchenkel in #3040)
- Radio Paradise. Switch to simple API (by @OzGav in #3046)
- Improvements and bugfixes for player and provider config entry handling (by @marcelveldt in #3049)
- Remove corrupt player configurations (by @marcelveldt in #3051)
- Fix image proxy handling pointing at ourselves (by @marcelveldt in #3052)
- Fix announcement loops for Sonos S1 (by @MarvinSchenkel in #3053)
- Fix issue where Sonos would sometimes skip a smart fade (by @MarvinSchenkel in #3057)
- Fix AirPlay devices that need pairing not visible in the config (by @marcelveldt in #3060)
- Fix track import with multiple artists and mixed separators (by @OzGav in #3065)
- chore: update bandcamp API library dependency (by @ALERTua in #3066)
- fix(tidal): ensure no @ symbol in tidal recommendation rows (by @jozefKruszynski in #3070)
- Allow Emoji in folder names (by @OzGav in #3071)
- Allow all special characters in passwords (by @OzGav in #3072)
- Fix type error in load_provider_config (by @OzGav in #3073)
- Fix squeezelite WAV playback (by @OzGav in #3084)
- Fix cache check for expire (by @relic664 in #3087)
- Snapcast: Stop the control scripts gracefully before shutting down the built-in snapcast server (by @gnumpi in #3092)
- Apple Music: Limit get_library_tracks to 150 songs per batch (by @MizterB in #3094)
- Apple Music: Fix syncing shared playlists (by @MizterB in #3095)
- fix(yandex_music): fix playlist loading and missing album cover art (by @trudenboy in #3099)
- Use RAOP protocol for Juke Audio devices (by @kenyonj in #3102)
- Revert "Fix squeezelite WAV playback" (by @MarvinSchenkel in #3103)
- Fix IPv6 address handling in bind config and ifaddr parsing (by @fmurodov in #3111)
- Sanitize queue_item.name in icy headers (by @fmunkes in #3112)
- Add back pressure to radio streams (by @MarvinSchenkel in #3116)
- Fix sync groups with dynamic option losing members on power off (by @OzGav in #3118)
- Snapcast: Fix elapsed time not updated issue (by @gnumpi in #3119)
- Fix adding an item to library from browse results (by @MarvinSchenkel in #3120)
- Airplay stability fixes (by @MarvinSchenkel in #3121)
- Fix filtering and sorting within Artist, Album and Track views (by @MarvinSchenkel in #3131)
- Fix DLNA players not reconnecting (by @MarvinSchenkel in #3132)
- Fix sync group toggle (by @OzGav in #3142)
- Always cleanup smart fades tmp files (by @MarvinSchenkel in #3143)
- Fix case-sensitive comparison in compare_strings fuzzy matching (by @teancom in #3151)
- Fix M3U parser truncating EXTINF duration to single character (by @teancom in #3152)
- Fix operator precedence and inverted dedup logic in audiobooks playlog (by @teancom in #3153)
- Fix library items not being deletes after providers have removed them (by @MarvinSchenkel in #3154)
- Fix for Spotify returning endless tracks from playlist (by @MarvinSchenkel in #3155)
- Fix AttributeError when provider is temporarily unavailable (by @teancom in #3157)
- Fix RuntimeError from dict/set mutation during iteration (by @teancom in #3159)
- Fix index_in_buffer or current_index treating index 0 as unset (by @teancom in #3160)
- abs: report correct time_listened in sessions (by @fmunkes in #3163)
- Improve track retrieval for Soundcloud artists with fallback (by @robsonke in #3166)
- Fix HTTP proxy URL parsing for wss:// WebSocket URLs (by @chrisuthe in #3168)
- Adapt playlog for all users if no user present (by @fmunkes in #3169)
- Add name back to abs/itunes recommendation folders (by @fmunkes in #3170)
- Auto cleanup cache db when it grows >= 2GB (by @MarvinSchenkel in #3174)
- Fix multi disc audiobook (by @OzGav in #3182)
- Gracefully skip files/folders with emoji names on SMB mounts (by @OzGav in #3183)
- Fix podcast episode retrieval in builtin playlist tracks (by @OzGav in #3184)
- Fix DSP not applying for AirPlay and Sendspin players (by @maximmaxim345 in #3191)
- Fix grouping for for players whos native protocol is a protocol of other players (by @MarvinSchenkel in #3192)
- Validate queue item ID in Sonos pause path (by @rjbutler in #3194)
- Gpodder: pass verify_ssl to web requests (by @fmunkes in #3195)
- Fix RAOP password handling (by @bradkeifer in #3197)
- OpenSubsonic: Use server provided version tag if present (by @khers in #3200)
- abs: fix: do not add cover url if no cover present (by @fmunkes in #3202)
- Fix group mute for protocol-synced players (by @scyto in #3205)
- Fix HEOS source switching back to Local Music after starting stream (by @Tommatheussen in #3206)
- Fix Sonos S2 announcement 404 error on cloud queue context endpoint (by @Copilot in #3208)
- Snapcast: Fixes for hard switching of group leaders (by @gnumpi in #3209)
- Fix inverted track_number condition in Bandcamp converter (by @teancom in #3211)
- Use ImageType.THUMB for Bandcamp artwork images (by @teancom in #3212)
- Fix Radioparadise image URL (by @OzGav in #3220)
- Allow user-configured shairport-sync instances on the same host to be discovered as AirPlay players (by @Copilot in #3221)
- Updated Artwork handling on AriaCast Receiver (by @AirPlr in #3226)
- Treat narrators as a distinguishing field to prevent merging different recordings (by @hayupadhyaya in #3230)
- Fix language and genre mapping for Spotify podcasts and audiobooks (by @OzGav in #3231)
- Remove genres from playlog during restore (by @jozefKruszynski in #3244)
- Update to
aiosendspin4.2.0 and fix a couple of issues (by @maximmaxim345 in #3249) - Fix sendspin metadata sending wrong progress when paused (by @balloob in #3250)
- Notify UI when DLNA player has gone offline to mark it unavailable. (by @MarvinSchenkel in #3251)
- Handle empty stream URL in metadata refresh for Alexa player provider (by @alams154 in #3252)
- Fix audiobooks controller's set playlog function if user context missing (by @fmunkes in #3253)
- Fix MA not starting on some older CPU models (by @MarvinSchenkel in #3257)
- Use floating point for
aiosendspin's internal audio data (by @maximmaxim345 in #3258) - Make Smart Fades respect the PCM format (by @MarvinSchenkel in #3259)
- Handle connection errors in the Audiobookshelf provider gracefully during provider unload (by @teancom in #3267)
- Fix helper for safe type evaluation (by @apophisnow in #3271)
- Apple Music: Fix playlists sometimes not loading (by @MarvinSchenkel in #3275)
- Fix volume_up / down for group players (by @MarvinSchenkel in #3277)
- Fix userid missing in player queue controller's resolve media item method (by @fmunkes in #3283)
- Some follow-up fixes for the merged protocols players (by @marcelveldt in #3284)
- Accept alternative genre tag separators (by @marcelveldt in #3285)
- Fix group member recursion for Squeezelite devices (by @MarvinSchenkel in #3287)
- Fix race condition in transfer queue feature (by @marcelveldt in #3289)
- Fix active source detection (by @marcelveldt in #3290)
- Guard eventdata snapcast (by @MarvinSchenkel in #3291)
- Make Snapcast type player instead of protocol (by @marcelveldt in #3292)
- Fix MA hanging on announcement failure (by @MarvinSchenkel in #3293)
- Improve protocol linking reliability and restart resilience (by @marcelveldt in #3294)
- Check if HEOS queue exists before clearing (by @Tommatheussen in #3295)
- Ensure soundcloud playlist genre is added as a list (by @jozefKruszynski in #3296)
- Fix Google Cast Groups not visible/controllable (by @marcelveldt in #3300)
- Fix several issues with active source reporting from players (by @marcelveldt in #3309)
- Fix some small issues with AirPlay and sendspin bridging (by @marcelveldt in #3313)
- Fix error when MA shutsdown (by @teancom in #3315)
- Retry sendspin proxy connection during startup race condition (by @teancom in #3316)
- Fix in progress items recommendation for multi-user setups (by @fmunkes in #3324)
- Add user awareness to podcast controller (by @fmunkes in #3333)
- Add guard to NFO file scanning (by @OzGav in #3335)
- Fix 'Invalid PlayerMedia data' error when playing announcements (by @MarvinSchenkel in #3338)
- Pin VBAN dependency (by @MarvinSchenkel in #3339)
- Fix 'Invalid PlayerMedia data' for plugin sources (by @MarvinSchenkel in #3341)
- Fix YT Music not being able to resolve stream urls (by @MarvinSchenkel in #3342)
- Fix Sync group not being able to play to a group of cast devices (by @MarvinSchenkel in #3343)
- Prevent StreamDetails unnecessarily being loaded twice (by @MarvinSchenkel in #3351)
- Fix queue state loss on player re-register (by @maximmaxim345 in #3352)
- Adjust musicbranz log message formatting (by @teancom in #3356)
- Fix db migration for second run of supported_mediatypes (by @fmunkes in #3357)
- Handle HEOS internal queue timeouts (by @Tommatheussen in #3358)
- Fix possible race conditions during HEOS startup (by @Tommatheussen in #3359)
- Guard against trailing spaces in auth URLs (by @OzGav in #3362)
- Fix changing the Sendspin audio format to Automatic (by @maximmaxim345 in #3365)
- Fix _transitioning_players leak causing frozen queue state (by @chrisuthe in #3368)
- Rewrite tidal stream behaviour to avoid premature cutoff (by @jozefKruszynski in #3369)
- Fix: don't reassign the metadata callback for HLS streams, if already set (by @kieranhogg in #3370)
- Fix Sendspin playback stability issues (by @maximmaxim345 in #3382)
- Fix albums not being able to be added to playlists during playlist creation (by @fmunkes in #3385)
- Include nfs-common in Dockerfile.base (by @OzGav in #3389)
- Emby music provider fix album track order (by @hatharry in #3400)
- Fix PyAV version detection when building the base image Dockerfile (by @maximmaxim345 in #3402)
- Ensure genre tables are populated at initial setup (by @jozefKruszynski in #3413)
- Update dynamic attributes during setup in MusicCast (by @fmunkes in #3415)
- Fix Airplay session stopping when a single group member goes offline (by @MarvinSchenkel in #3417)
- Improve Sendspin progress bar accuracy (by @maximmaxim345 in #3420)
- Fix timeouts and slowdowns on play_media action for HEOS (by @Tommatheussen in #3421)
- Fix glitch where the UI and the flow are out of sync (by @teancom in #3423)
- Fix sync group members not hiding in UI (by @maximmaxim345 in #3428)
- Fix volume and mute control for Sendspin bridges (by @MarvinSchenkel in #3430)
- Audiobookshelf: handle errors gracefully during provider unload (by @teancom in #3435)
- Move HA announcement to Discovery controller (by @MarvinSchenkel in #3442)
- Fix provider rename not refreshing in frontend without browser reload (by @apophisnow in #3447)
- Fix 'mark item played' in music controller (by @fmunkes in #3449)
- Fix corrupt players config when player deleted (by @OzGav in #3450)
- Optimize playlist tracks handling for builtin provider (by @marcelveldt in #3451)
- Standardise radio provider library behaviour across all sources (by @OzGav in #3459)
- Fix audio stream memory leaks on playback cancellation (by @maximmaxim345 in #3461)
- Fix merged player protocol reparenting (by @marcelveldt in #3463)
- Fix Cast autoplay (by @OzGav in #3464)
- Fix infinite loop on builtin playlists (by @marcelveldt in #3466)
- Fix provider-based resume position in multi-user setups (by @fmunkes in #3467)
- Fix single artist in ARTISTS tag with semi-colon in name (by @OzGav in #3468)
- Fix (user created) builtin playlists migration (by @marcelveldt in #3472)
- Fix DLNA not always updating mute and volume state. (by @MarvinSchenkel in #3474)
🎨 Frontend Changes
- Fix login with Home Assistant login flow on mobile and iframes (by @marcelveldt in #1316)
- Adjust PlayerSelect to always show all players, sorted on priority (by @marcelveldt in #1300)
- Various small usability fixes (by @marcelveldt in #1317)
- Auto-focus on search box in add provider dialog (by @OzGav in #1318)
- Lokalise translations update (by @github-actions[bot] in #1330)
- Refacto players and providers settings screen (by @stvncode in #1332)
- Add loading state skeleton for tracks, albums etc (by @stvncode in #1331)
- Speaker name (3rd row in player-bar at bottom) not showing up in Safari (+Mobile) (by @Thyraz in #1329)
- Refacto User management page (by @stvncode in #1336)
- Refacto Profile settings page with new ui components (by @stvncode in #1333)
- Fix Auto focus search box (by @OzGav in #1334)
- Lokalise translations update (by @github-actions[bot] in #1340)
- Switch speaker position in footer & add wave on playing (by @stvncode in #1341)
- add translation keys for abs and itunes podcasts (by @fmunkes in #1345)
- Add debug logging to debug the imageproxy 404 issues (by @MarvinSchenkel in #1355)
- Lokalise translations update (by @github-actions[bot] in #1354)
- Add ability to add radio stations to playlists (by @OzGav in #1356)
- Navigate from Now Playing View to detailed view if available otherwise search (by @OzGav in #1357)
- Fix Heart Icon overlapping with the Menu Button (by @stvncode in #1358)
- Lokalise translations update (by @github-actions[bot] in #1367)
- Refacto settings page (by @stvncode in #1337)
- Refactor About page (by @stvncode in #1369)
- Fix: Auto re-sync remote mode when the sw is restarted (by @MarvinSchenkel in #1377)
- Cache isRemote to avoid race when tab is being resumed (by @MarvinSchenkel in #1378)
- Add helpers/logic to handle companion app(s) (by @marcelveldt in #1380)
- Revert "Add debug logging to debug the imageproxy 404 issues" (by @MarvinSchenkel in #1397)
- Lokalise translations update (by @github-actions[bot] in #1398)
- Change position of the toggle HA button (by @stvncode in #1402)
- Fix save button after oauth (by @apophisnow in #1410)
- Change font weight for menu + Change artist icon in toolbar (by @stvncode in #1424)
- Lokalise translations update (by @github-actions[bot] in #1427)
- Fix playing indicator for playlist, album, and artist tracks (by @sfortis in #1425)
- Add the possibility to choose the side of the sidebar (by @stvncode in #1432)
- Add back bottom nav (by @stvncode in #1443)
- Lokalise translations update (by @github-actions[bot] in #1452)
- Fix HA Button not showing HA sidebar (by @stvncode in #1450)
- fix: enable scrolling on login page (by @claude-goomba in #1460)
- [Bug] Fix player settings filters lost on save (by @chrisuthe in #1458)
- Lokalise translations update (by @github-actions[bot] in #1471)
- Add Latvian language (by @OzGav in #1473)
- Moved all Unit Tests to
testsDirectory (by @SimeonAT in #1475) - Save current queue to playlist feature (by @chrisuthe in #1456)
- Show ADD TO PLAYLIST for podcast episodes and audiobooks (by @OzGav in #1474)
- feat(genres): Genre frontend implementation (by @jozefKruszynski in #1459)
- Enable VSCode Intellisense on Unit Tests Files and Use NVM versions of Node.js in Husky Pre-commit (by @SimeonAT in #1479)
- Lokalise translations update (by @github-actions[bot] in #1490)
- feat(genres): add descriptions to translations (by @jozefKruszynski in #1497)
- Ensure merge candidate list is fully populated (by @jozefKruszynski in #1498)
- Disable podcasts and audiobooks in main menu when library is empty (by @OzGav in #1499)
- Replace genre and alias icons with Compass and Route (by @jozefKruszynski in #1502)
- Fix mobile nav not closing when item selected (by @radiohe4d in #1506)
- Add search to bottom navigation (by @marcelveldt in #1510)
- Allow access to the BottomNavigation when the PlayerMenu is open (by @radiohe4d in #1513)
- Change username min required characters to 2 instead of 3 (by @MarvinSchenkel in #1526)
- Add support for multiple media types in playlist (by @fmunkes in #1504)
- Align the players controls so they are in more consistent positions (by @radiohe4d in #1529)
- Replace explicit
anytypes with proper TypeScript types across code… (by @chrisuthe in #1533) - Optimize NowPlaying badge animation to minimize CPU usage (by @apophisnow in #1539)
- Feature: Party mode (by @apophisnow in #1344)
- Fix unable to scroll on the add to playlist dialog (by @radiohe4d in #1546)
- Improve 'Now playing' screen for other resolutions as well (by @MarvinSchenkel in #1548)
- More improvements to the now playing screen (by @MarvinSchenkel in #1562)
- Lokalise translations update (by @github-actions[bot] in #1563)
- Fix titles overlapping on the Now Playing screen on Ultrawide resolutions (by @MarvinSchenkel in #1566)
- Add additional padding to volume popup (by @MarvinSchenkel in #1573)
- Final tweaks now playing resolutions (by @MarvinSchenkel in #1575)
- fix: revert unneeded word by word feature (by @apophisnow in #1576)
- Remove Party show_player_controls (by @apophisnow in #1579)
- Lokalise translations update (by @github-actions[bot] in #1598)
- Improve title screen logic for intro and rewind (by @apophisnow in #1600)
- Remove players and stable badge and sizing for lists (by @stvncode in #1605)
- Remove unsued properties from party mode (by @stvncode in #1609)
- Only show non empty genres for media type in library views (by @jozefKruszynski in #1601)
- Also use compass icon in phone menu (by @MarvinSchenkel in #1613)
- Update server logs and frontend config (by @stvncode in #1616)
- Update settings ui like settings (by @stvncode in #1634)
- Lokalise translations update (by @github-actions[bot] in #1635)
- Reduce size of lyrics in queue and scale it (by @stvncode in #1641)
- Multiple small fixes for the release (by @stvncode in #1643)
- Party mode updates (by @stvncode in #1644)
- Lokalise: Translations update (by @marcelveldt in #1645)
Other Changes
- Revert "use instance_id instead of domain on provider level logging" (by @MarvinSchenkel in #3000)
🧰 Maintenance and dependency bumps
219 changes
- Bump actions/stale from v3.0.11 to v3.0.12 (by @dependabot[bot] in #29)
- Bump pillow from 7.2.0 to 8.0.1 (by @dependabot[bot] in #34)
- Bump aiorun from 2020.6.1 to 2020.11.1 (by @dependabot[bot] in #41)
- Bump cryptography from 3.2 to 3.2.1 (by @dependabot[bot] in #44)
- Bump pychromecast from 7.5.1 to 7.6.0 (by @dependabot[bot] in #56)
- Bump unidecode from 1.1.1 to 1.1.2 (by @dependabot[bot] in #57)
- Bump cryptography from 3.3.2 to 3.4.6 (by @dependabot[bot] in #81)
- Bump aiosqlite from 0.16.0 to 0.17.0 (by @dependabot[bot] in #82)
- Bump mypy from 0.790 to 0.812 (by @dependabot[bot] in #83)
- Bump actions/stale from v3.0.16 to v3.0.17 (by @dependabot[bot] in #84)
- Bump mashumaro from 1.24 to 2.0 (by @dependabot[bot] in #85)
- Bump pytest from 6.2.1 to 6.2.2 (by @dependabot[bot] in #86)
- Bump pytest-cov from 2.10.1 to 2.11.1 (by @dependabot[bot] in #87)
- Bump tox from 3.20.1 to 3.23.0 (by @dependabot[bot] in #88)
- Bump aiohttp[speedups] from 3.7.3 to 3.7.4 (by @dependabot[bot] in #89)
- Bump pillow from 8.1.0 to 8.2.0 (by @dependabot[bot] in #99)
- Bump mashumaro from 2.0 to 2.5 (by @dependabot[bot] in #104)
- Bump pytest-cov from 2.11.1 to 2.12.1 (by @dependabot[bot] in #117)
- Chore(deps): Bump websocket-client from 1.8.0 to 1.9.0 (by @dependabot[bot] in #2811)
- Speed up test/lint workflow with uv and caching (by @maximmaxim345 in #2838)
- Chore(deps): Bump actions/cache from 4 to 5 (by @dependabot[bot] in #2841)
- ⬆️ Update music-assistant-models to 1.1.85 (by @music-assistant-machine in #2843)
- ⬆️ Update music-assistant-models to 1.1.86 (by @music-assistant-machine in #2844)
- ⬆️ Update music-assistant-frontend to 2.17.50 (by @music-assistant-machine in #2845)
- ⬆️ Update music-assistant-frontend to 2.17.51 (by @music-assistant-machine in #2848)
- ⬆️ Update music-assistant-frontend to 2.17.52 (by @music-assistant-machine in #2849)
- ⬆️ Update music-assistant-frontend to 2.17.53 (by @music-assistant-machine in #2850)
- Typing fixes for the chromecast provider (by @OzGav in #2852)
- Chore(deps): Bump docker/setup-buildx-action from 3.11.1 to 3.12.0 (by @dependabot[bot] in #2857)
- ⬆️ Update music-assistant-frontend to 2.17.54 (by @music-assistant-machine in #2862)
- ⬆️ Update music-assistant-frontend to 2.17.55 (by @music-assistant-machine in #2864)
- ⬆️ Update music-assistant-frontend to 2.17.56 (by @music-assistant-machine in #2865)
- Chore(deps): Bump pillow from 11.3.0 to 12.0.0 (by @dependabot[bot] in #2869)
- Chore(deps): Bump deno from 2.5.6 to 2.6.3 (by @dependabot[bot] in #2870)
- ⬆️ Update music-assistant-frontend to 2.17.57 (by @music-assistant-machine in #2872)
- ⬆️ Update music-assistant-frontend to 2.17.58 (by @music-assistant-machine in #2883)
- ⬆️ Update music-assistant-frontend to 2.17.59 (by @music-assistant-machine in #2888)
- ⬆️ Update music-assistant-frontend to 2.17.60 (by @music-assistant-machine in #2890)
- Update OpenSubsonic Library (by @khers in #2895)
- Chore(deps-dev): Bump mypy from 1.19.0 to 1.19.1 (by @dependabot[bot] in #2897)
- Chore(deps): Bump aiosqlite from 0.21.0 to 0.22.1 (by @dependabot[bot] in #2898)
- ⬆️ Update music-assistant-frontend to 2.17.61 (by @music-assistant-machine in #2902)
- ⬆️ Update music-assistant-frontend to 2.17.62 (by @music-assistant-machine in #2904)
- Bump aioslimproto to 3.1.3 (by @MarvinSchenkel in #2906)
- Bump aioslimproto to 3.1.4 (by @MarvinSchenkel in #2909)
- Bump get-mac 0.9.2 to getmac 0.9.5 (by @mweinelt in #2912)
- ABS/ iTunes podcasts: allow translation of folders (by @fmunkes in #2913)
- ⬆️ Update music-assistant-models to 1.1.87 (by @music-assistant-machine in #2919)
- ⬆️ Update music-assistant-frontend to 2.17.63 (by @music-assistant-machine in #2921)
- Bump aiosendspin to 3.0 (by @balloob in #2924)
- Bump aiosendspin to 2.0.0 (by @balloob in #2925)
- ⬆️ Update music-assistant-models to 1.1.88 (by @music-assistant-machine in #2927)
- Update old template references (by @dmcc in #2928)
- Add PTH202 mypy rule (by @OzGav in #2932)
- Add PTH107 mypy rule (by @OzGav in #2933)
- Add ISC001 PYI036 SIM113 mypy rules (by @OzGav in #2936)
- Chore(deps): Bump pillow from 12.0.0 to 12.1.0 (by @dependabot[bot] in #2937)
- Chore(deps): Bump alexapy from 1.29.10 to 1.29.14 (by @dependabot[bot] in #2938)
- Chore(deps-dev): Bump pytest from 8.4.2 to 9.0.2 (by @dependabot[bot] in #2939)
- Chore(deps): Bump aiohttp from 3.13.2 to 3.13.3 (by @dependabot[bot] in #2940)
- ⬆️ Update music-assistant-frontend to 2.17.64 (by @music-assistant-machine in #2942)
- use instance_id instead of domain on provider level logging (by @fmunkes in #2943)
- ⬆️ Update music-assistant-frontend to 2.17.65 (by @music-assistant-machine in #2948)
- Add and update provider icons (by @OzGav in #2950)
- ⬆️ Update music-assistant-frontend to 2.17.66 (by @music-assistant-machine in #2952)
- Chore(deps): Bump async-upnp-client from 0.46.0 to 0.46.2 (by @dependabot[bot] in #2960)
- Add RET507 mypy rule (by @OzGav in #2961)
- Add RET505 mypy rule (by @OzGav in #2962)
- ⬆️ Update music-assistant-frontend to 2.17.67 (by @music-assistant-machine in #2964)
- Pin
avto 16.1.0 for sendspin provider (by @maximmaxim345 in #2966) - ⬆️ Update music-assistant-frontend to 2.17.68 (by @music-assistant-machine in #2970)
- Make pre-commit configuration cross-platform compatible using uv (by @ALERTua in #2971)
- ⬆️ Update music-assistant-frontend to 2.17.69 (by @music-assistant-machine in #2975)
- Maintenance for security related fixes (by @MarvinSchenkel in #2983)
- ⬆️ Update music-assistant-frontend to 2.17.70 (by @music-assistant-machine in #2987)
- Audiobookshelf: Use a direct stream if configured with an API token. (by @fmunkes in #2989)
- ⬆️ Update music-assistant-frontend to 2.17.71 (by @music-assistant-machine in #2991)
- Chore(deps): Bump pylast from 6.0.0 to 7.0.2 (by @dependabot[bot] in #2994)
- Chore(deps-dev): Bump ruff from 0.14.9 to 0.14.13 (by @dependabot[bot] in #2995)
- ⬆️ Update music-assistant-frontend to 2.17.72 (by @music-assistant-machine in #3001)
- ⬆️ Update music-assistant-models to 1.1.89 (by @music-assistant-machine in #3003)
- Add Spanish and Italian to Alexa language commands (by @alams154 in #3005)
- Chore(deps): Bump actions/setup-python from 6.1.0 to 6.2.0 (by @dependabot[bot] in #3010)
- ⬆️ Update music-assistant-models to 1.1.90 (by @music-assistant-machine in #3011)
- ⬆️ Update music-assistant-frontend to 2.17.73 (by @music-assistant-machine in #3012)
- ⬆️ Update music-assistant-models to 1.1.91 (by @music-assistant-machine in #3016)
- ⬆️ Update music-assistant-models to 1.1.92 (by @music-assistant-machine in #3019)
- Config handling improvements (by @marcelveldt in #3021)
- Chore(deps): Bump alexapy from 1.29.14 to 1.29.15 (by @dependabot[bot] in #3022)
- Chore(deps): Bump py-opensonic from 8.0.1 to 8.1.1 (by @dependabot[bot] in #3023)
- Auto whitelist sendspin webplayer (jnstead of modifying player fiter) (by @marcelveldt in #3026)
- ⬆️ Update music-assistant-frontend to 2.17.74 (by @music-assistant-machine in #3028)
- ⬆️ Update music-assistant-frontend to 2.17.75 (by @music-assistant-machine in #3033)
- ⬆️ Update music-assistant-frontend to 2.17.76 (by @music-assistant-machine in #3036)
- Add update_provider_mapping function (by @jozefKruszynski in #3037)
- Chore(deps): Bump docker/login-action from 3.6.0 to 3.7.0 (by @dependabot[bot] in #3044)
- ⬆️ Update music-assistant-models to 1.1.93 (by @music-assistant-machine in #3047)
- ⬆️ Update music-assistant-models to 1.1.94 (by @music-assistant-machine in #3048)
- Fix deprecation warnings for asyncio.iscoroutinefunction (by @MarvinSchenkel in #3054)
- Chore(deps): Bump peter-evans/repository-dispatch from 3 to 4 (by @dependabot[bot] in #3055)
- Remove legacy logic for radiobrowser item copying (by @OzGav in #3058)
- ⬆️ Update music-assistant-models to 1.1.95 (by @music-assistant-machine in #3059)
- ⬆️ Update music-assistant-frontend to 2.17.77 (by @music-assistant-machine in #3062)
- Add a extensions.json file to .vscode (by @davidanthoff in #3068)
- ⬆️ Update music-assistant-frontend to 2.17.78 (by @music-assistant-machine in #3075)
- Chore(deps): Bump ytmusicapi from 1.11.3 to 1.11.5 (by @dependabot[bot] in #3081)
- Chore(deps-dev): Bump pre-commit from 4.5.0 to 4.5.1 (by @dependabot[bot] in #3082)
- Chore(deps): Bump mashumaro from 3.17 to 3.18 (by @dependabot[bot] in #3083)
- ⬆️ Update music-assistant-frontend to 2.17.79 (by @music-assistant-machine in #3089)
- Add debug logging for scrobbled tracks (by @MonkeyDo in #3091)
- ⬆️ Update music-assistant-frontend to 2.17.80 (by @music-assistant-machine in #3097)
- ⬆️ Update music-assistant-frontend to 2.17.81 (by @music-assistant-machine in #3101)
- Chore(deps): Bump actions/github-script from 7 to 8 (by @dependabot[bot] in #3105)
- ⬆️ Update music-assistant-frontend to 2.17.82 (by @music-assistant-machine in #3107)
- Snapcast: Introduce fallback Snapcast setup for dev environments (by @gnumpi in #3108)
- Print provider name in logging output (by @fmunkes in #3113)
- ⬆️ Update music-assistant-models to 1.1.97 (by @music-assistant-machine in #3114)
- ⬆️ Update music-assistant-models to 1.1.98 (by @music-assistant-machine in #3117)
- Chore(deps): Bump cryptography from 46.0.3 to 46.0.4 (by @dependabot[bot] in #3124)
- Chore(deps): Bump soco from 0.30.12 to 0.30.14 (by @dependabot[bot] in #3125)
- ⬆️ Update music-assistant-frontend to 2.17.83 (by @music-assistant-machine in #3129)
- Chore(deps): Bump cryptography from 46.0.4 to 46.0.5 (by @dependabot[bot] in #3134)
- ⬆️ Update music-assistant-frontend to 2.17.84 (by @music-assistant-machine in #3135)
- ⬆️ Update music-assistant-frontend to 2.17.85 (by @music-assistant-machine in #3136)
- Chore(deps): Bump pillow from 12.1.0 to 12.1.1 (by @dependabot[bot] in #3137)
- Chore(deps): Bump docker/build-push-action from 6.18.0 to 6.19.1 (by @dependabot[bot] in #3138)
- Chore(deps): Bump docker/build-push-action from 6.19.1 to 6.19.2 (by @dependabot[bot] in #3148)
- ⬆️ Update music-assistant-frontend to 2.17.86 (by @music-assistant-machine in #3162)
- ⬆️ Update music-assistant-frontend to 2.17.87 (by @music-assistant-machine in #3172)
- Chore(deps): Bump aioslimproto from 3.1.4 to 3.1.5 (by @dependabot[bot] in #3176)
- ⬆️ Update music-assistant-frontend to 2.17.88 (by @music-assistant-machine in #3178)
- ⬆️ Update music-assistant-frontend to 2.17.89 (by @music-assistant-machine in #3181)
- ⬆️ Update music-assistant-frontend to 2.17.90 (by @music-assistant-machine in #3190)
- ⬆️ Update music-assistant-frontend to 2.17.91 (by @music-assistant-machine in #3199)
- ⬆️ Update music-assistant-models to 1.1.99 (by @music-assistant-machine in #3201)
- ⬆️ Update music-assistant-frontend to 2.17.92 (by @music-assistant-machine in #3203)
- Handle HEAD requests on root route (by @teancom in #3204)
- ⬆️ Update music-assistant-frontend to 2.17.93 (by @music-assistant-machine in #3214)
- ⬆️ Update music-assistant-frontend to 2.17.94 (by @music-assistant-machine in #3218)
- ⬆️ Update music-assistant-frontend to 2.17.95 (by @music-assistant-machine in #3222)
- ⬆️ Update music-assistant-frontend to 2.17.96 (by @music-assistant-machine in #3229)
- yandex_music: windowed FLAC streaming, API throttling, stream hardening (by @trudenboy in #3237)
- ⬆️ Update music-assistant-frontend to 2.17.97 (by @music-assistant-machine in #3238)
- ⬆️ Update music-assistant-models to 1.1.100 (by @music-assistant-machine in #3239)
- ⬆️ Update music-assistant-models to 1.1.102 (by @music-assistant-machine in #3241)
- ⬆️ Update music-assistant-frontend to 2.17.98 (by @music-assistant-machine in #3243)
- ⬆️ Update music-assistant-frontend to 2.17.99 (by @music-assistant-machine in #3245)
- Qobuz provider tidy up and add tests (by @teancom in #3247)
- Remove HLS streams from the Audiobookshelf provider based on user feedback (by @fmunkes in #3254)
- ⬆️ Update music-assistant-frontend to 2.17.100 (by @music-assistant-machine in #3256)
- Bump actions/upload-artifact from 6 to 7 (by @dependabot[bot] in #3260)
- Bump actions/download-artifact from 7 to 8 (by @dependabot[bot] in #3261)
- ⬆️ Update music-assistant-models to 1.1.103 (by @music-assistant-machine in #3262)
- ⬆️ Update music-assistant-frontend to 2.17.101 (by @music-assistant-machine in #3263)
- Log expected API errors as warnings without tracebacks (by @teancom in #3264)
- ⬆️ Update music-assistant-models to 1.1.104 (by @music-assistant-machine in #3268)
- ⬆️ Update music-assistant-models to 1.1.105 (by @music-assistant-machine in #3269)
- ⬆️ Update music-assistant-frontend to 2.17.102 (by @music-assistant-machine in #3270)
- ⬆️ Update music-assistant-models to 1.1.106 (by @music-assistant-machine in #3272)
- ⬆️ Update music-assistant-frontend to 2.17.103 (by @music-assistant-machine in #3273)
- ⬆️ Update music-assistant-frontend to 2.17.104 (by @music-assistant-machine in #3274)
- ⬆️ Update music-assistant-frontend to 2.17.105 (by @music-assistant-machine in #3278)
- ⬆️ Update music-assistant-frontend to 2.17.106 (by @music-assistant-machine in #3280)
- Bump xmltodict from 1.0.2 to 1.0.4 (by @dependabot[bot] in #3281)
- Bump aiosendspin to 4.3.1 (by @Copilot in #3286)
- Bump aioslimproto to 3.1.7 (by @MarvinSchenkel in #3288)
- Optimize musiccast device identifieres after player merging (by @fmunkes in #3297)
- ⬆️ Update music-assistant-frontend to 2.17.107 (by @music-assistant-machine in #3299)
- Bump docker/login-action from 3.7.0 to 4.0.0 (by @dependabot[bot] in #3307)
- ⬆️ Update music-assistant-frontend to 2.17.108 (by @music-assistant-machine in #3310)
- Bump aiosendspin to 4.3.2 (by @Copilot in #3312)
- Bump docker/setup-buildx-action from 3.12.0 to 4.0.0 (by @dependabot[bot] in #3314)
- ⬆️ Update music-assistant-frontend to 2.17.109 (by @music-assistant-machine in #3317)
- Increase 'restart listening time' in session reporting in Audiobookshelf (by @fmunkes in #3321)
- Bump docker/build-push-action from 6.19.2 to 7.0.0 (by @dependabot[bot] in #3322)
- ⬆️ Update music-assistant-frontend to 2.17.110 (by @music-assistant-machine in #3323)
- Add build-system so uv run mass works on fresh checkouts (by @balloob-travel in #3328)
- Downgrade DLNA SSDP discovery socket errors to a warning (by @balloob-travel in #3329)
- ⬆️ Update music-assistant-frontend to 2.17.111 (by @music-assistant-machine in #3330)
- ⬆️ Update music-assistant-frontend to 2.17.112 (by @music-assistant-machine in #3336)
- Bump syrupy from 5.0.0 to 5.1.0 (by @dependabot[bot] in #3344)
- ⬆️ Update music-assistant-frontend to 2.17.113 (by @music-assistant-machine in #3348)
- Bump
aiosendspinto 4.3.3 (by @maximmaxim345 in #3353) - ⬆️ Update music-assistant-frontend to 2.17.114 (by @music-assistant-machine in #3355)
- ⬆️ Update music-assistant-frontend to 2.17.115 (by @music-assistant-machine in #3361)
- Improve SMB error and shutdown handling (by @OzGav in #3367)
- Bump orjson from 3.11.5 to 3.11.6 (by @dependabot[bot] in #3373)
- Use internal time in socket based progress updates in Audiobookshelf. (by @fmunkes in #3374)
- ⬆️ Update music-assistant-frontend to 2.17.116 (by @music-assistant-machine in #3375)
- Add core controller for discovery (by @marcelveldt-traveling in #3378)
- ⬆️ Update music-assistant-models to 1.1.107 (by @music-assistant-machine in #3379)
- ⬆️ Update music-assistant-frontend to 2.17.117 (by @music-assistant-machine in #3380)
- ⬆️ Update music-assistant-frontend to 2.17.118 (by @music-assistant-machine in #3383)
- Remove Party show_player_controls (by @apophisnow in #3391)
- ⬆️ Update music-assistant-frontend to 2.17.119 (by @music-assistant-machine in #3409)
- ⬆️ Update music-assistant-frontend to 2.17.120 (by @music-assistant-machine in #3412)
- ⬆️ Update music-assistant-frontend to 2.17.121 (by @music-assistant-machine in #3414)
- ⬆️ Update music-assistant-frontend to 2.17.122 (by @music-assistant-machine in #3425)
- Add background task controller (by @marcelveldt-traveling in #3426)
- ⬆️ Update music-assistant-models to 1.1.108 (by @music-assistant-machine in #3427)
- Use /playlists/{id}/items endpoint (Spotify Feb 2026 API change) (by @Yipsh in #3436)
- Update party config (by @apophisnow in #3437)
- Optimize NFS provider and localfilesystem for faster import speed (by @apophisnow in #3439)
- ⬆️ Update music-assistant-frontend to 2.17.123 (by @music-assistant-machine in #3441)
- ⬆️ Update music-assistant-frontend to 2.17.124 (by @music-assistant-machine in #3443)
- Some small follow-up fixes for Task manager controller (by @marcelveldt in #3445)
- ⬆️ Update music-assistant-frontend to 2.17.125 (by @music-assistant-machine in #3446)
- ⬆️ Update music-assistant-frontend to 2.17.126 (by @music-assistant-machine in #3452)
- Fix background task lifecycle test (by @jozefKruszynski in #3454)
- Schedule task to fix protocol ids > native ids in SyncGroups (by @MarvinSchenkel in #3460)
- ⬆️ Update music-assistant-frontend to 2.17.128 (by @music-assistant-machine in #3462)
- ⬆️ Update music-assistant-frontend to 2.17.129 (by @music-assistant-machine in #3465)
- Clarify various development considerations in the demo music provider (by @OzGav in #3469)
- ⬆️ Update music-assistant-frontend to 2.17.130 (by @music-assistant-machine in #3470)
- Make ADD_COLUMN migrations idempotent to avoid db crashes (by @MarvinSchenkel in #3473)
- ⬆️ Update music-assistant-frontend to 2.17.131 (by @music-assistant-machine in #3475)
- Upgrade stages of various providers for 2.8 (by @OzGav in #3476)
- ⬆️ Update music-assistant-frontend to 2.17.132 (by @music-assistant-machine in #3478)
- ⬆️ Update music-assistant-frontend to 2.17.133 (by @music-assistant-machine in #3479)
🙇 Thanks to our contributors
Special thanks to the following contributors who helped with this release:
@ALERTua, @AirPlr, @Bonusbartus, @Copilot, @DButter, @FL550, @MarvinSchenkel, @MizterB, @MonkeyDo, @OzGav, @SimeonAT, @Thyraz, @Tommatheussen, @Yipsh, @alams154, @anatosun, @andykelk, @apophisnow, @arturpragacz, @balloob, @balloob-travel, @bradkeifer, @chrisuthe, @claude-goomba, @davidanthoff, @dmcc, @fmunkes, @fmurodov, @gnumpi, @hatharry, @hayupadhyaya, @hmonteiro, @jdaberkow, @jfeil, @jozefKruszynski, @jwlerch78, @kdkavanagh, @kenyonj, @khers, @kieranhogg, @kneirinck, @lukaszwawrzyk, @macegr, @marcelveldt, @marcelveldt-traveling, @math625f, @maximmaxim345, @mericon, @mtdcr, @mweinelt, @prydie, @radiohe4d, @rccoleman, @relic664, @rjbutler, @robsonke, @scyto, @sfortis, @stvncode, @teancom, @trudenboy, @ulilicht, @vlacour97, @vossim, @ztripez