Changelog V14.1.0
This release focuses on playback compatibility, Canvas stability, Android 15 artwork handling, YouTube stream-client improvements, lyrics provider support, and a major expansion of the player and always-on-display experience.
It also improves network-gate handling, playback authentication, queue behavior, Discord integration, Cast support, localization, playlist imports, and several Android UI edge cases. The release includes substantial community contributions across player design, AOD, lyrics, localization, and playlist management.
Major Highlights
Canvas Artwork and Android Compatibility
Canvas playback and notification artwork handling have been hardened for newer Android versions and a wider range of media codecs.
- Added Canvas media-codec validation before attempting playback.
- Prevented retry loops and crashes when Canvas videos are unsupported.
- Added conditional artwork URI generation for Ice Cream builds to avoid Android 15 metadata-artwork crashes.
- Simplified notification artwork URI conversion.
- Improved Canvas compatibility checks and playback stability.
Contributors: @rukamori, @mikooochi
Related issue: #1047
Material Extended V9 Player
ArchiveTune now includes a major Material Extended V9 player experience with dynamic artwork-driven theming and improved player interactions.
- Added the Material Extended V9 player theme.
- Added dynamic majority-color extraction and animated color transitions.
- Improved player control hierarchy and layout.
- Added thread-safety improvements around player state.
- Improved download and backup integration.
- Refined navigation-bar behavior and player surfaces.
- Improved responsiveness when switching between tracks.
Contributor: @IIXII-L192
Pull request: #1069
YouTube Playback and Stream Clients
YouTube playback compatibility has been updated with a new Android VR client and improved authentication behavior.
- Added the "ANDROID_VR_1_65_10" stream client.
- Updated stream-client ordering logic.
- Replaced the previous "ANDROID_VR_NO_AUTH" client handling.
- Improved primary Web playback authentication without requiring a PoToken in applicable cases.
- Extracted Web playback PoToken minting and forbidden-request detection.
- Improved playback authentication state handling.
- Refined token binding and persisted visitor-data handling.
Contributors: @rukamori
Lyrics and BetterLyrics
Lyrics provider coverage has been expanded with support for BetterLyrics Portato.
- Added BetterLyrics Portato support for word-synchronised lyrics.
- Added provider handling for songs that do not expose syllable-synchronised lyrics.
- Improved lyrics provider selection and ordering.
- Kept lyrics provider actions visible when changing provider settings.
- Improved lyrics search and provider reliability.
Contributor: @rukamori
Related issue: #1060
Related issue: #1128
Always-On Display and Lock Controls
The AOD experience has been substantially expanded with additional playback and device-lock controls.
- Added DreamService-based Always-On Display support.
- Added smart-lock behavior.
- Added shake-to-unlock support.
- Added automatic locking.
- Added additional AOD interaction and marquee behavior.
- Improved sleep-timer interaction with playback.
- Improved AOD touch handling.
Contributor: @Balajitechlabs
Pull request: #1120
Playlist Import Improvements
M3U and CSV imports now provide better source matching and a safer review process.
- Added source-aware playlist matching.
- Added a review step before imported songs are saved.
- Improved matching of imported tracks against available media.
- Reduced accidental or incorrect playlist entries during import.
Contributor: @Sandy4j
Pull request: #1041
Localization and Android Locale Support
Localization handling has been improved, including proper Egyptian Arabic resource resolution.
- Corrected the Egyptian Arabic Android resource directory.
- Improved Android locale resolution for "ar-EG".
- Added and updated community translations across multiple languages.
Contributor: @midomizo933
Pull request: #1078
Related issue: #1074
Stability and Bug Fixes
Playback and Network Gate
- Handle network-gate IO failures as temporarily unavailable instead of permanently blocked.
- Display blocked-gate messages through the appropriate UI channel.
- Improved retryable network-gate handling.
- Temporarily bypassed the access gate where required.
- Improved playback recovery when gate availability changes.
Contributors: @rukamori
Player and Queue
- Fixed player bottom-sheet visibility during expansion.
- Prevented unsupported Canvas playback from repeatedly crashing.
- Bootstrapped infinite queues for short queues.
- Improved artist resolution from subtitle endpoints.
- Handled missing subtitle runs safely.
- Improved Home quick-access behavior for personalised content.
- Restored Cast-device discovery and selection.
- Prevented playlist badges from wrapping incorrectly.
- Resolved Flow-combination limitations in HomeViewModel.
Contributor: @rukamori
Related issues: #1038, #1088, #1102, #1137
Discord and External Integrations
- Prevented Discord traffic when Rich Presence is disabled.
- Improved external-integration state handling.
- Reduced unnecessary background communication.
Contributor: @rukamori
Related issue: #1121
Lyrics Settings
- Kept provider-dialog actions visible during provider configuration.
- Improved provider-selection behavior.
- Fixed lyrics-provider ordering interactions.
Contributor: @rukamori
Related issue: #1128
Android and Artwork Compatibility
- Fixed Android 15 notification metadata-artwork crashes.
- Improved notification artwork URI generation.
- Prevented Canvas retries for incompatible media codecs.
- Improved compatibility between cached Canvas content and the active playback codec.
Contributors: @rukamori, @mikooochi
Related issue: #1047
Internal Refactors
YouTube Authentication
- Reworked playback-auth state handling around the current YouTube playback session.
- Extracted Web playback PoToken generation into dedicated logic.
- Added explicit forbidden-player-request detection.
- Replaced visitor-data checks with session-based authentication state where appropriate.
- Extracted the YouTube login WebView client.
- Simplified login initiation through "startLogin".
- Reworked verification authentication state and account-information ordering.
Contributor: @rukamori
Player State and UI
- Replaced player bottom-sheet collapsed/dismissed checks with "isExpandedOrExpanding".
- Updated player visibility conditions to account for transitional expansion states.
- Simplified Android VR stream-client handling.
- Improved player and navigation state coordination.
Contributor: @rukamori
Support and Dependency Cleanup
- Removed the existing Start.io integration from the browser-support repository.
- Continued cleanup related to the Start.io GPL-compliance work.
- Refined slider-color initialization.
- Updated project domain information.
- Improved release/version workflow handling.
Contributors: @mikooochi, @rukamori
Pull Request Highlights
- #1041 — Improved M3U/CSV playlist imports with source-aware matching and a review flow by @Sandy4j.
- #1053 — Recognition, download, AOD, sleep-timer, lyrics, GMS, and Start.io GPL-compliance improvements by @IIXII-L192.
- #1069 — Material Extended V9 player, dynamic majority-color transitions, thread-safety, download, and backup updates by @IIXII-L192.
- #1078 — Fixed Egyptian Arabic Android locale resource handling by @midomizo933.
- #1120 — Added DreamService AOD, smart lock, shake-to-unlock, auto-lock, and related AOD features by @Balajitechlabs.
- #1127 — Reverted the experimental Apple Music player, frosted mini-player, and floating-navigation-bar implementation by @rukamori.
Resolved and Referenced Issues
- #1038 — Music player bottom-sheet transition and visibility behavior.
- #1047 — Canvas playback crash caused by incompatible cached Canvas content.
- #1060 — BetterLyrics Portato provider support.
- #1074 — Egyptian Arabic locale directory structure.
- #1088 — Playlist badge wrapping.
- #1102 — Google Cast device discovery.
- #1121 — Discord Rich Presence remaining active when playback is stopped.
- #1128 — Lyrics provider ordering controls.
- #1137 — Personalised Home quick picks.
Localization
Translations were added or updated for:
- Arabic
- Arabic (Egyptian)
- Arabic (Levantine)
- Chinese (Simplified)
- Chinese (Traditional)
- Czech
- French
- German
- Hungarian
- Indonesian
- Italian
- Kurdish (Kurmanji)
- Portuguese (Brazil)
- Russian
- Sinhala
- Spanish
- Tagalog
- Thai
- Turkish
- Urdu
- Vietnamese
Translation contributors included:
@Mickael81, @gallegonovato, @ffelixm, @nike49424, @marstraveler01, @midomizo933, @halilibrahirn, @fiiiish_owo, @Hanifz99, @Fathirazzamy, @NGLTX, @hanifz, @beebtw, @hijasongood, @withme, @hewkawar, @DarkForceFREEFIRE, @siggi1984, @AxMilin, @Voravit09, @cursedovich, @hellsfaun, @GearCzech, @ValteMCPE, @MXMH2o1o, and @Fathirazzamy.
Contributors
Thanks to the contributors who worked on this release:
@rukamori, @mikooochi, @IIXII-L192, @Simone20031, @Balajitechlabs, @Sandy4j, @midomizo933, @Mickael81, @gallegonovato, @ffelixm, @nike49424, @marstraveler01, @halilibrahirn, @fiiiish_owo, @Hanifz99, @Fathirazzamy, @NGLTX, @hanifz, @beebtw, @hijasongood, @withme, @hewkawar, @DarkForceFREEFIRE, @siggi1984, @AxMilin, @Voravit09, @cursedovich, @hellsfaun, @GearCzech, @ValteMCPE, @MXMH2o1o
Referenced Issues and Pull Requests
#1038, #1041, #1047, #1053, #1060, #1069, #1074, #1078, #1088, #1102, #1120, #1121, #1127, #1128, #1137
New Contributors
- @IIXII-L192 made their first contribution in #1053
- @midomizo933 made their first contribution in #1078
- @vossgraves made their first contribution in #1116
- @Sandy4j made their first contribution in #1041
- @Balajitechlabs made their first contribution in #1120