This website requires JavaScript.
2500914498
fix(flutter): persistent release signing key via CI secret
bvandeusen
2026-05-11 14:22:32 -04:00
fb811804d2
Merge pull request 'release v2026.05.11.1: Flutter caching, navigation, and player polish' (#39 ) from dev into main
v2026.05.11.1
bvandeusen
2026-05-11 17:47:41 +00:00
0134281b8c
fix(flutter): CI analyze + center title in full player
bvandeusen
2026-05-11 13:01:52 -04:00
4dbb3190ff
fix(flutter): player updates on track change + kebab artist nav + Start radio
bvandeusen
2026-05-11 12:32:43 -04:00
2299824ad9
fix(flutter): system playlist tap loads tracks (mirror album refetch fix)
bvandeusen
2026-05-11 12:26:17 -04:00
a77d4ceac0
fix(flutter): library Artists tab 404 + Albums tab 3-up grid
bvandeusen
2026-05-11 12:21:24 -04:00
11c40c6aca
feat(flutter): SWR everywhere + nav hydration + cold-start home skeleton
bvandeusen
2026-05-11 12:12:44 -04:00
37134950a5
Merge pull request 'release: M5-M7 server + web + Flutter, plus Flutter v1 polish' (#38 ) from dev into main
v2026.05.11.0
bvandeusen
2026-05-11 15:21:58 +00:00
f4d07ef9a1
diag(flutter): trace playlist provider — wire vs drift vs filter
bvandeusen
2026-05-11 11:07:24 -04:00
74cc76b369
fix(flutter): preserve dev-version safety net + update version tests
bvandeusen
2026-05-11 10:48:06 -04:00
a65474284a
fix(flutter): satisfy curly_braces_in_flow_control_structures lint
bvandeusen
2026-05-11 10:36:40 -04:00
2f67c26a45
fix(flutter): pubspec version must be 3-part semver
bvandeusen
2026-05-11 10:31:14 -04:00
ab8a86e794
fix(flutter): update banner false positive + lock-screen control routing
bvandeusen
2026-05-11 10:27:04 -04:00
727a0760da
fix(flutter): refetch album when row exists but tracks don't
bvandeusen
2026-05-11 08:52:45 -04:00
983a9d92be
fix(flutter): tighter track row + missing artist in mini player + hide redundant artist on artist page
bvandeusen
2026-05-11 08:47:50 -04:00
21ab0d78bb
fix(flutter): artist albums grid — 3 per row, title wraps, no overflow
bvandeusen
2026-05-11 08:43:58 -04:00
107abda97e
fix(flutter): album/artist covers in artist detail + tighter grid
bvandeusen
2026-05-11 08:39:41 -04:00
2b033131e0
fix(flutter): mini player heart/kebab span title+artist height
bvandeusen
2026-05-11 08:36:39 -04:00
f88e82a777
fix(flutter): album/artist detail covers + cacheFirst tracing for hangs
bvandeusen
2026-05-11 08:35:02 -04:00
3c0806d8fd
diag(flutter): time-box connectivity check + trace album cold-cache path
bvandeusen
2026-05-11 08:28:32 -04:00
4621846ec4
fix(flutter): seed connectivityProvider with initial value (unhang detail screens)
bvandeusen
2026-05-11 08:21:55 -04:00
d4d936ee57
fix(flutter): mini player art fills its 48dp box (BoxFit.cover)
bvandeusen
2026-05-11 08:17:17 -04:00
b6b73fdd0c
fix(flutter): live seek bar (~200ms) + breathing room above controls
bvandeusen
2026-05-11 08:15:58 -04:00
2a5b6970e9
feat(flutter): show album name beneath artist in full player
bvandeusen
2026-05-11 08:12:29 -04:00
59427bcf2f
fix(flutter): full player unmounts the shell — no doubled player UI
bvandeusen
2026-05-11 08:09:53 -04:00
163c1174db
feat(flutter): mini ↔ full player transition + flesh out NowPlayingScreen
bvandeusen
2026-05-11 08:06:38 -04:00
3162fedd3b
fix(flutter): card taps via Material+InkWell, not GestureDetector
bvandeusen
2026-05-11 07:57:10 -04:00
a05a279508
fix(flutter): strip duplicate status-bar inset when update banner shows
bvandeusen
2026-05-11 07:52:45 -04:00
a3985f1138
fix(flutter): cover images — wait for token, file:// loader, graceful errors
bvandeusen
2026-05-11 07:44:28 -04:00
7cabe4efef
fix(flutter): player bar — title visible, controls stacked, no overflow
bvandeusen
2026-05-11 07:34:11 -04:00
d703fc27f8
fix(flutter): album/artist card tap (HitTestBehavior.opaque)
bvandeusen
2026-05-11 07:30:05 -04:00
f65650fb6d
fix(flutter): player bar layout, system playlist tap, banner height
bvandeusen
2026-05-11 07:27:14 -04:00
51afc992d4
fix(web): apply data-testid attrs to PlayerBar that were dropped from a8e6e1c
bvandeusen and Claude Opus 4.7
2026-05-11 00:07:52 -04:00
a8e6e1c2f7
fix(web,flutter): PlayerBar test scoping + system-playlists revalidate
bvandeusen and Claude Opus 4.7
2026-05-11 00:07:22 -04:00
19061cd10c
feat(flutter): full parity for player bar — shuffle/repeat/volume + Like + kebab + 3-column layout (#356 )
bvandeusen and Claude Opus 4.7
2026-05-10 23:59:53 -04:00
b2d1a9ea10
fix(web): compact PlayerBar — 3-column top row, full-width seek bottom (#358 )
bvandeusen and Claude Opus 4.7
2026-05-10 23:52:42 -04:00
fcded9294c
Merge pull request 'fix(web): download button + server version display' (#37 ) from dev into main
v2026.05.10.2
bvandeusen
2026-05-11 03:20:39 +00:00
c3ecd1bec8
fix: gofmt -s on version.go (tab-indent doc-comment code block)
bvandeusen
2026-05-10 23:15:29 -04:00
4c4399c9bb
feat(server,web): expose server version via /healthz + display in Settings
bvandeusen and Claude Opus 4.7
2026-05-10 23:13:19 -04:00
e16bdd9546
fix(web): read snake_case keys in MobileAppDownload (#397 )
bvandeusen and Claude Opus 4.7
2026-05-10 23:10:22 -04:00
5054c46385
fix(web): collapse the entire Mobile app section when no APK bundled
bvandeusen and Claude Opus 4.7
2026-05-10 22:44:38 -04:00
42abb7adff
Merge pull request 'ci: unify REGISTRY_TOKEN + RELEASE_TOKEN into CI_TOKEN' (#36 ) from dev into main
v2026.05.10.1
bvandeusen
2026-05-11 01:45:01 +00:00
e4578593d1
ci: unify REGISTRY_TOKEN + RELEASE_TOKEN into a single CI_TOKEN secret
bvandeusen and Claude Opus 4.7
2026-05-10 21:33:10 -04:00
04933f2d9f
Merge pull request 'M5–M7 sweep + offline cache + in-app updates + DRY pass' (#35 ) from dev into main
v2026.05.10.0
bvandeusen
2026-05-11 01:09:36 +00:00
154f415f92
fix(server,web): auth-gate client APK + version endpoints + per-user rate limit (#397 )
bvandeusen and Claude Opus 4.7
2026-05-10 20:28:27 -04:00
2435ef7961
feat(web): MobileAppDownload component on login + settings (#397 follow-up)
bvandeusen and Claude Opus 4.7
2026-05-10 20:23:56 -04:00
f6e27cd39a
fix(flutter/test): isVersionNewer date-style assertion was wrong
bvandeusen and Claude Opus 4.7
2026-05-10 20:09:53 -04:00
f3378dd610
fix(flutter): apply Riverpod 3 NotifierProvider conversion missed in 14d7678
bvandeusen and Claude Opus 4.7
2026-05-10 20:02:29 -04:00
14d7678624
fix: CI lint errors after #397 commits
bvandeusen and Claude Opus 4.7
2026-05-10 20:01:43 -04:00
e57a53a92e
ci(server): bundle Android APK into image on tag releases (#397 phase 3)
bvandeusen and Claude Opus 4.7
2026-05-10 19:44:08 -04:00
02d9f39845
feat(flutter): in-app update banner + Android install intent (#397 phase 2)
bvandeusen and Claude Opus 4.7
2026-05-10 19:42:04 -04:00
a2bea8601a
feat(server): /api/client/version + /api/client/apk endpoints (#397 phase 1)
bvandeusen and Claude Opus 4.7
2026-05-10 19:35:24 -04:00
27f123f7d9
fix(server,flutter): sync wire format + systemVariant column (#357 )
bvandeusen and Claude Opus 4.7
2026-05-10 18:47:30 -04:00
0db7054518
feat(flutter): user-facing requests view + cancel (#356 )
bvandeusen and Claude Opus 4.7
2026-05-10 18:08:23 -04:00
861dd8ef17
feat(web): auto-poll request progress when ingests are in flight (#369 )
bvandeusen and Claude Opus 4.7
2026-05-10 17:59:38 -04:00
7bc254e17e
feat(web): stream resilience — preload=auto, stall recovery, next-track prefetch
bvandeusen and Claude Opus 4.7
2026-05-10 17:43:41 -04:00
1daf0b7fdf
feat(web): close #358 invites RowActionsMenu wiring
bvandeusen and Claude Opus 4.7
2026-05-10 17:14:18 -04:00
308202a1df
refactor(web): extract CardActionCluster (#375 item #8 — narrowed scope)
bvandeusen and Claude Opus 4.7
2026-05-10 16:58:17 -04:00
9b4f907db6
refactor(web): sweep 24 test files to use makeTrack/makeTracks fixtures (#375 )
bvandeusen and Claude Opus 4.7
2026-05-10 15:58:14 -04:00
993bcc6a14
fix(web/test): update playlist API tests for api.* call surface (#375 )
bvandeusen and Claude Opus 4.7
2026-05-10 15:48:04 -04:00
2ec54bc429
refactor(web): sweep playlist.test.ts to use emptyQuarantineMock() (#375 )
bvandeusen and Claude Opus 4.7
2026-05-10 15:42:57 -04:00
7e8d19606a
refactor(web): sweep test files to use empty likes/quarantine mocks (#375 )
bvandeusen and Claude Opus 4.7
2026-05-10 15:41:15 -04:00
dd67f28745
refactor(web): sweep 8 test files to use pageUrlModule() (#375 )
bvandeusen and Claude Opus 4.7
2026-05-10 15:39:25 -04:00
6e0223a9b1
refactor(web): runMutation helper for generic-toast admin handlers (#375 )
bvandeusen and Claude Opus 4.7
2026-05-10 15:39:00 -04:00
0eaaf66748
refactor(web): playlistTrackToRef helper to dedupe TrackRef reconstruction (#375 )
bvandeusen and Claude Opus 4.7
2026-05-10 15:37:11 -04:00
633406c05b
refactor(web): safeLocalStorage helper for store persistence (#375 )
bvandeusen and Claude Opus 4.7
2026-05-10 15:36:45 -04:00
2357df83be
refactor(web): add test-utils helpers for likes/quarantine/track/appState mocks (#375 )
bvandeusen and Claude Opus 4.7
2026-05-10 15:31:53 -04:00
e8eff1baa1
refactor(web): migrate playlists.ts to api.* wrapper (#375 )
bvandeusen and Claude Opus 4.7
2026-05-10 15:30:34 -04:00
714039bae5
refactor(web): drive vite-injected theme-color from tokens.json (#375 )
bvandeusen and Claude Opus 4.7
2026-05-10 15:29:48 -04:00
65057473c6
refactor(web): break auth ↔ player import cycle via session-end signal (#375 )
bvandeusen and Claude Opus 4.7
2026-05-10 15:29:30 -04:00
94727f40bb
fix(flutter): analyze errors after Plan C provider migrations
bvandeusen and Claude Opus 4.7
2026-05-10 13:04:27 -04:00
98fdd9dcdf
feat(flutter/cache): migrate playlist providers to drift-first (#357 plan C)
bvandeusen and Claude Opus 4.7
2026-05-10 11:27:49 -04:00
08c16d6d86
fix(flutter): point like consumers at likesControllerProvider
bvandeusen and Claude Opus 4.7
2026-05-10 11:21:47 -04:00
8a6c926ea7
feat(flutter/cache): migrate likedIdsProvider to drift-first; LikesController for mutations
bvandeusen and Claude Opus 4.7
2026-05-10 11:20:59 -04:00
fc83c7b514
feat(flutter/cache): migrate artistAlbums/artistTracks/album to drift-first
bvandeusen and Claude Opus 4.7
2026-05-10 11:19:47 -04:00
947d4401a6
feat(flutter/cache): migrate artistProvider to drift-first (#357 plan C)
bvandeusen and Claude Opus 4.7
2026-05-10 11:18:59 -04:00
4eb9935f8e
feat(flutter/cache): cacheFirst helper + drift↔model adapters (#357 plan C)
bvandeusen and Claude Opus 4.7
2026-05-10 11:18:29 -04:00
2940e95b64
fix(flutter/test): skip TrackRow smoke test under the drift cohort
bvandeusen and Claude Opus 4.7
2026-05-10 10:49:03 -04:00
a3db6c9453
fix(flutter/test): testWidgets skip takes bool, not String
bvandeusen and Claude Opus 4.7
2026-05-10 10:41:48 -04:00
1b223d3891
fix(flutter/test): skip drift tests pending libsqlite3 in CI runner image
bvandeusen and Claude Opus 4.7
2026-05-10 10:27:49 -04:00
0d171490c3
fix(flutter): analyze errors after Plan B push
bvandeusen and Claude Opus 4.7
2026-05-10 10:18:38 -04:00
5114a8118c
feat(flutter): CachedIndicator + Download buttons + app startup wiring
bvandeusen and Claude Opus 4.7
2026-05-09 23:23:26 -04:00
fd4ce402d7
feat(flutter/settings): Storage section UI — usage, cap, prefetch, controls
bvandeusen and Claude Opus 4.7
2026-05-09 23:21:34 -04:00
153e931490
feat(flutter/player): audio_handler reads from cache first; LockCaching fallback
bvandeusen and Claude Opus 4.7
2026-05-09 23:20:24 -04:00
536350380f
feat(flutter/cache): Prefetcher — queue-ahead pre-download window
bvandeusen and Claude Opus 4.7
2026-05-09 23:19:01 -04:00
ab58f3ffcb
feat(flutter/cache): SyncController — token-based delta sync
bvandeusen and Claude Opus 4.7
2026-05-09 23:18:15 -04:00
16669a0365
feat(flutter/cache): AudioCacheManager — pin/unpin/evict + tiered LRU
bvandeusen and Claude Opus 4.7
2026-05-09 23:17:14 -04:00
2bcbb53c49
feat(flutter/cache): connectivityProvider + cacheSettingsProvider
bvandeusen and Claude Opus 4.7
2026-05-09 23:15:17 -04:00
326b7008a9
feat(flutter/cache): drift schema + new deps + CI codegen step (#357 plan B)
bvandeusen and Claude Opus 4.7
2026-05-09 23:07:34 -04:00
8d5c90e0ed
fix(server): wrap defer tx.Rollback for errcheck + gofmt -s alignment
bvandeusen and Claude Opus 4.7
2026-05-09 22:47:25 -04:00
9c7dec60a9
fix(server): go mod tidy after sync_test brings testify direct
bvandeusen and Claude Opus 4.7
2026-05-09 22:45:15 -04:00
6fb6729beb
feat(server): playlists service writes library_changes
bvandeusen and Claude Opus 4.7
2026-05-09 22:41:59 -04:00
e0c5789cee
feat(server): like/unlike handlers write library_changes
bvandeusen and Claude Opus 4.7
2026-05-09 22:40:56 -04:00
0fa7dc7982
feat(server): scanner + DeleteTrackFile write library_changes
bvandeusen and Claude Opus 4.7
2026-05-09 22:39:58 -04:00
6bd8a15c7a
feat(server): mount /api/library/sync route
bvandeusen and Claude Opus 4.7
2026-05-09 22:36:46 -04:00
9bf4b504b3
feat(server): GET /api/library/sync endpoint
bvandeusen and Claude Opus 4.7
2026-05-09 22:36:26 -04:00
3959c85111
feat(server): sync.LogChange helper + EntityType/Op constants
bvandeusen and Claude Opus 4.7
2026-05-09 22:29:51 -04:00
cb35133843
feat(server): library_changes log table + sqlc queries
bvandeusen and Claude Opus 4.7
2026-05-09 22:28:26 -04:00
084c202654
fix(web/test): MobileNavDrawer inert + integrations Save mocks Test first
bvandeusen and Claude Opus 4.7
2026-05-09 21:21:04 -04:00
3ffd9beca0
fix(web): preserve per-row aria-labels through RowActionsMenu + test fixes
bvandeusen and Claude Opus 4.7
2026-05-09 21:16:48 -04:00