Changelog v13.3.0
✨ New Features
🎧 Player & Audio Engine
- Added “Remove from queue” action directly inside the player menu with full Queue integration
- Introduced undo support for both single and multi-song queue removals
- Improved queue restoration handling with cancellation-aware recovery logic
- Added persistent queue restoration logic from v12.4.1 behavior
- Implemented
buildPlayNextShuffleOrderfor smarter shuffle playback behavior (#556 #552) - Added scheme-aware data source routing for more reliable playback handling (#552)
- Enhanced caching logic to recover downloads with unknown content lengths
- Improved playback recovery and cleanup handling in
MusicService - Added malformed stream error handling with improved playback error messaging
- Persist playback queue during play/pause events to restore the correct position after force-stop
- Improved media notification creation for enhanced playback UX and Android dynamic island support
- Enhanced player backdrop with dynamic artwork scaling, resizing, and color extraction
- Added high-resolution artwork loading across player, notifications, thumbnails, and metadata (#562)
📝 Lyrics & Media
- Added RTL (right-to-left) text layout support for Lyrics V2 (#485)
- Added lyrics translation enablement support
- Added Unison as a new lyrics source
- Improved karaoke animation timing and word synchronization (#462 #573)
- Added blur toggle option for lyrics background effects
- Automatically set default lyrics language based on device locale
- Improved Lyrics V2 rendering and simplified timing synthesis logic
🎨 UI, Theming & Personalization
- Integrated MotionScheme and refactored dynamic color handling
- Migrated theme engine further toward MaterialKolor dynamic schemes
- Improved system bar appearance handling based on player background style (#513 #550)
- Added Quick Picks display mode settings with new UI integration
- Rearranged Quick Picks preferences for better discoverability
- Added cover image picker support for local playlists
- Introduced new update banner and permission header in Settings
- Refactored Settings UI with new
SettingsSectionLabelandSettingsFlatItemcomponents - Improved preference dialogs with pending value handling and enhanced button behavior
- Refined preference layouts with rounded corners and updated structure
- Added new contributors section in About screen
- Added animated New Release screen with improved error handling
- Enhanced AOD player layout structure and modularized controls
- Added adaptive icon metadata and shortcut metadata support for Android 13+
- Added new Crimson Neon and AmourLuxe themes
- Improved icon selection UI with preview cards, animations, and selection indicators
- Added adaptive icon improvements and monochrome icon support for Android 13+
📚 Library, Search & Statistics
- Added backup and restore dialog with category-based selection support
- Added backup categories for library, account, and settings
- Added playlist song sorting preferences with persistent storage support (#581)
- Added listening statistics queries grouped by hour and weekday
- Introduced
ListeningBySlotandListeningSummarydata models - Improved statistics aggregation and combination logic in
StatsViewModel - Enhanced online search with indexed results, all-mode filters, and improved loading behavior
- Added detailed media metrics and diagnostics in media info screen
- Improved local folder exclusion flow using SAF instead of manual paths
- Added conditional share FAB visibility in Year in Music screen
🌐 Connectivity & Network
- Added DNS-over-HTTPS support and proxy connection testing (#492)
- Improved network banner behavior to avoid unnecessary no-internet warnings
- Added better playback login/session handling with configurable cookie clearing behavior
🛠 Developer & Debugging Tools
- Added real-time Logcat viewer with filtering support
- Added Extended FAB for easier log sharing in DebugActivity
- Added GitHub workflow to notify issue authors about new commits
- Improved issue extraction logic for workflow automation
🐛 Bug Fixes
🎧 Playback & Streaming
- Fixed crashes when downloading very large playlists
- Fixed queue selection state inconsistencies after item removal
- Fixed race conditions in
onGetSonglambdas causing random crashes - Temporarily disabled crossfade preferences regardless of audio offload state
- Fixed malformed thumbnail resizing and artist artwork quality issues (#562)
- Fixed notification artwork resolution quality
- Fixed player-related screen overlap and background rendering issues
🎨 UI & Layout
- Fixed scrolling issues across multiple menu screens (#581)
- Fixed incorrect pluralization in statistics highlights
- Fixed icon animation generic typing and import ordering
- Fixed image loading logic simplification regressions in icon list items
- Fixed null safety issues in Search Summary navigation handling
- Fixed launcher background rendering for Android 16 adaptive icons
- Fixed incorrect metadata spelling and copyright formatting
- Improved thumbnail normalization and URL consistency across YouTube integrations
⚙️ System & Build
- Updated AGP to v9.2.1
- Updated Media3 to v1.10.1
- Updated Ktor to v3.5.0
- Updated Compose and Material 3 dependencies
- Added ProGuard compatibility rule for
ClassFileWriter - Improved build suffix generation for dev builds
- Improved Gradle source set handling for generated app icons
- Fixed metadata parsing issues in app icon sync workflow
⚡ Performance Improvements
- Optimized player color extraction and vividness adjustment (#546)
- Improved queue persistence and restoration performance
- Reduced unnecessary grouping overhead in library song sorting (#545)
- Improved thumbnail rendering and URL normalization performance
- Simplified regex and image resizing logic for YouTube utilities
- Optimized song wrapping using
rememberfor reduced recompositions (#574) - Improved queue persistence reliability during playback state changes
- Enhanced dynamic artwork rendering and extraction efficiency
🛠 Technical Refactors
🧠 Core & Playback
- Refactored notification handling and removed deprecated playback notification logic
- Simplified track selector implementation to prevent crashes (#521)
- Improved cache handling with
setCacheKeyIfRemoteintegration (#552) - Refactored queue and player persistence logic into
MusicService - Streamlined playback auth/session management APIs
- Simplified recognition job handling with cancellation support
🎨 UI & Compose
- Removed unused scroll behaviors across settings screens
- Modularized AOD player slider and controls into dedicated composables
- Refactored dialog implementations to use adaptive layouts and
BoxWithConstraints - Updated StarDialog to use
ModalBottomSheet - Simplified settings screen structure and interaction flow
- Cleaned up unused imports, hints, and legacy code paths
📦 Project & Infrastructure
- Refined issue templates and visual evidence submission flow
- Simplified GitHub workflow triggers and automation handling
- Updated Android source sets and generated asset handling
- Improved app icon sync tooling with metadata and WebP support
- Removed deprecated Lyrics V1 preparation code
- Removed app icon changer experiment from main branch
- Cleaned up unused activity aliases and intent filters
🌍 Translations & Community
-
Updated translations through Weblate:
- French
- Indonesian
- Vietnamese
- Spanish
- Italian
- Russian
- Portuguese (Brazil)
- Hindi
- Ukrainian
- Turkish
- German
- Arabic
- Arabic (Egyptian)
- Chinese (Simplified)
- Sanskrit
-
Added new contributors and community improvements
-
Updated documentation and metadata
-
General cleanup, patches, and internal maintenance updates
🛠 Other Changes
- fix(deps): update agp to v9.2.0 by @renovate[bot] in #487
- feat(queue): Add 'Remove from queue' action and undo functionality by @sang765 in #488
- feat(internet): Add DNS over HTTPS support and proxy connection testing by @sang765 in #492
- fix(deps): update ktor monorepo to v3.4.3 by @renovate[bot] in #491
- fix(deps): update dependency com.squareup.okhttp3:okhttp-dnsoverhttps to v5 by @renovate[bot] in #493
- fix(deps): update dependency androidx.navigation:navigation-compose to v2.9.8 by @renovate[bot] in #495
- fix(deps): update dependency androidx.compose.material3:material3 to v1.5.0-alpha18 by @renovate[bot] in #494
- fix(deps): update compose to v1.12.0-alpha01 by @renovate[bot] in #496
- chore(deps): update dependency com.google.devtools.ksp to v2.3.7 by @renovate[bot] in #497
- fix(Queue): exit selection "toolbar" mode when no items are selected by @sang765 in #500
- chore(deps): update kotlin monorepo to v2.3.21 by @renovate[bot] in #501
- feat(playback): add SafeTrackSelector and improve preference components by @sang765 in #502
- feat(Lyric): Enhance Paxsenix integration with new providers and API stats by @sang765 in #516
- chore(deps): update gradle to v9.5.0 by @renovate[bot] in #528
- remove lyricsV1, make LyricsV2 default, Cleanup settings. (you can decline it if you dont want to) by @Windowstechtips in #536
- fix(deps): update agp to v9.2.1 by @renovate[bot] in #559
- fix(deps): update compose to v1.12.0-alpha02 by @renovate[bot] in #569
- fix(deps): update dependency androidx.compose.material3.adaptive:adaptive to v1.3.0-beta01 by @renovate[bot] in #571
- fix(deps): update dependency androidx.compose.material3:material3 to v1.5.0-alpha19 by @renovate[bot] in #570
- fix(deps): update dependency org.jetbrains.kotlinx:kotlinx-coroutines-guava to v1.11.0 by @renovate[bot] in #576
- chore(deps): update actions/github-script action to v9 by @renovate[bot] in #579
- chore(deps): update gradle to v9.5.1 by @renovate[bot] in #592
- fix(deps): update media3 to v1.10.1 by @renovate[bot] in #593
- chore(deps): update dependency com.google.devtools.ksp to v2.3.8 by @renovate[bot] in #595
- fix(deps): update ktor monorepo to v3.5.0 by @renovate[bot] in #597
📝 Notes
- Major focus on playback reliability, queue persistence, dynamic theming, and Lyrics V2 improvements
- Continued migration toward Material 3 Expressive and modern Android APIs
- Several experimental systems were refined, reverted, or cleaned up for stability
- Significant improvements to artwork quality, caching behavior, and queue recovery systems