ArchiveTune v15.1.0
ArchiveTune 15.1.0 focuses on improving YouTube playback reliability, account synchronization, library management, podcasts, Android Auto, the immersive player, Home discovery, and overall application stability.
This release integrates YouTube Music community content, featured playlist cards, podcast library management, podcast episode search, Android Auto support, automatic updates, Canvas backdrop capture, improved local-media reconciliation, Last.fm authentication, and expanded Browse functionality.
It also includes improvements to Always-On Display handling, playback error reporting, account sessions, library refresh behavior, JavaScript runtime stability, and the immersive player experience.
✨ Highlights
⚡ YouTube Playback & JavaScript Runtime
The YouTube playback system continues to receive reliability and stability improvements.
- Integrated an updated YouTube JavaScript runtime bundle.
- Improved YouTube playback error mapping for
YoutubeiException. - Improved account session synchronization.
- Improved authentication-state handling during playback and library synchronization.
- Hardened JavaScript worker execution to prevent crashes from recursive array conversions and thread stack exhaustion.
- Simplified playback error handling and authentication checks.
- Improved handling of restricted authentication data during stream resolution.
Contributors: @rukamori, @mikooochi
🏠 Home & Community
The Home screen now includes more content discovery options.
- Integrated featured playlist cards into Home.
- Integrated the Community section into the Home feed.
- Integrated community playlist extraction and preview loading.
- Added filtering and loading support for community content.
- Improved organization of similar and personalized recommendations.
- Improved Home state handling and concurrency.
Contributor: @rukamori
🎙️ Podcast Library
YouTube Music podcasts can now be managed directly from the library.
- Integrated podcast library management for podcasts and episodes.
- Integrated podcast synchronization with the library.
- Integrated podcast and episode playback/removal actions.
- Integrated a dedicated podcast library screen.
- Integrated podcast filtering in the Library.
- Integrated podcast database entities and DAO support.
- Integrated podcast episode search.
- Integrated pagination and filtering for podcast episodes.
- Unified podcast library interactions with reusable library components.
Contributor: @rukamori
🚗 Android Auto
ArchiveTune now includes Android Auto-compatible support.
- Integrated Android Auto and AAOS compatibility.
- Added reusable Android Auto settings components.
- Improved Android Auto preference handling and action selection.
Contributor: @rukamori
🔄 Automatic Updates
- Integrated an automatic update checker.
- Improved update handling for supported release channels.
Contributor: @rukamori
🌙 Always-On Display
AOD behavior has been reworked to better respect device support.
- Integrated AOD support detection.
- Automatically disables unsupported AOD functionality.
- Integrated automatic AOD activation when the screen turns off.
- Improved asynchronous AOD data loading.
- Improved AOD compatibility handling.
Contributor: @rukamori
🎨 Immersive Player & Canvas
The immersive player now makes better use of Canvas artwork.
- Integrated Canvas frame capture for immersive player backdrops.
- Improved Canvas artwork handling and playback integration.
- Improved backdrop artwork fallback behavior.
- Integrated artist selection directly into the immersive player.
- Improved backdrop gradients, masking, blur, spacing, and transport-control layout.
- Associates Canvas state with the active media ID to prevent stale artwork.
Contributor: @rukamori
🎵 Spotify Canvas
Spotify Canvas integration has been refined.
- Improved Spotify Canvas artwork resizing.
- Migrated Spotify Canvas searches to Pathfinder v2.
- Improved Canvas provider health handling.
- Moved Spotify settings into Integration settings.
- Standardized Canvas preferences.
Contributor: @rukamori
🎧 Last.fm Authentication
Last.fm authentication now supports multiple session modes.
- Integrated dynamic mobile authentication mode selection.
- Integrated legacy authentication-token support.
- Improved Last.fm session handling.
Contributor: @rukamori
📚 Library Refresh & Synchronization
Library synchronization has been improved with a more consistent refresh flow.
- Integrated a dedicated library refresh use case.
- Integrated library synchronization failure propagation.
- Improved synchronization behavior when library operations fail.
- Integrated local and remote music reconciliation.
- Improved local-media metadata enrichment and repository lookup.
- Preserved synchronization state more reliably.
- Unified library refresh state handling across library ViewModels.
Contributors: @rukamori, @mikooochi
🎼 Local Media & Metadata
Local media handling now provides richer metadata.
- Integrated metadata enrichment for local media.
- Integrated album artist, track number, disc number, and year metadata.
- Improved missing metadata extraction to prevent missing artist names in search results.
- Improved reconciliation between local and remote music entries.
Contributor: @rukamori
🔎 Browse
A dedicated Browse data layer and state architecture has been integrated.
- Integrated Browse data models and repository support.
- Integrated pagination and state-driven Browse handling.
- Migrated Browse to an MVI-based architecture.
Contributor: @rukamori
📰 News Notifications
Unread news notifications are now handled more clearly.
- Integrated unread news notification tracking.
- Integrated notification-claiming state.
- Added a tooltip for unread news notifications in MainActivity.
Contributor: @rukamori
💡 Suggestions
Playlist suggestions now support navigation through multiple result pages.
- Integrated pagination controls for playlist suggestions.
- Integrated cached suggestion-page navigation.
Contributor: @rukamori
🎨 Player & Media Information
- Restructured player data handling.
- Integrated codec visibility state into the player and BottomSheet player.
- Added a player setting to control codec information visibility.
- Improved player data flow and state management.
Contributor: @rukamori
🖼️ Discord Artwork
Discord artist artwork handling now better represents music videos.
- Improved Artist artwork to show the channel avatar for music videos.
Contributor: @sang765
Related: #1295
🔍 Workflow Automation
Project maintenance workflows have been expanded.
- Integrated automated translation contributor-credit generation.
- Integrated automated duplicate issue detection.
- Improved workflow normalization and maintenance.
Contributor: @rukamori
⚡ Performance & Stability
Playback
- Improved JavaScript runtime stability.
- Improved playback error mapping and handling.
- Simplified playback authentication and error-state logic.
- Prevented JavaScript worker crashes caused by stack exhaustion and recursive conversions.
- Improved account session synchronization.
Library
- Unified refresh state handling.
- Improved synchronization failure propagation.
- Improved local and remote media reconciliation.
- Improved state and concurrency handling across library ViewModels.
Immersive Player
- Improved backdrop rendering and gradient transitions.
- Improved Canvas state isolation between media items.
- Improved blur and artwork rendering behavior.
UI
- Improved lifecycle-aware state collection.
- Improved local-media handling.
- Improved library scrolling behavior.
- Improved MiniPlayer transitions.
🛠️ Stability & Bug Fixes
Playback & JavaScript
- Fixed JavaScript runtime crashes caused by recursive array conversion.
- Fixed JavaScript worker crashes by explicitly controlling worker stack size.
- Improved YouTube authentication and account synchronization error handling.
- Improved playback error mapping for YouTube-specific exceptions.
- Removed unnecessary playback resolution timeout behavior.
- Fixed cancellation handling during account data synchronization.
MiniPlayer & UI
- Eliminated MiniPlayer fading and shape snapping during route transitions.
- Improved state restoration and route transition behavior.
Related: #1307
Search & Local Albums
- Prevented local search state collisions by including filter information in item keys.
- Fixed local album pagination.
- Prevented duplicate songs from appearing in local album radio results.
Lyrics
- Fixed missing imports affecting enhanced lyrics functionality.
- Improved lyrics component integration.
Memory
- Reduced the risk of MusicService memory leaks by using a weak binder reference.
- Improved lifecycle and concurrency handling across several ViewModels.
Library & Synchronization
- Properly propagates library synchronization failures.
- Deferred selection-menu dismissal until synchronization completes.
- Removed redundant remote-library state clearing.
- Improved refresh consistency across library screens.
Canvas & AOD
- Improved Canvas artwork proxy handling for YouTube media hosts.
- Improved Spotify Canvas provider reliability.
- Improved asynchronous AOD loading and support detection.
- Removed redundant AOD screen-off handling conflicts.
♻️ Internal Improvements
- Externalized and updated the YouTube JavaScript runtime bundle.
- Simplified playback error handling and authentication checks.
- Removed obsolete player-token invalidation logic.
- Removed unused remote-library clearing operations.
- Unified library refresh containers and state handling.
- Introduced shared library refresh ViewModel infrastructure.
- Reworked Spotify Canvas search and provider handling.
- Standardized Android Auto and Canvas preference components.
- Migrated Browse to state-driven MVI architecture.
- Simplified enhanced lyrics playback smoothing and scrolling.
- Improved immersive-player layout and system-bar handling.
- Centralized immersive-player backdrop rendering.
- Moved artist and media state handling into dedicated components.
- Improved lifecycle-aware state collection.
- Replaced dynamic GitHub attribution fetching with bundled static resources.
- Improved About-screen coroutine dispatching and error handling.
- Preserved line numbers and disabled obfuscation in ProGuard configuration.
🔀 Pull Request Highlights
- #1295 — Show channel avatar for music videos in Artist artwork by @sang765.
- #1307 — Eliminated MiniPlayer fade and shape snapping during route transitions by @adam-adrian.
- #1323 — Fixed F-Droid reproducible build hash mismatch through explicit NDK version configuration by @RajnishKMehta.
- #1387 — Updated the README Nightly section and added the Nightly release link by @sang765.
🧱 Build & Tooling
- Updated Android Gradle Plugin to 9.4.0.
- Updated Compose to 1.12.1.
- Fixed F-Droid reproducible-build hash mismatch with an explicit NDK version.
- Improved dependency resolution strategy for Compose.
Contributors: @rukamori, @RajnishKMehta
📚 Documentation
- Updated the README Nightly section to reference Development Builds.
- Added the Nightly release link.
- Updated project documentation and titles.
Contributors: @sang765, @rukamori
🌍 Localization
Translations were added or updated for:
Azerbaijani, Assamese, Chinese (Traditional), Estonian, French, German, Hindi, Indonesian, Maithili, Persian, Polish, Portuguese (Brazil), Romanian, Russian, Spanish, Thai, Turkish, Uzbek, and Vietnamese.
Thanks to all Weblate and Codeberg Translate contributors who continued improving ArchiveTune's language coverage.
❤️ Contributors
Thanks to everyone who contributed features, fixes, performance improvements, architecture changes, documentation, build improvements, and translations to ArchiveTune 15.1.0.
Development contributors include:
@rukamori, @mikooochi, @sang765, @adam-adrian, @RajnishKMehta
And thanks to all translation contributors helping expand ArchiveTune's language coverage.
📋 Full Changelog
Full Changelog: v15.0.0...v15.1.0