Commit Graph

  • 1b223d3891 fix(flutter/test): skip drift tests pending libsqlite3 in CI runner image bvandeusen 2026-05-10 10:27:49 -04:00
  • 0d171490c3 fix(flutter): analyze errors after Plan B push bvandeusen 2026-05-10 10:18:38 -04:00
  • 5114a8118c feat(flutter): CachedIndicator + Download buttons + app startup wiring bvandeusen 2026-05-09 23:23:26 -04:00
  • fd4ce402d7 feat(flutter/settings): Storage section UI — usage, cap, prefetch, controls bvandeusen 2026-05-09 23:21:34 -04:00
  • 153e931490 feat(flutter/player): audio_handler reads from cache first; LockCaching fallback bvandeusen 2026-05-09 23:20:24 -04:00
  • 536350380f feat(flutter/cache): Prefetcher — queue-ahead pre-download window bvandeusen 2026-05-09 23:19:01 -04:00
  • ab58f3ffcb feat(flutter/cache): SyncController — token-based delta sync bvandeusen 2026-05-09 23:18:15 -04:00
  • 16669a0365 feat(flutter/cache): AudioCacheManager — pin/unpin/evict + tiered LRU bvandeusen 2026-05-09 23:17:14 -04:00
  • 2bcbb53c49 feat(flutter/cache): connectivityProvider + cacheSettingsProvider bvandeusen 2026-05-09 23:15:17 -04:00
  • 326b7008a9 feat(flutter/cache): drift schema + new deps + CI codegen step (#357 plan B) bvandeusen 2026-05-09 23:07:34 -04:00
  • 8d5c90e0ed fix(server): wrap defer tx.Rollback for errcheck + gofmt -s alignment bvandeusen 2026-05-09 22:47:25 -04:00
  • 9c7dec60a9 fix(server): go mod tidy after sync_test brings testify direct bvandeusen 2026-05-09 22:45:15 -04:00
  • 6fb6729beb feat(server): playlists service writes library_changes bvandeusen 2026-05-09 22:41:59 -04:00
  • e0c5789cee feat(server): like/unlike handlers write library_changes bvandeusen 2026-05-09 22:40:56 -04:00
  • 0fa7dc7982 feat(server): scanner + DeleteTrackFile write library_changes bvandeusen 2026-05-09 22:39:58 -04:00
  • 6bd8a15c7a feat(server): mount /api/library/sync route bvandeusen 2026-05-09 22:36:46 -04:00
  • 9bf4b504b3 feat(server): GET /api/library/sync endpoint bvandeusen 2026-05-09 22:36:26 -04:00
  • 3959c85111 feat(server): sync.LogChange helper + EntityType/Op constants bvandeusen 2026-05-09 22:29:51 -04:00
  • cb35133843 feat(server): library_changes log table + sqlc queries bvandeusen 2026-05-09 22:28:26 -04:00
  • 084c202654 fix(web/test): MobileNavDrawer inert + integrations Save mocks Test first bvandeusen 2026-05-09 21:21:04 -04:00
  • 3ffd9beca0 fix(web): preserve per-row aria-labels through RowActionsMenu + test fixes bvandeusen 2026-05-09 21:16:48 -04:00
  • 3f8a2c511a fix(web): MobileNavDrawer focus uses querySelector, not conditional bind:this bvandeusen 2026-05-09 20:26:44 -04:00
  • 1536860e59 fix(web): move {@const} blocks to immediate children of {#each} bvandeusen 2026-05-09 20:26:04 -04:00
  • 268e12a5eb feat(web): Modal overlay gets p-4 so max-w-md modals fit on phone bvandeusen 2026-05-09 20:21:52 -04:00
  • 16e0e98943 feat(web): mobile mechanical sweep — pointer-aware arrows, h3 dividers, modal safe-area bvandeusen 2026-05-09 20:21:38 -04:00
  • f03a0042e8 feat(web): wire RowActionsMenu in users admin page bvandeusen 2026-05-09 20:21:17 -04:00
  • e266a0f2dc feat(web): wire RowActionsMenu in requests + quarantine bvandeusen 2026-05-09 20:20:43 -04:00
  • e0cf527304 feat(web): RowActionsMenu generic primary + ⋮ for admin tables bvandeusen 2026-05-09 20:19:09 -04:00
  • ed6d0936ca feat(web): PlayerBar reflows to two-row layout below md bvandeusen 2026-05-09 20:18:32 -04:00
  • d5983433c5 feat(web): PlayerOverflowMenu — shuffle/repeat/queue/volume in a menu bvandeusen 2026-05-09 20:18:10 -04:00
  • df4cb434b2 feat(web): hamburger trigger + mobile drawer mount in Shell bvandeusen 2026-05-09 20:17:35 -04:00
  • 857a8621ec feat(web): MobileNavDrawer off-canvas nav for <md viewport bvandeusen 2026-05-09 20:17:17 -04:00
  • 7f395024a0 feat(web): mobileNav store for off-canvas drawer state bvandeusen 2026-05-09 20:16:38 -04:00
  • 84a638a41f fix(flutter): clear analyze --fatal-infos issues bvandeusen 2026-05-09 16:16:35 -04:00
  • dd848e76e8 feat(flutter/playlists): empty-state hint on empty playlist detail bvandeusen 2026-05-09 16:07:41 -04:00
  • 0dbb662b4c feat(flutter): search no-results copy mirrors design-system voice bvandeusen 2026-05-09 16:07:19 -04:00
  • ccebd98735 feat(flutter): empty-state copy mirrors web design-system voice bvandeusen 2026-05-09 16:06:58 -04:00
  • 231f1ddf9a test(flutter/theme): cover .dark()/.light() factories + back-compat alias bvandeusen 2026-05-09 15:50:51 -04:00
  • 143130eaae feat(flutter/settings): Appearance section with System/Light/Dark picker bvandeusen 2026-05-09 15:50:29 -04:00
  • 56f0557d94 feat(flutter): MinstrelApp watches themeMode + offers darkTheme bvandeusen 2026-05-09 15:47:41 -04:00
  • 6dc488652e feat(flutter/theme): themeModeProvider with secure-storage persistence bvandeusen 2026-05-09 15:47:00 -04:00
  • caa19f2d91 feat(flutter/theme): buildDarkTheme + buildLightTheme bvandeusen 2026-05-09 15:46:37 -04:00
  • 66ddd3c366 feat(flutter/theme): FabledSwordTheme.dark() + .light() factories bvandeusen 2026-05-09 15:46:01 -04:00
  • b1f62a0733 feat(flutter/theme): codegen emits dark + light + flat token classes bvandeusen 2026-05-09 15:45:40 -04:00
  • 25ff7afc33 feat(flutter): TrackRow renders TrackActionsButton by default bvandeusen 2026-05-09 13:43:40 -04:00
  • c8baaa5329 feat(flutter): wire TrackActionsButton into 4 surfaces bvandeusen 2026-05-09 13:43:12 -04:00
  • 36006d703d feat(flutter/track-actions): AddToPlaylistSheet picker bvandeusen 2026-05-09 13:42:19 -04:00
  • 2944288050 feat(flutter/track-actions): HideTrackSheet for reason + notes pick bvandeusen 2026-05-09 13:41:48 -04:00
  • 5f239f05a5 feat(flutter/track-actions): TrackActionsButton + TrackActionsSheet bvandeusen 2026-05-09 13:41:16 -04:00
  • 2499449c0b feat(flutter/player): playNext + enqueue + PlaylistsApi.appendTracks bvandeusen 2026-05-09 13:40:17 -04:00
  • 5159bcd3f4 feat(flutter/quarantine): MyQuarantineController + provider bvandeusen 2026-05-09 13:39:32 -04:00
  • fdaa1a0472 feat(flutter/api): QuarantineApi for flag/unflag bvandeusen 2026-05-09 13:38:52 -04:00
  • 534dafb044 feat(flutter/player): set MediaItem.artUri from local cover cache bvandeusen 2026-05-09 12:54:47 -04:00
  • d70075c426 feat(flutter/player): albumCoverCacheProvider + pass cache through configure bvandeusen 2026-05-09 12:54:05 -04:00
  • b6d6f22598 feat(flutter/player): AlbumCoverCache for lock-screen artwork bvandeusen 2026-05-09 12:53:20 -04:00
  • 78ad8a31e7 chore(flutter): promote path_provider to direct dep bvandeusen 2026-05-09 12:52:44 -04:00
  • d3a05520d3 fix(flutter): clear analyze --fatal-infos issues bvandeusen 2026-05-09 12:05:02 -04:00
  • 17ff69780d test(flutter/home): cover new home parity layout bvandeusen 2026-05-09 11:40:46 -04:00
  • a2f6bdb44f feat(flutter/home): mirror web home structurally bvandeusen 2026-05-09 11:40:12 -04:00
  • 8fb82d473d feat(flutter/widgets): HorizontalScrollRow skips header when title empty bvandeusen 2026-05-09 11:38:57 -04:00
  • a7fcafadda feat(flutter): DelayedLoading wrapper for skeleton-with-delay bvandeusen 2026-05-09 11:38:42 -04:00
  • 3ac8cc9363 feat(flutter/widgets): PlaylistCard + PlaylistPlaceholderCard bvandeusen 2026-05-09 11:38:19 -04:00
  • dccdb00bce feat(flutter/widgets): CompactTrackCard for dense home Most-played row bvandeusen 2026-05-09 11:37:40 -04:00
  • 078520f504 feat(flutter): systemPlaylistsStatusProvider bvandeusen 2026-05-09 11:36:29 -04:00
  • d872a30506 feat(flutter): SystemPlaylistsStatus model + endpoint method bvandeusen 2026-05-09 11:36:15 -04:00
  • 5613fec5ef fix(flutter): PlaylistsApi.list parses {owned, public} envelope bvandeusen 2026-05-09 11:35:34 -04:00
  • 28b07c7ef4 fix(flutter/android): permit cleartext to 127.0.0.1 for just_audio loopback proxy bvandeusen 2026-05-08 23:24:47 -04:00
  • 83df3773ae fix(flutter): cover URLs send Bearer auth + audio handler diag logging bvandeusen 2026-05-08 23:15:56 -04:00
  • 088e8f4bf8 test(web/admin): align Lidarr bootstrap tests with file conventions bvandeusen 2026-05-08 23:11:35 -04:00
  • c47ec6093f test(web/admin): cover Test-then-Save flow on /admin/integrations bvandeusen 2026-05-08 23:10:37 -04:00
  • bca8622640 feat(web/admin): Save runs Test first, dropdowns honor test response bvandeusen 2026-05-08 23:08:58 -04:00
  • abb384f479 feat(web/admin): LidarrTestResult success branch carries profile + folder lists bvandeusen 2026-05-08 23:08:02 -04:00
  • 22f03a5fe8 test(server/admin): cover new test endpoint response shape bvandeusen 2026-05-08 23:07:47 -04:00
  • 0bc17a85fb feat(server/admin): test endpoint returns profiles + folders on success bvandeusen 2026-05-08 23:07:15 -04:00
  • 602ef3bfdf fix(flutter): cover URLs resolve against server baseUrl + audio stream URL guard bvandeusen 2026-05-08 22:47:25 -04:00
  • 751c2878f7 fix(flutter/android): production manifest + AudioServiceActivity bvandeusen 2026-05-08 22:33:30 -04:00
  • 626fc7502c Merge pull request 'refactor(server): remove bootstrap admin path' (#34) from dev into main v2026.05.08.4 bvandeusen 2026-05-09 02:19:40 +00:00
  • c4cccea775 refactor(server): remove bootstrap admin path bvandeusen 2026-05-08 22:14:33 -04:00
  • 9bf3b8a2f2 Merge pull request 'feat(flutter): admin parity slice — requests, quarantine, users, invites' (#33) from dev into main v2026.05.08.3 bvandeusen 2026-05-09 02:07:59 +00:00
  • d5c8d316c5 fix(flutter): clear analyze --fatal-infos errors from admin parity slice bvandeusen 2026-05-08 22:02:14 -04:00
  • 9f6ceb1731 feat(flutter/admin): users screen with users + invites sections bvandeusen 2026-05-08 21:57:53 -04:00
  • afcaf56b9c feat(flutter/admin): user row + edit sheet (toggles, reset, delete) bvandeusen 2026-05-08 21:57:10 -04:00
  • 7d207e56f5 feat(flutter/admin): users + invites mutations bvandeusen 2026-05-08 21:56:34 -04:00
  • 3e905db906 feat(flutter/admin): quarantine screen + typed-confirm sheet bvandeusen 2026-05-08 21:56:00 -04:00
  • bd1bcab12b feat(flutter/admin): requests screen with approve/reject bvandeusen 2026-05-08 21:54:58 -04:00
  • 8bb192fe54 feat(flutter/admin): adminRequestsProvider with optimistic approve/reject bvandeusen 2026-05-08 21:54:05 -04:00
  • 408eed1f3d feat(flutter/settings): admin card visible to admins bvandeusen 2026-05-08 21:53:35 -04:00
  • 6b5d12f3a1 feat(flutter/admin): landing screen with section cards + counts bvandeusen 2026-05-08 21:53:03 -04:00
  • 372e7eca86 feat(flutter/admin): API providers + adminCountsProvider bvandeusen 2026-05-08 21:52:12 -04:00
  • 79d00ba001 feat(flutter/api): admin endpoint clients bvandeusen 2026-05-08 21:52:00 -04:00
  • 2b595c40cd feat(flutter): admin DTOs (request, quarantine item, user, invite) bvandeusen 2026-05-08 21:51:33 -04:00
  • dfc08650e7 feat(flutter): wire admin routes + isAdmin gate bvandeusen 2026-05-08 21:50:53 -04:00
  • fc0350cb96 feat(flutter): adopt MainAppBarActions in Search, Discover, Playlists, Settings bvandeusen 2026-05-08 21:50:29 -04:00
  • 5546787f78 feat(flutter): adopt MainAppBarActions in Home + Library bvandeusen 2026-05-08 21:49:30 -04:00
  • 6564d37a2a feat(flutter): MainAppBarActions widget with admin-gated overflow bvandeusen 2026-05-08 21:48:52 -04:00
  • 492460cf4a Merge pull request 'fix(web): /register reachable for bootstrap admin (closes #376)' (#32) from dev into main v2026.05.08.2 bvandeusen 2026-05-08 22:01:37 +00:00
  • c5dc3bd256 fix(web): exempt /register from auth guard so bootstrap admin can self-register bvandeusen 2026-05-08 17:59:43 -04:00
  • 3f2822dfc6 feat(flutter): discover screen — search Lidarr + create requests bvandeusen 2026-05-08 14:53:06 -04:00
  • dfbeed01a6 feat(flutter): settings screen + 4-icon home AppBar bvandeusen 2026-05-08 14:51:04 -04:00
  • 1ad67dbe59 fix(flutter/test): tolerate Riverpod 3's ProviderException wrapper bvandeusen 2026-05-08 14:43:31 -04:00