Skip to content

2.9.0

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Jun 19:22
· 17 commits to stable since this release
9f74fa2

πŸ“¦ Stable Release

🌟 Read all about it in our 2.9 blog post! 🌟

Changes since 2.8.9

⚠ Breaking Changes

  • Refactor plugin sources to first-class AudioSource MediaItems (by @marcelveldt in #3938)

πŸš€ New Providers

πŸš€ Features and enhancements

  • Add artist artwork display for radio streams (by @OzGav in #3110)
  • Add configurable max size for metadata thumbnail cache (by @lukaszwawrzyk in #3196)
  • kion_music: upgrade to yandex-music v3 - raw/enc FLAC, lyrics, similar artists, browse (by @trudenboy in #3234)
  • zvuk_music: Browse, recommendations, lyrics, similar tracks, throttling (by @trudenboy in #3242)
  • Add min and max volume functionality per player (by @OzGav in #3360)
  • Add musicbrainz get_release_group functions (by @OzGav in #3384)
  • Add support for legacy Shoutcast servers using ICY protocol (by @OzGav in #3386)
  • Create Services for Playlist Export / Import (by @chrisuthe in #3387)
  • Apple Music: Add support for radio stations (by @dmoo500 in #3433)
  • Add favorites browsing and editing support to Emby provider (by @neurocis in #3457)
  • Add Audio Analysis controller and Audio Analysis provider (by @MarvinSchenkel in #3509)
  • Apple Music: Add content rating check for explicit tracks (by @LosCV29 in #3514)
  • Add Infinite Mix dynamic builtin playlists (by @dmoo500 in #3555)
  • Enable Sendspin bridge for Cast stereo pairs (by @marcelveldt in #3563)
  • Handle Ogg FLAC in-band metadata in chained radio streams (by @a2hill in #3575)
  • Add manual item management API and on_item_updated provider callback (by @OzGav in #3602)
  • Add dynamic leader switching support for Sendspin sync groups (by @marcelveldt in #3603)
  • Yandex Music: rotor session API, Wave Modes, user presets, library sync improvements (by @trudenboy in #3606)
  • Add AI_QUERY and TTS to HA Plugin (by @MarvinSchenkel in #3607)
  • Add audio quality option for Pandora provider (by @cryptk in #3617)
  • Add secondary sort by year for album artist sorting (by @OzGav in #3619)
  • Add ability to take over Pandora stream during concurrent streaming error (by @cryptk in #3620)
  • Propagate now-playing info to Chromecast media_player (by @robtpaton in #3621)
  • Add Apple Music station recommendations to Discover page (by @dmoo500 in #3622)
  • Implement metadata provider priority (by @OzGav in #3623)
  • Add Tidal starred tracks virtual playlist (by @FL550 in #3653)
  • Subsonic: Cache requests (by @khers in #3662)
  • Play from here respects user's sort order (by @philjackson in #3663)
  • Add per-player delay configuration for Sendspin players (by @maximmaxim345 in #3689)
  • Add setting to replace Pause with Stop for DLNA (by @peteS-UK in #3704)
  • Subsonic: Add option to always request stream of raw file (by @khers in #3710)
  • Forward Sendspin Cast app logs to Music Assistant (by @maximmaxim345 in #3713)
  • Smart crossfade: Add gradual timestretching (by @MarvinSchenkel in #3737)
  • Last FM: Add one-click auth (by @duanyutong in #3739)
  • Improve TuneIn browse, search and add recommendations (by @dmoo500 in #3764)
  • Add recommendation translation keys for QQ and NetEase (by @xiasi0 in #3778)
  • Revert "AirPlay 2 provider now supports sync" (by @MarvinSchenkel in #3780)
  • Update yandex_smarthome provider to v1.4.5 β€” auto-create skill flow (by @trudenboy in #3785)
  • Enrich Sendspin metadata with track number, year, album artist, and artist artwork (by @OnFreund in #3788)
  • Set PlayerFeature.SELECT_SOURCE when the FINAL source list is multi-entry (by @rnewman in #3789)
  • Add custom playlist image functionality to local file provider (by @OzGav in #3794)
  • Emby Music Provider: add on played event handler (by @hatharry in #3805)
  • Throttle torch to max 25% of CPU to prevent spikes during analysis (by @MarvinSchenkel in #3808)
  • Allow Plugin Providers and Metadata providers to implement music related ProviderFeatures (by @MarvinSchenkel in #3811)
  • Add option to use local genre metadata only when available (by @OzGav in #3815)
  • Add player filter to scrobble providers (by @Tommatheussen in #3823)
  • Add manual IP addresses setting to the Sendspin provider (by @staticdev in #3846)
  • audio_analysis: add coverage endpoint + bulk merged accessor for sonic_similarity (by @chrisuthe in #3851)
  • Detect Sendspin Cast Receiver failures and show them in the frontend (by @maximmaxim345 in #3853)
  • Fix double sendspin bridges for devices with both Airplay and Cast (by @MarvinSchenkel in #3854)
  • Apple Music similar artists via views=similar-artists API (by @dmoo500 in #3861)
  • Use MB lookup to resolve ambiguous artist names (by @OzGav in #3862)
  • TuneIn: add translation_key to trending recommendations folder (by @dmoo500 in #3865)
  • TuneIn: store image URLs as HTTPS instead of HTTP (by @dmoo500 in #3868)
  • Set PlayerQueue.is_dynamic when radio_source changes (by @dmoo500 in #3886)
  • Improve Listenbrainz multi-artist track scrobbles (by @Tommatheussen in #3887)
  • Improve UX of Sync groups (by @MarvinSchenkel in #3897)
  • Subsonic: Provide close implementation that cleans up (by @khers in #3906)
  • Implement the color@v1 Sendspin role (by @maximmaxim345 in #3917)
  • Fix WiiM external source reporting (by @MarvinSchenkel in #3918)
  • Add variable playback speed for audiobooks and podcasts (by @OzGav in #3939)
  • Sonic Similarity Plugin (by @chrisuthe in #3943)
  • Add stale-while-revalidate option to @use_cache (by @MarvinSchenkel in #3946)
  • Stabilize group players: session-lifecycle instead of mandatory power (by @marcelveldt in #3947)
  • Detect source audio format from ffmpeg log output (by @marcelveldt in #3950)
  • Add Flow Mode sample-rate selection and per-player declared rates (by @marcelveldt in #3951)
  • Improve imageproxy (by @marcelveldt in #3960)
  • AudioSource follow-up (by @marcelveldt in #3964)
  • Use passthrough PCM format for realtime AudioSource items (by @marcelveldt in #3969)
  • Allow scrobble providers to filter by media_type (by @Tommatheussen in #3975)
  • Allow Plugin Providers to implement ProviderFeature.SEARCH (by @MarvinSchenkel in #3978)
  • Return a track sample for dynamic playlists when browsing (by @MarvinSchenkel in #4004)
  • Emby Music Provider: add genres (by @hatharry in #4005)
  • Smart Playlist: multi-seed support with album/playlist seeds (by @MarvinSchenkel in #4012)
  • fast MCP server: debug & config namespaces, external-source playback, OpenClaw/Hermes presets (v0.7.1) (by @trudenboy in #4019)
  • Show real source format for piped AudioSource providers (by @marcelveldt in #4027)
  • Separate library artist views from per-provider artist listings (by @marcelveldt in #4039)
  • Implement the Sendspin visualizer@v1 role and rework Hue Lights Sync (by @maximmaxim345 in #4042)
  • Import album tracks when manually adding an album and Import Album Tracks setting enabled (by @OzGav in #4046)
  • Add Bandcamp feed and wishlist recommendations (by @rnewman in #4047)
  • Add Settings to allow Control of default similar_track action (by @chrisuthe in #4053)
  • Support changing audiobook covers (by @OzGav in #4055)
  • Add album_type filter to smart playlist rules (by @dmoo500 in #4059)
  • Cache recommendations() for sonic_similarity and audiobookshelf (by @MarvinSchenkel in #4099)
  • Speed up YouTube Music recommendations loading (by @MarvinSchenkel in #4120)
  • Spread metadata maintenance schedule across the day (by @MarvinSchenkel in #4126)
  • Add get_artist_toptracks to lastfm recommendations provider (by @OzGav in #4141)
  • Enable WiiM and Last.fm Recommendations by default (by @MarvinSchenkel in #4142)
  • Smart playlists: optional AI-generated descriptions (by @MarvinSchenkel in #4144)
  • Lastfm improvements (by @OzGav in #4148)
  • Improve playlog for artists and albums (by @chrisuthe in #4149)
  • ACoustID Switch to shared API key by default (by @OzGav in #4154)
  • Default artist fix (by @chrisuthe in #4163)
  • Add unofficial-integration disclaimer to streaming provider settings (by @marcelveldt in #4164)

πŸ› Bugfixes

  • Adjust Spotify endpoints post deprecation notice (by @OzGav in #3303)
  • Plex Connect: refactor and fixes plugin (by @anatosun in #3510)
  • Fix MusicBrainz track lookup to aggregate release groups from all rec… (by @OzGav in #3520)
  • Fix audio analysis version gating for non-track media (by @marcelveldt in #3566)
  • Fix DLNA pause fallback for stale transport actions (by @xiasi0 in #3610)
  • Fix local audio seg fault and hide unavailable players (by @OzGav in #3613)
  • QQMusic: Improve QR auth URL handling behind HA Ingress (by @xiasi0 in #3631)
  • Fix Sendspin bridge race causing Chromecast player to disappear (by @maximmaxim345 in #3632)
  • Preserve builtin playlist cover images on M3U rewrites (by @marcelveldt in #3633)
  • Add controller startup retry to HEOS (by @Tommatheussen in #3635)
  • Fix AirPlay RAOP sync and disable AP2 grouping (by @marcelveldt in #3637)
  • Fix AirPlay late joiner sync on Linux (by @marcelveldt in #3643)
  • Small fixes for flow stream buffering and crossfade yielding (by @marcelveldt in #3645)
  • Fix group member players reporting idle instead of playing (by @marcelveldt in #3646)
  • Prevent filesystem unavailability from removing all associated library items (by @OzGav in #3647)
  • Fix Nugs.net get_track NotImplementedError (by @marcelveldt in #3649)
  • Use original stream for ibroadcast (by @robsonke in #3650)
  • Use PluginSource elapsed_time for player progress (by @trudenboy in #3652)
  • Fix muted player in group unmuting on group volume change (by @marcelveldt in #3655)
  • Fix 30-second auth delay on startup (HA provider race condition) (by @marcelveldt in #3656)
  • Remove protocol player power control forwarding (by @marcelveldt in #3659)
  • Fix AirPlay late joiner sync issues from insufficient buffer headroom (by @marcelveldt in #3660)
  • Fix sync group members lost after dynamic leader switch (by @marcelveldt in #3665)
  • Fix sync group not resetting active protocol on stop (by @marcelveldt in #3666)
  • Reduce radio stream startup delay on Squeezelite players (by @marcelveldt in #3667)
  • Change Mother Earth Radio icon URL and corrupt SVGs (by @OzGav in #3674)
  • Fix dynamic playlist refill discarding unplayed buffered tracks (by @dmoo500 in #3675)
  • AudioBuffer: Only fire cancel callbacks when stream has not ended naturally (by @MarvinSchenkel in #3694)
  • Fix MPD player removal reappearing after reload (by @marcelveldt in #3697)
  • Fix is_dynamic guard not firing for playlists not yet synced to library (by @dmoo500 in #3699)
  • Fix Mother Earth indicated audio quality (by @OzGav in #3701)
  • Put pipewire dependency in the correct spot (by @apophisnow in #3708)
  • Raise smart fades chunk timeout to 1s and log block duration (by @marcelveldt in #3728)
  • QQ Music: persist full credential and refresh state (by @xiasi0 in #3744)
  • AirPlay 2 provider now supports sync (by @bradkeifer in #3750)
  • Bump aiosendspin to 5.1.1 to fix audio stuttering (by @maximmaxim345 in #3756)
  • Fix Chromecast player disappearing after MA restart (by @maximmaxim345 in #3758)
  • Fix HLS EXTINF metadata parsing for standard format radio streams (by @OzGav in #3759)
  • Neteasecloudmusic: Stabilize login, recommendations, and dynamic radio playback (by @xiasi0 in #3761)
  • Handle syncing for cases where session establishment is both early and late for adhering to required ntpstart value (by @bradkeifer in #3776)
  • Nicovideo: Fix watch history API endpoint (v1 β†’ v2) (by @Shi-553 in #3791)
  • WiiM: Set the default max sample rate to 96kHz (by @teancom in #3798)
  • Bump wiim SDK to 0.1.4 to fix track transition tracking (by @teancom in #3801)
  • Decrease buffer warmup duration to 8s (by @MarvinSchenkel in #3814)
  • Fix queue restore: call from_cache to reconstruct radio_source and enqueued_media_items (by @dmoo500 in #3827)
  • Fix sync issues with Sendspin players (by @maximmaxim345 in #3840)
  • Fix Sendspin Cast bridge silently failing to set up (by @maximmaxim345 in #3841)
  • Bump aiosendspin to 5.2.0 to fix slow desyncing at some player sample rates (by @maximmaxim345 in #3845)
  • Allow AirPlay2 devices to be selected for synchronised playback (by @bradkeifer in #3847)
  • Set NTS stations + mixtape images to square aspect (by @mike-sheppard in #3850)
  • Fix event loop blocks when building the crossfade buffer (by @MarvinSchenkel in #3867)
  • Emby Music Provider: scrobble tracks only (by @hatharry in #3871)
  • Fix AA Background Processing to not Monopolize CPU (by @chrisuthe in #3873)
  • Fix silence after warmup buffer period (by @MarvinSchenkel in #3880)
  • Yandex music: captcha-aware 429 handling, per-kind throttling, file-info cache (v3.5.4) (by @trudenboy in #3882)
  • Preserve propagated artist / album genres across refreshes (by @OzGav in #3883)
  • Apple Music: fix rotating IDs for recommendation folders and personal stations (by @dmoo500 in #3895)
  • Fix Hue sync bridge not being able to join to players with a sendspin bridge (by @MarvinSchenkel in #3904)
  • Fix Apple Music library_add errors (by @dmoo500 in #3907)
  • Remove initial_delay to fix duplicate lastfm recommendation rows (by @OzGav in #3920)
  • Fix server crash on non-RGB cover art in palette extractor (by @OzGav in #3921)
  • Fix genre movements when genres are promoted or deleted (by @OzGav in #3923)
  • Fix issues with M4B audiobooks (by @OzGav in #3930)
  • Fix browse and recommendations not applying user filters (by @MarvinSchenkel in #3934)
  • Fix AirPlay receiver album artwork stuck after first track (by @MarvinSchenkel in #3945)
  • Restore PlayerQueue.is_dynamic after loading queue from cache (by @dmoo500 in #3948)
  • Fix stale Sonos cloud queue items and idle radio prebuffer (by @marcelveldt in #3957)
  • Fix invalid imageproxy size on PlayerMedia URLs (by @marcelveldt in #3966)
  • Prevent server crash on malformed player config entries (by @marcelveldt in #3967)
  • Musiccast stability fixes (by @jhbruhn in #3977)
  • Fix lyrics out-of-sync after smart crossfade (by @MarvinSchenkel in #3990)
  • Avoid KeyError when prefetching next-item palette for a player without a queue (by @marcelveldt in #3992)
  • Disable linked protocol players when their parent is disabled (by @marcelveldt in #3993)
  • Emby Music Provider: fix album art (by @hatharry in #3995)
  • Yandex Music: bump to v3.5.14 β€” rate-limit mitigation, resilience hardening, security hygiene (by @trudenboy in #3996)
  • Scale background audio-analysis timeout to track duration (by @chrisuthe in #3997)
  • Skip non-music providers in library update callback dispatch (by @dmoo500 in #3999)
  • Fix Spotify Connect playback control reliability and error reporting (by @marcelveldt in #4001)
  • Keep plugin playlist items visible for users with provider filters (by @dmoo500 in #4002)
  • Improve Apple Music library album mapping and recommendation fallback (by @dmoo500 in #4006)
  • fastMCP Server: sync 0.3.20β†’0.3.33 (security, fixes, tests) (by @trudenboy in #4007)
  • Spotify Connect: clearer transport errors and automatic stall recovery (by @marcelveldt in #4010)
  • Yandex Music: bump to v3.5.15 β€” captcha mitigation, faster recovery, datacenter safe-mode (by @trudenboy in #4011)
  • fastMCP Server : sync 0.3.33β†’0.3.35 (synced state + group_volume) (by @trudenboy in #4013)
  • Sonic Similarity: relax depends_on timing check + document smart_fades requirement (by @chrisuthe in #4016)
  • Make universal player merge deterministic when link counts tie (by @sdhomecode in #4017)
  • Fix KeyError for CONF_SMART_FADES_MODE on protocol-type players (by @MarvinSchenkel in #4020)
  • Fix queue cleared prematurely when radio follows tracks in flow stream (by @marcelveldt in #4021)
  • AcoustID Skip processing if track has an ISRC (by @OzGav in #4022)
  • Optimize size of provider icons (by @MarvinSchenkel in #4023)
  • Fix smart playlist track evaluation from Discover and background queue context (by @dmoo500 in #4025)
  • Fix Apple music library album tracks not showing up (by @dmoo500 in #4028)
  • Fix Apple Music playlist add for catalog-backed library playlists (by @dmoo500 in #4032)
  • Fix KeyError for CONF_SMART_FADES_MODE in streams controller get_value calls (by @MarvinSchenkel in #4033)
  • Fix smart playlist GUID lookup when called with library IDs (by @dmoo500 in #4037)
  • Add error handling for provider search (by @OzGav in #4044)
  • Hide HTTP profile and ICY metadata config entries for Samsung WAM (by @Oliver-Stevens in #4045)
  • Prevent duplicate songs in smart playlist dedup window (by @dmoo500 in #4052)
  • Fix loudness volume jumps: scope audio-analysis reads to the authoritative provider (by @MarvinSchenkel in #4057)
  • Fix dynamic smart playlist cache leaking across users with different provider filters (by @dmoo500 in #4061)
  • Fix AcoustID scan coverage stalling (by @OzGav in #4070)
  • Fix smart playlist dedup for streaming (non-library) tracks (by @MarvinSchenkel in #4082)
  • Fix genre icons disappearing after install path changes (by @MarvinSchenkel in #4083)
  • Fix YouTube Music search() signature (by @OzGav in #4085)
  • Fix WiiM volume_set by using HTTP command instead of UPnP (by @MarvinSchenkel in #4086)
  • Reconcile smart playlist library entries on load to recover after DB reset (by @dmoo500 in #4088)
  • Apple Music: stream library tracks and harden transient-error handling (by @teancom in #4089)
  • Fix YTMusic provider not retrying when PO Token server is slow to start (by @CodeCommander in #4093)
  • Fix radio station logos rendering as black or failing to load (by @OzGav in #4094)
  • Phishin Change fallback album image URL (by @OzGav in #4097)
  • AirPlay: fix mDNS cross-match when device name is substring of another device name (by @MarvinSchenkel in #4098)
  • Fix None handling in music controller track/resume lookups (by @OzGav in #4102)
  • Avoid event loop block in YouTube Music recommendations and skip SoundCloud default avatar (by @MarvinSchenkel in #4104)
  • Only advertise extended ICY headers on flow stream when ICY metadata is requested (by @mcaulifn in #4105)
  • Fix Apple Music library-only album artwork by caching blobstore URLs (by @dmoo500 in #4106)
  • Added None guard (by @anatosun in #4107)
  • Fix library-only tracks/albums showing as unavailable in shared playlists (by @dmoo500 in #4108)
  • Fix transfer_queue losing position when source queue is paused/idle (by @OzGav in #4115)
  • AirPlay: Ignore mDNS address updates that replace a routable IP with a Docker bridge address (by @MarvinSchenkel in #4117)
  • Re-add configurable output buffer for AirPlay 1 (RAOP) players (by @MarvinSchenkel in #4118)
  • Fix version parsing for titles with nested parentheses (by @OzGav in #4119)
  • Audio analysis: re-scan stale-version tracks in background scan (by @chrisuthe in #4123)
  • Don't enqueue next track onto a stopped queue (by @MarvinSchenkel in #4127)
  • Bump aiosendspin to 6.0.2 to fix spec conformance issues (by @maximmaxim345 in #4128)
  • Fix volume jump when crossfade intro and body normalize differently (by @MarvinSchenkel in #4129)
  • Send Sendspin album artwork for radio and Spotify Connect streams (by @maximmaxim345 in #4130)
  • Adjust Chromecast playback defaults (HTTP Profile 3 + flow mode) (by @MarvinSchenkel in #4133)
  • Fix misleading smart-crossfade FFmpeg failure log message (by @MarvinSchenkel in #4139)
  • Separate Phish.in artist tracks from top tracks (by @OzGav in #4140)
  • Fix disappearing Sendspin Visualizer clients (by @maximmaxim345 in #4143)
  • Align MusicBrainz throttler with mirror rate limit (by @MarvinSchenkel in #4146)
  • Fix Sendspin not playing when grouping ESPHome devices (by @maximmaxim345 in #4147)
  • end of queue results in track being reported as played twice (by @chrisuthe in #4150)
  • Fix sendspin unmute (by @OzGav in #4151)
  • Cap concurrent MusicBrainz ISRC lookups in Last.fm recommendations (by @OzGav in #4155)
  • Fix cache cleanup missing most records and skip needless startup vacuum (by @MarvinSchenkel in #4156)
  • Last.fm provider search bug fixes (by @OzGav in #4159)
  • Fix 30s delay when grouping some Sendspin devices (by @maximmaxim345 in #4160)
  • Prevent out-of-memory crash when compacting the library database (by @MarvinSchenkel in #4161)

🎨 Frontend Changes

  • Add export playlist feature (by @chrisuthe in #1661)
  • Isolate queue elapsed time from main reactive queue objects (by @apophisnow in #1672)
  • Use swiper virtual slides in Carousel (by @apophisnow in #1682)
  • Add Audio Analysis providers to the settings menu (by @MarvinSchenkel in #1673)
  • Fix hidden player still showing in UI (by @OzGav in #1686)
  • Replace deprecated unload event with pagehide (by @apophisnow in #1681)
  • Adjust artist track listing sort by album to be secondary by track number (by @OzGav in #1688)
  • Check for lossless codec (by @OzGav in #1692)
  • Revert Party Mode to Party (by @OzGav in #1689)
  • Improve FacetedFilter accessibility and clickability (#4883) (by @teancom in #1651)
  • Add ALAC icon to Audio Pipeline (by @OzGav in #1691)
  • Add right-click context menu to player cards on home screen (by @thrunkmo in #1617)
  • Add artist track list sort by album sort name (by @OzGav in #1694)
  • Fix confirm password field not appearing (by @OzGav in #1695)
  • Fix single provider stale filter bug (by @OzGav in #1698)
  • Fix typo (by @OzGav in #1696)
  • Move Sendspin delay configuration to player settings (by @maximmaxim345 in #1712)
  • Fix clipping of last player cards on the Players widget of the Discover view (by @BQPVegas in #1690)
  • Reload queue items after reset in fullscreen player (by @dmoo500 in #1710)
  • Hide incompatible controls for dynamic playlists (by @dmoo500 in #1713)
  • Extend player bar track menu to also show for radio stations (by @dmoo500 in #1674)
  • Revert "Improve performance with GPU compositing and lyrics guard" (by @MarvinSchenkel in #1724)
  • Remove size restriction for volume slider + refacto old ui for player controls (by @stvncode in #1726)
  • Add trending_stations translation key for TuneIn recommendations (by @dmoo500 in #1765)
  • Enable asynchronous download in lokalise workflow (by @OzGav in #1766)
  • Lokalise: Translations update (by @marcelveldt in #1769)
  • A11Y - Improve spoken search clear button label (by @bartbunting in #1777)
  • Lokalise translations update (by @github-actions[bot] in #1781)
  • Fix Audio Pipeline volume normalisation line (by @OzGav in #1752)
  • Fix auto-refresh toggle on server logs page (by @OzGav in #1784)
  • i18n: add 'inspired_by_recently_played' recommendations key (by @chrisuthe in #1791)
  • Support new opaque-id imageproxy endpoint (by @marcelveldt in #1792)
  • AudioSource follow-up: treat as in-queue infinite stream (by @marcelveldt in #1793)
  • Reduce items-per-row at large screen widths (by @MarvinSchenkel in #1806)
  • Fix Smart Playlist seed picker dropping all results when only plugin providers supply SIMILAR_TRACKS (by @chrisuthe in #1813)
  • Smart playlist: Let the user add multiple seeds (by @stvncode in #1818)
  • Fix smart playlist operator label after field switch (by @dmoo500 in #1820)
  • Remove padding for settings proivders on mobile (by @stvncode in #1825)
  • Skip getSmartPlaylistRules call for non-smart playlists (by @dmoo500 in #1822)
  • Match now-playing typography to new discover tiles (by @MarvinSchenkel in #1846)
  • Fix: Mobile issues for discover page and bg for genre and placeholder (by @stvncode in #1849)
  • Show Smart Playlist provider in playlists provider filter (by @dmoo500 in #1848)
  • Lower smart playlist dedup_hours max to 2160h (90 days) (by @MarvinSchenkel in #1861)
  • Fix genre display in smart playlist rule picker (by @dmoo500 in #1864)
  • Fix erroneous underline on Audio Analysis concurrency link (by @chrisuthe in #1872)
  • Only refetch recommendations on track end, not periodic progress (by @stvncode in #1870)
  • Lokalise: Translations update (by @marcelveldt in #1875)
  • Fix queue items disappearing in fullscreen player (by @MarvinSchenkel in #1874)
  • Single artist detail view with provider filter (by @marcelveldt in #1829)
  • Fix: Update overflow menu on shortcuts change and album tracks on navigation (by @dmoo500 in #1892)
  • Add refresh top picks + Fix two shorcut bugs (by @stvncode in #1901)
  • Store some settings per user (by @OzGav in #1335)
  • Lokalise: Translations update (by @marcelveldt in #1904)

Other Changes

  • [Backport to stable] 2.8.5 (by @github-actions[bot] in #3670)
  • Stream PCM to audio analysis providers during background scan (by @chrisuthe in #3821)
  • Add PR template and auto-label from Types of changes checkbox (by @MarvinSchenkel in #3959)

🧰 Maintenance and dependency bumps

166 changes

πŸ™‡ Thanks to our contributors

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

@BQPVegas, @CodeCommander, @FL550, @FlorianReiterer, @JulienDeveaux, @LosCV29, @MarvinSchenkel, @Oliver-Stevens, @OnFreund, @OzGav, @Shi-553, @SuperSandro2000, @Tommatheussen, @a2hill, @anatosun, @apophisnow, @bartbunting, @bradkeifer, @chrisuthe, @cryptk, @davidanthoff, @delatt, @dmoo500, @duanyutong, @fmunkes, @hatharry, @iVolt1, @ijc, @jdaberkow, @jhbruhn, @jozefKruszynski, @khers, @loopj, @lukaszwawrzyk, @marcelveldt, @maximmaxim345, @mcaulifn, @mike-sheppard, @neurocis, @peteS-UK, @philjackson, @rnewman, @robsonke, @robtpaton, @sdhomecode, @sprocket-9, @staticdev, @stvncode, @teancom, @thrunkmo, @trudenboy, @xiasi0