Releases: ArchiveTuneApp/ArchiveTune
13.4.0
Changelog
✨ Major Highlights
🎧 Playback, Player & Audio
- Added V8 and V9 player styles with refined animations, morphing transitions, and improved playback interactions — @koiverse
- Introduced V7 canvas artwork playback with YouTube-backed animated visuals and fallback artwork handling — @koiverse
- Enhanced
MusicServicewith resumable playback notifications, queue persistence improvements, crossfade stability, and offline cache optimizations (#662) — @koiverse - Added customizable AOD experience with artwork glow shadow support and improved metadata synchronization — @koiverse
- Added sleep timer support for V7 mode — @koiverse
- Implemented playback vibration and haptic feedback support across player controls and lyrics interactions — @nekohepott32
- Added playback widget system using Jetpack Glance with new themed widget layouts — @harshal20m, @koiverse
📝 Lyrics, Karaoke & AI
- Added LRC bounce animations, dynamic scaling, instrumental break indicators, and smoother drift correction for Lyrics V2/Enhanced — @koiverse
- Improved TTML parsing with better CJK handling, XML entity resolution, and enhanced compatibility for nested namespaced lyrics — @koiverse
- Added synchronized lyrics indicators and lyrics provider ordering customization (#627) — @koiverse
- Added OpenRouter AI provider integration with searchable model picker and API validation handling — @koiverse
- Enhanced romanization with context-aware transliteration and word-level TTML support — @koiverse, @mikooochi
🎨 Interface, Navigation & Material 3
- Replaced legacy pull-to-refresh implementations with Material 3 Expressive components — @koiverse
- Refined settings, preferences, side sheets, dialogs, and navigation layouts with improved shapes, descriptions, and adaptive behavior — @koiverse
- Added animated floating navigation toolbar behaviors with sliding pill animations and expressive transitions — @koiverse
- Reworked Music Recap, Mood & Genres, News, Library Mix, and Player layouts with adaptive Material 3 components — @koiverse, @mikooochi
- Added immersive artist headers with monthly listeners and subscriber count support — @mikooochi
🌐 Connectivity, Accounts & Sync
- Added optional force-sync behavior when switching accounts with improved authoritative sync handling — @mikooochi
- Added automatic Google login exit flow and improved web auth session cleanup handling — @sang765, @koiverse
- Introduced rotating proxy/IP rotation system with cooldown pools and automatic configuration fetching — @koiverse
- Added Spotify logout support and cancellable Spotify track importing — @koiverse
- Added low data usage mode and improved YouTube fallback handling (#691) — @koiverse
📚 Library, Discovery & Content
- Added AI-powered “Build Your Mix” functionality with validated library mix generation — @koiverse
- Introduced revamped New Release experience with structured content models and tabbed navigation — @mikooochi
- Added playlist descriptions, local playlist syncing to YouTube, and local song sorting preferences — @koiverse, @mikooochi
- Improved artist page handling, release type extraction, and metadata rendering (#626) — @koiverse, @mikooochi
- Added Android Auto compatibility improvements and missing feature integrations (#688) — @mikooochi, @koiverse
🐞 Stability & Fixes
🔧 Playback & Service Reliability
- Fixed queue selection inconsistencies and removed unused queue trigger logic (#603) — @koiverse
- Reworked crossfade playback logic and stabilized audio handoff behavior — @koiverse
- Fixed playback rendering issues related to canvas artwork, backdrop ordering, and offload handling — @koiverse
- Improved queue snapshot persistence during stop/memory trim events — @koiverse
🎵 Lyrics & Media Fixes
- Fixed BetterLyrics album parameter handling — @koiverse
- Restored compatibility for nested TTML lyrics and improved instrumental break rendering — @koiverse
- Improved AI translation conditions and lyric timing animations — @koiverse
- Fixed album duration localization issues and multiple lyrics rendering regressions — @koiverse
🎨 UI & UX Fixes
- Fixed various settings layout inconsistencies, toolbar dismiss behavior, and widget resizing problems — @koiverse, @mikooochi
- Improved lifecycle-aware playlist state collection and refresh handling — @koiverse
- Fixed updater APK architecture/device flavor handling — @sang765
- Fixed Quick Picks occasionally not appearing — @koiverse
📦 Dependency & Platform Updates
- Updated Compose to
1.12.0-alpha03(#635) — @renovate[bot] - Updated Material 3 to
1.5.0-alpha20(#636) — @renovate[bot] - Updated Material 3 Adaptive to
1.3.0-beta02(#637) — @renovate[bot] - Updated AndroidX Browser to
1.10.0(#670) — @renovate[bot]
⚡ Performance Improvements
- Reduced redundant lyrics fetching checking cached metadata before network requests — @koiverse
- Improved lyrics provider concurrency using shared cache selection logic — @koiverse
- Optimized queue hydration, persistent state saving, and widget preference updates — @koiverse
- Enhanced crossfade transition performance and playback state synchronization — @koiverse
🛠 Internal Cleanup & Refactors
🧠 Core & Playback
- Refactored crossfade, queue hydration, and playback persistence systems for better reliability — @koiverse
- Simplified audio normalization and playback service logic to prevent random muting — @koiverse
- Improved sync metadata handling and account switching internals — @koiverse
🎨 Compose & UI Architecture
- Migrated multiple screens to adaptive Material 3 layouts and expressive components — @mikooochi, @koiverse
- Refactored Lyrics Enhanced scrolling, focus handling, and manual scroll synchronization — @koiverse
- Simplified toolbar animations and navigation state handling across floating navigation components — @koiverse
📦 Project Maintenance
- Added ProGuard rules for Glance/media processing and cleaned unused dependencies/code — @koiverse
- Refined AndroidManifest override handling and scheduler service registration — @mikooochi, @koiverse
- Updated docs, translations, fastlane metadata, and internal tooling — @koiverse, @mikooochi
🌍 Translation & Community
- Updated Indonesian translations — @adam-adrian
- 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
- @nekohepott32 made their first contribution in #631
- @harshal20m made their first contribution in #655
- @adam-adrian made their first contribution in #693
13.3.0
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
buildPlayNextShuffleOrderfor 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
SettingsSectionLabelandSettingsFlatItemcomponents - 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
ListeningBySlotandListeningSummarydata 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
onGetSonglambdas 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
rememberfor 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
setCacheKeyIfRemoteintegration (#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...
13.2.0
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
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_ALLconfiguration (#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
Infinityconstraints - 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
- chore(deps): update gradle to v9.4.1 by @renovate[bot] in #389
- chore(deps): update gradle/actions action to v6 by @renovate[bot] in #395
- fix(deps): update compose to v1.10.6 by @renovate[bot] in #402
- fix(deps): update dependency androidx.work:work-runtime-ktx to v2.11.2 by @renovate[bot] in #403
- fix(deps): update media3 to v1.10.0 by @renovate[bot] in #412
- fix(deps): update ktor monorepo to v3.4.2 by @renovate[bot] in #415
- fix infinite queue by @Windowstechtips in #426
- some shiz by @Windowstechtips in #427
- chore(deps): update androidgradleplugin to v9.1.0 by @renovate[bot] in #428
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
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/...
12.4.7
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
perceptualLoudnessDbschema 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
Coilimage 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
MainActivityandMusicServiceto background dispatchers. -
Implemented concurrent data loading in
HomeViewModel. -
Database: Optimized
PRAGMAsettings and query performance for migrations.
🛠 Technical Refactors
- Music Service: Massive refactor of
MusicService.ktto 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
isLocaldefault value handling). - Navigation: Simplified navigation logic and removed redundant "Permission Onboarding" screens.
- Code Structure:
- Moved
DiscordRPCimage logic to a centralized resolver. - Refactored
DownloadUtilto use shared cache definitions. - Cleaned up
ArtistScreenandAlbumScreenlayouts 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://...
12.4.6
✨ New Features & Enhancements
- Added Last.fm and ListenBrainz scrobbling support and new preference keys for enabling/disabling scrobbling and storing user session data.
- Refactored
DebugActivityto 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
MainActivityto usestartForegroundServiceon Android O+ for better compatibility and added exception handling for robustness. - Ensured
onNewIntentupdates 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
- @Windowstechtips made their first contribution in #62
Full Changelog: v12.4.5...v12.4.6
12.4.5
Highlights
App Icon Update!
Fresh and modern – designed to better correlate with ArchiveTune’s identity on Android version 15-16.
Performance Boost (Up to 30% less lag!)
Elimination of the delay created by MIN_PRESENCE_UPDATE_INTERVAL, which helped ensure smooth overall system performance.
Discord Rich Presence - Finally Fixed & More Accurate!
After a rigorous debugging process of 4 days, Discord presence updates accurately and shows up perfectly on all tracks, including audio as well as video.
UI & Design
- Remade "About" page layout
- App Icon Fixes
Icons are now displayed properly in both the About UI and the launcher on Android versions 15-16. - New Player Background Styles
Introduced 3 additional background effects: Coloring, Blur Gradient, Glow, as well as Custom Backgrounds. (Refer Issue #47.) Perfect background extras for customization
Features & Enhancements
Albums in App Bar
- Now you can see and browse Released Albums from the App Bar.
- Metered Network Toggle Introduced an option to switch in Player Settings, which enables you to decide how you want the player to act on metered networks.
- Improved Artwork Storage Improved the optimization of artworks’ storage and management in order to quickly access them by reducing redundancy.
- Improvements in Database Player Handling
Enhanced synchronization of player data into the database preventing crashes.
Bug Fixes
- Corrected issues related to unsynchronized player states impacting Discord updates.
- Fixed Discord Rich Presence not showing for tracks without album metadata.
- Fixed About UI and launcher icon issues on Android 15-16.
12.4.4
✨ New Features & Enhancements
- remake AppBar UI in homepage to more simple
- remake UI of bottomsheet new version available!
- remake customizable thumbnail/cover corner radius UI in appearance settings
- remove notes card from settings page
- now control small image resolution by preferences
- cache and reuse resolved external image urls
- honor large image preference for thumbnail in rpc
- rename artwork storage method call
- add missing strings into all language
- and many enhancements!
🛠 Bug Fixes & Stability
- fix discord presence show invalid image for both large and small
- remove 'custom' from allowed small image types
- remove redundant image resolution and rpc updates in MusicService
- improve image url parsing and configurable activity fields
- hoist discord presence image preferences in DiscordSettings
- and fixes more known issue!
12.4.3
✨ New Features & Enhancements
- add artwork storage utility
- include artwork storage when cache was cleared
- persist and use saved artwork for rpc images
- adjust lazycolumn padding on experimental settings page
- optimize rpc image resolution with in-memory cache
- clear stale artwork cache on rpc image failure
- resolve and persist song images for rpc and ui updates on music services
- delegate image resolution and persistence
🛠 Bug Fixes & Stability
- ensure consistent bottom sheet and menu state
- update silence skipping audio processor constructor
- handle network exceptions (issue when out of app and back again, app crashed)
- pass resolved image urls to discord rpc
- remove deep link intent listener (issue some crash and freezed sometimes on android 15)
- wait for bottom sheet to close before showing dialog (issue app very laggy)
- use synchronized method for image cache removal and reorder small image rpc conditions
- fix artist cover not displaying anymore on discord rich presence