-
9803657087
feat(web/m7-363): vite plugin injects Go template tokens at build
bvandeusen
2026-05-03 17:26:26 -04:00
-
98caa7ea84
test(server/m7-363): script-context XSS test asserts </script> count
bvandeusen
2026-05-03 17:24:42 -04:00
-
004d935512
feat(server/m7-363): branding-aware index handler with html/template
bvandeusen
2026-05-03 17:21:30 -04:00
-
46ea9a761a
feat(server/m7-363): thread BrandingConfig through server.New
bvandeusen
2026-05-03 17:17:52 -04:00
-
cd50ffd77d
feat(config/m7-363): branding config field + defaults
bvandeusen
2026-05-03 17:14:59 -04:00
-
ec1b3a3397
chore: untrack docs/superpowers, ignore going forward
bvandeusen
2026-05-03 15:32:43 -04:00
-
d56edadf0e
docs(m7-363): branding polish design spec
bvandeusen
2026-05-03 15:27:39 -04:00
-
7d82be864d
fix(flutter): handle nested colors split in tokens.json codegen
bvandeusen
2026-05-03 14:46:27 -04:00
-
7faa7b4e1f
fix(web): hide Play next / Add to queue on PlayerBar's track menu
bvandeusen
2026-05-03 14:08:29 -04:00
-
4b101481fc
fix(web): drop-up Add-to-playlist submenu, hide horizontal scroll row scrollbar
bvandeusen
2026-05-03 14:04:07 -04:00
-
16a692e81a
test(web/m7-362): Settings Appearance card render + selection test
bvandeusen
2026-05-03 13:53:47 -04:00
-
dd50ce09fd
test(web/m7-362): theme store unit test (default/persist/matchMedia)
bvandeusen
2026-05-03 13:53:03 -04:00
-
0f83b2d6ae
test(web/m7-362): tokens-to-css generator unit test

bvandeusenandClaude Sonnet 4.6
2026-05-03 13:52:13 -04:00
-
e40fa0d252
feat(web/m7-362): Settings → Appearance card with dark/light/system selector
bvandeusen
2026-05-03 13:51:25 -04:00
-
4a04ec64f8
feat(web/m7-362): pre-paint theme application via inline FOUC script
bvandeusen
2026-05-03 13:50:40 -04:00
-
ffed19f736
feat(web/m7-362): theme preference + resolved-theme rune store
bvandeusen
2026-05-03 13:43:28 -04:00
-
f0bfac2555
refactor(web/m7-362): action-button labels use non-flipping text-action-fg

bvandeusenandClaude Sonnet 4.6
2026-05-03 13:42:42 -04:00
-
5c5f9f3ec1
feat(web/m7-362): add Tailwind text-action-fg alias for non-flipping label color
bvandeusen
2026-05-03 13:40:20 -04:00
-
9b7dd8272e
feat(web/m7-362): tokens.json dark/light/flat split + dual-block CSS generator

bvandeusenandClaude Sonnet 4.6
2026-05-03 13:39:54 -04:00
-
a9fc0c6fe8
docs(m7-362): theme toggle implementation plan (9 tasks)
bvandeusen
2026-05-03 13:37:33 -04:00
-
1d6a71a825
docs(m7-362): correct dark hex values + Tailwind alias
bvandeusen
2026-05-03 13:34:40 -04:00
-
1dcce4e304
docs(m7-362): theme toggle design spec
bvandeusen
2026-05-03 13:31:18 -04:00
-
0ce78035aa
test(web): PlaylistCard cover-img assertion uses DOM query
bvandeusen
2026-05-03 12:28:21 -04:00
-
e0a4d13c45
fix(web): /playlists/{id} page uses $app/state, not legacy $app/stores
bvandeusen
2026-05-03 11:58:10 -04:00
-
d32e1505c5
docs(config): document storage.data_dir in the example yaml
bvandeusen
2026-05-03 11:38:05 -04:00
-
6d1709caff
fix(config): wire DataDir from yaml/env through to playlists service
bvandeusen
2026-05-03 11:37:41 -04:00
-
b0a928c554
feat(web): /playlists/{id} detail page with drag-reorder (M7 #352)
bvandeusen
2026-05-03 11:34:05 -04:00
-
80a6861ded
feat(web): /playlists index page (M7 #352 slice 1)
bvandeusen
2026-05-03 11:22:25 -04:00
-
71dbaaede5
feat(web): AddToPlaylistMenu submenu wired into TrackMenu (M7 #352)
bvandeusen
2026-05-03 11:20:14 -04:00
-
4067be04a6
feat(web): PlaylistTrackRow component for M7 #352 slice 1
bvandeusen
2026-05-03 11:16:35 -04:00
-
0eb346e0c6
feat(web): PlaylistCard component for M7 #352 slice 1
bvandeusen
2026-05-03 11:14:30 -04:00
-
b9830cc9cc
feat(web/api): playlists helper + types + query keys (M7 #352 slice 1)
bvandeusen
2026-05-03 11:12:46 -04:00
-
c331168d3b
feat(api): /api/playlists* handlers for M7 #352 slice 1

bvandeusenandClaude Opus 4.7
2026-05-03 11:10:21 -04:00
-
79bab14b30
feat(playlists): track operations + cover-collage generator
bvandeusen
2026-05-03 10:25:20 -04:00
-
5c61c10b63
feat(playlists): Service with CRUD methods (M7 #352 slice 1)

bvandeusenandClaude Opus 4.7
2026-05-03 10:17:08 -04:00
-
1226cb7583
feat(db): playlists schema for M7 #352 slice 1
bvandeusen
2026-05-03 10:03:36 -04:00
-
e056c8b8be
docs(m7): implementation plan for #352 playlists CRUD slice 1
bvandeusen
2026-05-03 00:59:21 -04:00
-
65bb4e6dfd
docs(m7): spec for #352 playlists CRUD (slice 1 of 3)
bvandeusen
2026-05-03 00:28:34 -04:00
-
1cf58b18e8
ci(web): exclude #374-blocked tests from vitest module discovery
bvandeusen
2026-05-03 00:13:04 -04:00
-
53842b0f21
ci(test-web): drop npm cache restore — setup-node was burning 4m41s
bvandeusen
2026-05-03 00:09:02 -04:00
-
40db918bfc
fix(web): RemoveTrackPopover async test waits + skip 2 SvelteKit-broken suites
bvandeusen
2026-05-03 00:00:26 -04:00
-
d87d9e3255
fix(web): widen TrackMenuItem icon prop type to match Lucide signature
bvandeusen
2026-05-02 23:34:11 -04:00
-
5d69e9614f
fix(web): TrackMenuItem icon prop accepts Lucide class-components
bvandeusen
2026-05-02 23:24:20 -04:00
-
6858e45dbe
ci: split test.yml into test-web.yml + test-go.yml, run on dev pushes
bvandeusen
2026-05-02 23:11:20 -04:00
-
9dc4786fd9
feat(web): TrackMenu rewrite — 9 entries in 4 groups (M7 #372)

bvandeusenandClaude Opus 4.7
2026-05-02 23:00:09 -04:00
-
681b532b57
feat(web): TrackMenuDivider primitive for M7 #372 menu groups
bvandeusen
2026-05-02 22:46:44 -04:00
-
9256369926
feat(web): TrackMenuItem primitive for M7 #372
bvandeusen
2026-05-02 22:46:29 -04:00
-
f43ea6af5b
feat(player): playNext for M7 #372 track-actions menu
bvandeusen
2026-05-02 22:45:13 -04:00
-
905b5f0da7
feat(web): admin removeTrack API helper for M7 #372
bvandeusen
2026-05-02 22:44:01 -04:00
-
bb931746e3
feat(api): DELETE /api/admin/tracks/{id} for M7 #372

bvandeusenandClaude Opus 4.7
2026-05-02 22:41:51 -04:00
-
f6975cfad3
fix(tracks): rewrite RemoveTrack — direct os.Remove + optional Lidarr unmonitor

bvandeusenandClaude Opus 4.7
2026-05-02 22:35:34 -04:00
-
723eee9773
docs(m7): revise #372 spec — Remove from library no longer goes via Lidarr
bvandeusen
2026-05-02 22:28:49 -04:00
-
50a231fdc1
feat(tracks): RemoveTrack service with Lidarr-aware delete + cascade

bvandeusenandClaude Opus 4.7
2026-05-02 21:58:12 -04:00
-
30b0edf97b
feat(db): cascade-cleanup queries for M7 #372 track removal
bvandeusen
2026-05-02 21:53:33 -04:00
-
9c53c9894a
docs(m7): implementation plan for #372 track-actions menu
bvandeusen
2026-05-02 21:39:30 -04:00
-
136a475133
docs(m7): spec for #372 track-level actions menu
bvandeusen
2026-05-02 21:31:40 -04:00
-
f27e83612d
fix(flutter): two test environment issues from CI
bvandeusen
2026-05-02 19:36:27 -04:00
-
1e8b8aaa2d
fix(flutter): drop redundant const in nested const contexts
bvandeusen
2026-05-02 19:17:05 -04:00
-
d86c694cde
fix(flutter): five flutter analyze --fatal-infos issues from first CI run
bvandeusen
2026-05-02 19:01:54 -04:00
-
de1bfcf58b
ci: retrigger after node-baked flutter-ci runner image
bvandeusen
2026-05-02 18:57:39 -04:00
-
ec89201e04
ci(flutter): switch to dedicated flutter-ci runner
bvandeusen
2026-05-02 18:42:08 -04:00
-
7f10535420
fix(ci): flutter workflow runs on go-ci runner, not ubuntu-latest
bvandeusen
2026-05-02 18:09:26 -04:00
-
e4b211eb13
docs(flutter): replace flutter-create-default README
bvandeusen
2026-05-02 17:43:30 -04:00
-
7c0f9750d8
ci(flutter): Forgejo workflow — sync, analyze, test, build APK
bvandeusen
2026-05-02 17:42:38 -04:00
-
ec0c10f312
feat(flutter): connection-error banner + 401-clears-session interceptor
bvandeusen
2026-05-02 17:41:46 -04:00
-
f675782bf5
feat(flutter/player): NowPlaying full-screen view with scrubber
bvandeusen
2026-05-02 17:40:13 -04:00
-
bbfeb5d3ff
feat(flutter/player): mini PlayerBar in shell + tap-to-play wiring
bvandeusen
2026-05-02 17:39:09 -04:00
-
80f98b3243
feat(flutter/player): MinstrelAudioHandler + just_audio + audio_service
bvandeusen
2026-05-02 17:37:14 -04:00
-
44e2623b3c
feat(flutter/likes): LikeButton with optimistic toggle + rollback
bvandeusen
2026-05-02 17:34:59 -04:00
-
6ec7cea362
feat(flutter/library): artist + album detail screens
bvandeusen
2026-05-02 17:32:34 -04:00
-
5ef782905e
feat(flutter/home): home screen with five sections
bvandeusen
2026-05-02 17:30:42 -04:00
-
c47deb3c87
feat(flutter/library): card + row widgets (artist/album/track)
bvandeusen
2026-05-02 17:29:03 -04:00
-
3e267918b7
feat(flutter/library): API endpoints + Riverpod providers
bvandeusen
2026-05-02 17:26:57 -04:00
-
d115c267f4
feat(flutter): GoRouter shell + version gate + auth-aware redirects
bvandeusen
2026-05-02 17:24:08 -04:00
-
9cbbfcff6c
feat(flutter/auth): login screen + AuthApi.login posting to /api/auth/login
bvandeusen
2026-05-02 17:21:42 -04:00
-
3cf874ab69
feat(flutter/auth): server URL screen + auth provider + secure storage
bvandeusen
2026-05-02 17:20:26 -04:00
-
c0785cf894
feat(flutter/models): User, ArtistRef, AlbumRef, TrackRef, HomeData
bvandeusen
2026-05-02 17:18:12 -04:00
-
c93b852e65
feat(flutter/api): dio client with Bearer interceptor + ApiError
bvandeusen
2026-05-02 17:15:55 -04:00
-
2729ab897f
feat(flutter): FabledSwordTheme ThemeExtension + Material 3 ThemeData
bvandeusen
2026-05-02 16:56:38 -04:00
-
f97cf6eb38
feat(flutter): token + asset sync from web; gen_tokens.dart
bvandeusen
2026-05-02 16:55:21 -04:00
-
d8bfdc1733
chore(ci): .dockerignore + path filters on existing workflows
bvandeusen
2026-05-02 16:05:28 -04:00
-
e46224acc9
feat(flutter): project scaffold with pubspec and smoke test

bvandeusenandClaude Opus 4.7
2026-05-02 15:25:05 -04:00
-
b03da903d9
feat(server): /healthz returns min_client_version
bvandeusen
2026-05-02 15:11:10 -04:00
-
c3be0f3e6e
refactor(web): consolidate error-copy table to JSON source of truth

bvandeusenandClaude Opus 4.7
2026-05-02 15:01:46 -04:00
-
ea22807a3f
refactor(web): extract design tokens to tokens.json source of truth
bvandeusen
2026-05-02 14:55:46 -04:00
-
261c2c4301
docs(m7): implementation plan for Flutter mobile foundation + first slice
bvandeusen
2026-05-02 14:26:25 -04:00
-
d16ea16d5d
docs(m7): spec for Flutter mobile foundation + first slice
bvandeusen
2026-05-02 14:11:55 -04:00
-
f77245bc41
feat(requests): show ingest progress while requests are in flight

bvandeusenandClaude Opus 4.7
2026-05-02 13:04:38 -04:00
-
70d3d60d21
feat(web): add play + like to artist detail header

bvandeusenandClaude Opus 4.7
2026-05-02 12:57:55 -04:00
-
7b91718fc9
feat(admin): expand /admin overview into an actionable workbench

bvandeusenandClaude Opus 4.7
2026-05-02 12:51:57 -04:00
-
1c39001482
feat(web): give album-fallback SVG a card-shaped frame

bvandeusenandClaude Opus 4.7
2026-05-02 00:25:27 -04:00
-
c265b871c3
feat(admin): metadata-profile picker on integrations page

bvandeusenandClaude Opus 4.7
2026-05-02 00:09:13 -04:00
-
7d33166f23
fix(lidarr): include artistName + metadataProfileId on add-artist/add-album

bvandeusenandClaude Opus 4.7
2026-05-01 23:57:39 -04:00
-
2946ec4222
feat(web): coupled section scrolling, earlier infinite-scroll, fuller player cover

bvandeusenandClaude Opus 4.7
2026-05-01 23:52:03 -04:00
-
8d05f623cb
feat(web): /discover scrolls only the results, not the chrome

bvandeusenandClaude Opus 4.7
2026-05-01 23:42:08 -04:00
-
ab8235dd0b
fix(admin): approve flow surfaces real errors; auto-default Lidarr picks

bvandeusenandClaude Opus 4.7
2026-05-01 23:37:17 -04:00
-
8c62f0089e
feat(web): redesign PlayerBar — Lucide icons, focal play button, taller bar

bvandeusenandClaude Opus 4.7
2026-05-01 23:28:10 -04:00
-
564e0bf7ca
feat(web): use static SVG asset for album fallback cover

bvandeusenandClaude Opus 4.7
2026-05-01 23:21:25 -04:00
-
e6552f4ae2
feat(web): scale ArtistCard fallback Disc3 to fill the circle

bvandeusenandClaude Opus 4.7
2026-05-01 23:10:34 -04:00
-
24985c949f
feat(web): redesign FALLBACK_COVER as a beamed-pair glyph

bvandeusenandClaude Opus 4.7
2026-05-01 23:05:29 -04:00