Skip to content

Releases: rukamori/canary

N20260724

Choose a tag to compare

@github-actions github-actions released this 24 Jul 07:32

Release ArchiveTune Nightly artifact, generated on 2026/07/24 - 07:32:20 (UTC +0)

πŸ† MVP Committer

Congratulations to @rukamori for contributing 113 commit(s) in this release! πŸŽ‰

πŸ“Š Contribution Leaderboard

πŸ₯‡ @rukamori: 113 commit(s)
πŸ₯ˆ @mikooochi: 61 commit(s)
πŸ₯‰ @ffelixm: 8 commit(s)
πŸ‘€ @gallegonovato: 8 commit(s)
πŸ‘€ @midomizo933: 3 commit(s)
πŸ‘€ @ooobamboo: 2 commit(s)
πŸ‘€ @ValteMCPE: 2 commit(s)
πŸ‘€ @Mickael81: 2 commit(s)
πŸ‘€ @adam-adrian: 2 commit(s)
πŸ‘€ @beebtw: 2 commit(s)
πŸ‘€ @Anonymous: 2 commit(s)
πŸ‘€ @IIXII-L192: 1 commit(s)
πŸ‘€ @avatrax6: 1 commit(s)
πŸ‘€ @marstraveler01: 1 commit(s)
πŸ‘€ @Simone20031: 1 commit(s)

✨ Changelog

  • 30d9a77 - "refactor(MainActivity): update visible condition in AnimatedVisibility using playerBottomSheetState #1019" by (@rukamori)
  • bfae1cc - "refactor(MainActivity): replace playerBottomSheetState isCollapsed and isDismissed with isExpandedOrExpanding" by (@rukamori)
  • 59b4c96 - "feat(QRCParser): add BetterLyrics Portato support #1060" by (@rukamori)
  • 53c9906 - "feat(YTPlayerUtils): add ANDROID_VR_1_65_10 client and update client ordering logic in getOrderedStreamClients" by (@rukamori)
  • 9559ff8 - "refactor(StreamClientUtils): replace ANDROID_VR_NO_AUTH with ANDROID_VR_1_65_10" by (@rukamori)
  • a636357 - "refactor(YouTubeLoginRepository): extract verificationAuthState and reorder accountInfo invocation" by (@rukamori)
  • b36ceb6 - "refactor(LoginViewModel): remove LoginEvent and delegate login initiation to startLogin" by (@rukamori)
  • 02d5a0e - "refactor(LoginScreen): extract YouTubeLoginWebViewClient" by (@rukamori)
  • 2672807 - "refactor(App): replace visitorData with sessionId in authState check" by (@rukamori)
  • 0e9b892 - "refactor(YTPlayerUtils): extract mintWebPlaybackPoTokens and add isForbiddenPlayerRequest" by (@rukamori)
  • b345c9b - "refactor(PoTokenExtractionActivity): use YouTube.currentPlaybackAuthState to derive tokenBindingId and persistedVisitorData in completeIfReady" by (@rukamori)
  • 69072ce - "refactor(BrowserSupportPageRepository): remove existing start.io integration" by (@mikooochi)
  • 0aa793c - "feat(MediaItemExt): replace platform-specific null check with direct uri conversion for notification artwork" by (@mikooochi)
  • 09975ef - "feat(MediaItemExt): add conditional uri generation for ice cream build to avoid Android 15 metadata artwork crash" by (@rukamori)
  • b5bcd42 - "fix(CanvasArtworkPlayer): stop unsupported Canvas retry crashes #1047" by (@rukamori)
  • 01d373e - "feat(CanvasArtworkPlaybackCache): add media codec check to validate canvas video compatibility #1047" by (@rukamori)
  • 034ef42 - "fix(MainActivity): replace playerBottomSheetState.isExpanded with playerBottomSheetState.isExpandedOrExpanding in shouldHideStatusBars condition #1038" by (@rukamori)
  • 9537323 - "fix(App): use when (result) to handle GatekeeperResult.Allowed and Unavailable cases with Unit handling, replace if condition with retryable check" by (@rukamori)
  • f1c4790 - "fix(GatekeeperViewModel): handle blocked result by sending message through channel" by (@rukamori)
  • f4d12df - "fix(GatekeeperRepository): handle IOException by returning Unavailable instead of Blocked" by (@rukamori)
  • 715b836 - "update domain" by (@rukamori)
  • 6caef14 - "fix(recognition,downloads,aod,sleeptimer,lyrics,gms): recognition flow, download controls, AOD touch, sleep timer pause, synced lyrics & Start.io GPL compliance (#1053)" by (@IIXII-L192)
  • df82fcf - "bump release" by (@rukamori)
  • 169f858 - "fix(FadingEdge): swap Color.Black and Color.Transparent in horizontalGradient colors" by (@rukamori)
  • cb57019 - "feat(OnlinePlaylistScreen): add fallbackPlaySong fallback to playerConnection.playQueue via toPlaylistPlaybackEndpoint" by (@rukamori)
  • 0c42fde - "refactor(MediaDetailHero): replace Row with BoxWithConstraints and use fadingEdge for MediaDetailPrimaryActions" by (@rukamori)
  • a2b2a60 - "refactor(MediaDetailHero): add horizontalScroll with LaunchedEffect to MediaDetailPrimaryActions" by (@rukamori)
  • 3248c0b - "refactor(MediaDetailHero): make MediaDetailHero MediaDetailPrimaryActions MediaDetailAction MediaDetailIconAction public and replace constrainWidth" by (@rukamori)
  • 64ea48c - "refactor(Queue): replace dragInfo pair with QueueDragInfo and QueueDragDestination" by (@rukamori)
  • 4d21e6c - "refactor(LibraryPlaylistsScreen): replace Row toggle with DropdownMenuItem and IconButton using weight and spacedBy" by (@rukamori)
  • e188193 - "refactor(MediaDetailHero): replace horizontalScroll row with MediaDetailBalancedActionLayout using layoutId MediaDetailActionLayoutId" by (@rukamori)
  • 22fd494 - "refactor(PlaylistMenu): add catch for CancellationException and make PlaylistMenu public" by (@rukamori)
  • 42d097c - "fix(OnlinePlaylistViewModel): use compareAndSet" by (@rukamori)
  • 2addb5c - "feat(DatabaseDao): add clearAlbumSongs to delete song_album_map by" by (@rukamori)
  • 6a12e2b - "refactor(constant): remove AiProvider CLAUDE and OPENROUTER support" by (@rukamori)
  • 8db146b - "refactor(StartIoSupportAdRepository): add SupportAdMode enum with Rewarded and Automatic fallback handling" by (@rukamori)
  • 5e78cdd - "fix(BotGuardTokenGenerator): use stable continuation APIs #1034" by (@rukamori)
  • 76abc3f - "refactor(BotGuardTokenGenerator): wrap JS bridge callbacks in dispatchBridgeCallback with tryResume to prevent resume crashes #1034" by (@rukamori)
  • 4f4301f - "refactor(LocalPlaylistScreen): extract isReorderingEnabled and isSwipeToDeleteEnabled flags to simplify swipe/drag logic #1034" by (@rukamori)
  • a1fd55d - **"feat(PlayerConnection...
Read more

N20260712

Choose a tag to compare

@github-actions github-actions released this 12 Jul 14:19
b55b572

Release ArchiveTune Nightly artifact, generated on 2026/07/12 - 14:18:55 (UTC +0)

πŸ† MVP Committer

Congratulations to @rukamori for contributing 42 commit(s) in this release! πŸŽ‰

πŸ“Š Contribution Leaderboard

πŸ₯‡ @rukamori: 42 commit(s)
πŸ₯ˆ @mikooochi: 7 commit(s)
πŸ₯‰ @adam-adrian: 3 commit(s)
πŸ‘€ @renovate[bot]: 1 commit(s)

✨ Changelog

  • a05cff1 - "feat(DownloadLibraryScreen): refine searchable media rows" by (@rukamori)
  • 96ff825 - "refactor(DatabaseDao): Suppress RoomWarnings.QUERY_MISMATCH on allAlbumsForDownloads()" by (@rukamori)
  • 8bd6218 - "refactor(DownloadLibraryScreen): Import asPaddingValues" by (@rukamori)
  • 5998bda - "feat(DownloadLibraryScreen): add grouped download management tabs" by (@rukamori)
  • cde262b - "fix(DownloadProgressFloatingToolbar): restore paused download controls" by (@rukamori)
  • 49e081d - "fix(MusicService): prevent current song queue duplicates" by (@rukamori)
  • 45e785e - "fix(YouTubeClient): preserve signed-in playback authentication" by (@rukamori)
  • 40aef26 - "perf(YTPlayerUtils): reuse playback data for downloads" by (@rukamori)
  • 8e5895a - "fix(YTPlayerUtils): prefer Web Remix playback" by (@rukamori)
  • 599586a - "remove android vr selection" by (@rukamori)
  • c1472fc - "fix(deps): update all dependencies (#995)" by (@renovate[bot])
  • eeeafc8 - "fix(YTPlayerUtils): mark stream client failed when httpStatusCode is null #984" by (@rukamori)
  • ae69949 - "refactor(MusicService): define isFullyDownloadedMedia via downloadCache.isCached and ContentMetadata #984" by (@rukamori)
  • a244bd0 - "refactor(Updater): migrate nightly channels to canary" by (@rukamori)
  • cb396c5 - "fix(CanvasArtworkPlaybackCache): preserve and reuse cached canvas videos" by (@rukamori)
  • 30f8c86 - "fix(DownloadUtil): restore artwork for downloaded songs" by (@rukamori)
  • 93dd9b3 - "fix(MoriCipherRuntime): prevent throttled playback URLs" by (@rukamori)
  • ac766bd - "update all submodule" by (@rukamori)
  • 855df2e - "update all links" by (@rukamori)
  • f5f2e68 - "fix(player): crash on API 29 when opening output switcher (#991)" by (@adam-adrian, @rukamori)
  • 4e50247 - "fix(player): improve formattedFileSize to dynamically support multi-unit and decimal precision (#988)" by (@adam-adrian, @rukamori)
  • cdba7d0 - "reverted screen to previous state" by (@rukamori)
  • 5590836 - "fix color transparent" by (@rukamori)
  • 13e67c8 - "fix error coroutines violations" by (@rukamori)
  • e3cf5b4 - "fix(CipherSettingsUseCases): reset manual refresh after 24 hours" by (@rukamori)
  • f3c2ac3 - "fix(PlaybackAuthPreferences): preserve dataSyncId during playback recovery" by (@rukamori)
  • 01dae88 - "fix(AboutScreen): avoid composable calls inside remember" by (@rukamori)
  • 074a319 - "feat(AboutScreen): reconstruct about layout" by (@rukamori)
  • 8dd0db0 - "refactor(StatsScreen): move artist chart above favourites" by (@rukamori)
  • 3ac1d24 - "fix(StatsScreen): differentiate artist chart colors" by (@rukamori)
  • 615dd76 - "update icon pack" by (@rukamori)
  • 23efbc7 - "fix(StatsScreen): always fill donut chart and remove remaining arc segment" by (@rukamori)
  • 2ecd038 - "fix(App): reuse cold-start BotGuard warm-up for playback" by (@rukamori)
  • 41ceb6a - "fix(LyricsMenu): update controls switch immediately" by (@rukamori)
  • 4f4837a - "refactor(GenerateIconPackTask): sample background color from rasterized icon for integrated backgrounds" by (@rukamori)
  • 7ba7d44 - "fix(GenerateIconPackTask): prevent duplicate launcher icon layers" by (@rukamori)
  • 6632d38 - "fix(StatsScreen): resolve compose compiler" by (@rukamori)
  • 841df4e - "fix(ChiperSettings): animate only changed countdown digits" by (@rukamori)
  • d7ff283 - "refactor(StatsScreen): reconstruct listening dashboard and data" by (@rukamori)
  • 51c7208 - "feat(AppearanceSettings): add V7 and V8 volume bar toggle" by (@mikooochi)
  • a722316 - "feat(LyricsScreen): add player controls visibility toggle" by (@mikooochi)
  • dac10b3 - "feat(player): native output switcher + reactive device pill for V7/V8 (#981)" by (@adam-adrian, @rukamori)
  • 2356c4a - "feat(MusicService): close inactive together rooms" by (@mikooochi)
  • 2276dba - "fix(IconScreen): correct search and sort types" by (@mikooochi)
  • c1a7a67 - "feat(IconScreen): add icon search, sorting and update existing icons" by (@mikooochi)
  • bd9ea76 - "fix(LyricsMenuViewModel): encapsulate isRefetching state and emit completion events on refetch" by (@mikooochi)
  • 809ce0d - "fix(LyricsMenu): replace state-based refetch dialog with flow-driven dismiss and add refetch action to search result header" by (@mikooochi)
  • 95ace31 - "fix(MusicService): reconstruct queue bootstrap" by (@rukamori)
  • 4dc44da - "fix(CipherSettingsUseCases): use actual refresh timestamp for rate limit recording" by (@rukamori)
  • 815e4cc - **"feat(ChiperSettings)...
Read more

N20260705

Choose a tag to compare

@github-actions github-actions released this 05 Jul 00:13

Release ArchiveTune Nightly artifact, generated on 2026/07/05 - 00:13:13 (UTC +0)

πŸ† MVP Committer

Congratulations to @rukamori for contributing 27 commit(s) in this release! πŸŽ‰

✨ Changelog

  • b4858b0 - "style(PoTokenScreen): add explicit Unit return to copyToken lambda" by (@rukamori)
  • 9bfc594 - "perf(JavaScriptPlanCompiler): bound cipher dependency extraction" by (@rukamori)
  • 0028bae - "fix(PoTokenExtractionActivity): auto-complete token extraction" by (@rukamori)
  • af4398d - "refactor(PoTokenScreen): simplify token generation" by (@rukamori)
  • d6e97e5 - "fix(BotGuardTokenGenerator): reuse startup warm-up for first playback" by (@rukamori)
  • f15af63 - "style(ChiperSettings): inline rememberCipherStatusShape without redundant remember block" by (@rukamori)
  • e151217 - "fix(YTPlayerUtils): remove redundant stream preflight latency to prevent long loading web remix" by (@rukamori)
  • 829ea1d - "style: remake chiper configuration" by (@rukamori)
  • 780ee81 - "feat(ChiperSettingsViewModel): add progress percent to Loading state" by (@rukamori)
  • e4359f7 - "fix(AlbumScreen): stabilize download state smart casts" by (@rukamori)
  • c3df0c7 - "fix(MoriCipherRuntime): offload refresh compilation from main thread" by (@rukamori)
  • aaff33f - "fix(HeaderDownloadState): synchronize header pause controls" by (@rukamori)
  • ce95018 - "refactor(GlobalLog): GlobalLogTree to extend Timber.DebugTree" by (@rukamori)
  • 743505f - "feat(LogcatScreen): apply LocalPlayerAwareWindowInsets to AnimatedVisibility" by (@rukamori)
  • f169301 - "fix(LogcatRepository): tag comparison for null capturedEntry.tag" by (@rukamori)
  • 8b0be76 - "update deobfuscator submodules" by (@rukamori)
  • 03ba33e - "fix(JavaScriptPlanCompiler): replace raw backtick string terminators with ["'] in n-function patterns" by (@rukamori)
  • 30e87e7 - "fix(JavaScriptPlanCompiler): anchor n-function patterns to string argument and inject global shims into program" by (@rukamori)
  • 9d0b659 - "fix(JavaScriptPlanCompiler): broaden patterns, raise limits, and fix dependency detection" by (@rukamori)
  • 4e869e8 - "fix: update deobfuscator submodules" by (@rukamori)
  • f022587 - "fix(PlayerComponents): update InlineTextContent imports to foundation.text for Compose 1.12" by (@rukamori)
  • 5661c5c - "feat(PlayerComponents): show explicit badges in all player styles" by (@rukamori)
  • 3164f03 - "feat(LogcatScreen): add dedicated unified log viewer" by (@rukamori)
  • 2fa6d24 - "fix(release): package signed FOSS APK" by (@rukamori)
  • 8568820 - "fix(ChiperSettingsViewModel): resolve type-flow" by (@rukamori)
  • 08a43ed - "fix(MoriCipherRuntime): resolve cipher module caller" by (@rukamori)
  • 0e1ca2e - "feat(MoriCipherRuntime): add self-healing YouTube decryption" by (@rukamori)

N20260704

Choose a tag to compare

@github-actions github-actions released this 04 Jul 00:13

Release ArchiveTune Nightly artifact, generated on 2026/07/04 - 00:13:09 (UTC +0)

πŸ† MVP Committer

Congratulations to @mikooochi for contributing 8 commit(s) in this release! πŸŽ‰

πŸ“Š Contribution Leaderboard

πŸ₯‡ @mikooochi: 8 commit(s)
πŸ₯ˆ @rukamori: 2 commit(s)

✨ Changelog

  • 69d9f5d - "fix(main): preserve PoToken base64url padding" by (@rukamori)
  • d345585 - "fix(PlayerSettings): gate extractor and validate PoTokens" by (@rukamori)
  • 262e642 - "feat(MusicRecognitionScreen): add background recognition setting" by (@mikooochi)
  • 2f8874f - "fix(BackgroundMusicRecognitionService): resolve recognition compile failures" by (@mikooochi)
  • 133adca - "fix(MusicService): persist favorite action for uncached songs #973" by (@mikooochi)
  • dbda7aa - "fix(LibraryPlaylistsScreen): preserve playlist spacing in pure black #967" by (@mikooochi)
  • 256c8fa - "fix(SongWithStats): preserve nullable artwork in stats #969" by (@mikooochi)
  • 2a67e4a - "feat(MusicRecognitionTileService): recognize device audio in background and recognize device audio in background" by (@mikooochi)
  • f9ca7b4 - "fix(DefaultCastPlaybackRepository): prevent crash on cast disconnect" by (@mikooochi)
  • dd5d62c - "fix(GenerateIconPackTask): correct adaptive icon scaling" by (@mikooochi)

N20260703

Choose a tag to compare

@github-actions github-actions released this 03 Jul 00:13

Release ArchiveTune Nightly artifact, generated on 2026/07/03 - 00:13:29 (UTC +0)

πŸ† MVP Committer

Congratulations to @rukamori for contributing 22 commit(s) in this release! πŸŽ‰

πŸ“Š Contribution Leaderboard

πŸ₯‡ @rukamori: 22 commit(s)
πŸ₯ˆ @mikooochi: 6 commit(s)
πŸ₯‰ @hijasongood: 5 commit(s)
πŸ‘€ @Mickael81: 2 commit(s)
πŸ‘€ @renovate[bot]: 1 commit(s)
πŸ‘€ @beebtw: 1 commit(s)

✨ Changelog

N20260702

Choose a tag to compare

@github-actions github-actions released this 02 Jul 01:27

Release ArchiveTune Nightly artifact, generated on 2026/07/02 - 01:26:50 (UTC +0)

πŸ† MVP Committer

Congratulations to @rukamori for contributing 37 commit(s) in this release! πŸŽ‰

πŸ“Š Contribution Leaderboard

πŸ₯‡ @rukamori: 37 commit(s)
πŸ₯ˆ @beebtw: 18 commit(s)
πŸ₯‰ @hijasongood: 13 commit(s)
πŸ‘€ @flue17: 12 commit(s)
πŸ‘€ @Mickael81: 11 commit(s)
πŸ‘€ @hsp1020: 10 commit(s)
πŸ‘€ @gallegonovato: 6 commit(s)
πŸ‘€ @Ur_lightmoon: 4 commit(s)
πŸ‘€ @ValteMCPE: 4 commit(s)
πŸ‘€ @Anonymous: 4 commit(s)
πŸ‘€ @Yar270: 3 commit(s)
πŸ‘€ @FullGa123: 3 commit(s)
πŸ‘€ @renovate[bot]: 2 commit(s)
πŸ‘€ @adam-adrian: 2 commit(s)
πŸ‘€ @MadameVulva: 2 commit(s)
πŸ‘€ @Davidzinco: 2 commit(s)
πŸ‘€ @sang765: 1 commit(s)
πŸ‘€ @andres2: 1 commit(s)
πŸ‘€ @AlmazzikDev: 1 commit(s)
πŸ‘€ @vintagezero: 1 commit(s)
πŸ‘€ @nekohepott: 1 commit(s)
πŸ‘€ @Nijeryaprensi: 1 commit(s)
πŸ‘€ @Myrdincx: 1 commit(s)
πŸ‘€ @radenya86: 1 commit(s)
πŸ‘€ @wynriu: 1 commit(s)

✨ Changelog

Read more

N20260701

Choose a tag to compare

@github-actions github-actions released this 01 Jul 00:14
a508e01

Release ArchiveTune Nightly artifact, generated on 2026/07/01 - 00:13:53 (UTC +0)

πŸ† MVP Committer

Congratulations to @rukamori for contributing 16 commit(s) in this release! πŸŽ‰

πŸ“Š Contribution Leaderboard

πŸ₯‡ @rukamori: 16 commit(s)
πŸ₯ˆ @sang765: 1 commit(s)

✨ Changelog

  • 9ea19ea - "fix(AppIconRepository): synchronize selected launcher task icon" by (@rukamori)
  • cf0f947 - "fix(HomeScreen): tighten section spacing" by (@rukamori)
  • d9c4146 - "patch ui issues" by (@rukamori)
  • 0790217 - "style(SearchScreen): set PrimaryTabRow containerColor to Color.Transparent" by (@rukamori)
  • 7983c77 - "fix(AccountSettings): allow saving current account" by (@rukamori)
  • 3d724c8 - "fix(IconScreen): derive community icon state in view model and cleanup resource" by (@rukamori)
  • 0d3ad0e - "feat(Screen): replace previous mesh with tonal backdrop" by (@rukamori)
  • 9f67409 - "feat(IconScreen): match icon selector design" by (@rukamori)
  • 4f5d9be - "fix(HomeScreen): reserve chip slot during loading" by (@rukamori)
  • 6b013d8 - "fix(process_icon_submission): sanitize SVG doctype declarations" by (@rukamori)
  • cec71e5 - "fix(GenerateIconPackTask): generate full adaptive launcher icons" by (@rukamori)
  • ca64405 - "feat(IconScreen): add GitHub author actions" by (@rukamori)
  • 50222ed - "fix(HomeScreen): prevent app bar overlap" by (@rukamori)
  • e8f877e - "Merge branch 'dev' of github-rukamori:ArchiveTuneApp/ArchiveTune into dev" by (@rukamori)
  • 93f5472 - "fix(MusicService): forward gvs token to extractor" by (@rukamori)
  • 0cef391 - "fix(process_icon_submission): accept JSON-only PR metadata" by (@rukamori)
  • a80a2bc - "Merge pull request #949 from sang765/fix/thumbnail-swap-music-video-only" by (@sang765)

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

N20260629

Choose a tag to compare

@github-actions github-actions released this 29 Jun 00:11

Release ArchiveTune Nightly artifact, generated on 2026/06/29 - 00:11:33 (UTC +0)

What changed on this release?

🐞 Bug Fixes

  • Replaced deprecated RenderScript blur with a pure Kotlin stack blur implementation to ensure long-term compatibility and stability.

🌟 MVP Highlight

@sang765: Successfully modernized the app's blurring logic by replacing deprecated RenderScript with a Kotlin-based solution, preventing future crashes and ensuring compatibility with newer Android versions.


πŸ† MVP Committer

Congratulations to @sang765 for contributing 1 commit(s) in this release! πŸŽ‰

✨ Changelog

N20260628

Choose a tag to compare

@github-actions github-actions released this 28 Jun 00:14

Release ArchiveTune Nightly artifact, generated on 2026/06/28 - 00:12:27 (UTC +0)

πŸ† MVP Committer

Congratulations to @sang765 for contributing 1 commit(s) in this release! πŸŽ‰

πŸ“Š Contribution Leaderboard

πŸ₯‡ @sang765: 1 commit(s)
πŸ₯ˆ @adam-adrian: 1 commit(s)
πŸ₯‰ @Davidzinco: 1 commit(s)

✨ Changelog