|
|
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 |
|
|
|
36d38b9a78
|
fix(ug-parser): impl Default for UgTabFetcher
|
2026-04-08 01:42:35 +02:00 |
|
|
|
6416f5e9ab
|
feat(ug-parser): implement UgTabFetcher for file and URL sources
|
2026-04-08 01:41:29 +02:00 |
|
|
|
6435d92f8c
|
feat: scaffold ug-parser infrastructure crate
|
2026-04-08 01:40:26 +02:00 |
|
|
|
a5897a29d8
|
feat(domain): add ChordTransposer with semitone and key transposition
|
2026-04-08 01:37:41 +02:00 |
|
|
|
2f703fbb2a
|
feat(domain): add TabFetcherPort and TabParserPort traits
|
2026-04-08 01:35:55 +02:00 |
|
|
|
d004698923
|
feat(domain): add Song, Section, LyricLine, ChordPosition types
|
2026-04-08 01:34:26 +02:00 |
|
|
|
98370df27a
|
fix(domain): rename from_str to parse on Note and Chord
|
2026-04-08 01:33:19 +02:00 |
|
|
|
422afbb3f2
|
feat(domain): add Chord struct with parsing and display
|
2026-04-08 01:31:17 +02:00 |
|
|
|
ac1f1bd3da
|
fix(domain): remove dead use_sharps param, handle Cb enharmonic
|
2026-04-08 01:29:20 +02:00 |
|
|
|
a3ae4429f5
|
feat(domain): add Note enum with semitone math and display
|
2026-04-08 01:26:17 +02:00 |
|