Skip to content

Releases: rukamori/ArchiveTune

13.7.0

Choose a tag to compare

@rukamori rukamori released this 02 Jul 07:12

Changelog

Focuses on lyrics improvements, extractor playback routing, YouLyPlus support, app icon customization, artist blocking, library download visibility, Discord Rich Presence reliability, search behavior, cache/storage stability, and broader Material 3 UI polish. This release also includes localization updates, dependency updates, icon-generation pipeline improvements, and internal refactors.

Major Highlights

Lyrics, Providers & Playback Routing

Lyrics handling has been expanded with stronger provider support, better TTML behavior, and improved playback URL routing through the extractor pipeline.

  • Added romanization and translation support to both enhanced and legacy lyrics modes.
  • Added the YouLyPlus lyrics provider.
  • Added cookie forwarding to streamingExtractionManager.extractAudioUrl.
  • Routed extractor playback URLs through ResolvedUrlRoutingDataSource.
  • Recognized URI paths for extractor playback.
  • Preserved line-synced Better Lyrics TTML output.
  • Classified TTML sync badges more accurately.
  • Filtered empty Paxsenix lyrics payloads.
  • Gated automatic provider translations.
  • Wrapped long lyrics in both lyrics modes.

Contributors: @rukamori
Related: #961

Search, Library & Artist Controls

Search, library, and artist-management flows have been refined with new interaction behavior and stronger content filtering.

  • Opened online search from the floating navigation toolbar on double tap.
  • Opened the search overlay when tapping the Search tab while already on the Search screen.
  • Added global artist blocking and blocked-content handling.
  • Added downloaded album visibility in Library Albums.
  • Added a downloaded album filter.
  • Corrected Local Playlist search mode layout.
  • Prevented Home app bar overlap.
  • Reserved Home chip space during loading.
  • Tightened Home section spacing.

Contributors: @rukamori, @sang765, @mikooochi
Related: #940, #944

App Icons & Launcher Customization

Launcher icon customization has been expanded with metadata-driven selection, GitHub author actions, and a more reliable adaptive-icon generation pipeline.

  • Added a metadata-driven launcher icon selector.
  • Added GitHub author actions to the icon screen.
  • Matched the icon selector design to the app’s UI language.
  • Generated full adaptive launcher icons.
  • Generated adaptive icons from SVG metadata.
  • Preserved SVG launcher artwork.
  • Prevented duplicate adaptive icon layers.
  • Created the adaptive drawable directory when needed.
  • Enforced 512 vector dimensions for icon submissions.
  • Sanitized SVG doctype declarations.
  • Handled missing vector fill colors.
  • Added opaque vector fill support for submitted icon artwork.
  • Aligned the selected icon stroke with row shape.
  • Prevented main-thread vector inflation.
  • Synchronized the selected launcher task icon.

Contributors: @rukamori, @mikooochi

Material UI, Motion & Recognition

The app receives broader Material motion adoption, tonal backdrop changes, and recognition-screen refinements.

  • Applied the global Material motion scheme.
  • Replaced the previous mesh background with a tonal backdrop.
  • Rebuilt the Music Recognition flow and UI.
  • Added restrained Material Shape recognition anchoring.
  • Fixed recognition callback, button shape, and composable shape creation issues.
  • Standardized settings header scroll behavior.
  • Refactored the main header scroll style.
  • Corrected navigation callback typing.
  • Reset TopAppBarState height and content offsets.
  • Filled the AOD shape picker grid width.
  • Used compatible connected button shapes in Debug Settings.

Contributors: @rukamori, @adam-adrian, @mikooochi
Related: #941, #963

Discord Rich Presence & Social Playback

Discord and Music Together reliability have been improved across status rendering, gateway sync, activity platform storage, and session state.

  • Supported multiple artists in Discord RPC status.
  • Centralized Discord RPC sync flow and hardened gateway transport.
  • Fixed Discord Rich Presence missing token handling.
  • Prevented thumbnails from replacing artist artwork.
  • Prevented playing presence from rendering as paused.
  • Serialized the selected activity platform.
  • Marked Music Together sessions active only when connected.

Contributors: @rukamori, @adam-adrian
Related: #919, #932

Localization & Community

This release includes expanded and corrected translations across multiple languages.

  • Completed Vietnamese translation coverage for 61 missing strings.
  • Added missing Vietnamese translations.
  • Updated Indonesian translations.
  • Added Javanese translation support.
  • Fixed ambiguous palette duplicate strings.
  • Added and updated translations through Weblate for French, Indonesian, Korean, Vietnamese, Portuguese (Brazil), Spanish, Turkish, Urdu, Dutch, German, Hebrew, Thai, Chinese Traditional, Japanese, Russian, Ukrainian, Arabic, Italian, and other community-maintained languages.

Contributors: @sang765, @Davidzinco, @Mickael81, @hsp1020, @wynriu, @ValteMCPE, @gallegonovato, @radenya86, @beebtw, @Myrdincx, @flue17, @Yar270, @FullGa123, hijasongood, @nekohepott32, @AlmaziikDev, @Nijeryaprensi, Ur_lightmoon, @andres2, @MadameVulva
Related: #920, #925, #933

Stability & Bug Fixes

Playback, Extractor & YouTube Reliability

Playback and extractor stability have been improved across YouTube routing, stream recovery, fallback behavior, equalizer session handling, and bot-detection paths.

  • Guarded Cast disconnect media item transfer.
  • Required Datasync ID for account login to prevent global playback-forbidden issues.
  • Ignored "Origin doesn't match Host" client errors.
  • Filtered JavaScript player extractor failures in getStreamUrl.
  • Skipped external audio fallback on YouTube bot detection.
  • Used music.youtube.com in toYouTubeWatchUrl.
  • Forwarded the GVS token to the extractor.
  • Recovered equalizer audio sessions.
  • Swapped YouTube Music thumbnails with i.ytimg.com URLs for music videos.
  • Prevented playing presence from rendering as paused.

Contributors: @rukamori, @sang765
Related: #895, #929

Lyrics Screen & Input Handling

Lyrics controls now avoid touch-through behavior and better isolate control surfaces from the underlying player content.

  • Blocked touch-through behind lyrics controls.
  • Isolated the lyrics touch shield from content.
  • Wrapped long lyrics in enhanced and legacy modes.
  • Preserved line-synced Better Lyrics TTML output.
  • Removed problematic player pointer-input handling.

Contributors: @rukamori
Related: #907, #961

Queue, Cast, Navigation & UI State

Queue and navigation behavior have been stabilized with safer bundle keys, fewer forced-scroll cases, and cleaner layout state.

  • Prevented queue list flicker and forced scrolling.
  • Used bundle-safe queue list keys.
  • Corrected navigation callback typing.
  • Ensured app bar state offsets reset correctly.
  • Prevented Home app bar overlap.
  • Reserved chip slot space during Home loading.
  • Corrected Local Playlist search mode layout.
  • Allowed saving the current account.

Contributors: @rukamori, @mikooochi

Storage, Cache & Downloads

Download and storage operations now use safer buffering, timeout handling, and cache-clearing behavior.

  • Increased download write buffer sizes.
  • Added HTTP timeouts.
  • Prevented cache clearing freezes.
  • Refactored media cache clearing through StorageCacheClearReporter.

Contributors: @rukamori, @sang765
Related: #917

Icon Submission & Generation Pipeline

Community icon submission and generation handling has been hardened to reduce malformed output and launcher-resource issues.

  • Accepted JSON-only PR metadata.
  • Sanitized SVG doctype declarations.
  • Enforced 512 vector dimensions.
  • Passed SVG source as a path.
  • Resolved JAXP property compatibility.
  • Created adaptive drawable directories.
  • Prevented duplicate adaptive icon layers.
  • Preserved SVG launcher artwork.
  • Generated full adaptive launcher icons.
  • Avoided main-thread vector inflation.

Contributors: @rukamori, @mikooochi

Dependency & Compatibility Fixes

Dependencies and compatibility paths have been updated for build and runtime reliability.

  • Updated all dependencies to v15.0.3.
  • Updated com.mocharealm.accompanist:lyrics-core to v0.4.6.
  • Updated com.mocharealm.accompanist:lyrics-core to v0.4.7.
  • Updated Gradle to v9.6.1.
  • Replaced deprecated RenderScript blur with a pure Kotlin stack blur.
  • Avoided empty plugin descriptor tasks.

Contributors: @renovate[bot], @sang765, @rukamori
Related: #921, #922, #924, #962, #964, #966

Performance Improvements

  • Memoized ListItemDefaults calls in AppIconRow.
  • Prevented main-thread vector inflation in the icon screen.
  • Increased download write buffers and added HTTP timeouts.
  • Prevented cache-clearing freezes.

Contributors: @rukamori, @mikooochi, @sang765
Related: #917

Internal Cleanup & Refactors

Architecture & UDF

  • Refactored LazyCache to use withDelegate for SimpleCache access.
  • Moved Home screen logic directly to a UDF structure.
  • Moved Search Result data to UDF.
  • Rebuilt Music Recognition flow and UI.
  • Refactored Artist Screen overflow actions into segmented controls.
  • Merged lyrics translation handling.
  • Removed redundant remember usage from AppIconRow.

Contributors: @rukamori

Discord, Settings & Storage Internals

  • Centralized Discord RPC sync flow.
  • Hardened Discord gateway transport.
  • Standardized settings header scroll behavior.
  • Refactored main header scroll style.
  • Refactored cache clearing through StorageCacheClearReporter.

Contributors: @rukamori, @adam-adrian
Related: #919, #941, #963

Build, CI & Release Reliability

  • Increased AdaptiveIconForegroundInset to 20dp.
  • Commented t...
Read more

13.6.0

Choose a tag to compare

@rukamori rukamori released this 24 Jun 22:37

Changelog

Focuses on playback reliability, Chromecast integration, Music Together improvements, onboarding, backup handling, update delivery, and broader UI stability. This release also includes performance improvements, internal refactors, localization updates, and build pipeline refinements.

Major Highlights

Playback, Player & Audio

This release improves playback stability across multiple player styles, especially around CanvasArtwork, cached playback, fallback handling, and stream recovery.

  • Stabilized CanvasArtwork playback across V7 and compatible player styles.
  • Improved fallback playback, cached canvas reuse, and compatibility handling.
  • Disabled problematic audio decoding paths where needed to prevent playback crashes.
  • Improved recovery from invalid stream sessions, stale playback state, and cached playback span issues.
  • Fixed player queue access from player controls.
  • Fixed queue selection toolbar crashes, toolbar spacing, and selection count behavior.
  • Added a local song shuffle action for faster local playback control.
  • Improved open-ended read handling for WebM and Ogg playback streams.

Contributors: @rukamori, @mikooochi
Related: #823, #835, #851, #870, #885, #886

Chromecast, Cast & GMS Integration

Chromecast support has been added and the Cast experience has been redesigned for better reliability and a more modern interface.

  • Added Chromecast / Cast support for GMS builds.
  • Added LAN mode and HTTPS handling for Cast playback.
  • Replaced the legacy Cast router UI with a Jetpack Compose Cast menu.
  • Improved cast route selection behavior.
  • Added receiver branding support for ArchiveTune Cast.
  • Stabilized the Cast bridge, route picker menu, selectable-route handling, and AppCompat route dialog support.
  • Improved GMS Bluetooth scan permission handling.

Contributors: @mikooochi, @rukamori

Music Together & Social Presence

Music Together now provides clearer session ownership and participant state, with improved layout behavior and Discord Rich Presence reliability.

  • Added ownership transfer for Music Together sessions.
  • Added join and leave notifications for shared playback sessions.
  • Added Music Together access from the floating navigation toolbar.
  • Refactored Music Together screen state handling.
  • Improved adaptive layout behavior for responsive rendering.
  • Centralized Discord RPC sync flow.
  • Improved replay hold-aware Discord presence behavior.
  • Fixed Discord Rich Presence album button URLs.
  • Hydrated Discord presence links from the music service.

Contributors: @rukamori, @adam-adrian
Related: #864, #871, #877, #899

Library, Playlists & Search

Playlist management and search behavior have been improved with new controls, better state persistence, and cleaner UI handling.

  • Added playlist hiding from the library context menu.
  • Added playlist sort direction controls.
  • Restored custom playlist reordering.
  • Personalized top discovery sections in Search.
  • Switched Search to official tab behavior.
  • Fixed local playlist song selection persistence after refresh.
  • Restored remote history song playback.
  • Improved hidden playlist toggle styling.
  • Merged playlist action controls for cleaner playlist management.
  • Added NG language-code support.

Contributors: @rukamori, @sang765, @mikooochi
Related: #836

Onboarding, Backup & Update Flow

The first-run experience, backup restoration, and update flow have been expanded and refined.

  • Added a first-run onboarding flow.
  • Refined onboarding page design and fixed onboarding UI issues.
  • Added RestoreBackupFileActivity with .backup intent handling and validation.
  • Redesigned the update screen structure.
  • Added in-app GMS update downloads.
  • Allowed update triggering for FOSS builds.
  • Improved update download progress dialogs.
  • Centered download dialog content.
  • Added direct-download warning strings.
  • Fixed GMS nightly artifact URLs.
  • Restricted direct APK downloads to GMS builds.

Contributors: @mikooochi, @sang765, @rukamori
Related: #872

Widgets, Quick Settings & System UI

System-level integrations received new widget and quick settings support.

  • Added the Listening Insights widget with additional listening information.
  • Added AOD quick settings tile support.
  • Improved AOD launch behavior by expanding the player before entering AOD mode.
  • Added snackbar notifications.
  • Added AI translate dialog background mode.

Contributors: @rukamori, @sang765
Related: #878, #893

Stability & Bug Fixes

Playback & Media Reliability

  • Fixed V7 Canvas playback instability.
  • Fixed Canvas fallback behavior and cached Canvas compatibility.
  • Fixed Canvas decoding crash cases.
  • Fixed playback effect rebinding.
  • Fixed cached Canvas handling.
  • Fixed search bar text-input crash cases.
  • Fixed playback recovery callback typing.
  • Fixed bad stream-session recovery.
  • Fixed local songs incorrectly using YouTube radio.
  • Ensured radio playback replaces the queue correctly.
  • Fixed Music Together playback sync reliability.
  • Widened Music Together screen state flow typing.
  • Switched device mute detection to AudioManager for more reliable mute-state handling.

Contributors: @rukamori, @mikooochi
Related: #864, #871, #877

Lyrics & Translation

  • Fixed lyrics preload getting stuck by falling back through available providers.
  • Preserved original lyrics after translation.
  • Restored TTML word phonetics.
  • Stripped embedded word timing tags from lyrics output.
  • Removed the top grabber indicator from the lyrics screen.
  • Blocked player-control touch passthrough from the lyrics screen.

Contributors: @rukamori
Related: #823, #890

UI, Layout & Responsiveness

  • Unified player-aware bottom padding across settings screens.
  • Fixed Add to Playlist dialog adaptive layout so actions remain visible.
  • Removed the dark background from the create row.
  • Redesigned the Tags Management dialog with an adaptive layout.
  • Added adaptive Playback Error information layout.
  • Added adaptive Music Together activity layout.
  • Fixed Home screen speed dial auto-fit height.
  • Fixed speed dial icon contrast.
  • Fixed floating navigation toolbar brightness.
  • Fixed pure-black mode FAB transparency in the floating toolbar.
  • Fixed onboarding segmented list item calls.
  • Disabled slider style for V7, V8, and V9 player styles where it caused appearance issues.

Contributors: @adam-adrian, @rukamori, @mikooochi
Related: #834, #876, #883

Queue, Player Menu & Navigation

  • Removed unused radio menu actions from the player menu.
  • Removed the library create-playlist FAB from the floating navigation toolbar.
  • Removed queue selection count from the toolbar.
  • Prevented selection toolbar constraint crashes.
  • Fixed queue opening from player controls.
  • Replaced the legacy queue selector.

Contributors: @rukamori
Related: #886

YouTube, Playlists & Data Handling

  • Fixed YouTube playlist mutations when delegated authentication becomes stale.
  • Fixed Library Mix screen most-played album display.
  • Fixed remote history song playback.
  • Improved WebM and Ogg stream handling for open-ended reads.

Contributors: @rukamori, @mikooochi
Related: #891

Performance Improvements

  • Reused cached Canvas videos to reduce repeated Canvas resolution work.
  • Reused cached playback spans to reduce repeated playback processing.
  • Improved WebM and Ogg stream handling for open-ended reads.
  • Enabled Gradle build caching.
  • Refined MusicService DataSpec length handling.
  • Removed unused cached-resource checks.
  • Improved update download progress handling.
  • Refined update screen structure.

Contributors: @rukamori, @mikooochi

Internal Cleanup & Refactors

Architecture & Navigation

  • Moved Search to the top route for a cleaner navigation structure.
  • Moved vibration settings into Privacy settings.
  • Added translucent top app bar icon buttons in MainActivity.
  • Lightened Mood & Genres cards.
  • Refreshed resource icons.

Contributors: @rukamori
Related: #849

Lyrics, Providers & Modules

  • Extracted lyrics providers into a submodule.
  • Moved pointer-input handling to the Apple Music controls column for safer input consumption.
  • Preserved original lyrics state through translation and provider workflows.

Contributors: @sang765, @rukamori
Related: #880

Cast & Playback Internals

  • Replaced the flat-list Cast route sheet with a Compose-based route flow.
  • Specified Cast screen state typing for MutableStateFlow.
  • Centralized Cast route selection success handling before hiding the route picker.
  • Refined MusicService playback sync behavior.
  • Refined DataSpec handling.
  • Improved cached playback logic.

Contributors: @mikooochi, @rukamori

Build, CI & Release Reliability

  • Made release signing optional.
  • Added support for FOSS release signing.
  • Added GMS naming to build artifacts.
  • Gated issue notifications on successful APK builds.
  • Triggered development notifications after APK builds.
  • Enabled Gradle build cache.
  • Disabled cache duration for changing modules.
  • Fixed compile issues around widget updater scope, extra branches, and missing resources.
  • Updated submodule references.
  • Merged submodule changes.
  • Removed the Izzy variant.
  • Moved the Discord OAuth callback activity into the shared manifest.
  • Cleaned unused strings, resources, and codebase entries.
  • Updated random speed dial color behavior.
  • Prevented icon color overrides.
  • Updated About ViewModel and cleaned attribution-related code.
  • Bumped version to 13.6.0.

Contributors: @rukamori

Localization & Community

  • Added missing Vietnamese and Japanese translations.
  • Updated translations through Weblate for Korean, Spanish, German, French, Indonesian, Japanese, Estoni...
Read more

13.5.0

Choose a tag to compare

@rukamori rukamori released this 19 Jun 18:22

Changelog

✨ Major Highlights

Playback, Player & Audio

  • Added CanvasArtwork support across V7/V8/V9 player styles, including V8/V9 artwork canvas URLs, V7 backdrop integration, animated canvas playback, blur refinement, canvas cache handling, and highest-bitrate canvas selection — @mikooochi, @rukamori
  • Improved V7 player backdrop rendering with dynamic palettes, custom V7ColorBucket extraction, native/RenderScript blur handling, gradient tuning, zoom scaling, canvas layout fixes, and better artwork color generation — @rukamori, @sang765, @Windowstechtips
  • Added audible playback recovery, mute recovery, crossfade handoff recovery, volume watchdog handling, system volume sync, normalized volume smoothing, and retryable playback exception handling — @rukamori, @mikooochi
  • Added YouTube playback watchtime tracking with playedTimeMs, elapsed playback parameters, and refined playback registration behavior — @rukamori
  • Added queue clear action, queue start index clamping, duplicate playlist-entry preservation, current-song header improvements, and better player bottom sheet/back press behavior (#824) — @rukamori, @mikooochi, @adam-adrian
  • Integrated Google Voice Assistant support (#702) — @rukamori
  • Switched Discord RPC from C++ Social SDK to Gateway WebSocket and improved responsive Discord presence updates — @sang765, @mikooochi

Lyrics, Romanization & Providers

  • Added provider-supplied romanized lyrics support through LyricsEntry, TTML transliteration parsing, entry utilities, and prioritization of provided romanized text — @rukamori
  • Added multi-source BetterLyrics fetching with configurable provider order, KUGOU support, Paxsenix YouTube lyrics provider (#790), LrcLib enhanced lyric selection, and better lyrics source labeling — @rukamori, @sang765
  • Improved enhanced lyrics scrolling, focus anchoring, keep-alive zones, sync render keys, source labels, provider badges, duration handling, and lyrics offset persistence (#724, #725, #746) — @rukamori, @mikooochi
  • Reduced coroutine explosion in lyrics romanization and optimized lyrics polling/update loops for TTML/non-TTML formats — @rukamori
  • Added embedded lyrics import from local songs and hid unparseable TTML search results — @mikooochi

Library, Playlists & Local Music

  • Reworked UI Of Library — @ianshulyadav, @sang765
  • Added supported local audio validation with MIME/extension checks, local song filtering, song icon placeholders, included-folder support, and embedded local lyrics import — @mikooochi, @rukamori
  • Restored Spotify playlists from cached DataStore JSON, added Spotify playlist display state, explicit badges, Spotify track IDs, and safer Spotify playlist resolution — @rukamori
  • Restored playlist tag filters, redesigned playlist tag dialog, preserved custom local playlist order on removal (#756), and improved playlist sync progress/error handling — @mikooochi, @rukamori
  • Added batch addSongsToPlaylist support through InnerTube/YouTube and improved online playlist duplicate preservation — @rukamori
  • Improved Library Top Mixes so mixes play library queues, stay unique, distribute tracks better, and use listened/liked songs as signals instead of exclusions — @mikooochi
  • Added search filter views for online search results (#717), refreshed quick picks on pull, and sped up YouTube generated personal playlist loading (#830) — @rukamori, @adam-adrian

Accounts, Sync & Integrations

  • Added YouTube sub-channel switching support (#514) — @rukamori
  • Added smart “Add another account” flow with unsaved account warning (#802) — @sang765
  • Improved Spotify/Facebook login stability, popup rendering, and WebView user-agent handling — @mikooochi, @rukamori
  • Added libre.fm support with custom endpoint handling and UDF restructuring (#808) — @mikooochi
  • Added Discord expired-token reauthorization warning — @rukamori

Storage, Downloads & Cache

  • Added external storage support for cache/downloaded music, storage picker integration, writable tree probing, cache root resolution, move warnings, and move progress UI — @rukamori
  • Improved cache clearing with progress dialogs, byte limits for canvas cache, SD card ANR avoidance, and safer storage helper organization — @rukamori, @mikooochi
  • Improved download performance by aligning OkHttp concurrency with download parallelism, caching resolved stream URLs with quality-aware keys, reusing resilient stream resolution, and reducing disk I/O contention — @rukamori
  • Fixed cancellation behavior so removing/canceling downloads does not accidentally remove all downloaded music — @rukamori
  • Extended cache-corruption recovery to malformed container parsing errors (#812) — @adam-adrian

Updater, Release Channels & Builds

  • Added Stable/Nightly download URL constants (#621), Daily Nightly update channel, in-app Daily changelog, Check for Update bottom sheet, and direct APK URLs with device/architecture suffixes — @rukamori, @sang765
  • Improved updater startup timing, saved-channel handling (#767, #777), Daily Nightly default channel behavior (#827), update prompt channel binding, and up-to-date messaging — @sang765, @mikooochi, @adam-adrian
  • Refactored update dialogs to Material Design 3 spec (#801) — @sang765
  • Added build variants for Izzy, FOSS, and GMS, expanded release ABI distribution config, and fixed release workflow ownership/static job naming — @rukamori

About, Attribution & Community Metadata

  • Updated About screen team structure, added Respecter section, extracted strings (#772), rebuilt About layout, limited displayed contributors to 20, and added attribution overflow dialogs — @sang765, @mikooochi
  • Improved contributor and attribution loading from GitHub/Weblate, including authenticated translation credits, cached translation contributors, paginated translation changes, and keeping all translation languages — @mikooochi, @rukamori
  • Migrated InnerTube API into the external core submodule (#810) — @sang765

🛠 Stability & Fixes

Playback & Media Reliability

  • Fixed V7/V8/V9 player background preference behavior, backdrop palette assignment, canvas layering, canvas positioning, canvas cache resume, canvas active playback, artwork blur cache keys, and canvas OkHttp client reuse — @mikooochi, @rukamori
  • Fixed audio normalization gain and smoothing (#797), system volume slider sync, mute recovery, retryable playback exceptions, playback auth retry conditions, and stale login playback context — @mikooochi, @rukamori
  • Fixed malformed/invalid playback registration parameters, removed bundled watchtime URLs, and prevented invalid playback registration state — @rukamori
  • Fixed first back press handling when dismissing player UI (#824), player bottom sheet collapse behavior (#729), and status bar handling for V7 player style — @adam-adrian, @rukamori
  • Fixed list queue playback start index crashes, local history delete behavior, history remote issues, and playback history sync (#780) — @mikooochi, @rukamori, @adam-adrian

Lyrics & Provider Fixes

  • Fixed lyrics source label placement, provider display, blank provider lyrics search results (#739), lyrics badge wrapping, source spacing, enhanced lyrics source visibility, and selected non-synced lyrics showing “not found” (#746) — @rukamori
  • Fixed lyrics user work being replaced by remote lyrics (#616), restored lyrics speed offset for V2/enhanced lyrics, and preserved per-song lyrics offset — @rukamori, @mikooochi
  • Fixed enhanced lyrics rendering cancellation and sync render version handling (#725), forced scroll into focus, and adjusted autoplay seek bar behavior (#769) — @rukamori, @sang765
  • Fixed Musixmatch duration parameter handling per API v1.7.0 and improved error detection (#773) — @sang765

YouTube, InnerTube & Network Fixes

  • Refined InnerTube retry behavior with transient network failure detection and proxy rotation — @rukamori
  • Fixed bot-detection handling using auth state, PO token/GVS, stale login state, and setLogin = false handling (#731) — @rukamori
  • Fixed playlist visits writing account search history, random song insertion into online playlists, auto-inserted video IDs during synced playlist creation, and duplicate online playlist entry preservation — @rukamori
  • Improved Artist/Playlist parsing through musicShelfRenderer, itemSectionRenderer, full immersive header descriptions, video/live performance list items, and better videoId/watch endpoint extraction — @rukamori
  • Fixed NewPipe direct media networking when proxy is unset to prevent localhost connection attempts — @rukamori

UI, Navigation & Compose Fixes

  • Fixed speed dial pager/grid behavior, filter chip alignment, playlist tags mapper clash, lyrics menu dialog structure, button shape, component receiver scope, and online search route encoding crash — @mikooochi, @rukamori
  • Fixed TV navigation rail refocus/key events, auto playlist tap entering selection mode, liked songs filtering (#794), and missing Spotify playlist tab display — @rukamori, @mikooochi
  • Fixed YouTube thumbnail aspect ratio handling with square crop option (#791), then reverted the earlier thumbnail aspect ratio change through #804@sang765, @rukamori
  • Fixed About screen resource lookup scope, mini-player padding in dialogs, contributor cache behavior, and attribution compile errors — @mikooochi, @rukamori

Storage, Cache & Download Fixes

  • Fixed SD card cache clearing ANR risk, cache progress refresh, storage helper scoping, previous URI permission release, configured storage ID prioritization, and mnt/media_rw recognition — @mikooochi, @rukamori
  • Fixed download speed issues, downloader stream resolver reuse, cache corruption recovery (#800, #812), and malformed container parse recovery — @rukamori, @adam-adrian
  • Fixed dismissed download toolbar persistence in album/download UI — @mikooochi, @rukamori

Updater & ...

Read more

13.4.0

Choose a tag to compare

@github-actions github-actions released this 29 May 20:40

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 MusicService with 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

⚡ 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
  • Updated French translation — @Mickael81
  • Added German translations — @flue17
  • Added Portuguese (Brazil) translations — @ValteMCPE
  • Added Spanish translations — @gallegonovato
  • Added Japanese and Korean translations
  • 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

13.3.0

Choose a tag to compare

@github-actions github-actions released this 15 May 06:26

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 buildPlayNextShuffleOrder for 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 SettingsSectionLabel and SettingsFlatItem components
  • 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 ListeningBySlot and ListeningSummary data 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 onGetSong lambdas 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 remember for 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 setCacheKeyIfRemote integration (#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...
Read more

13.2.0

Choose a tag to compare

@github-actions github-actions released this 21 Apr 14:50

Changelog v13.2.0

✨ New Features

ArchiveTune Now Supports Local Music Playback!

🎧 Player & Audio Engine

  • Added audio route recovery to restore playback after device changes (#443)
  • Implemented playback history tracking system with caching and URL registration
  • Added PlaybackStreamRecoveryTracker for retry handling and stream failure recovery
  • Improved foreground service management with enhanced notification handling
  • Added multi-URL fallback and retry logic for more reliable playback
  • Implemented voice query support for both offline and online search
  • Added queue auto-expansion when infinite queue is disabled
  • Added loading indicator for queue initialization

🎵 Library, Playlists & Sync

  • Introduced multi-song like with sync support (#430)
  • Added remote sync for library & playlist actions
  • Improved playlist removal consistency with remote-first handling
  • Added playlist suggestion system with query builder customization
  • Enhanced search capabilities with result count queries and pagination (#453)
  • Integrated YouTube online search into media session (#456)

📝 Lyrics & Media

  • Added lyrics sync offset adjustment with UI controls and dialog
  • Improved lyrics sharing system with adaptive layout support
  • Enhanced thumbnail handling with structured data model

📁 Local Media Support

  • Introduced local file playback support
  • Added Local Songs screen with search, sorting, and improved UI
  • Implemented local scan configuration (duration + folder filters)
  • Redesigned scan workflow UI with better state handling

⚙️ System & Platform

  • Added default music player support (#457)
  • Enabled Canvas API authentication
  • Added TV variant support (#423)
  • Added low-end device mode to disable animations
  • Improved YouTube login cookie handling

🎨 UI & UX

  • Added segmented preference component
  • Improved FAB behavior with label support
  • Enhanced history screen with search and state handling
  • Added custom swipe background colors for song items
  • Improved Library Mix layout & controls
  • Accessibility improvements in About screen

🐛 Bug Fixes

🎧 Playback & Streaming

  • Fixed automix preview issues for YouTube queues (#432)
  • Fixed crossfade + offload conflicts (#431)
  • Improved stream expiration handling and fallback logic (#433)
  • Fixed silent audio issue on Qualcomm devices
  • Improved cached playback error handling
  • Fixed player restart when reaching ended state

📚 Library & Data

  • Fixed playlist sync inconsistencies
  • Improved song like transaction handling
  • Fixed playlist removal edge cases
  • Fixed search and coroutine-related crashes

🎨 UI & Layout

  • Fixed blur rendering (now real bitmap blur)
  • Fixed layout inconsistencies (fillMaxSize vs matchParentSize)
  • Fixed thumbnail cropping issues
  • Fixed multiple typos and UI spacing issues

🔧 Misc

  • Fixed dependency issues and updates
  • Fixed various regressions and minor crashes

⚡ Performance Improvements

  • Reduced main thread workload in playback service
  • Improved stream resolution and caching efficiency
  • Optimized search pagination and result handling
  • Enhanced UI rendering and blur performance
  • Improved database queries and event handling

🛠 Technical Refactors

🧠 Core & Playback

  • Refactored stream client architecture with request profiles
  • Unified retry logic for playback authentication
  • Improved MusicService structure and error handling
  • Simplified tracking URL registration system

📦 Data & Database

  • Improved DAO queries and return types
  • Added event tracking enhancements
  • Refactored local media scanning logic

🎨 UI & Components

  • Migrated more components to Material 3 Expressive APIs
  • Simplified Library & Playlist UI structure
  • Improved Lyrics UI rendering and layout system
  • Refactored Preference components with Material shapes

🧹 Codebase Cleanup

  • Removed legacy APIs and unused logic
  • Simplified sorting, layouts, and state handling
  • Improved overall consistency and maintainability

📚 Documentation

  • Updated README and app metadata
  • Added local playback support documentation
  • Improved privacy notice and links
  • Updated store listings and translations

🏗 Build / CI

  • Upgraded compileSdk & targetSdk to 37
  • Refactored Gradle configuration and plugin setup
  • Added Sonatype snapshots repository
  • Improved CI workflows and artifact handling

🔄 Other Changes

  • Dependency upgrades (Compose, AGP, libraries, actions)
  • Multiple reverts for stability and experimental rollback
  • Translation updates (FR, ES, VI, UK, IT, etc.)
  • Internal cleanup, styling tweaks, and minor improvements
  • Version bump to v13.2.0

🔄 Other Changes II

  • fix(deps): update dependency com.mikepenz:multiplatform-markdown-renderer-m3 to v0.40.2 by @renovate[bot] in #441
  • Update agp to v9.1.1 by @renovate[bot] in #463
  • Update dependency com.google.guava:guava to v33.6.0-jre by @renovate[bot] in #465
  • Update dependency com.valentinilk.shimmer:compose-shimmer to v1.4.0 by @renovate[bot] in #466
  • Update actions/cache action to v5 by @renovate[bot] in #468
  • Update actions/checkout action to v6 by @renovate[bot] in #469
  • Update dependency androidx.annotation:annotation to v1.10.0 by @renovate[bot] in #464
  • chore(deps): update actions/download-artifact action to v8 by @renovate[bot] in #470
  • chore(deps): update actions/setup-python action to v6 by @renovate[bot] in #471
  • fix(deps): update dependency com.github.kyant0:m3color to v2026 by @renovate[bot] in #472
  • Update dependency org.jsoup:jsoup to v1.22.2 by @renovate[bot] in #482
  • fix(deps): update dependency sh.calvin.reorderable:reorderable to v3.1.0 by @renovate[bot] in #483

📝 Notes

  • Major focus on local media support, playback stability, and sync systems
  • Several experimental features were refined or reverted for stability

13.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Apr 21:07

Changelog v13.1.0

✨ New Features

Player & Audio Engine

  • Introduced V7 player styles with enhanced layout and modular backdrop system
  • Added toggle-based playback controls for improved interaction state handling
  • Implemented modules effect and improved blur/artwork scaling in V7 backdrop
  • Added Bluetooth auto-start playback and audio device callback handling
  • Enabled audio capture support via ALLOW_CAPTURE_BY_ALL configuration (#396)
  • Improved playback error handling with refined request identity and messaging
  • Added playback resumption system with persisted queue restoration (#390)
  • Implemented login context recovery and authentication-aware playback handling (#418)

User Interface & Theming

  • Full migration to Material 3 Expressive components across all UI
  • Redesigned buttons, list items, and player layout system-wide
  • Introduced Floating Navigation Toolbar (responsive + slim mode)
  • Added Floating Action Button (FAB) for playlist creation in Library
  • Added blur density sliders and enhanced preference components
  • Improved MiniPlayer layout, controls, and artwork rendering
  • Added network status banner across app shell
  • Introduced player design style preference customization

Library, Playlists & Content

  • Added playlist search and sorting in Add-to-Playlist dialog
  • Improved playlist selection logic and duplicate handling
  • Added playlist play button for online playlists (#398)
  • Implemented YouTube automix preview support (#398)
  • Enhanced album page continuation and parsing robustness
  • Added MediaItem enhancements (playable flag + notification artwork resizing #416)

Lyrics & Localization

  • Expanded romanization support (Chinese, Hindi, and more languages)
  • Improved lyrics search UI and dialog experience
  • Enhanced multi-language romanization preferences

Networking & Streaming

  • Improved stream URL resolution and throttling handling
  • Added bot detection recovery (visitor data handling)
  • Enhanced DownloadManager concurrency and request throttling
  • Added auth-scoped caching and playback authentication state system

🐛 Bug Fixes

Player & Playback

  • Fixed playback resumption logic edge cases (#410)
  • Resolved crossfade overlap and ducking recovery issues
  • Fixed artwork rendering, blur inconsistencies, and layout misalignment
  • Corrected playback auth state normalization and login handling (#418)

User Interface

  • Fixed Floating Navigation Toolbar constraint and color issues
  • Resolved bottom navigation offset overflow
  • Fixed layout issues caused by unsafe Infinity constraints
  • Improved ToggleButton sizing and UI consistency
  • Fixed animation imports and spacing inconsistencies in Player

Library & Data

  • Fixed playlist continuation and empty response handling
  • Resolved account/profile loading state inconsistencies
  • Fixed search bar padding and UI alignment issues

System & Services

  • Fixed Updater version ordering assumption
  • Ensured proper queue persistence on task removal
  • Fixed Bluetooth auto-start threading issue
  • Improved WebSocket heartbeat handling (#401)

Dependencies

  • Updated Compose, Media3, Ktor, WorkManager, Material3, and Gradle versions

⚡ Performance Improvements

  • Optimized screen rendering and overall UI performance
  • Improved playlist selection and dialog performance
  • Enhanced URL caching with authentication fingerprint validation
  • Reduced redundant logic in queue, artwork, and playback handling

🛠 Technical Refactors

Architecture & Core

  • Refactored playback authentication system with StateFlow integration
  • Modularized YouTube, InnerTube, and player utilities
  • Streamlined visitor data and token handling
  • Improved DownloadUtil and MusicService caching strategies

UI & Components

  • Simplified Floating Navigation Toolbar architecture
  • Removed legacy and unused UI components (MiniPlayer container, dialogs)
  • Standardized PreferenceEntry usage across settings
  • Cleaned up Player, Lyrics, and Library UI structure

Codebase Cleanup

  • Removed redundant logic, unused variables, and legacy flows
  • Improved readability, maintainability, and consistency across modules

Other Changes

  • Multiple dependency and Gradle upgrades
  • Internal code structure improvements and cleanups
  • Minor UI styling adjustments (#387)
  • Reverts and experimental feature rollbacks for stability
  • Metadata, README, and community updates (Telegram badge)
  • Version bump to v13.1.0

Other Changes II


Notes

  • Includes multiple issue-related fixes and enhancements: #386, #390, #396, #398, #401, #410, #416, #418
  • Some experimental toolbar and layout changes were reverted for stability

Full Changelog: v13.0.0...v13.1.0

13.0.0

Choose a tag to compare

@github-actions github-actions released this 18 Mar 10:33

Changelog

🚀 Highlights

This release focuses on major UI upgrades, playback improvements, lyrics enhancements, and the introduction of new core systems like Music Together and Music Recognition. Stability, performance, and internal architecture have also been significantly refined.


✨ Features

🎧 Player & Playback

  • Introduced V5 and V6 player styles, with improved layouts and interaction design

  • Added permanent shuffle mode and enhanced repeat/shuffle controls

  • New gesture controls:

    • Double-tap to skip
    • Vertical drag to seek
  • Added streams options and improved codec visibility

  • Enhanced seekbar behavior and playback interaction handling

  • Added keyboard controls and landscape lock support

  • Improved automix system with smarter filtering and recommendations

  • Added pause on device mute and Bluetooth auto-play

🎨 UI / UX

  • Major redesign of Settings, Experimental Settings, and overall UI consistency
  • Added Floating Navigation Toolbar with improved interaction and animations
  • Improved menus with card-based and sectioned layouts
  • Added search inside Settings
  • Separated Mood & Genres into dedicated screens
  • Improved carousel components and layout responsiveness

🎤 Lyrics System (Major Upgrade)

  • Completely enhanced TTML parsing and timing accuracy

  • Improved karaoke-style rendering and word sync

  • Filters out invalid/empty lyrics before UI rendering

  • Added:

    • RTL support
    • System/custom font options
    • Lyrics preloading
    • Better provider handling
  • Improved lyrics UI styling with unified glass design

📊 Year in Music

  • Fully redesigned Year in Music experience

  • Added:

    • Story-style pager
    • Top albums view
    • Year selector
    • Share-safe rendering system

🤝 Music Together (New)

  • Real-time shared listening sessions
  • Online session support with remote server
  • Guest roles with permission control
  • WebSocket-based synchronization
  • Improved error handling and connection fallback logic

🎵 Music Recognition (New)

  • Built-in music recognition feature
  • Enhanced result display with metadata and responsive layout

🖼️ Canvas System

  • Introduced ArchiveTune Canvas system
  • Improved artwork handling, caching, and fallback logic
  • Better thumbnail matching and reliability

💾 Backup & Data

  • More reliable backup & restore system with detailed progress
  • Expanded file type support for imports
  • Improved database transaction safety

🌐 Localization

  • Added Italian and Turkish

  • Expanded support for:

    • Japanese, Korean, Vietnamese, and more
  • General translation improvements across the app


🛠️ Fixes

  • Fixed YouTube sync toggle reliability and state handling
  • Resolved multiple playback edge cases (queue restore, crossfade timing, metadata updates)
  • Fixed lyrics sync issues, including TTML timing inconsistencies
  • Addressed UI bugs (layout overlap, padding, navigation alignment)
  • Improved playlist handling, including concurrency and edge cases
  • Fixed network, login, and token-related issues
  • Improved Music Together stability and error reporting
  • Numerous dependency updates and compatibility fixes

⚡ Performance

  • Cached stream URLs to reduce load time
  • Optimized DataStore operations and queue persistence
  • Improved coroutine usage in playback and UI layers
  • Reduced unnecessary recompositions and UI rebuilds

🔧 Refactors

  • Large-scale cleanup of player, lyrics, and networking layers
  • Simplified YouTube parsing and stream handling logic
  • Modularized gesture handling and UI components
  • Improved state management across services and ViewModels
  • Reworked crossfade and audio pipeline internals

📚 Documentation

  • Updated README with clearer feature descriptions
  • Added CONTRIBUTING guide
  • Improved project documentation and links

🏗️ Build & CI

  • Improved GitHub Actions workflows for builds and testing
  • Added universal APK reproducibility checks
  • Migrated and cleaned up Gradle configuration
  • Updated major dependencies and tooling versions

🧾 Notes

  • Some experimental or redundant features were removed or reworked
  • Internal systems (e.g., streaming clients, token handling) have been heavily upgraded for long-term stability

Other Changes II

  • fix(deps): update dependency androidx.datastore:datastore-preferences to v1.2.0 by @renovate[bot] in #213
  • fix(deps): update compose to v1.10.1 by @renovate[bot] in #212
  • fix(deps): update lifecycle to v2.10.0 by @renovate[bot] in #214
  • fix(deps): update room to v2.8.4 by @renovate[bot] in #215
  • chore(deps): update dependency com.google.devtools.ksp to v2.3.4 by @renovate[bot] in #216
  • chore(deps): update gradle to v9.3.0 by @renovate[bot] in #217
  • fix(deps): update dependency androidx.activity:activity-compose to v1.12.2 by @renovate[bot] in #220
  • chore(deps): update kotlin to v2.3.0 by @renovate[bot] in #219
  • fix(deps): update dependency androidx.work:work-runtime-ktx to v2.11.0 by @renovate[bot] in #222
  • fix(deps): update dependency androidx.navigation:navigation-compose to v2.9.6 by @renovate[bot] in #221
  • fix(deps): update dependency org.jsoup:jsoup to v1.22.1 by @renovate[bot] in #224
  • fix(deps): update dependency org.apache.commons:commons-lang3 to v3.20.0 by @renovate[bot] in #223
  • chore(deps): update github artifact actions (major) by @renovate[bot] in #233
  • chore(deps): update actions/checkout action to v6 by @renovate[bot] in #232
  • fix(deps): update media3 to v1.9.0 by @renovate[bot] in #229
  • chore(deps): update gradle/actions action to v5 by @renovate[bot] in #235
  • fix(deps): update dependency org.mozilla:rhino to v1.9.0 by @renovate[bot] in #234
  • chore(deps): update mikepenz/release-changelog-builder-action action to v6 by @renovate[bot] in #236
  • fix(deps): update ktor monorepo to v3.4.0 by @renovate[bot] in #228
  • fix(deps): update dependency org.jsoup:jsoup to v1.22.1 by @renovate[bot] in #226
  • fix(deps): update media3 to v1.9.1 by @renovate[bot] in #247
  • Language PR: Vietnamese + Update dynamic theme logic by @sang765 in #251
  • chore(deps): update dependency com.google.devtools.ksp to v2.3.5 by @renovate[bot] in #252
  • fix(deps): update dependency androidx.work:work-runtime-ktx to v2.11.1 by @renovate[bot] in #253
  • fix(deps): update dependency androidx.navigation:navigation-compose to v2.9.7 by @renovate[bot] in #254
  • fix(deps): update compose to v1.10.2 by @renovate[bot] in #255
  • chore(deps): update gradle to v9.3.1 by @renovate[bot] in #259
  • (feat): Add option to crop YouTube thumbnail to 1:1 by @sang765 in #262
  • fix(deps): update dependency androidx.activity:activity-compose to v1.12.3 by @renovate[bot] in #261
  • (feat): Support Github markdown and HTML tag in update description by @sang765 in #264
  • fix(deps): update dependency com.mikepenz:multiplatform-markdown-renderer-m3 to v0.39.1 by @renovate[bot] in #265
  • fix(Items.kt): Square thumbnail by @sang765 in #271
  • fix(deps): update dependency com.mikepenz:multiplatform-markdown-renderer-m3 to v0.39.2 by @renovate[bot] in #277
  • translate: Add missing strings for Japanese, Korean and Vietnamese by @sang765 in #278
  • fix: square thumbnail not turn back after off by @sang765 in #279
  • fix(deps): update media3 to v1.9.2 by @renovate[bot] in #287
  • chore(deps): update dependency go to 1.25 by @renovate[bot] in #288
  • chore(deps): update actions/checkout action to v6 by @renovate[bot] in #289
  • chore(deps): update actions/setup-go action to v6 by @renovate[bot] in #290
  • chore(deps): update stefanzweifel/git-auto-commit-action action to v7 by @renovate[bot] in #291
  • fix(deps): update hilt to v2.59.1 by @renovate[bot] in #285
  • Fix: square thumbnail in arist by @sang765 in #294
  • chore(deps): update dependency go to 1.26 by @renovate[bot] in https://github.com/...
Read more

12.4.7

Choose a tag to compare

@github-actions github-actions released this 21 Jan 06:16
91126d6

Changelog v12.4.7

✨ New Features

Player & Audio Engine

  • High Fidelity Audio: Added "Very High" and "Highest" audio quality options to settings.
  • Audio Normalization: Implemented perceptualLoudnessDb schema to support more accurate audio normalization.
  • Audio Offload: Introduced a new preference key and ExoPlayer configuration to support audio offloading for better battery efficiency during playback.
  • Player V4 Design: Added a new "V4" player design style, alongside a new "Glow" background animation style.
  • Playback Control:
  • Added custom shuffle and repeat mode commands to the Media Session callback.
  • Added specific "Start Mix" buttons for both Local and Online playlists.
  • Added a loading progress bar state when the player is buffering.

Lyrics Experience

  • Visual Overhaul: Completely overhauled lyrics animations, specifically implementing a "BetterLyrics-style" karaoke animation that features improved gradients, glow effects, and smoother transitions.

  • TTML Support: Added full parsing support for TTML lyrics, including handling for background vocals and precise end-times.

  • Styling Options:

  • Added a distinct style for Romanized lyrics to differentiate them visually.

  • Added a "Karaoke" animation style for standard lyrics display.

  • Added settings to adjust preview time constants.

  • Synchronization: Implemented auto-sync logic for lyrics and a fallback animation if karaoke data is missing.

User Interface & Theming

  • Navigation Rail: Implemented a Navigation Rail for wide-screen devices (replacing the bottom bar) to improve tablet/landscape usability.

  • Material 3 Adoption: Full migration to Material 3 UI components, including Switches, Sliders, Edit Texts, and Palette Pickers.

  • Theme Creator:

  • Added a comprehensive Palette Picker Screen with carousel indicators.

  • Added support for Custom Theme Seeds, "Exact Palettes," and a "Pure Black" mode.

  • Vibrant mesh backgrounds now feature increased blob opacity and falloff stops.

  • Blur Effects:

  • Added toggle options to disable blur effects specifically in Album and Library screens.

  • Refined the TopAppBar blur with dynamic height adjustments based on scroll position.

  • Year in Music: Added a summary feature (YearInMusicScreen) that generates shareable images with theme-based colors and user statistics.

Library & Content Management

  • Global Video Filtering: Added a comprehensive "Hide Video" preference that filters video content across all application areas:

  • Home, Search (and Suggestions), Explore, New Releases, Artist Pages, and Playlists.

  • Playlist Management:

  • Auto-Sync: Implemented automatic synchronization for playlists with immediate triggers upon enabling.

  • Duplicate Handling: Added robust duplicate detection and state management when importing playlists.

  • Reordering & Pinning: Added support for dragging to reorder playlists and pinning favorite playlists.

  • Tagging: Added support for tagging multiple playlists and filtering by tags in the library.

  • Artist Separators: Added a dialog and options for managing custom artist separators.

Integrations

  • Last.fm:

  • Implemented full OAuth Login and mobile session authentication.

  • Enhanced robustness for "Now Playing" updates and session key handling.

  • Discord RPC:

  • Added a Discord Image Resolver to handle rich presence assets.

  • Implemented connection status checks, wait logic, and automatic image type detection.

  • GitHub: Added a cached "Contributors" section to the About screen (filtering out bots).


🐛 Bug Fixes

Playback & Audio

  • Looping Issues: Fixed a bug where Album Looping was not working as expected.
  • Radio Mode: Resolved an issue where Radio mode would restart the current song from the beginning upon start.
  • Normalization: Fixed bugs preventing audio normalization from functioning correctly.
  • Metadata: Corrected track duration calculations for Last.fm updates and handled null song cases to prevent crashes.

User Interface

  • Blur & Visibility:

  • Fixed issues where the TopAppBar shadow/background was missing.

  • Adjusted alpha values for blur overlays to fix visibility issues ("Blur like before").

  • Fixed the "Downloaded" filter pill not showing downloaded albums correctly.

  • Lyrics: Fixed scrolling motion reduction and improved gradient transitions for karaoke fills.

  • Bottom Sheet: Fixed background opacity issues in BottomSheetPlayer.

Sync & Database

  • Startup Crashes: Fixed an ANR (App Not Responding) issue caused by SQLite deadlocks during startup after YouTube login.

  • Playlists:

  • Fixed inconsistencies when adding songs to playlists.

  • Fixed auto-sync database queries.

  • Improved error handling for Backup/Restore operations.

  • Login Persistence: Fixed Last.fm login dialog behavior and credential storage (reading from local.properties).

System & Services

  • Foreground Service: Ensured compliance with Android O+ foreground service requirements to prevent crashes.
  • Discord Presence: Fixed connection stability, restart lockout logic, and shutdown resilience.
  • Crash Reporting: Enhanced the Debug Activity to include stack traces and action buttons.

⚡ Performance Improvements

  • Image Caching: Optimized Coil image requests by dynamically sizing requests and implementing automated cache pruning for old entries.

  • Lyrics Engine:

  • Implemented binary search for lyric line index lookup (significantly faster than linear search).

  • Optimized update delays for smoother synchronization.

  • Concurrency:

  • Offloaded blocking operations in MainActivity and MusicService to background dispatchers.

  • Implemented concurrent data loading in HomeViewModel.

  • Database: Optimized PRAGMA settings and query performance for migrations.


🛠 Technical Refactors

  • Music Service: Massive refactor of MusicService.kt to delegate media notification handling, command processing, and coroutine scope management.
  • Database Migration: Consolidated migrations and added a "Schema Repair" mechanism to handle updates to version 25 (including isLocal default value handling).
  • Navigation: Simplified navigation logic and removed redundant "Permission Onboarding" screens.
  • Code Structure:
  • Moved DiscordRPC image logic to a centralized resolver.
  • Refactored DownloadUtil to use shared cache definitions.
  • Cleaned up ArtistScreen and AlbumScreen layouts to remove unused imports and improve rendering efficiency.

🌐 Localization

  • New Languages: Added support for Estonian, Vietnamese.
  • Updated Translations: French, German, Indonesian, Japanese, Korean, Portuguese (Brazil), Russian.

Other Changes II

  • Rename section from 'phoneScreenshots' to 'ArchiveTune Screenshots' by @Windowstechtips in #92
  • fix TopAppBar background by @GoldenWarriorM in #100
  • French language added by @MicheDePainn in #103
  • Redesign artist by @koiverse in #105
  • fix(deps): update compose to v1.10.0-rc01 by @renovate[bot] in #110
  • fix(deps): update dependency androidx.activity:activity-compose to v1.12.0 by @renovate[bot] in #111
  • fix(deps): update dependency androidx.compose.material3:material3 to v1.5.0-alpha09 by @renovate[bot] in #112
  • fix(deps): update dependency androidx.lifecycle:lifecycle-process to v2.10.0 by @renovate[bot] in #113
  • fix(deps): update dependency androidx.navigation:navigation-compose to v2.9.6 by @renovate[bot] in #114
  • merge Dev to main by @koiverse in #135
  • Fix typo in README description by @Windowstechtips in #108
  • add autoscroll button animation and .clickable scroll to current lyric by @GoldenWarriorM in #153
  • fix (Queue): prevent dragged queue item from being hidden behind others and fix current track highlighting during reordering by @GoldenWarriorM in #158
  • fix (ui/Menu): improve bottom sheet menu scrolling and gesture handling by @GoldenWarriorM in #166
  • Update German translations in archivetune_strings.xml by @siggi1984 in #168
  • Update German translations in strings.xml by @siggi1984 in #169
  • Update French translation in strings.xml by @Mickael81 in #173
  • Update French translation in archivetune_strings.xml by @Mickael81 in #174
  • Fix French translation issues & Proper Apple Music style lyric implementation for karaoke style. by @Windowstechtips in #175
  • Fix web remix client not working and premium audio quality not being available. by @Mizuuta in #183
  • Update lyrics API URL in BetterLyrics.kt by @Windowstechtips in #184
  • Update API base URL for BetterLyrics by @Windowstechtips in #185
  • TTML Overhaul, Lyrics Overhaul, Stats Page Overhaul, Homepage Optimizations by @Windowstechtips in https://...
Read more

12.4.6

Choose a tag to compare

@github-actions github-actions released this 14 Nov 20:47

✨ New Features & Enhancements

  • Added Last.fm and ListenBrainz scrobbling support and new preference keys for enabling/disabling scrobbling and storing user session data.
  • Refactored DebugActivity to use Jetpack Compose for a more modern, maintainable, and visually appealing crash log screen.
  • Improved animation specs for navigation bar and bottom sheets to use non-bouncy springs, providing a smoother user experience.
  • Enhanced service start logic in MainActivity to use startForegroundService on Android O+ for better compatibility and added exception handling for robustness.
  • Ensured onNewIntent updates the activity intent before handling deep links, addressing potential navigation issues.
  • Improved search and top app bar behavior to better handle navigation between top-level screens and provide a more consistent UI.
  • Improved Lyrics and UI by @Windowstechtips in #62
  • New changes by @Windowstechtips in #65

New Contributors

Full Changelog: v12.4.5...v12.4.6