|
|
af328deac1
|
refactor: backend-only transpose, remove client-side transpose logic
|
2026-07-11 22:30:59 +02:00 |
|
|
|
2a628db521
|
feat: slash chord support (G/B parses+transposes bass note)
CI / Check / Test (push) Successful in 11m54s
|
2026-07-11 22:12:03 +02:00 |
|
|
|
bfaea4a4b0
|
style: rustfmt
|
2026-07-11 21:59:47 +02:00 |
|
|
|
2b702d88e4
|
feat: add tracing throughout, HTTP TraceLayer, detailed error logs
|
2026-07-11 21:58:58 +02:00 |
|
|
|
e89cf48b34
|
fix: sqlite create_if_missing on connect
|
2026-07-11 21:51:34 +02:00 |
|
|
|
7bd27d9b9c
|
feat: JWT auth, /api prefix, SPA serving, OpenAPI, lean main.rs
- auth: register/login/refresh/logout w/ JWT+Argon2, protected mutations
- domain: User, RefreshSession, auth ports, Unauthorized/Forbidden errors
- presentation: context/state/factory/errors/extractors/openapi modules
- routes behind /api, SPA served from root w/ fallback
- OpenAPI Scalar at /docs
- frontend ssr:false, single-binary Dockerfile
|
2026-07-11 21:28:52 +02:00 |
|
|
|
d13df586dd
|
refactor: DDD/CQRS architecture, unified crate layout
- crates: common→application, api→presentation, infrastructure/*→adapters/*
- new crates: api-types, infra-wiring
- domain: errors/, models/, value_objects/, ports/, services/
- application: CQRS use cases (songs/, tabs/) w/ commands, queries, deps
- unified DomainError replaces RepositoryError
- workspace deps, unused dep cleanup
- fix: parse plain-text chord lines (UG drops spans mid-song)
- tests extracted to separate modules (tests/ dirs)
|
2026-07-11 21:02:10 +02:00 |
|
|
|
b1d778284c
|
feat(api): config from env vars (HOST, PORT, CORS_ALLOWED_ORIGINS, DATABASE_URL)
|
2026-04-09 01:23:10 +02:00 |
|
|
|
3605bef2b0
|
feat: add Dockerfile and implement SQLite persistence layer with repository pattern
|
2026-04-09 01:17:18 +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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
3bc7ad4c7c
|
fix: support raw HTML upload via FileReader, fix file import flow
|
2026-04-08 02:43:27 +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 |
|