-
18b082def0
feat(android): MetadataProvider — cache-first reads + on-miss live fetch (audit v3 #24, slice 1/3)

bvandeusenandClaude Opus 4.7
2026-05-27 21:08:59 -04:00
-
05c7d922c4
feat(android): LikedTab inline heart + Settings sign-out confirmation

bvandeusenandClaude Opus 4.7
2026-05-27 21:02:41 -04:00
-
d8459a2674
fix(android): ArtistDetail Play button surfaces failures (audit v3 Bug-7)

bvandeusenandClaude Opus 4.7
2026-05-27 20:59:52 -04:00
-
70ef15336e
fix(android): Search kebab + hide dead Liked-cap selector (audit v3 §4.8 + Bug-3)

bvandeusenandClaude Opus 4.7
2026-05-27 20:58:54 -04:00
-
b0d0936c56
feat(android): Home per-section empty messages (audit v3 §4.5)

bvandeusenandClaude Opus 4.7
2026-05-27 20:57:41 -04:00
-
cc6a8e2476
fix(android): cosmetic cleanup — admin badge, AdminLanding subtitle, NowPlaying clip

bvandeusenandClaude Opus 4.7
2026-05-27 20:56:43 -04:00
-
3239cb976d
fix(android): shared LoadingCentered + LibraryScreen Retry actually retries

bvandeusenandClaude Opus 4.7
2026-05-27 20:55:52 -04:00
-
040217cab6
fix(android): hydrate missing Home entities so sections actually render

bvandeusenandClaude Opus 4.7
2026-05-27 20:37:39 -04:00
-
e8a7e48bd5
fix(android): Settings column wasn't scrolling

bvandeusenandClaude Opus 4.7
2026-05-27 19:52:42 -04:00
-
7e1d4cde81
fix(android) detekt: extract VersionTooOldViewModel to its own file

bvandeusenandClaude Opus 4.7
2026-05-27 19:09:36 -04:00
-
ae26d66987
feat(android): VersionGate banner (audit v2 #23)

bvandeusenandClaude Opus 4.7
2026-05-27 18:47:00 -04:00
-
d20fab5459
fix(android) detekt: compareComponentWise via zip+firstOrNull (single return)

bvandeusenandClaude Opus 4.7
2026-05-27 18:14:56 -04:00
-
5f31fdc300
feat(android): About card check-for-updates button (audit v2 #20, slice 2)

bvandeusenandClaude Opus 4.7
2026-05-27 18:11:49 -04:00
-
2cb9f062c5
fix(android) detekt: rename ListenBrainz wire file + shrink ListenBrainzForm

bvandeusenandClaude Opus 4.7
2026-05-27 17:36:58 -04:00
-
e3e9c48a0a
feat(android): ListenBrainz Settings card (audit v2 #20, slice 1)

bvandeusenandClaude Opus 4.7
2026-05-27 17:32:29 -04:00
-
e6bf99f580
feat(android): CoverPrefetcher — warm Coil cache with next track's cover (audit v2 #17, slice 3)

bvandeusenandClaude Opus 4.7
2026-05-27 17:06:45 -04:00
-
7082ebf9a5
fix(android) detekt: collapse hasUsableInternet to single return

bvandeusenandClaude Opus 4.7
2026-05-27 16:57:03 -04:00
-
59a111914c
feat(android): connectivity observer + shell ConnectionErrorBanner (audit v2 #21)

bvandeusenandClaude Opus 4.7
2026-05-27 16:29:49 -04:00
-
6a932405f8
feat(android): MiniPlayer → NowPlaying cover Hero transition (audit v2 #17, slice 2)

bvandeusenandClaude Opus 4.7
2026-05-27 15:39:11 -04:00
-
01fdd2f380
feat(android): NowPlaying dominant-color gradient backdrop (audit v2 #17, slice 1)

bvandeusenandClaude Opus 4.7
2026-05-27 15:08:00 -04:00
-
f9b0c267e3
fix(android): drop stray @Composable on SKELETON_PLAYLIST_ROWS const

bvandeusenandClaude Opus 4.7
2026-05-27 14:58:30 -04:00
-
69179e0af3
fix(android) detekt: extract AlbumDetailStateContent helper

bvandeusenandClaude Opus 4.7
2026-05-27 14:40:36 -04:00
-
89203fc4a1
feat(android): skeleton bodies on Library + detail screens (audit v2 #16, slice 2)

bvandeusenandClaude Opus 4.7
2026-05-27 14:31:29 -04:00
-
43ee8f9a39
feat(android): skeleton tiles + Home cross-fade reveal (audit v2 #16, slice 1)

bvandeusenandClaude Opus 4.7
2026-05-27 14:18:02 -04:00
-
f21f53d04a
fix(android) detekt: name LinkedHashMap load factor constant

bvandeusenandClaude Opus 4.7
2026-05-27 14:06:34 -04:00
-
208a7d056b
feat(android): detail-screen seed extras (audit v2 #11)

bvandeusenandClaude Opus 4.7
2026-05-27 13:33:11 -04:00
-
c816490061
fix(android) detekt: shrink AdminUsersScreen, real regenerate fix, suppress TooManyFunctions

bvandeusenandClaude Opus 4.7
2026-05-27 13:14:34 -04:00
-
c2c9de26e7
feat(android) + fix detekt: AdminUsers Invites + Requests/PlaylistDetail refactors

bvandeusenandClaude Opus 4.7
2026-05-27 13:01:13 -04:00
-
7500d283a8
feat(android): PlaylistDetail Regenerate button + refreshSystem endpoint

bvandeusenandClaude Opus 4.7
2026-05-27 12:54:47 -04:00
-
49a5324be8
feat(android): Requests polish — Listen / cancel confirm / progress / kind avatar

bvandeusenandClaude Opus 4.7
2026-05-27 12:52:25 -04:00
-
ec585997ae
feat(android): Search artists/albums as horizontal carousels

bvandeusenandClaude Opus 4.7
2026-05-27 12:47:05 -04:00
-
a42a4df736
fix(android): silence JVM + Kotlin annotation-target warnings

bvandeusenandClaude Opus 4.7
2026-05-27 11:51:36 -04:00
-
7250f1f0e0
fix(android): LibraryViewModelTest — pass PlayerController to ctor

bvandeusenandClaude Opus 4.7
2026-05-27 11:48:44 -04:00
-
37043fb7e0
fix(android): Lucide.Shuffle in LibraryScreen — Shuffle is an extension

bvandeusenandClaude Opus 4.7
2026-05-27 11:35:25 -04:00
-
de79cf0342
fix(android): detekt + silence JDK 22+ native-access warning

bvandeusenandClaude Opus 4.7
2026-05-27 11:22:53 -04:00
-
92a9b55c12
feat(android): Library AppBar — Shuffle all button

bvandeusenandClaude Opus 4.7
2026-05-27 11:12:11 -04:00
-
cd1c054f62
feat(android): AdminRequests — show requester username

bvandeusenandClaude Opus 4.7
2026-05-27 11:10:50 -04:00
-
a7f1160b7e
feat(android): Hidden tab — cover thumb + relative-time stamp

bvandeusenandClaude Opus 4.7
2026-05-27 11:09:27 -04:00
-
c29d1e0b3d
feat(android): now-playing row highlight on track surfaces

bvandeusenandClaude Opus 4.7
2026-05-26 22:04:59 -04:00
-
225ff35c4c
fix(android): detekt LongMethod on MiniRow (62/60)

bvandeusenandClaude Opus 4.7
2026-05-26 21:54:21 -04:00
-
a606267c1e
feat(android): MiniPlayer prev/next + inline scrubber + like button

bvandeusenandClaude Opus 4.7
2026-05-26 21:35:51 -04:00
-
e82710dc0b
fix(android): MeRepository KDoc — actually remove the /api/me/* trap

bvandeusenandClaude Opus 4.7
2026-05-26 21:24:23 -04:00
-
c74fa41fd0
fix(android): KSP MeRepository resolution — KDoc /api/me/* trap

bvandeusenandClaude Opus 4.7
2026-05-26 21:24:05 -04:00
-
3c1d99037c
fix(android): MeApi — move request bodies inline (project pattern)

bvandeusenandClaude Opus 4.7
2026-05-26 21:04:23 -04:00
-
a1b1eed740
fix(android): MeRepository resolution — match project Api+body pattern

bvandeusenandClaude Opus 4.7
2026-05-26 21:03:56 -04:00
-
b1bcfe7fa3
fix(android): detekt ReturnCount on PasswordViewModel.change (3/2)

bvandeusenandClaude Opus 4.7
2026-05-26 20:46:33 -04:00
-
ae45e8f32e
fix(android): actually wire ProfileCard + PasswordCard into Settings

bvandeusenandClaude Opus 4.7
2026-05-26 20:15:27 -04:00
-
14c5262ed7
feat(android): Settings — Profile + Password cards

bvandeusenandClaude Opus 4.7
2026-05-26 20:15:01 -04:00
-
f18b7d4658
feat(android): MeApi + MyProfile + MeRepository foundation

bvandeusenandClaude Opus 4.7
2026-05-26 20:13:41 -04:00
-
f7c3bd2dcf
feat(android): Settings — My Requests + Admin tiles

bvandeusenandClaude Opus 4.7
2026-05-26 19:59:20 -04:00
-
8a2279d5df
feat(android): NowPlaying drag-down-to-dismiss + close button

bvandeusenandClaude Opus 4.7
2026-05-26 19:50:55 -04:00
-
29c676fcf8
fix(android): Requests cancel → MutationQueue offline fallback

bvandeusenandClaude Opus 4.7
2026-05-26 19:49:30 -04:00
-
118c687847
fix(android): pull-to-refresh works on Empty/Error states

bvandeusenandClaude Opus 4.7
2026-05-26 19:47:54 -04:00
-
4d7a4312db
fix(android): hide Storage prefetch + cache-liked toggles (no-ops)

bvandeusenandClaude Opus 4.7
2026-05-26 19:44:50 -04:00
-
d99d317563
fix(android): silent-breakage cluster — search/artist/nowplaying

bvandeusenandClaude Opus 4.7
2026-05-26 19:43:55 -04:00
-
622c90a2d5
fix(android): LibraryViewModelTest — pass SyncController to constructor

bvandeusenandClaude Opus 4.7
2026-05-26 18:48:12 -04:00
-
b6a48a56e8
fix(android): detekt LongMethod on DiscoverScreen (63/60)

bvandeusenandClaude Opus 4.7
2026-05-26 18:44:27 -04:00
-
cf07a2a5a8
feat(android): pull-to-refresh — library tabs + admin + hidden

bvandeusenandClaude Opus 4.7
2026-05-26 18:25:50 -04:00
-
4ca10e2afa
feat(android): pull-to-refresh on Playlists / Discover / Requests

bvandeusenandClaude Opus 4.7
2026-05-26 18:19:12 -04:00
-
e6e4f6dcf1
feat(android): PullToRefreshScaffold + Home / Album / Artist detail

bvandeusenandClaude Opus 4.7
2026-05-26 18:16:02 -04:00
-
4a3215cc07
feat(android): MiniPlayer TrackActions kebab + shell-level snackbar

bvandeusenandClaude Opus 4.7
2026-05-26 18:08:20 -04:00
-
c9bf0479ec
fix(android): StorageCard — simpler OutlinedButton + DropdownMenu

bvandeusenandClaude Opus 4.7
2026-05-26 17:55:29 -04:00
-
5455cd5d80
fix(android): detekt TooManyFunctions on AuthStore (14/11)

bvandeusenandClaude Opus 4.7
2026-05-26 16:53:39 -04:00
-
6ef08edd99
feat(android): Settings — Storage section UI + Sync / Clear actions

bvandeusenandClaude Opus 4.7
2026-05-26 16:25:24 -04:00
-
b438772c96
feat(android): persist CacheSettings + PlayerModule reads from AuthStore

bvandeusenandClaude Opus 4.7
2026-05-26 16:23:13 -04:00
-
9baed7e579
fix(android): AdminRequestsViewModel — missing imports for EventsStream

bvandeusenandClaude Opus 4.7
2026-05-26 15:43:24 -04:00
-
525873fffc
feat(android): per-screen SSE subscribers — playlists / requests / admin

bvandeusenandClaude Opus 4.7
2026-05-26 15:02:42 -04:00
-
3ce30bf19c
feat(android): LiveEventsDispatcher — cross-screen SSE invalidations

bvandeusenandClaude Opus 4.7
2026-05-26 14:58:57 -04:00
-
29cfbd61b1
feat(android): EventsStream — SSE subscription to /api/events/stream

bvandeusenandClaude Opus 4.7
2026-05-26 14:58:21 -04:00
-
a9b3c936f1
fix(android): detekt LongMethod on NowPlayingScreen (61/60)

bvandeusenandClaude Opus 4.7
2026-05-26 14:53:55 -04:00
-
03a6dc4e5d
feat(android): shuffle + repeat on NowPlaying

bvandeusenandClaude Opus 4.7
2026-05-26 14:45:29 -04:00
-
dc68156d98
fix(android): detekt — package naming, file rename, length caps

bvandeusenandClaude Opus 4.7
2026-05-26 14:18:15 -04:00
-
4580f950e3
feat(android): PlayEventsReporter — wire mobile plays to server

bvandeusenandClaude Opus 4.7
2026-05-26 14:04:23 -04:00
-
ddc4472e29
feat(android): MutationQueue PLAY_OFFLINE kind

bvandeusenandClaude Opus 4.7
2026-05-26 14:02:52 -04:00
-
c396b673ac
feat(android): surface queue source on PlayerUiState

bvandeusenandClaude Opus 4.7
2026-05-26 14:02:06 -04:00
-
92c128e388
feat(android): EventsApi + wire types for /api/events

bvandeusenandClaude Opus 4.7
2026-05-26 14:01:44 -04:00
-
415200d8f0
feat(android): persist client_id for play-event reporting

bvandeusenandClaude Opus 4.7
2026-05-26 14:01:21 -04:00
-
3f00006b74
feat(android): TrackActions kebab on NowPlaying with hideQueueActions

bvandeusenandClaude Opus 4.7
2026-05-26 12:24:13 -04:00
-
965ec412d1
feat(android): TrackActions button on Playlist / Library tabs / Search

bvandeusenandClaude Opus 4.7
2026-05-26 12:23:33 -04:00
-
d0ff607994
feat(android): TrackActions overflow menu + first surface (AlbumDetail)

bvandeusenandClaude Opus 4.7
2026-05-26 12:18:51 -04:00
-
55aba8f916
feat(android): QuarantineRepository.flag + HideTrackSheet

bvandeusenandClaude Opus 4.7
2026-05-26 12:16:00 -04:00
-
dd42bd5121
feat(android): PlaylistsRepository.appendTrack + AddToPlaylistSheet

bvandeusenandClaude Opus 4.7
2026-05-26 12:15:08 -04:00
-
1f4a5e08bd
feat(android): MutationQueue PLAYLIST_APPEND + QUARANTINE_FLAG kinds

bvandeusenandClaude Opus 4.7
2026-05-26 12:13:27 -04:00
-
ac1832da43
feat(android): PlayerController playNext/enqueue/startRadio + RadioApi

bvandeusenandClaude Opus 4.7
2026-05-26 12:12:12 -04:00
-
f628ae4479
fix(android): LikedTab tracks tap to play

bvandeusenandClaude Opus 4.7
2026-05-26 10:31:45 -04:00
-
484ad6c496
fix(android): MainAppBarActions sources isAdmin internally

bvandeusenandClaude Opus 4.7
2026-05-26 10:31:38 -04:00
-
0927b9177b
fix(android): extract MiniCover from MiniPlayer body (detekt LongMethod)

bvandeusenandClaude Opus 4.7
2026-05-26 08:26:09 -04:00
-
f3ee182cd7
feat(android): covers on AlbumDetail header + MiniPlayer + NowPlaying

bvandeusenandClaude Opus 4.7
2026-05-26 08:22:42 -04:00
-
283706c4f8
feat(android): AlbumCard cover fallback for cached-only albums

bvandeusenandClaude Opus 4.7
2026-05-26 08:17:08 -04:00
-
2c640b897a
feat(android): shared TrackCoverThumb + cover art on Playlist/History rows

bvandeusenandClaude Opus 4.7
2026-05-26 08:08:27 -04:00
-
41c6258b05
feat(android): track cover thumbnails on Home Most-Played + Liked tracks

bvandeusenandClaude Opus 4.7
2026-05-26 01:46:53 -04:00
-
a85a95507c
fix(android): AlbumDetail shuffle button actually shuffles

bvandeusenandClaude Opus 4.7
2026-05-26 01:01:31 -04:00
-
802281c7c5
fix(android): don't pre-fill localhost default in ServerUrl field

bvandeusenandClaude Opus 4.7
2026-05-26 00:50:44 -04:00
-
95c5067dbf
fix(android): include modified files for Phase 20 (previous commit missed them)

bvandeusenandClaude Opus 4.7
2026-05-26 00:44:38 -04:00
-
45e2248970
feat(android): Phase 20 — Settings theme picker (System / Light / Dark)

bvandeusenandClaude Opus 4.7
2026-05-26 00:43:47 -04:00
-
2851f8c694
chore(android): untrack local Gradle/build cache, extend .gitignore

bvandeusenandClaude Opus 4.7
2026-05-26 00:35:56 -04:00
-
0b72827682
fix(android): unblock first device test — auth contrast + dynamic base URL

bvandeusenandClaude Opus 4.7
2026-05-26 00:27:05 -04:00
-
0415b5ccc3
fix(android): suppress SwallowedException on the 3 dispatch catches

bvandeusenandClaude Opus 4.7
2026-05-25 23:32:52 -04:00
-
2f205eb0d9
feat(android): Phase 18 — MutationReplayer drains offline write queue

bvandeusenandClaude Opus 4.7
2026-05-25 23:11:49 -04:00
-
a87ec770a5
fix(android): rename state_ → internal (detekt VariableNaming)

bvandeusenandClaude Opus 4.7
2026-05-25 22:44:44 -04:00