|
|
dbb7cbd92f
|
fix: use var(--x) not hsl(var(--x)) for oklch theme vars, redesign fretboard with explicit string lines
|
2026-04-09 01:15:49 +02:00 |
|
|
|
ed669b2e3a
|
fix: larger black key dots, active note names list on piano
|
2026-04-09 01:07:39 +02:00 |
|
|
|
2964475df9
|
fix: piano readability + note labels, open chord voicings for guitar
|
2026-04-09 01:00:34 +02:00 |
|
|
|
544474c074
|
fix: double-sharp notes in PianoKeys, barre bar on E-shape chords
|
2026-04-09 00:50:51 +02:00 |
|
|
|
e9c2f7a5e0
|
feat: chord diagram — piano/guitar diagrams in song detail
|
2026-04-09 00:44:32 +02:00 |
|
|
|
e99b581a43
|
feat: tappable chord names in ChordChart, extractUniqueChords
|
2026-04-09 00:42:24 +02:00 |
|
|
|
ec7237e8c7
|
feat: ChordGrid component
|
2026-04-09 00:40:41 +02:00 |
|
|
|
3d56b71aa9
|
feat: ChordDiagram component
|
2026-04-09 00:40:36 +02:00 |
|
|
|
5a4d0ef648
|
feat: GuitarFretboard component
|
2026-04-09 00:39:43 +02:00 |
|
|
|
7653933f46
|
feat: PianoKeys component
|
2026-04-09 00:38:14 +02:00 |
|
|
|
90df2b36f2
|
feat: chord voicing theory layer
|
2026-04-09 00:36:08 +02:00 |
|
|
|
ac65be1bb9
|
feat: guitar voicing templates
|
2026-04-09 00:31:25 +02:00 |
|
|
|
aeb9dfff67
|
chore: add tonal + vitest
|
2026-04-09 00:28:19 +02:00 |
|
|
|
bb99f5964a
|
docs: chord diagram implementation plan
|
2026-04-09 00:26:16 +02:00 |
|
|
|
df90e610ef
|
docs: chord diagram feature spec
|
2026-04-09 00:14:04 +02:00 |
|
|
|
f80ed4e88a
|
feat(app): PWA manifest, persistent transpose, font size, capo toggle, library sort
|
2026-04-08 04:09:25 +02:00 |
|
|
|
2558f19960
|
feat: add sort params to list/search, capo-aware GET /songs/{id}?apply_capo=true
|
2026-04-08 04:05:57 +02:00 |
|
|
|
41b9cb3d4c
|
feat: initialize project with .gitignore, LICENSE, README, and update dependencies
|
2026-04-08 03:56:28 +02:00 |
|
|
|
bef3bb8fed
|
feat(app): add dark/light theme switcher via next-themes
|
2026-04-08 03:56:05 +02:00 |
|
|
|
582bdbd901
|
refactor(app): extract previewChords to song-utils, simplify API_BASE, fix useEffect deps and cleanup
|
2026-04-08 03:53:44 +02:00 |
|
|
|
19829a0589
|
fix(app): reset edit sheet state on open, check deleteSong response status
|
2026-04-08 03:48:46 +02:00 |
|
|
|
8fc6e48aac
|
feat(app): add song edit and delete with dropdown menu
|
2026-04-08 03:46:56 +02:00 |
|
|
|
3a576f0018
|
feat(app): live server-side search with 300ms debounce and error state
|
2026-04-08 03:44:10 +02:00 |
|
|
|
65dd30df46
|
feat(app): add layout shell with bottom nav and Toaster
|
2026-04-08 03:42:13 +02:00 |
|
|
|
1936ced395
|
feat: add update_meta to SongRepositoryPort and PATCH /songs/{id}
|
2026-04-08 03:39:29 +02:00 |
|
|
|
6a3cdbe4c3
|
fix(persistence): extract row_to_summary helper, escape LIKE wildcards
|
2026-04-08 03:38:12 +02:00 |
|
|
|
377fe957bc
|
feat: add SongSearchService and GET /songs?q= search endpoint
|
2026-04-08 03:35:33 +02:00 |
|
|
|
c3b7cb78ab
|
docs: add search/nav/management implementation plan
|
2026-04-08 03:32:56 +02:00 |
|
|
|
7cd0c4aae1
|
docs: add search/nav/management/errors design spec
|
2026-04-08 03:28:36 +02:00 |
|
|
|
5390fe39e6
|
feat(app): wire frontend to real API, remove mock data and sessionStorage
|
2026-04-08 03:09:12 +02:00 |
|
|
|
8c0824c67c
|
feat(api): add song CRUD routes, wire SongService into AppState
|
2026-04-08 03:07:28 +02:00 |
|
|
|
0b47282547
|
feat(common): add SongService application layer
|
2026-04-08 03:05:50 +02:00 |
|
|
|
37a1e386e4
|
feat(persistence): add SqliteSongRepository and SqliteRepositoryFactory
|
2026-04-08 03:05:16 +02:00 |
|
|
|
8f9886c9a9
|
feat(domain): add StoredSong, SongSummary, SongRepositoryPort
|
2026-04-08 03:03:58 +02:00 |
|
|
|
852b1a8d0e
|
fix(app): wrap long chord/lyric lines at word boundaries for mobile
|
2026-04-08 02:47:17 +02:00 |
|
|
|
3bc7ad4c7c
|
fix: support raw HTML upload via FileReader, fix file import flow
|
2026-04-08 02:43:27 +02:00 |
|
|
|
90833c5b93
|
fix(app): meta null guard, deduplicate previewChords, env API URL, always show add card
|
2026-04-08 02:36:09 +02:00 |
|
|
|
9b68069151
|
feat(app): add song detail page with chord chart and transposition
|
2026-04-08 02:32:50 +02:00 |
|
|
|
3d18bb9e77
|
feat(app): add library page with song grid and search
|
2026-04-08 02:31:44 +02:00 |
|
|
|
cdb9c59d37
|
feat(app): add AddSongSheet component
|
2026-04-08 02:30:57 +02:00 |
|
|
|
8ca80c38f1
|
feat(app): add TransposeBar collapsible header
|
2026-04-08 02:29:48 +02:00 |
|
|
|
3844cc2296
|
feat(app): add ChordChart component with monospaced rendering
|
2026-04-08 02:29:10 +02:00 |
|
|
|
a6bec147d6
|
feat(app): add SongCard component
|
2026-04-08 02:28:39 +02:00 |
|
|
|
16fd6ba9ad
|
feat(app): add types, mock data, and transpose utility
|
2026-04-08 02:27:13 +02:00 |
|
|
|
eeb1ea9615
|
feat(app): install shadcn button, input, card, badge, sheet, tooltip
|
2026-04-08 02:25:13 +02:00 |
|
|
|
2483ed5a08
|
feat(api): add CORS middleware for browser fetch
|
2026-04-08 02:23:37 +02:00 |
|
|
|
0444d11fb4
|
feat(api): wire POST /tabs/parse endpoint with fetcher and parser
|
2026-04-08 01:56:06 +02:00 |
|
|
|
fe7d2dbceb
|
fix(ug-parser): address clippy warnings in parser
|
2026-04-08 01:54:43 +02:00 |
|
|
|
776389af49
|
feat(ug-parser): parse sections, lyrics, and chord positions from UG HTML
|
2026-04-08 01:47:17 +02:00 |
|
|
|
1a0458653a
|
feat(ug-parser): implement UgHtmlParser metadata extraction
|
2026-04-08 01:44:06 +02:00 |
|