Commit Graph

  • d0ff607994 feat(android): TrackActions overflow menu + first surface (AlbumDetail) bvandeusen 2026-05-26 12:18:51 -04:00
  • 55aba8f916 feat(android): QuarantineRepository.flag + HideTrackSheet bvandeusen 2026-05-26 12:16:00 -04:00
  • dd42bd5121 feat(android): PlaylistsRepository.appendTrack + AddToPlaylistSheet bvandeusen 2026-05-26 12:15:08 -04:00
  • 1f4a5e08bd feat(android): MutationQueue PLAYLIST_APPEND + QUARANTINE_FLAG kinds bvandeusen 2026-05-26 12:13:27 -04:00
  • ac1832da43 feat(android): PlayerController playNext/enqueue/startRadio + RadioApi bvandeusen 2026-05-26 12:12:12 -04:00
  • f628ae4479 fix(android): LikedTab tracks tap to play bvandeusen 2026-05-26 10:31:45 -04:00
  • 484ad6c496 fix(android): MainAppBarActions sources isAdmin internally bvandeusen 2026-05-26 10:31:38 -04:00
  • 0927b9177b fix(android): extract MiniCover from MiniPlayer body (detekt LongMethod) bvandeusen 2026-05-26 08:26:09 -04:00
  • f3ee182cd7 feat(android): covers on AlbumDetail header + MiniPlayer + NowPlaying bvandeusen 2026-05-26 08:22:42 -04:00
  • 283706c4f8 feat(android): AlbumCard cover fallback for cached-only albums bvandeusen 2026-05-26 08:17:08 -04:00
  • 2c640b897a feat(android): shared TrackCoverThumb + cover art on Playlist/History rows bvandeusen 2026-05-26 08:08:27 -04:00
  • 41c6258b05 feat(android): track cover thumbnails on Home Most-Played + Liked tracks bvandeusen 2026-05-26 01:46:53 -04:00
  • a85a95507c fix(android): AlbumDetail shuffle button actually shuffles bvandeusen 2026-05-26 01:01:31 -04:00
  • 802281c7c5 fix(android): don't pre-fill localhost default in ServerUrl field bvandeusen 2026-05-26 00:50:44 -04:00
  • 95c5067dbf fix(android): include modified files for Phase 20 (previous commit missed them) bvandeusen 2026-05-26 00:44:38 -04:00
  • 45e2248970 feat(android): Phase 20 — Settings theme picker (System / Light / Dark) bvandeusen 2026-05-26 00:43:47 -04:00
  • 2851f8c694 chore(android): untrack local Gradle/build cache, extend .gitignore bvandeusen 2026-05-26 00:35:56 -04:00
  • 0b72827682 fix(android): unblock first device test — auth contrast + dynamic base URL bvandeusen 2026-05-26 00:27:05 -04:00
  • 0415b5ccc3 fix(android): suppress SwallowedException on the 3 dispatch catches bvandeusen 2026-05-25 23:32:52 -04:00
  • 2f205eb0d9 feat(android): Phase 18 — MutationReplayer drains offline write queue bvandeusen 2026-05-25 23:11:49 -04:00
  • a87ec770a5 fix(android): rename state_ → internal (detekt VariableNaming) bvandeusen 2026-05-25 22:44:44 -04:00
  • 5869ec9505 feat(android): Phase 17b — persist user identity across cold restart bvandeusen 2026-05-25 22:40:09 -04:00
  • 16b3a1e9e2 feat(android): Phase 17a — PlaylistDetail per-track LikeButton bvandeusen 2026-05-25 22:31:06 -04:00
  • f0278ed2bf feat(android): Phase 16 — Queue screen + View-queue affordance on NowPlaying bvandeusen 2026-05-25 21:30:06 -04:00
  • b342a7c41b fix(android): suppress TooManyFunctions on DatabaseModule bvandeusen 2026-05-25 21:12:38 -04:00
  • 118f3d31f3 fix(android): add Hilt @Provides for SyncMetadataDao bvandeusen 2026-05-25 20:57:21 -04:00
  • 66dfc473db feat(android): Phase 15 — SyncController for /api/library/sync delta sync bvandeusen 2026-05-25 19:39:22 -04:00
  • 7dfe6f1b69 feat(android): Phase 14 — Like buttons on Album + Artist detail bvandeusen 2026-05-25 18:46:59 -04:00
  • d96f835b5b feat(android): Phase 13 — Search screen + /api/search wiring bvandeusen 2026-05-25 18:23:09 -04:00
  • de1175c478 feat(android): Phase 12 — ArtistDetail screen + closes phase bvandeusen 2026-05-25 17:27:50 -04:00
  • 72f36c0da8 feat(android): Phase 12 — AlbumDetail screen bvandeusen 2026-05-25 12:54:49 -04:00
  • cb4b411ab6 feat(android): Phase 11 Commit C — Settings screen + sign-out bvandeusen 2026-05-25 12:42:22 -04:00
  • 5697bfeedf feat(android): Phase 11 Commit B — ServerUrl entry + auth-gated startDestination bvandeusen 2026-05-25 12:31:22 -04:00
  • df026d8e74 fix(android): split LoginScreen into LoginForm + SubmitButton (detekt LongMethod) bvandeusen 2026-05-25 11:15:51 -04:00
  • d6b8c20a17 feat(android): Phase 11 Commit A — AuthController + Login screen bvandeusen 2026-05-25 02:03:41 -04:00
  • d6301f5bdc fix(android): extract PendingDialogs from AdminUsersScreen (detekt LongMethod) bvandeusen 2026-05-25 01:48:01 -04:00
  • 2e8124d496 feat(android): Phase 10 Commit D3 — Admin Users + Admin landing bvandeusen 2026-05-25 01:41:43 -04:00
  • 9d17636a39 feat(android): Phase 10 Commit D2 — Admin Quarantine screen bvandeusen 2026-05-25 01:32:16 -04:00
  • 2a55e6a647 feat(android): Phase 10 Commit D1 — Admin Requests screen (approve/reject) bvandeusen 2026-05-25 01:16:07 -04:00
  • 5108db6ad7 fix(android): rename Quarantine files to match single decl (detekt) bvandeusen 2026-05-25 01:06:51 -04:00
  • 75bdb635d0 feat(android): Phase 10 Commit C — Hidden tab (quarantine list + unflag) bvandeusen 2026-05-25 00:52:09 -04:00
  • 2b4226ee6a feat(android): Phase 10 Commit B — Requests screen (your requests + cancel) bvandeusen 2026-05-25 00:33:56 -04:00
  • 43d436573c fix(android): drop AvatarShape enum (detekt MatchingDeclarationName) bvandeusen 2026-05-25 00:25:29 -04:00
  • 786a73dad7 fix(android): extract Discover tiles to DiscoverTiles.kt (detekt TooManyFunctions) bvandeusen 2026-05-25 00:21:42 -04:00
  • f573512940 fix(android): split DiscoverScreen — VM into its own file (detekt TooManyFunctions) bvandeusen 2026-05-25 00:16:38 -04:00
  • 734fc16ee6 feat(android): Phase 10 — Discover screen (Lidarr search + suggestions + request create) bvandeusen 2026-05-25 00:11:14 -04:00
  • d10f13c9b1 fix(android): collapse relativeTime returns to one branch (detekt ReturnCount) bvandeusen 2026-05-24 23:56:11 -04:00
  • 9d63030961 feat(android): Phase 9 — history tab + /api/me/history wiring bvandeusen 2026-05-24 23:14:33 -04:00
  • c26c2bde10 fix(android): detekt — suppress SwallowedException + rename LikesWire bvandeusen 2026-05-24 23:04:12 -04:00
  • d047d6e046 feat(android): Phase 8 — likes write path + mutation queue + Liked tab bvandeusen 2026-05-24 22:39:58 -04:00
  • 6727bed35e fix(android): thread navController into inShellDetail extension bvandeusen 2026-05-24 22:28:36 -04:00
  • 5ef4d3454c fix(android): close HomeViewModel class brace bvandeusen 2026-05-24 22:12:21 -04:00
  • f6057747ba feat(android): Phase 7 — playlist detail screen + Home playlists row bvandeusen 2026-05-24 21:51:53 -04:00
  • b855009ea0 feat(android): Phase 7 — playlists list (data layer + screen + nav) bvandeusen 2026-05-24 21:26:26 -04:00
  • df9ae2db77 fix(android): name Library tab indices (detekt MagicNumber) bvandeusen 2026-05-24 20:59:30 -04:00
  • 6062233c63 feat(android): Library 5-tab restructure (sub-task 4) bvandeusen 2026-05-24 20:40:41 -04:00
  • 3123e4350e fix(android): add Hilt @Provides for CachedHomeIndexDao bvandeusen 2026-05-24 20:24:54 -04:00
  • 9ab862a2e1 feat(android): real Home screen with /api/home/index sections (sub-task 3) bvandeusen 2026-05-24 20:18:48 -04:00
  • 6c8694db2e fix(android): rename Lucide.MoreVertical → EllipsisVertical bvandeusen 2026-05-24 14:08:29 -04:00
  • c33c1178ab fix(android): split MinstrelNavGraph into NavGraphBuilder extensions bvandeusen 2026-05-24 13:26:55 -04:00
  • ab05b7ab7b refactor(android): drop bottom nav for AppBar+actions+kebab; shell wrapper (sub-task 2) bvandeusen 2026-05-24 12:55:44 -04:00
  • 2ab20e3958 refactor(android): split tokens into Dark/Light/Flat + LocalFabledSwordTheme + light mode bvandeusen 2026-05-24 12:40:17 -04:00
  • c7dc525157 fix(android): use explicit serializer form for encodeToString bvandeusen 2026-05-24 10:58:46 -04:00
  • ae1fa4df98 fix(android): explicit type param on json.encodeToString in ResumeController bvandeusen 2026-05-23 23:35:37 -04:00
  • e2f87ce940 style(android): consolidate ResumeController.restore returns into runCatching bvandeusen 2026-05-23 23:27:06 -04:00
  • 2a28d22a2a feat(android): ResumeController + persist last queue (M8 phase 6.5 — closes Phase 6) bvandeusen 2026-05-23 23:22:59 -04:00
  • 5736bff174 style(android): extract CoverPlaceholder + TrackHeader to satisfy detekt LongMethod bvandeusen 2026-05-23 23:00:54 -04:00
  • 079fc1e4ed feat(android): PlayerViewModel + MiniPlayer + NowPlayingScreen (M8 phase 6.4) bvandeusen 2026-05-23 22:55:29 -04:00
  • 6aec03fc02 style(android): clear detekt findings in PlayerController bvandeusen 2026-05-23 22:22:14 -04:00
  • 4fde634074 feat(android): PlayerController + PlayerUiState (M8 phase 6.3) bvandeusen 2026-05-23 22:06:46 -04:00
  • 85b8452b78 feat(android): MinstrelPlayerService — Media3 MediaSessionService (M8 phase 6.2) bvandeusen 2026-05-23 12:26:47 -04:00
  • 327ecb6757 style(android): rename package audio_cache -> audiocache bvandeusen 2026-05-23 12:16:23 -04:00
  • f031b186ba feat(android): PlayerFactory + CacheConfig + Media3 1.10.1 bump (M8 phase 6.1) bvandeusen 2026-05-23 11:23:36 -04:00
  • 0742b45e3d feat(android): nav graph + bottom bar (M8 phase 5.5 — closes Phase 5) bvandeusen 2026-05-23 11:04:44 -04:00
  • 18bca6c2fd fix(android): switch Lucide artifact android -> cmp for ImageVector API bvandeusen 2026-05-23 10:43:00 -04:00
  • e934da30a1 feat(android): Library Compose screens + Coil OkHttp sharing + Lucide (M8 phase 5.4) bvandeusen 2026-05-23 10:38:08 -04:00
  • b03d4a86e7 fix(android): drop Loading-state assertions in LibraryViewModelTest bvandeusen 2026-05-22 23:19:52 -04:00
  • 9962ec981c fix(android): @Provides for the three library DAOs LibraryRepository needs bvandeusen 2026-05-22 23:12:58 -04:00
  • 0ea0fbf8be feat(android): LibraryViewModel + UiState + MainDispatcherExtension (M8 phase 5.3) bvandeusen 2026-05-22 22:38:59 -04:00
  • 9eaaf93f23 feat(android): LibraryRepository + domain types + mappers (M8 phase 5.2) bvandeusen 2026-05-22 22:27:47 -04:00
  • d08c937f3b fix(android): KDoc nested-comment trap from /api/* literal bvandeusen 2026-05-22 21:41:37 -04:00
  • 02175b193b fix(android): drop provideLibraryApi @Provides — repos construct from Retrofit bvandeusen 2026-05-22 21:05:53 -04:00
  • fe878a392c fix(android): split wire types — one declaration per file bvandeusen 2026-05-22 20:57:04 -04:00
  • ee72459881 fix(android): use retrofit.create<T>() extension in provideLibraryApi bvandeusen 2026-05-22 18:03:59 -04:00
  • a4c20816bc feat(android): LibraryApi Retrofit interface + wire types (M8 phase 5.1) bvandeusen 2026-05-22 17:56:10 -04:00
  • 156162e3ac feat(android): port auth_session + promote AuthStore to Room (M8 4.2 slice 10) bvandeusen 2026-05-22 17:21:42 -04:00
  • 954bb8963f chore(android): extend detekt TooManyFunctions exception to @Database bvandeusen 2026-05-22 16:45:47 -04:00
  • e42f2bf525 feat(android): port cached_home_index (M8 4.2 slice 9) bvandeusen 2026-05-22 16:40:37 -04:00
  • f3a0c44460 feat(android): port cached_resume_state + fix CacheSource enum (M8 4.2 slice 8) bvandeusen 2026-05-22 16:35:10 -04:00
  • 0b1ccd59b1 feat(android): port cached_mutations (M8 4.2 slice 6) bvandeusen 2026-05-22 15:02:02 -04:00
  • 25a66f7d2e chore(android): allow @Dao interfaces above detekt's TooManyFunctions threshold bvandeusen 2026-05-22 14:56:53 -04:00
  • e63034ec9c feat(android): port audio_cache_index (M8 4.2 slice 5) bvandeusen 2026-05-22 14:53:57 -04:00
  • c18ad19418 feat(android): port cached_quarantine_mine (M8 4.2 slice 4) bvandeusen 2026-05-22 14:16:11 -04:00
  • 4b38623229 feat(android): port cached_playlists + cached_playlist_tracks (M8 4.2 slice 3) bvandeusen 2026-05-22 14:10:05 -04:00
  • 7b55f586ac feat(android): port cached_likes (M8 4.2 slice 2) bvandeusen 2026-05-22 14:03:42 -04:00
  • 17a3e7dd4f feat(android): port cached_artists / cached_albums / cached_tracks (M8 4.2 slice 1) bvandeusen 2026-05-22 13:28:54 -04:00
  • a10079e8ef feat(android): Room foundation — AppDatabase + TypeConverters + Gradle plugin bvandeusen 2026-05-22 13:22:11 -04:00
  • 4cbbdbfef9 chore(android): audit-response wave — JUnit launcher, compileSdk 36, CC warn, image :36, Gradle cache bvandeusen 2026-05-22 10:41:00 -04:00
  • 41af466621 fix(android): add kotlin-test test dep for assertEquals/assertNull bvandeusen 2026-05-22 10:06:53 -04:00
  • 53f69fb1f5 feat(android): NetworkModule + AuthCookieInterceptor + AuthStore placeholder bvandeusen 2026-05-22 09:00:41 -04:00