Skip to content

N20260630

Choose a tag to compare

@github-actions github-actions released this 30 Jun 09:48
7eef964

Release ArchiveTune Nightly artifact, generated on 2026/06/30 (UTC +0)

What changed on this release?

✨ Features

  • Added a metadata-driven launcher icon selector, allowing users to choose from multiple app icons directly from the Appearance settings.
  • Introduced a new "Javanese" (jv) language localization for both core strings and specific ArchiveTune strings.

🎨 UI

  • Redesigned the home screen with a cleaner section layout, removing old navigation title components and replacing them with unified section headers that include proper spacing.
  • Adjusted HomeCategoryChips colors and HomeSectionHeader font weight for better visual hierarchy.
  • Replaced the old NavigationTitle composable across AccountPlaylistsTitle, SimilarRecommendationsTitle, and HomePageSectionTitle with the new HomeSectionHeader component.
  • Replaced custom RenderScript-based blur implementations with a new ImageBlurUtils stack blur, used across player backgrounds, lyrics screen, and thumbnail backdrops.

🎵 Audio

  • Fixed equalizer audio session recovery by introducing retry logic and a player listener to rebind audio effects when the session ID changes.

🌐 Translation

  • Updated Indonesian locale strings and added full Javanese (jv) localization for both archivetune_strings.xml and strings.xml.
  • Improved Vietnamese locale color palette strings to disambiguate between blue and green neon/pastel variants.

⚡ Performance

  • Improved download reliability by adding HTTP connection timeouts, read timeouts, and a dedicated CacheDataSink factory with a 256KB write buffer.
  • Improved thumbnail loading by adding a ThumbnailSwapState mechanism that replaces YouTube Music thumbnails with direct i.ytimg.com URLs for music videos when not in low-data mode.

🔧 Logic

  • Rebuilt the Music Recognition flow using a new repository, use case, and ViewModel layer (replacing the old inline approach) to handle audio capture, Shazam recognition, and history persistence.
  • Rebuilt the Home screen logic into a UDF architecture with HomeScreenState, HomeAction, HomeUiState, and an onAction entry point in the HomeViewModel.
  • Standardized settings screens by removing the shared scrollBehavior parameter from around 15 settings composables and instead calling appBarScrollBehavior() internally where needed.

🧹 Refactor

  • Refactored the search result list to use a UDF-style data flow with grouped, segmented list items and extracted section-header composables.
  • Massively reduced diff noise and formatting inconsistencies in settings screens using ktlint (added .editorconfig rule and detekt.yml for unused-private-member/empty-function-block checks).
  • Removed duplicated empty-state and container composables (HomeLoadingShimmer, HomeCategoryChips duplicates, Account/Recommendation container helpers) from HomeScreen.
  • Restructured lyrics screen background to restore the conditional blur overlay tied to PlayerBackgroundStyle and blurRadius settings (previously reverted, now re-applied).

📦 Dependencies

  • Bumped aboutLibraries library from 15.0.2 to 15.0.3 (Kotlin-based buildSrc configuration).
  • Updated Gradle wrapper from 9.6.0 to 9.6.1.

🌟 MVP Highlight

rukamori — This release's most impactful commit is the complete UI/architecture rebuild of the Music Recognition screen (3528cd4). It replaced a large, monolithic composable and state machine with a clean, testable architecture (dedicated MusicRecognitionRepository, use cases, RecognizedTrack/RecognitionHistoryEntry domain models, and MusicRecognitionViewModel) while also building a brand-new visual flow—a huge contribution to both code health and user experience.



🏆 MVP Committer

Congratulations to @rukamori for contributing 21 commit(s) in this release! 🎉

📊 Contribution Leaderboard

🥇 @rukamori: 21 commit(s)
🥈 @renovate[bot]: 1 commit(s)
🥉 @sang765: 1 commit(s)
👤 @adam-adrian: 1 commit(s)

✨ Changelog