-
4481874482
fix(server,web/m7-382): handle duplicate-MBID conflicts during backfill

bvandeusenandClaude Opus 4.7
2026-05-04 21:45:15 -04:00
-
cc12ab7e96
fix(server/m7-382): strip NUL bytes from MBIDs before persist

bvandeusenandClaude Opus 4.7
2026-05-04 21:35:01 -04:00
-
947f944fe9
fix(server/m7-382): MBID extraction never matched dhowden/tag's Raw() keys

bvandeusenandClaude Opus 4.7
2026-05-04 21:15:51 -04:00
-
0db22971c7
fix(server,web/m7-381): forward-fix CI — Mount call + admin.test mock
bvandeusen
2026-05-04 20:19:42 -04:00
-
05bc2628a3
feat(web/m7-381): admin overview Library Scan section + manual trigger

bvandeusenandClaude Sonnet 4.6
2026-05-04 20:16:29 -04:00
-
3d0e213081
feat(server/m7-381): admin scan-status + manual trigger endpoints

bvandeusenandClaude Sonnet 4.6
2026-05-04 20:13:31 -04:00
-
65a3c4892c
feat(server/m7-381): RunScan orchestrator chains library+backfill+enrich

bvandeusenandClaude Sonnet 4.6
2026-05-04 20:08:48 -04:00
-
1ed6ca0309
feat(db/m7-381): sqlc queries for scan_runs
bvandeusen
2026-05-04 20:04:55 -04:00
-
031f4bef8b
feat(db/m7-381): scan_runs table for admin scan-status view
bvandeusen
2026-05-04 20:04:04 -04:00
-
835580ef1e
fix(web/m7-380): convert PlaylistTrack to TrackRef in PlaylistCard play handler
bvandeusen
2026-05-04 19:46:43 -04:00
-
b290b4ff0b
feat(web/m7-380): animate pending placeholder + add play overlay to PlaylistCard
bvandeusen
2026-05-04 19:42:30 -04:00
-
34615fffbd
feat(server/m7-380): one-shot MBID backfill worker for existing libraries

bvandeusenandClaude Sonnet 4.6
2026-05-04 19:40:27 -04:00
-
26f4c7a79f
fix(web/m7-352): use typographic apostrophe in failed-variant copy
bvandeusen
2026-05-04 19:16:25 -04:00
-
b8f9b3891b
fix(server/m7-379): enricher leaves cover_art_source NULL when MBID missing
bvandeusen
2026-05-04 19:04:16 -04:00
-
6c6c4bc1e4
feat(server/m7-379): heal existing artist+album mbid on rescan
bvandeusen
2026-05-04 19:03:12 -04:00
-
ab8fff834a
feat(server/m7-379): extract MusicBrainz IDs from audio tags during scan

bvandeusenandClaude Sonnet 4.6
2026-05-04 19:01:55 -04:00
-
412a1c00ac
fix(web/m7-352): update listPlaylists test URL after kind filter addition
bvandeusen
2026-05-04 18:52:40 -04:00
-
5698cfe8e4
feat(web/m7-352): home Playlists row — For-You + Songs-like + user playlists

bvandeusenandClaude Sonnet 4.6
2026-05-04 18:34:03 -04:00
-
b8bb1c1fa7
feat(web/m7-352): PlaylistPlaceholderCard with 4 state variants
bvandeusen
2026-05-04 18:31:42 -04:00
-
886903ae27
feat(web/m7-352): kind-aware createPlaylistsQuery + system-playlists-status helper
bvandeusen
2026-05-04 18:30:43 -04:00
-
56f0998f84
feat(web/m7-352): Playlist type gains kind/system_variant/seed_artist_id fields
bvandeusen
2026-05-04 18:14:46 -04:00
-
a8630a1355
feat(server/m7-352): GET /api/me/system-playlists-status for home placeholders
bvandeusen
2026-05-04 18:13:13 -04:00
-
db361c8305
feat(web/m7-377): CompactTrackCard gains like + queue + kebab overlays
bvandeusen
2026-05-04 17:49:19 -04:00
-
a062c8229f
fix(server/m7-353): rename unused r in handleAdminBulkRefetchCovers
bvandeusen
2026-05-04 17:43:22 -04:00
-
1691290875
fix(server): forward-fix CI — gofmt convert/types + rename unused r in enricher_test
bvandeusen
2026-05-04 17:41:16 -04:00
-
0dbe326d8b
fix(server,web): forward-fix CI lint + vitest failures

bvandeusenandClaude Opus 4.7
2026-05-04 17:39:06 -04:00
-
93f54e00a4
fix(server,web/m7-353): forward-fix CI — Mount call + AlbumRef test fixtures
bvandeusen
2026-05-04 17:31:27 -04:00
-
4e3bd46d69
fix(server,web/m7-353): post-review fixes (test compilation, AlbumRef field, bulk handler, design system)

bvandeusenandClaude Sonnet 4.6
2026-05-04 15:21:24 -04:00
-
28617df5bd
feat(web/m7-353): admin cover-refetch UI (per-album + bulk)

bvandeusenandClaude Sonnet 4.6
2026-05-04 15:15:26 -04:00
-
d4a837b904
feat(server/m7-353): admin endpoints for cover refetch (per-album + bulk)

bvandeusenandClaude Sonnet 4.6
2026-05-04 15:11:53 -04:00
-
6c33acf062
feat(server/m7-353): config + main.go wiring for coverart enricher
bvandeusen
2026-05-04 15:06:28 -04:00
-
64475d45dc
fix(server/m7-353): log retry-missing errors + tighten 404 test + cover EnrichRetryMissing
bvandeusen
2026-05-04 15:04:23 -04:00
-
78994a60cf
feat(server/m7-353): coverart.Enricher orchestrates sidecar + MBCAA + record

bvandeusenandClaude Sonnet 4.6
2026-05-04 15:00:28 -04:00
-
2d3841966e
feat(server/m7-353): coverart.Fetcher MBCAA HTTP client + rate limiter
bvandeusen
2026-05-04 14:49:28 -04:00
-
ef6c09dbfb
refactor(server/m7-353): consolidate findSidecarCover into coverart package
bvandeusen
2026-05-04 14:46:28 -04:00
-
70defdb5bc
feat(server/m7-353): coverart.FindSidecar shared helper + tests
bvandeusen
2026-05-04 14:45:20 -04:00
-
15170ed7c6
feat(db/m7-353): sqlc queries for album cover enrichment
bvandeusen
2026-05-04 14:30:55 -04:00
-
458a183099
feat(db/m7-353): add albums.cover_art_source enum column
bvandeusen
2026-05-04 14:29:13 -04:00
-
40be3bf917
feat(web/m7-377): album detail header gets LikeButton + Play/Shuffle row

bvandeusenandClaude Sonnet 4.6
2026-05-04 13:10:47 -04:00
-
ebafdbfb05
feat(web/m7-377): artist detail moves LikeButton inline with heading at size lg
bvandeusen
2026-05-04 13:09:25 -04:00
-
8fff7f62d6
refactor(web/m7-377): TrackRow +queue uses Lucide Plus icon + scoped aria-label
bvandeusen
2026-05-04 13:08:26 -04:00
-
d35ed5945a
feat(web/m7-377): AlbumCard gains bottom-right kebab
bvandeusen
2026-05-04 13:07:06 -04:00
-
4e42fc8280
feat(web/m7-377): ArtistCard top-right cluster + bottom-right kebab
bvandeusen
2026-05-04 13:05:11 -04:00
-
43a3dc47a8
feat(web/m7-377): AlbumMenu component + listAlbumTracks helper

bvandeusenandClaude Sonnet 4.6
2026-05-04 11:59:38 -04:00
-
ce01b3d992
feat(web/m7-377): ArtistMenu component with like/queue/playlist actions

bvandeusenandClaude Sonnet 4.6
2026-05-04 11:53:41 -04:00
-
72496852a5
feat(web/m7-377): LikeButton gains size prop (sm/md/lg)
bvandeusen
2026-05-04 11:50:31 -04:00
-
9eeb79e99f
fix(web/m7-377): update AddToPlaylistMenu tests for tracks-array prop
bvandeusen
2026-05-04 11:48:55 -04:00
-
7ddf77ace5
refactor(web/m7-377): AddToPlaylistMenu accepts tracks: TrackRef[]
bvandeusen
2026-05-04 11:47:53 -04:00
-
2b286a9bfd
docs(db/m7-352): note ListPlaylistsByUserAndKind is test-only
bvandeusen
2026-05-04 10:31:09 -04:00
-
0a1e76564d
feat(server/m7-352): 403 system_playlist_readonly on playlist edit endpoints
bvandeusen
2026-05-04 09:29:37 -04:00
-
a90ff11f0f
feat(server/m7-352): kind filter on GET /api/playlists + lazy fallback

bvandeusenandClaude Sonnet 4.6
2026-05-04 09:24:27 -04:00
-
391f5f16a1
feat(server/m7-352): cron loop + main.go wiring for system playlist build
bvandeusen
2026-05-04 09:16:07 -04:00
-
797a2c8a45
fix(server/m7-352): log Finish/Fail run errors; drop unused seed-limit constant
bvandeusen
2026-05-04 09:14:40 -04:00
-
46a9de8e9a
feat(server/m7-352): BuildSystemPlaylists with atomic replace + concurrency guard

bvandeusenandClaude Sonnet 4.6
2026-05-04 08:35:02 -04:00
-
ef478778ef
feat(server/m7-352): system mix helpers (tieBreakHash, pickSeedArtists)
bvandeusen
2026-05-04 08:24:39 -04:00
-
d7aebafa5d
feat(server/m7-352): AssertEditable + ErrSystemPlaylistReadonly on playlists service
bvandeusen
2026-05-04 08:21:18 -04:00
-
58a27e2f0f
fix(db/m7-352): cast COALESCE to uuid so sqlc emits typed return
bvandeusen
2026-05-04 08:15:21 -04:00
-
3fe929cebd
feat(db/m7-352): sqlc queries for system playlist runs + seed selection

bvandeusenandClaude Sonnet 4.6
2026-05-04 08:14:20 -04:00
-
36d05310ce
feat(db/m7-352): system playlists schema (kind, variant, seed_artist_id, runs table)
bvandeusen
2026-05-04 08:03:06 -04:00
-
79d6045f7a
fix(server/m7-365): silence unused-pool-param lint in history test
bvandeusen
2026-05-04 07:05:49 -04:00
-
aa5b277b6b
fix(web/m7-365): history page error-state test asserts by role
bvandeusen
2026-05-04 07:05:20 -04:00
-
c04b288737
feat(web/m7-365): add History entry to Library nav
bvandeusen
2026-05-04 06:59:05 -04:00
-
cd0b9c97e1
fix(web/m7-365): align /library/history with albums-page conventions
bvandeusen
2026-05-04 06:57:24 -04:00
-
ecf4ed86f5
feat(web/m7-365): /library/history page with day grouping + infinite scroll

bvandeusenandClaude Sonnet 4.6
2026-05-04 06:53:37 -04:00
-
da39ff847b
feat(web/m7-365): HistoryRow component with click-to-play
bvandeusen
2026-05-04 06:19:59 -04:00
-
4dee5922d9
feat(web/m7-365): dayBucket + groupByDay utilities
bvandeusen
2026-05-04 06:18:18 -04:00
-
46066c4d08
feat(web/m7-365): history API helper + tests
bvandeusen
2026-05-04 06:16:15 -04:00
-
fc608fb36e
feat(server/m7-365): GET /api/me/history handler + integration test

bvandeusenandClaude Sonnet 4.6
2026-05-04 05:52:17 -04:00
-
45a17e4e95
feat(server/m7-365): sqlc query for user listening history
bvandeusen
2026-05-04 05:46:30 -04:00
-
d202319c87
fix(web/m7-364): vitest failures — exact-match query, inert prop, -0, user guard
bvandeusen
2026-05-03 22:37:00 -04:00
-
d43c6b31f4
chore(web/lint): clear svelte-check warnings + fix QueueDrawer test query
bvandeusen
2026-05-03 22:26:09 -04:00
-
22e3f67411
feat(web/m7-364): drawer focus management + grip Enter/Space handling
bvandeusen
2026-05-03 22:23:20 -04:00
-
d83b3eab25
fix(web/m7-364): TrackRef field shape + seek-on-restore + drawer inert

bvandeusenandClaude Sonnet 4.6
2026-05-03 22:14:59 -04:00
-
49c8e5959e
feat(web/m7-364): mount QueueDrawer + esc handler + restore on bootstrap
bvandeusen
2026-05-03 21:53:36 -04:00
-
82846c9fcd
fix(web/m7-364): align queue toggle styling with sibling toggles
bvandeusen
2026-05-03 21:52:39 -04:00
-
36805914d8
feat(web/m7-364): PlayerBar queue toggle + Up next line

bvandeusenandClaude Sonnet 4.6
2026-05-03 21:50:14 -04:00
-
b99eb5f120
feat(web/m7-364): QueueDrawer side-panel with track list
bvandeusen
2026-05-03 21:47:33 -04:00
-
e164d69492
fix(web/m7-364): keyboard reorder + measured row height + offsetToDelta helper
bvandeusen
2026-05-03 21:45:32 -04:00
-
57a353a138
feat(web/m7-364): QueueTrackRow with neodrag reorder + remove
bvandeusen
2026-05-03 21:41:59 -04:00
-
b2e3913df8
feat(web/m7-364): clear persisted queue + reset queue on logout
bvandeusen
2026-05-03 21:39:57 -04:00
-
472b9d9e84
fix(web/m7-364): untrack _position in queue immediate-write effect

bvandeusenandClaude Sonnet 4.6
2026-05-03 21:37:55 -04:00
-
8cc79ee612
feat(web/m7-364): queue persistence write/restore on player store
bvandeusen
2026-05-03 20:44:33 -04:00
-
bde017dad3
fix(web/m7-364): pause on last-track remove + reset drawer in test setup
bvandeusen
2026-05-03 20:37:33 -04:00
-
6f9b5d0059
feat(web/m7-364): queue mutations + drawer state on player store

bvandeusenandClaude Sonnet 4.6
2026-05-03 20:29:48 -04:00
-
8053704afa
feat(web/m7-364): localStorage persistence layer for queue
bvandeusen
2026-05-03 20:26:07 -04:00
-
ac44713ec3
chore(web/m7-364): add @neodrag/svelte for queue reorder
bvandeusen
2026-05-03 20:24:25 -04:00
-
180d85eec0
chore(web): post-#363 cleanup — DRY tripwires, drop unused description, singular playlist title
bvandeusen
2026-05-03 19:04:59 -04:00
-
a8fd33d4ed
chore(lint): clear pre-existing CI lint debt
bvandeusen
2026-05-03 18:59:58 -04:00
-
66f651cf5c
fix(web/m7-362): repair Vitest fixtures (matchMedia.fire, listenbrainz mock)

bvandeusenandClaude Sonnet 4.6
2026-05-03 18:48:20 -04:00
-
f8684f0034
fix(server,web): update test fixtures for new New/Handler signatures
bvandeusen
2026-05-03 18:44:34 -04:00
-
ca82862346
chore(config): rename SMARTMUSIC_ env prefix to MINSTREL_; default admin user

bvandeusenandClaude Sonnet 4.6
2026-05-03 18:40:59 -04:00
-
841b4cd8df
fix(docs/m7-363): README env vars + first-run instructions match reality
bvandeusen
2026-05-03 17:54:03 -04:00
-
874fe17191
docs(m7-363): operator-first README rewrite
bvandeusen
2026-05-03 17:50:17 -04:00
-
574bf30504
feat(web/m7-363): OG share-image placeholder + one-off generator
bvandeusen
2026-05-03 17:47:05 -04:00
-
af6f006242
feat(web/m7-363): theme-color meta follows resolved theme
bvandeusen
2026-05-03 17:44:01 -04:00
-
07b228dd4e
feat(web/m7-363): per-route svelte:head titles for dynamic detail pages
bvandeusen
2026-05-03 17:40:08 -04:00
-
9ad2e0343a
feat(web/m7-363): per-route svelte:head titles for static routes

bvandeusenandClaude Opus 4.7
2026-05-03 17:37:13 -04:00
-
f31dbcc087
refactor(web/m7-363): Shell header reads appName() not literal
bvandeusen
2026-05-03 17:32:57 -04:00
-
6c23dba51b
feat(web/m7-363): branding helper + window.__MINSTREL__ consumer
bvandeusen
2026-05-03 17:30:31 -04:00
-
a4a7225542
fix(web/m7-363): vite plugin fails build if anchors drift
bvandeusen
2026-05-03 17:29:08 -04:00