b55a1f8cc1
fix: atomic setup transaction, prune devDependencies from runtime image
2026-08-29 18:46:07 +02:00
56ffda9e88
feat: release payload disk cache, batched rip status for list, artwork 404, stricter input handling
2026-08-29 18:44:08 +02:00
39c956e67d
fix: sync removes albums no longer in subsonic, classify non-json responses as api errors
2026-08-29 18:39:46 +02:00
061f7349b5
fix: robust web/dist path resolution and graceful shutdown
2026-08-29 17:59:22 +02:00
a3bf420282
feat: serve built SPA with fallback and artwork cache
2026-08-29 17:46:52 +02:00
875bc1087c
feat: background subsonic library sync with per-user state
2026-08-29 17:34:05 +02:00
f1d6320dfe
fix: validate match album before discogs fetch, guard barcode type
2026-08-29 17:30:02 +02:00
566a9bfc0d
feat: collection CRUD with artwork caching, rip override and match links
2026-08-29 17:19:17 +02:00
ded4e17849
feat: discogs lookup routes (barcode/search/release preview)
...
Known-red tests pending later tasks:
- 'reports duplicate when release already in collection' needs
POST /api/collection (Task 15)
- 'reports ripped...' and 'reports ambiguous...' need the test-only
POST /api/library/albums/test-seed route (Task 16)
2026-08-29 17:07:04 +02:00
e8a83eeefb
feat: rip status resolution with override and match links
2026-08-29 16:57:34 +02:00
c49321ccf1
feat: match ae/oe ligatures in normalization
2026-08-29 16:54:59 +02:00
217c676658
feat: title/artist normalization and matching
2026-08-29 16:48:15 +02:00
c1dd232a2f
fix: artwork cache never throws on body/disk failures
2026-08-29 16:43:45 +02:00
0faa74ae27
feat: best-effort artwork disk cache
2026-08-29 16:38:28 +02:00
9b52039fde
fix: skip null album entries in subsonic pagination
2026-08-29 16:35:01 +02:00
dc63db54ba
feat: subsonic library pagination
2026-08-29 16:31:08 +02:00
72f3fc8436
fix: harden discogs mappers against malformed payloads, name error classes, assert auth header
2026-08-29 16:24:40 +02:00
3715bb7447
feat: discogs client with barcode/text search and release fetch
2026-08-29 16:13:43 +02:00
b79a72a81b
feat: serializing queue with min-interval pacing
2026-08-29 16:05:29 +02:00
a54f56834d
fix: classify invalid subsonic URL as unreachable, type settings handlers, guard token mask and body types
2026-08-29 16:01:07 +02:00
e94ffb535b
feat: per-user settings routes with subsonic validation
2026-08-29 15:51:58 +02:00
6dfaaf465d
fix: map duplicate-username race to 409 and test session/cascade behavior
2026-08-29 15:46:34 +02:00
8bdbe292d5
feat: admin user management routes
2026-08-29 15:35:24 +02:00
1c52281feb
refactor: type auth preHandlers and mirror clearCookie options
2026-08-29 15:31:36 +02:00
ad8b7cb22a
feat: setup/login/logout/me auth routes
2026-08-29 15:20:42 +02:00
f48093319b
feat: argon2 passwords and sqlite-backed sessions
2026-08-29 15:11:15 +02:00
dff7b4826d
feat: real entrypoint using loadConfig
2026-08-29 15:05:46 +02:00
5545aa31fb
feat: config loading and sqlite schema
2026-08-29 14:55:42 +02:00
01ad6fbb40
chore: scaffold node/ts/vitest project with health endpoint
2026-08-29 14:43:44 +02:00