This website requires JavaScript.
792c9bf9ec
style: rustfmt
master
Gabriel Kaszewski
2026-07-11 22:58:00 +02:00
f513061405
fix(app): auto-scroll on iOS using scrollBy with integer accumulator
Gabriel Kaszewski
2026-07-11 22:54:17 +02:00
9f844bac2e
fix(app): chord overflow clip, section nav scroll on mobile
Gabriel Kaszewski
2026-07-11 22:49:05 +02:00
6912653906
fix(app): cache useFavorites snapshot to prevent infinite re-render
Gabriel Kaszewski
2026-07-11 22:39:46 +02:00
bb4d07055f
refactor(app): react-query for data fetching, fix infinite re-render
Gabriel Kaszewski
2026-07-11 22:37:11 +02:00
af328deac1
refactor: backend-only transpose, remove client-side transpose logic
Gabriel Kaszewski
2026-07-11 22:30:59 +02:00
381f273f10
feat(app): section nav, auto-scroll, favorites, fullscreen, wake lock, transposed key
Gabriel Kaszewski
2026-07-11 22:24:35 +02:00
2a628db521
feat: slash chord support (G/B parses+transposes bass note)
Gabriel Kaszewski
2026-07-11 22:12:03 +02:00
2f635c9b24
chore: enable LTO for release builds
Gabriel Kaszewski
2026-07-11 22:05:11 +02:00
fb936a64b0
clean up
Gabriel Kaszewski
2026-07-11 22:00:59 +02:00
2bfd0c7984
chore: gitignore sqlite files, update lockfile
Gabriel Kaszewski
2026-07-11 22:00:31 +02:00
bfaea4a4b0
style: rustfmt
Gabriel Kaszewski
2026-07-11 21:59:47 +02:00
2b702d88e4
feat: add tracing throughout, HTTP TraceLayer, detailed error logs
Gabriel Kaszewski
2026-07-11 21:58:58 +02:00
e89cf48b34
fix: sqlite create_if_missing on connect
Gabriel Kaszewski
2026-07-11 21:51:34 +02:00
aa31e1bdcd
docs: update LICENSE, README, architecture diagram
Gabriel Kaszewski
2026-07-11 21:49:49 +02:00
ff39680106
ci: add Gitea + GitHub Actions workflows
Gabriel Kaszewski
2026-07-11 21:44:39 +02:00
35b82fc5b3
chore: add dev/deploy targets to Makefile, deploy.sh
Gabriel Kaszewski
2026-07-11 21:43:55 +02:00
c4e9076b11
feat(app): auth UI, SPA mode, /api base URL
Gabriel Kaszewski
2026-07-11 21:40:57 +02:00
7bd27d9b9c
feat: JWT auth, /api prefix, SPA serving, OpenAPI, lean main.rs
Gabriel Kaszewski
2026-07-11 21:28:52 +02:00
13031347cc
samples
Gabriel Kaszewski
2026-07-11 21:02:28 +02:00
d13df586dd
refactor: DDD/CQRS architecture, unified crate layout
Gabriel Kaszewski
2026-07-11 21:02:10 +02:00
a520251dab
feat: implement bulk file import functionality in AddSongSheet component
Gabriel Kaszewski
2026-04-09 14:13:58 +02:00
ab5eb69f7a
chore: add .dockerignore and update Dockerfile to use debian:trixie-slim
Gabriel Kaszewski
2026-04-09 13:39:38 +02:00
b1d778284c
feat(api): config from env vars (HOST, PORT, CORS_ALLOWED_ORIGINS, DATABASE_URL)
Gabriel Kaszewski
2026-04-09 01:23:10 +02:00
808ce287a5
chore: docker compose template for homeserver deployment
Gabriel Kaszewski
2026-04-09 01:20:03 +02:00
3605bef2b0
feat: add Dockerfile and implement SQLite persistence layer with repository pattern
Gabriel Kaszewski
2026-04-09 01:17:18 +02:00
dbb7cbd92f
fix: use var(--x) not hsl(var(--x)) for oklch theme vars, redesign fretboard with explicit string lines
Gabriel Kaszewski
2026-04-09 01:15:49 +02:00
ed669b2e3a
fix: larger black key dots, active note names list on piano
Gabriel Kaszewski
2026-04-09 01:07:39 +02:00
2964475df9
fix: piano readability + note labels, open chord voicings for guitar
Gabriel Kaszewski
2026-04-09 01:00:34 +02:00
544474c074
fix: double-sharp notes in PianoKeys, barre bar on E-shape chords
Gabriel Kaszewski
2026-04-09 00:50:51 +02:00
e9c2f7a5e0
feat: chord diagram — piano/guitar diagrams in song detail
Gabriel Kaszewski
2026-04-09 00:44:32 +02:00
e99b581a43
feat: tappable chord names in ChordChart, extractUniqueChords
Gabriel Kaszewski
2026-04-09 00:42:24 +02:00
ec7237e8c7
feat: ChordGrid component
Gabriel Kaszewski
2026-04-09 00:40:41 +02:00
3d56b71aa9
feat: ChordDiagram component
Gabriel Kaszewski
2026-04-09 00:40:36 +02:00
5a4d0ef648
feat: GuitarFretboard component
Gabriel Kaszewski
2026-04-09 00:39:43 +02:00
7653933f46
feat: PianoKeys component
Gabriel Kaszewski
2026-04-09 00:38:14 +02:00
90df2b36f2
feat: chord voicing theory layer
Gabriel Kaszewski
2026-04-09 00:36:08 +02:00
ac65be1bb9
feat: guitar voicing templates
Gabriel Kaszewski
2026-04-09 00:31:25 +02:00
aeb9dfff67
chore: add tonal + vitest
Gabriel Kaszewski
2026-04-09 00:28:19 +02:00
bb99f5964a
docs: chord diagram implementation plan
Gabriel Kaszewski
2026-04-09 00:26:16 +02:00
df90e610ef
docs: chord diagram feature spec
Gabriel Kaszewski
2026-04-09 00:14:04 +02:00
f80ed4e88a
feat(app): PWA manifest, persistent transpose, font size, capo toggle, library sort
Gabriel Kaszewski
2026-04-08 04:09:25 +02:00
2558f19960
feat: add sort params to list/search, capo-aware GET /songs/{id}?apply_capo=true
Gabriel Kaszewski
2026-04-08 04:05:57 +02:00
41b9cb3d4c
feat: initialize project with .gitignore, LICENSE, README, and update dependencies
Gabriel Kaszewski
2026-04-08 03:56:28 +02:00
bef3bb8fed
feat(app): add dark/light theme switcher via next-themes
Gabriel Kaszewski
2026-04-08 03:56:05 +02:00
582bdbd901
refactor(app): extract previewChords to song-utils, simplify API_BASE, fix useEffect deps and cleanup
Gabriel Kaszewski
2026-04-08 03:53:44 +02:00
19829a0589
fix(app): reset edit sheet state on open, check deleteSong response status
Gabriel Kaszewski
2026-04-08 03:48:46 +02:00
8fc6e48aac
feat(app): add song edit and delete with dropdown menu
Gabriel Kaszewski
2026-04-08 03:46:56 +02:00
3a576f0018
feat(app): live server-side search with 300ms debounce and error state
Gabriel Kaszewski
2026-04-08 03:44:10 +02:00
65dd30df46
feat(app): add layout shell with bottom nav and Toaster
Gabriel Kaszewski
2026-04-08 03:42:13 +02:00
1936ced395
feat: add update_meta to SongRepositoryPort and PATCH /songs/{id}
Gabriel Kaszewski
2026-04-08 03:39:29 +02:00
6a3cdbe4c3
fix(persistence): extract row_to_summary helper, escape LIKE wildcards
Gabriel Kaszewski
2026-04-08 03:38:12 +02:00
377fe957bc
feat: add SongSearchService and GET /songs?q= search endpoint
Gabriel Kaszewski
2026-04-08 03:35:33 +02:00
c3b7cb78ab
docs: add search/nav/management implementation plan
Gabriel Kaszewski
2026-04-08 03:32:56 +02:00
7cd0c4aae1
docs: add search/nav/management/errors design spec
Gabriel Kaszewski
2026-04-08 03:28:36 +02:00
5390fe39e6
feat(app): wire frontend to real API, remove mock data and sessionStorage
Gabriel Kaszewski
2026-04-08 03:09:12 +02:00
8c0824c67c
feat(api): add song CRUD routes, wire SongService into AppState
Gabriel Kaszewski
2026-04-08 03:07:28 +02:00
0b47282547
feat(common): add SongService application layer
Gabriel Kaszewski
2026-04-08 03:05:50 +02:00
37a1e386e4
feat(persistence): add SqliteSongRepository and SqliteRepositoryFactory
Gabriel Kaszewski
2026-04-08 03:05:16 +02:00
8f9886c9a9
feat(domain): add StoredSong, SongSummary, SongRepositoryPort
Gabriel Kaszewski
2026-04-08 03:03:58 +02:00
852b1a8d0e
fix(app): wrap long chord/lyric lines at word boundaries for mobile
Gabriel Kaszewski
2026-04-08 02:47:17 +02:00
3bc7ad4c7c
fix: support raw HTML upload via FileReader, fix file import flow
Gabriel Kaszewski
2026-04-08 02:43:27 +02:00
90833c5b93
fix(app): meta null guard, deduplicate previewChords, env API URL, always show add card
Gabriel Kaszewski
2026-04-08 02:36:09 +02:00
9b68069151
feat(app): add song detail page with chord chart and transposition
Gabriel Kaszewski
2026-04-08 02:32:50 +02:00
3d18bb9e77
feat(app): add library page with song grid and search
Gabriel Kaszewski
2026-04-08 02:31:44 +02:00
cdb9c59d37
feat(app): add AddSongSheet component
Gabriel Kaszewski
2026-04-08 02:30:57 +02:00
8ca80c38f1
feat(app): add TransposeBar collapsible header
Gabriel Kaszewski
2026-04-08 02:29:48 +02:00
3844cc2296
feat(app): add ChordChart component with monospaced rendering
Gabriel Kaszewski
2026-04-08 02:29:10 +02:00
a6bec147d6
feat(app): add SongCard component
Gabriel Kaszewski
2026-04-08 02:28:39 +02:00
16fd6ba9ad
feat(app): add types, mock data, and transpose utility
Gabriel Kaszewski
2026-04-08 02:27:13 +02:00
eeb1ea9615
feat(app): install shadcn button, input, card, badge, sheet, tooltip
Gabriel Kaszewski
2026-04-08 02:25:13 +02:00
2483ed5a08
feat(api): add CORS middleware for browser fetch
Gabriel Kaszewski
2026-04-08 02:23:37 +02:00
0444d11fb4
feat(api): wire POST /tabs/parse endpoint with fetcher and parser
Gabriel Kaszewski
2026-04-08 01:56:06 +02:00
fe7d2dbceb
fix(ug-parser): address clippy warnings in parser
Gabriel Kaszewski
2026-04-08 01:54:43 +02:00
776389af49
feat(ug-parser): parse sections, lyrics, and chord positions from UG HTML
Gabriel Kaszewski
2026-04-08 01:47:17 +02:00
1a0458653a
feat(ug-parser): implement UgHtmlParser metadata extraction
Gabriel Kaszewski
2026-04-08 01:44:06 +02:00
36d38b9a78
fix(ug-parser): impl Default for UgTabFetcher
Gabriel Kaszewski
2026-04-08 01:42:35 +02:00
6416f5e9ab
feat(ug-parser): implement UgTabFetcher for file and URL sources
Gabriel Kaszewski
2026-04-08 01:41:29 +02:00
6435d92f8c
feat: scaffold ug-parser infrastructure crate
Gabriel Kaszewski
2026-04-08 01:40:26 +02:00
a5897a29d8
feat(domain): add ChordTransposer with semitone and key transposition
Gabriel Kaszewski
2026-04-08 01:37:41 +02:00
2f703fbb2a
feat(domain): add TabFetcherPort and TabParserPort traits
Gabriel Kaszewski
2026-04-08 01:35:55 +02:00
d004698923
feat(domain): add Song, Section, LyricLine, ChordPosition types
Gabriel Kaszewski
2026-04-08 01:34:26 +02:00
98370df27a
fix(domain): rename from_str to parse on Note and Chord
Gabriel Kaszewski
2026-04-08 01:33:19 +02:00
422afbb3f2
feat(domain): add Chord struct with parsing and display
Gabriel Kaszewski
2026-04-08 01:31:17 +02:00
ac1f1bd3da
fix(domain): remove dead use_sharps param, handle Cb enharmonic
Gabriel Kaszewski
2026-04-08 01:29:20 +02:00
a3ae4429f5
feat(domain): add Note enum with semitone math and display
Gabriel Kaszewski
2026-04-08 01:26:17 +02:00