bvandeusen
f4e73b81b4
feat(api): add POST /api/events handler
...
Discriminated-union JSON over three event types: play_started,
play_ended, play_skipped. Auth via existing RequireUser. play_started
returns play_event_id + session_id; the other two return { ok: true }.
Validates ownership: play_ended/play_skipped on another user's row
returns 403. Mount signature now takes EventsConfig and constructs
the playevents.Writer; server.New propagates it through.
2026-04-26 00:12:06 -04:00
bvandeusen
63d3e234d9
feat(api): register cover + stream routes under RequireUser
2026-04-21 22:48:45 -04:00
bvandeusen
3656461b20
feat(api): GET /api/tracks/{id}/stream with Range support
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-21 22:44:48 -04:00
bvandeusen
945b773cbd
feat(api): GET /api/albums/{id}/cover with sidecar fallback
2026-04-21 22:37:53 -04:00
bvandeusen
db2ee3b21f
feat(api): register library + search routes under RequireUser
2026-04-21 08:34:12 -04:00
bvandeusen
8fb2f4e184
feat(api): GET /api/artists with alpha/newest sort and paging
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 08:06:03 -04:00
bvandeusen
f37fd782af
feat(api): GET /api/artists/{id} with nested albums
2026-04-21 08:01:25 -04:00
bvandeusen
c0487ecddb
feat(api): GET /api/albums/{id} with nested tracks
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 07:43:39 -04:00
bvandeusen
8c18e44d5b
feat(api): GET /api/tracks/{id} handler with parent metadata
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-21 07:12:11 -04:00