Commit Graph

509 Commits

Author SHA1 Message Date
daniel-c-harvey f10e20a0e2 Merge branch 'p1.2-w1-t1-format-processors' into dev
# Conflicts:
#	DeepDrftAPI/Controllers/TrackController.cs
2026-06-11 08:20:05 -04:00
daniel-c-harvey 4a46ec36b3 fix(mp3): remove dead FrameSize field, fix CBR duration ID3 exclusion, add MPEG2 bitrate table, pin CBR test assertions 2026-06-11 06:13:20 -04:00
daniel-c-harvey 34e7f2f8ed docs(plan): move Phase 6 CMS Enhancements (6.1 dashboard, 6.3 batch upload) to COMPLETED.md 2026-06-11 05:49:33 -04:00
daniel-c-harvey 3bb8104967 feat(audio): add MP3 and FLAC upload support via format-routed processors
AudioProcessorRouter dispatches by extension; vault stores original bytes with correct MIME type.
2026-06-11 05:49:17 -04:00
daniel-c-harvey a82bd875d9 Merge branch 'p6-w2-batch-upload': batch upload page 2026-06-10 21:44:47 -04:00
daniel-c-harvey 72171c9374 feat(cms): add batch upload page for multi-track releases at /tracks/upload 2026-06-10 21:43:31 -04:00
daniel-c-harvey 480c961a09 Merge branch 'p6-w1-t2-data-model': ReleaseType + TrackNumber data model 2026-06-10 21:36:28 -04:00
daniel-c-harvey 754dc311a6 Merge branch 'p6-w1-t1-cms-dashboard': CMS home dashboard 2026-06-10 21:36:17 -04:00
daniel-c-harvey d47a5e00af feat(tracks): add ReleaseType and TrackNumber to track metadata model and CMS edit form 2026-06-10 21:36:00 -04:00
daniel-c-harvey 77dee5eac5 feat(cms): replace home redirect with catalogue dashboard of track/album/genre cards 2026-06-10 21:35:59 -04:00
daniel-c-harvey f8186fb7c7 docs: move Phase 1.1 to COMPLETED.md; update DeepDrftContent CLAUDE.md for float and padded WAV support 2026-06-10 20:42:58 -04:00
daniel-c-harvey 092ac0b5f2 Merge branch 'p1-w1-wav-format-extensions' into dev 2026-06-10 20:41:04 -04:00
daniel-c-harvey 3953229ae4 docs(plan): confirm Phase 6 batch-upload decisions; renumber CMS Enhancements
Renumber CMS Enhancements section to Phase 6 (6.1-6.3). Resolve three
6.3 open questions: one album per batch (all release fields shared in
header), persistent track ordinals via new TrackNumber field, and artist
as a release-level header field. Drag-and-drop reorder remains the only
open question.
2026-06-10 20:40:42 -04:00
daniel-c-harvey 8d80d43a47 test: assert data region in float and padded-container conversion tests; add TryExtractPcm null-return coverage 2026-06-10 20:08:45 -04:00
daniel-c-harvey eddbb00cd9 feat(audio): accept EXTENSIBLE IEEE-float and padded 24-in-32 WAV
Convert float to 24-bit PCM and repack padded containers on normalize; vault still stores standard PCM.
2026-06-10 20:04:55 -04:00
daniel-c-harvey aa1f7d50f1 docs(plan): spec Phase 2 CMS enhancements — home dashboard and batch upload 2026-06-10 19:34:10 -04:00
daniel-c-harvey b4cda76114 fix: Cover Art Upload Enable State
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Successful in 2m1s
Deploy DeepDrftManager / Build & Publish (push) Successful in 1m0s
Deploy DeepDrftPublic / Build & Publish (push) Successful in 3m23s
Deploy DeepDrftAPI / Deploy (push) Successful in 1m33s
Deploy DeepDrftManager / Deploy (push) Successful in 1m29s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m28s
2026-06-10 19:21:39 -04:00
daniel-c-harvey 38529a962a docs(plan): add Phase 1.1 Extended WAV format support
Track the two EXTENSIBLE WAV sub-cases scoped out of the
WAVE_FORMAT_EXTENSIBLE PCM fix: non-PCM (IEEE Float) SubFormats and
padded 24-in-32 containers.
2026-06-10 15:31:25 -04:00
daniel-c-harvey d2a9475ba2 Merge branch 'extensible-wav-support' into dev 2026-06-10 15:27:47 -04:00
daniel-c-harvey e84823be39 docs: update AudioProcessor notes for EXTENSIBLE-PCM WAV support 2026-06-10 15:26:50 -04:00
daniel-c-harvey 6c602170a9 fix(audio): guard EXTENSIBLE fmt OOB read on truncated buffer; document padded-container gap 2026-06-10 15:24:31 -04:00
daniel-c-harvey 88ac5b2c88 fix(audio): support WAVE_FORMAT_EXTENSIBLE PCM WAVs, normalizing them to standard PCM on upload 2026-06-10 15:20:34 -04:00
daniel-c-harvey 0f5eaa42b5 Merge branch 'soft-delete-fix' into dev 2026-06-10 14:32:50 -04:00
daniel-c-harvey f0185587f7 fix(data): route all TrackRepository queries through soft-delete-filtered Query 2026-06-10 14:32:31 -04:00
daniel-c-harvey 0a5ddfdad8 Merge branch 'seek-load-race' into dev 2026-06-10 14:31:48 -04:00
daniel-c-harvey 8b94a5fdf7 fix: assign seek CTS synchronously and guard load finally to stop seek/load race 2026-06-10 14:30:12 -04:00
daniel-c-harvey fb27918ed6 fix: guard LoadTrackStreaming OCE catch with loadCts identity so an in-flight seek isn't clobbered mid-load 2026-06-10 14:22:35 -04:00
daniel-c-harvey 691d904273 Merge branch 'track-new-image' into dev 2026-06-10 14:18:44 -04:00
daniel-c-harvey ded5a3e5eb feat(manager): add optional cover art upload to Add Track form 2026-06-10 14:14:35 -04:00
daniel-c-harvey f25d0f624f Merge branch 'seek-hardening' into dev 2026-06-10 13:25:17 -04:00
daniel-c-harvey 43f54cb950 Merge branch 'p2-w1-filter-views' into dev 2026-06-10 12:43:33 -04:00
daniel-c-harvey f40940b957 fix: guard SeekBeyondBuffer OCE catch with when(seekCts.IsCancellationRequested) so timeout OCEs fall through to error handler 2026-06-10 11:08:54 -04:00
daniel-c-harvey 10256677ac docs: close Phase 2.2/2.3 — move to COMPLETED.md, update DeepDrftPublic proxy CLAUDE.md 2026-06-10 10:58:16 -04:00
daniel-c-harvey 6fe7663667 fix: harden seek — timeout no longer swallowed as cancel, rapid seek-on-seek no longer clears active seek flag 2026-06-10 10:55:49 -04:00
daniel-c-harvey 5cae83b9ed feat: add search/album/genre filtering and /albums + /genres browse pages 2026-06-10 10:54:56 -04:00
daniel-c-harvey d9b92e0703 Merge branch 'seek-cancel-fix' into dev 2026-06-10 09:03:11 -04:00
daniel-c-harvey 0fd1977353 fix: silence false error log when streaming is cancelled during seek 2026-06-10 09:01:59 -04:00
daniel-c-harvey 1071ba7374 docs: bring CONTEXT.md §4 current — Phase 4 complete, iframe player landed 2026-06-09 21:58:24 -04:00
daniel-c-harvey 79a015f60a docs: update CLAUDE.md files to reflect Range header seek, remove WavOffsetService references 2026-06-09 07:41:38 -04:00
daniel-c-harvey 0bd7e6904d Merge branch 'p4-w2-retire-offset' into dev 2026-06-09 07:37:51 -04:00
daniel-c-harvey f602eb9772 chore: remove WavOffsetService and ?offset= seek path, superseded by Range header (Phase 4.1) 2026-06-09 07:30:36 -04:00
daniel-c-harvey b372bee365 Merge branch 'stream-now-button' into dev 2026-06-09 07:25:25 -04:00
daniel-c-harvey fad3635fa1 Merge branch 'p4-w1-range-streaming' into dev 2026-06-09 07:19:26 -04:00
daniel-c-harvey 561f4a500a docs: close Phase 4.1 and 4.2 — move to COMPLETED.md 2026-06-09 07:07:57 -04:00
daniel-c-harvey 9be35e5a58 refactor: extract StreamNowButton component shared by hero and nav menu 2026-06-09 07:00:37 -04:00
daniel-c-harvey aaa9f732ae feat: replace ?offset= seek with HTTP Range streaming across API, proxy, and client
- API: enableRangeProcessing true on no-offset FileStream path
- Proxy: transparent Range relay, forwards 206/416/Content-Range verbatim
- TrackMediaClient: Range: bytes=X- replaces ?offset=X; response disposed via TrackMediaResponse
- StreamDecoder: reinitializeForRangeContinuation retains wavHeader, counts raw PCM against 206 Content-Length
- AudioPlayer: seekBeyondBuffer adds headerSize for file-absolute offset; duration guard prevents continuation overwriting full-track duration
- StreamingAudioPlayerService: seek guard corrected to >= 0 (file-absolute offset contract)
2026-06-09 07:00:35 -04:00
daniel-c-harvey 5c3c3c3d0c docs(plan): commit Phase 4.1 to Option A1 (Range headers, custom decoder)
Record the design-gate decision for HTTP Range support: Range headers in
the JS fetch retaining the AudioBuffer decoder, rejecting MediaElement
(loses early-playback) and synthesized-header-over-Range (breaks caching
invariant). Add per-file shape, acceptance criteria, and the file-absolute
offset constraint. Tighten 4.2 — disk-streaming already done on the
default path; only the legacy offset branch remains.
2026-06-09 06:33:29 -04:00
daniel-c-harvey 760e9a1982 fix: Adjust Spectrum Bar Colors
Deploy DeepDrftPublic / Build & Publish (push) Successful in 3m37s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m23s
2026-06-09 06:23:23 -04:00
daniel-c-harvey 5b3bbc7b47 Merge branch 'lmf-icon-56' into dev
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Successful in 2m2s
Deploy DeepDrftManager / Build & Publish (push) Successful in 1m8s
Deploy DeepDrftPublic / Build & Publish (push) Successful in 3m36s
Deploy DeepDrftAPI / Deploy (push) Successful in 1m34s
Deploy DeepDrftManager / Deploy (push) Successful in 1m30s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m28s
2026-06-08 16:33:28 -04:00
daniel-c-harvey f40786171d fix: shrink .lmf-icon to 56px to match MudFab Size.Large 2026-06-08 16:33:20 -04:00