github rukamori/ArchiveTune v15.1.0
15.1.0

3 hours ago

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

Don't miss a new ArchiveTune release

NewReleases is sending notifications on new releases.