-
2a87a50b81
feat(android): offline-pool Home cards (audit v3 §4.3) — closes #28
bvandeusen
2026-05-28 07:52:55 -04:00
-
edbc805333
feat(android): system-playlist placeholder cards on Home (audit v3 §4.4, part of #28)
bvandeusen
2026-05-28 07:42:13 -04:00
-
8f5635c489
feat(android): in-app APK update install (audit v3 #25)
bvandeusen
2026-05-28 01:18:49 -04:00
-
5ce9ca9e62
fix(android): NowPlaying go-to-album/artist navigates atomically (audit v3 Bug-5)
bvandeusen
2026-05-28 01:09:33 -04:00
-
6a473661ba
fix(android) detekt: extract Home section helpers from HomeSuccessContent
bvandeusen
2026-05-28 01:01:43 -04:00
-
7f6aa9482a
feat(android): typed-confirm on AdminUsers delete (audit v3 §4.20)
bvandeusen
2026-05-28 00:57:30 -04:00
-
ca0fb70370
feat(android): TrackActions hidden-state reacts to SSE (audit v3 Bug-9/§4.12)
bvandeusen
2026-05-28 00:56:26 -04:00
-
1d1a27540a
feat(android): chunk Home Recently-Added into 25-album carousels (audit v3 §4.6)
bvandeusen
2026-05-28 00:51:50 -04:00
-
38102df929
feat(android): seed headers on detail-screen Loading state (audit v3 Bug-8)
bvandeusen
2026-05-28 00:51:02 -04:00
-
42a231e179
feat(android): variant pill + mini-cover crossfade + clipboard API (audit v3 §4.10/§4.16 tail)
bvandeusen
2026-05-28 00:47:49 -04:00
-
ef85f5fd0b
feat(android): EventsStream reconnect-with-backoff (audit v3 §4.13)
bvandeusen
2026-05-27 23:52:24 -04:00
-
8455922e8c
feat(android): QueueScreen rows show artist · album + duration (audit v3 §4.17)
bvandeusen
2026-05-27 23:51:03 -04:00
-
a7127e127f
test(android): LibraryViewModelTest expects ErrorCopy generic fallback
bvandeusen
2026-05-27 23:32:14 -04:00
-
3af8fa7207
feat(android): ErrorCopy — friendly error messages across the app (audit v3 §4.2)
bvandeusen
2026-05-27 23:25:19 -04:00
-
04ece65a07
feat(android): Home Most-Played plays the section + NowPlaying LikeButton (audit v3 §4.7 + §4.15)
bvandeusen
2026-05-27 22:26:15 -04:00
-
57d01d70ad
feat(android): PlaybackErrorReporter — surface ExoPlayer skip-on-error (audit v3 §4.1)
bvandeusen
2026-05-27 22:03:32 -04:00
-
bda69d33c9
fix(android): LikesRepository.toggleLike param is desiredState not liked
bvandeusen
2026-05-27 21:33:15 -04:00
-
1c05b561ba
fix(android) detekt: extract SettingsList helper
bvandeusen
2026-05-27 21:22:19 -04:00
-
dd7c5544bf
fix(android) detekt: extract SignOutConfirmDialog helper
bvandeusen
2026-05-27 21:15:45 -04:00
-
80b59aecf0
refactor(android): HomeRepository hydrates via MetadataProvider (audit v3 #24, slice 3/3)
bvandeusen
2026-05-27 21:11:25 -04:00
-
4dec61ba55
feat(android): FreshnessSweeper — keep cache warm without user pulls (audit v3 #24, slice 2/3)
bvandeusen
2026-05-27 21:10:14 -04:00
-
18b082def0
feat(android): MetadataProvider — cache-first reads + on-miss live fetch (audit v3 #24, slice 1/3)
bvandeusen
2026-05-27 21:08:59 -04:00
-
05c7d922c4
feat(android): LikedTab inline heart + Settings sign-out confirmation
bvandeusen
2026-05-27 21:02:41 -04:00
-
d8459a2674
fix(android): ArtistDetail Play button surfaces failures (audit v3 Bug-7)
bvandeusen
2026-05-27 20:59:52 -04:00
-
70ef15336e
fix(android): Search kebab + hide dead Liked-cap selector (audit v3 §4.8 + Bug-3)
bvandeusen
2026-05-27 20:58:54 -04:00
-
b0d0936c56
feat(android): Home per-section empty messages (audit v3 §4.5)
bvandeusen
2026-05-27 20:57:41 -04:00
-
cc6a8e2476
fix(android): cosmetic cleanup — admin badge, AdminLanding subtitle, NowPlaying clip
bvandeusen
2026-05-27 20:56:43 -04:00
-
3239cb976d
fix(android): shared LoadingCentered + LibraryScreen Retry actually retries
bvandeusen
2026-05-27 20:55:52 -04:00
-
040217cab6
fix(android): hydrate missing Home entities so sections actually render
bvandeusen
2026-05-27 20:37:39 -04:00
-
e8a7e48bd5
fix(android): Settings column wasn't scrolling
bvandeusen
2026-05-27 19:52:42 -04:00
-
7e1d4cde81
fix(android) detekt: extract VersionTooOldViewModel to its own file
bvandeusen
2026-05-27 19:09:36 -04:00
-
ae26d66987
feat(android): VersionGate banner (audit v2 #23)
bvandeusen
2026-05-27 18:47:00 -04:00
-
d20fab5459
fix(android) detekt: compareComponentWise via zip+firstOrNull (single return)
bvandeusen
2026-05-27 18:14:56 -04:00
-
5f31fdc300
feat(android): About card check-for-updates button (audit v2 #20, slice 2)
bvandeusen
2026-05-27 18:11:49 -04:00
-
2cb9f062c5
fix(android) detekt: rename ListenBrainz wire file + shrink ListenBrainzForm
bvandeusen
2026-05-27 17:36:58 -04:00
-
e3e9c48a0a
feat(android): ListenBrainz Settings card (audit v2 #20, slice 1)
bvandeusen
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)
bvandeusen
2026-05-27 17:06:45 -04:00
-
7082ebf9a5
fix(android) detekt: collapse hasUsableInternet to single return
bvandeusen
2026-05-27 16:57:03 -04:00
-
59a111914c
feat(android): connectivity observer + shell ConnectionErrorBanner (audit v2 #21)
bvandeusen
2026-05-27 16:29:49 -04:00
-
6a932405f8
feat(android): MiniPlayer → NowPlaying cover Hero transition (audit v2 #17, slice 2)
bvandeusen
2026-05-27 15:39:11 -04:00
-
01fdd2f380
feat(android): NowPlaying dominant-color gradient backdrop (audit v2 #17, slice 1)
bvandeusen
2026-05-27 15:08:00 -04:00
-
f9b0c267e3
fix(android): drop stray @Composable on SKELETON_PLAYLIST_ROWS const
bvandeusen
2026-05-27 14:58:30 -04:00
-
69179e0af3
fix(android) detekt: extract AlbumDetailStateContent helper
bvandeusen
2026-05-27 14:40:36 -04:00
-
89203fc4a1
feat(android): skeleton bodies on Library + detail screens (audit v2 #16, slice 2)
bvandeusen
2026-05-27 14:31:29 -04:00
-
43ee8f9a39
feat(android): skeleton tiles + Home cross-fade reveal (audit v2 #16, slice 1)
bvandeusen
2026-05-27 14:18:02 -04:00
-
f21f53d04a
fix(android) detekt: name LinkedHashMap load factor constant
bvandeusen
2026-05-27 14:06:34 -04:00
-
208a7d056b
feat(android): detail-screen seed extras (audit v2 #11)
bvandeusen
2026-05-27 13:33:11 -04:00
-
c816490061
fix(android) detekt: shrink AdminUsersScreen, real regenerate fix, suppress TooManyFunctions
bvandeusen
2026-05-27 13:14:34 -04:00
-
c2c9de26e7
feat(android) + fix detekt: AdminUsers Invites + Requests/PlaylistDetail refactors
bvandeusen
2026-05-27 13:01:13 -04:00
-
7500d283a8
feat(android): PlaylistDetail Regenerate button + refreshSystem endpoint
bvandeusen
2026-05-27 12:54:47 -04:00
-
49a5324be8
feat(android): Requests polish — Listen / cancel confirm / progress / kind avatar
bvandeusen
2026-05-27 12:52:25 -04:00
-
ec585997ae
feat(android): Search artists/albums as horizontal carousels
bvandeusen
2026-05-27 12:47:05 -04:00
-
a42a4df736
fix(android): silence JVM + Kotlin annotation-target warnings
bvandeusen
2026-05-27 11:51:36 -04:00
-
7250f1f0e0
fix(android): LibraryViewModelTest — pass PlayerController to ctor
bvandeusen
2026-05-27 11:48:44 -04:00
-
37043fb7e0
fix(android): Lucide.Shuffle in LibraryScreen — Shuffle is an extension
bvandeusen
2026-05-27 11:35:25 -04:00
-
de79cf0342
fix(android): detekt + silence JDK 22+ native-access warning
bvandeusen
2026-05-27 11:22:53 -04:00
-
92a9b55c12
feat(android): Library AppBar — Shuffle all button
bvandeusen
2026-05-27 11:12:11 -04:00
-
cd1c054f62
feat(android): AdminRequests — show requester username
bvandeusen
2026-05-27 11:10:50 -04:00
-
a7f1160b7e
feat(android): Hidden tab — cover thumb + relative-time stamp
bvandeusen
2026-05-27 11:09:27 -04:00
-
c29d1e0b3d
feat(android): now-playing row highlight on track surfaces
bvandeusen
2026-05-26 22:04:59 -04:00
-
225ff35c4c
fix(android): detekt LongMethod on MiniRow (62/60)
bvandeusen
2026-05-26 21:54:21 -04:00
-
a606267c1e
feat(android): MiniPlayer prev/next + inline scrubber + like button
bvandeusen
2026-05-26 21:35:51 -04:00
-
e82710dc0b
fix(android): MeRepository KDoc — actually remove the /api/me/* trap
bvandeusen
2026-05-26 21:24:23 -04:00
-
c74fa41fd0
fix(android): KSP MeRepository resolution — KDoc /api/me/* trap
bvandeusen
2026-05-26 21:24:05 -04:00
-
3c1d99037c
fix(android): MeApi — move request bodies inline (project pattern)
bvandeusen
2026-05-26 21:04:23 -04:00
-
a1b1eed740
fix(android): MeRepository resolution — match project Api+body pattern
bvandeusen
2026-05-26 21:03:56 -04:00
-
b1bcfe7fa3
fix(android): detekt ReturnCount on PasswordViewModel.change (3/2)
bvandeusen
2026-05-26 20:46:33 -04:00
-
ae45e8f32e
fix(android): actually wire ProfileCard + PasswordCard into Settings
bvandeusen
2026-05-26 20:15:27 -04:00
-
14c5262ed7
feat(android): Settings — Profile + Password cards
bvandeusen
2026-05-26 20:15:01 -04:00
-
f18b7d4658
feat(android): MeApi + MyProfile + MeRepository foundation
bvandeusen
2026-05-26 20:13:41 -04:00
-
f7c3bd2dcf
feat(android): Settings — My Requests + Admin tiles
bvandeusen
2026-05-26 19:59:20 -04:00
-
8a2279d5df
feat(android): NowPlaying drag-down-to-dismiss + close button
bvandeusen
2026-05-26 19:50:55 -04:00
-
29c676fcf8
fix(android): Requests cancel → MutationQueue offline fallback
bvandeusen
2026-05-26 19:49:30 -04:00
-
118c687847
fix(android): pull-to-refresh works on Empty/Error states
bvandeusen
2026-05-26 19:47:54 -04:00
-
4d7a4312db
fix(android): hide Storage prefetch + cache-liked toggles (no-ops)
bvandeusen
2026-05-26 19:44:50 -04:00
-
d99d317563
fix(android): silent-breakage cluster — search/artist/nowplaying
bvandeusen
2026-05-26 19:43:55 -04:00
-
622c90a2d5
fix(android): LibraryViewModelTest — pass SyncController to constructor
bvandeusen
2026-05-26 18:48:12 -04:00
-
b6a48a56e8
fix(android): detekt LongMethod on DiscoverScreen (63/60)
bvandeusen
2026-05-26 18:44:27 -04:00
-
cf07a2a5a8
feat(android): pull-to-refresh — library tabs + admin + hidden
bvandeusen
2026-05-26 18:25:50 -04:00
-
4ca10e2afa
feat(android): pull-to-refresh on Playlists / Discover / Requests
bvandeusen
2026-05-26 18:19:12 -04:00
-
e6e4f6dcf1
feat(android): PullToRefreshScaffold + Home / Album / Artist detail
bvandeusen
2026-05-26 18:16:02 -04:00
-
4a3215cc07
feat(android): MiniPlayer TrackActions kebab + shell-level snackbar
bvandeusen
2026-05-26 18:08:20 -04:00
-
c9bf0479ec
fix(android): StorageCard — simpler OutlinedButton + DropdownMenu
bvandeusen
2026-05-26 17:55:29 -04:00
-
5455cd5d80
fix(android): detekt TooManyFunctions on AuthStore (14/11)
bvandeusen
2026-05-26 16:53:39 -04:00
-
6ef08edd99
feat(android): Settings — Storage section UI + Sync / Clear actions
bvandeusen
2026-05-26 16:25:24 -04:00
-
b438772c96
feat(android): persist CacheSettings + PlayerModule reads from AuthStore
bvandeusen
2026-05-26 16:23:13 -04:00
-
9baed7e579
fix(android): AdminRequestsViewModel — missing imports for EventsStream
bvandeusen
2026-05-26 15:43:24 -04:00
-
525873fffc
feat(android): per-screen SSE subscribers — playlists / requests / admin
bvandeusen
2026-05-26 15:02:42 -04:00
-
3ce30bf19c
feat(android): LiveEventsDispatcher — cross-screen SSE invalidations
bvandeusen
2026-05-26 14:58:57 -04:00
-
29cfbd61b1
feat(android): EventsStream — SSE subscription to /api/events/stream
bvandeusen
2026-05-26 14:58:21 -04:00
-
a9b3c936f1
fix(android): detekt LongMethod on NowPlayingScreen (61/60)
bvandeusen
2026-05-26 14:53:55 -04:00
-
03a6dc4e5d
feat(android): shuffle + repeat on NowPlaying
bvandeusen
2026-05-26 14:45:29 -04:00
-
dc68156d98
fix(android): detekt — package naming, file rename, length caps
bvandeusen
2026-05-26 14:18:15 -04:00
-
4580f950e3
feat(android): PlayEventsReporter — wire mobile plays to server
bvandeusen
2026-05-26 14:04:23 -04:00
-
ddc4472e29
feat(android): MutationQueue PLAY_OFFLINE kind
bvandeusen
2026-05-26 14:02:52 -04:00
-
c396b673ac
feat(android): surface queue source on PlayerUiState
bvandeusen
2026-05-26 14:02:06 -04:00
-
92c128e388
feat(android): EventsApi + wire types for /api/events
bvandeusen
2026-05-26 14:01:44 -04:00
-
415200d8f0
feat(android): persist client_id for play-event reporting
bvandeusen
2026-05-26 14:01:21 -04:00
-
3f00006b74
feat(android): TrackActions kebab on NowPlaying with hideQueueActions
bvandeusen
2026-05-26 12:24:13 -04:00
-
965ec412d1
feat(android): TrackActions button on Playlist / Library tabs / Search
bvandeusen
2026-05-26 12:23:33 -04:00