Changelog
✨ Major Highlights
🎧 Playback, Player & Audio
- Added V8 and V9 player styles with refined animations, morphing transitions, and improved playback interactions — @koiverse
- Introduced V7 canvas artwork playback with YouTube-backed animated visuals and fallback artwork handling — @koiverse
- Enhanced
MusicServicewith resumable playback notifications, queue persistence improvements, crossfade stability, and offline cache optimizations (#662) — @koiverse - Added customizable AOD experience with artwork glow shadow support and improved metadata synchronization — @koiverse
- Added sleep timer support for V7 mode — @koiverse
- Implemented playback vibration and haptic feedback support across player controls and lyrics interactions — @nekohepott32
- Added playback widget system using Jetpack Glance with new themed widget layouts — @harshal20m, @koiverse
📝 Lyrics, Karaoke & AI
- Added LRC bounce animations, dynamic scaling, instrumental break indicators, and smoother drift correction for Lyrics V2/Enhanced — @koiverse
- Improved TTML parsing with better CJK handling, XML entity resolution, and enhanced compatibility for nested namespaced lyrics — @koiverse
- Added synchronized lyrics indicators and lyrics provider ordering customization (#627) — @koiverse
- Added OpenRouter AI provider integration with searchable model picker and API validation handling — @koiverse
- Enhanced romanization with context-aware transliteration and word-level TTML support — @koiverse, @mikooochi
🎨 Interface, Navigation & Material 3
- Replaced legacy pull-to-refresh implementations with Material 3 Expressive components — @koiverse
- Refined settings, preferences, side sheets, dialogs, and navigation layouts with improved shapes, descriptions, and adaptive behavior — @koiverse
- Added animated floating navigation toolbar behaviors with sliding pill animations and expressive transitions — @koiverse
- Reworked Music Recap, Mood & Genres, News, Library Mix, and Player layouts with adaptive Material 3 components — @koiverse, @mikooochi
- Added immersive artist headers with monthly listeners and subscriber count support — @mikooochi
🌐 Connectivity, Accounts & Sync
- Added optional force-sync behavior when switching accounts with improved authoritative sync handling — @mikooochi
- Added automatic Google login exit flow and improved web auth session cleanup handling — @sang765, @koiverse
- Introduced rotating proxy/IP rotation system with cooldown pools and automatic configuration fetching — @koiverse
- Added Spotify logout support and cancellable Spotify track importing — @koiverse
- Added low data usage mode and improved YouTube fallback handling (#691) — @koiverse
📚 Library, Discovery & Content
- Added AI-powered “Build Your Mix” functionality with validated library mix generation — @koiverse
- Introduced revamped New Release experience with structured content models and tabbed navigation — @mikooochi
- Added playlist descriptions, local playlist syncing to YouTube, and local song sorting preferences — @koiverse, @mikooochi
- Improved artist page handling, release type extraction, and metadata rendering (#626) — @koiverse, @mikooochi
- Added Android Auto compatibility improvements and missing feature integrations (#688) — @mikooochi, @koiverse
🐞 Stability & Fixes
🔧 Playback & Service Reliability
- Fixed queue selection inconsistencies and removed unused queue trigger logic (#603) — @koiverse
- Reworked crossfade playback logic and stabilized audio handoff behavior — @koiverse
- Fixed playback rendering issues related to canvas artwork, backdrop ordering, and offload handling — @koiverse
- Improved queue snapshot persistence during stop/memory trim events — @koiverse
🎵 Lyrics & Media Fixes
- Fixed BetterLyrics album parameter handling — @koiverse
- Restored compatibility for nested TTML lyrics and improved instrumental break rendering — @koiverse
- Improved AI translation conditions and lyric timing animations — @koiverse
- Fixed album duration localization issues and multiple lyrics rendering regressions — @koiverse
🎨 UI & UX Fixes
- Fixed various settings layout inconsistencies, toolbar dismiss behavior, and widget resizing problems — @koiverse, @mikooochi
- Improved lifecycle-aware playlist state collection and refresh handling — @koiverse
- Fixed updater APK architecture/device flavor handling — @sang765
- Fixed Quick Picks occasionally not appearing — @koiverse
📦 Dependency & Platform Updates
- Updated Compose to
1.12.0-alpha03(#635) — @renovate[bot] - Updated Material 3 to
1.5.0-alpha20(#636) — @renovate[bot] - Updated Material 3 Adaptive to
1.3.0-beta02(#637) — @renovate[bot] - Updated AndroidX Browser to
1.10.0(#670) — @renovate[bot]
⚡ Performance Improvements
- Reduced redundant lyrics fetching checking cached metadata before network requests — @koiverse
- Improved lyrics provider concurrency using shared cache selection logic — @koiverse
- Optimized queue hydration, persistent state saving, and widget preference updates — @koiverse
- Enhanced crossfade transition performance and playback state synchronization — @koiverse
🛠 Internal Cleanup & Refactors
🧠 Core & Playback
- Refactored crossfade, queue hydration, and playback persistence systems for better reliability — @koiverse
- Simplified audio normalization and playback service logic to prevent random muting — @koiverse
- Improved sync metadata handling and account switching internals — @koiverse
🎨 Compose & UI Architecture
- Migrated multiple screens to adaptive Material 3 layouts and expressive components — @mikooochi, @koiverse
- Refactored Lyrics Enhanced scrolling, focus handling, and manual scroll synchronization — @koiverse
- Simplified toolbar animations and navigation state handling across floating navigation components — @koiverse
📦 Project Maintenance
- Added ProGuard rules for Glance/media processing and cleaned unused dependencies/code — @koiverse
- Refined AndroidManifest override handling and scheduler service registration — @mikooochi, @koiverse
- Updated docs, translations, fastlane metadata, and internal tooling — @koiverse, @mikooochi
🌍 Translation & Community
- Updated Indonesian translations — @adam-adrian
- Added German translations — @flue17
- Added Portuguese (Brazil) translations — @ValteMCPE
- Added Spanish translations — @gallegonovato
- Added Japanese and Korean translations — @Anonymous
- Various translation updates through Weblate and contributor improvements
🛠 Other Changes
- Added multiple account mode — @koiverse
- Added “Remove from cache” action for cached songs — @sang765
- Added APP_UPDATE_PAT workflow support and follow-up cleanup/reverts — @sang765, @koiverse
- Reworked Discord settings/preferences integration and platform support (Xbox, Samsung, PS4, PS5) — @koiverse
- Added route-based artist navigation improvements (#626) — @koiverse
- Added issue/patch follow-ups, docs updates, cleanup commits, and merge syncs from contributors — @koiverse, @mikooochi, @nekohepott32
Other Changes II
- feat(Webview): automatic exit from LoginScreen after successful login @sang765 in #624
- Add vibration to player controls @nekohepott32 in #631
- feat: add APP_UPDATE_PAT for GitHub API rate limitpass @sang765 in #634
- fix(deps): update compose to v1.12.0-alpha03 @renovate[bot] in #635
- fix(deps): update dependency androidx.compose.material3:material3 to v1.5.0-alpha20 @renovate[bot] in #636
- fix(deps): update dependency androidx.compose.material3.adaptive:adaptive to v1.3.0-beta02 @renovate[bot] in #637
- Add haptic feedback support for lyrics screen, shuffle/repeat buttons and add settings toggle @nekohepott32 in #643
- fix(HapticFeedback): more reliable pause haptic @nekohepott32 in #645
- feat: add "Remove from cache" to selected songs in CachePlaylistScreen @sang765 in #646
- Revert "feat: add APP_UPDATE_PAT for GitHub API rate limitpass" @koiverse in #653
- feat : New dynamic Colors Widget @harshal20m in #655
- fix(Updater): support device (mobile/tv) and architecture flavor dimensions in APK download URL @sang765 in #666
- chore(deps): update dependency com.google.devtools.ksp to v2.3.9 @renovate[bot] in #678
- fix(deps): update dependency androidx.browser:browser to v1.10.0 @renovate[bot] in #670
- Update Indonesian translation @adam-adrian in #693
New Contributors
- @nekohepott32 made their first contribution in #631
- @harshal20m made their first contribution in #655
- @adam-adrian made their first contribution in #693