daniel-c-harvey
16f356a760
docs: resolve TrackDto nesting (§0.3) and add §8.0 wave sequencing
...
Resolve Phase 8 open question 0.3 — TrackDto gets a nested Release
(ReleaseDto); flat release fields removed, all consumers updated as
part of §8.0 (flat read-model rejected). Add §0.6 implementation
sequencing: five mergeable waves with Waves 1+2 as a single deployment
unit and Waves 3+4 parallelizable. Update PLAN.md §8.0 Shape to match.
2026-06-11 11:09:24 -04:00
daniel-c-harvey
8983592e56
Merge branch 'p7-w3-parallax-ssr' into dev
2026-06-11 11:07:55 -04:00
daniel-c-harvey
92ddc5bb3e
fix(parallax): add aspect-ratio mode to ParallaxImage to kill SSR/hydration layout shift
2026-06-11 11:06:16 -04:00
daniel-c-harvey
76e5080278
docs: gate Phase 8 on TrackEntity normalization (§8.0); fold review decisions
...
Add §8.0 TrackEntity → Release/Track normalization as a breaking
pre-requisite before Phase 8 UI. Fold in review decisions: Waveform tab
removed (in-grid status column + per-row/page-level generate),
ViewModel is DI-scoped (TracksViewModel pattern), BatchEdit confirmed as
a new page sharing extracted sub-components. Dissolve the AlbumSummaryDto
widening question (Release table supplies the fields directly).
2026-06-11 11:03:48 -04:00
daniel-c-harvey
675710d086
Merge branch 'p7-w2-parallax-aspect-ratio' into dev
2026-06-11 10:24:03 -04:00
daniel-c-harvey
c46c3a2f9c
feat(parallax): aspect-ratio-aware auto height via WindowHeightFraction + ResizeObserver, drop DotNetObjectReference round-trip
2026-06-11 10:23:25 -04:00
daniel-c-harvey
49e99ff986
docs: add Phase 8 (CMS Track Browser) to PLAN; supersede §6.2
2026-06-11 09:49:19 -04:00
daniel-c-harvey
5a345cabea
docs(plan): move Phase 1.2 audio format diversity to COMPLETED.md
2026-06-11 09:45:03 -04:00
daniel-c-harvey
25ade16b07
Merge branch 'p1.2-w3-factory-wiring' into dev
2026-06-11 09:42:05 -04:00
daniel-c-harvey
5d9ba1c953
feat(audio): wire Mp3FormatDecoder and FlacFormatDecoder into AudioPlayer factory
2026-06-11 09:32:33 -04:00
daniel-c-harvey
ab418bf840
docs: move ParallaxImage 7.1 from PLAN to COMPLETED (landed 2026-06-11)
2026-06-11 09:28:22 -04:00
daniel-c-harvey
d3f1d6a8a0
Merge branch 'p7-w1-parallax-image' into dev
2026-06-11 09:24:16 -04:00
daniel-c-harvey
4d9505c341
feat: add ParallaxImage scroll-parallax component to DeepDrftShared.Client
2026-06-11 09:23:34 -04:00
daniel-c-harvey
0439d3da4f
docs: record Phase 1.2 Wave 2 progress; update PLAN.md and DeepDrftPublic.Client CLAUDE.md
2026-06-11 09:13:04 -04:00
daniel-c-harvey
98142754fa
Merge branch 'fix-upload-field-name' into dev
2026-06-11 09:10:55 -04:00
daniel-c-harvey
3da12067f6
fix: match multipart field name "audioFile" to API [FromForm] binding in UploadTrackAsync
2026-06-11 09:10:50 -04:00
daniel-c-harvey
86e1243eba
Merge branch 'p1.2-w2-t2-flac-decoder' into dev
2026-06-11 09:08:49 -04:00
daniel-c-harvey
b6b212e429
Merge branch 'p1.2-w2-t1-mp3-decoder' into dev
2026-06-11 09:08:40 -04:00
daniel-c-harvey
879c30a5e5
fix(flac): add FLAC frame-sync scan to getAlignedSegmentSize; extend IFormatDecoder rawData param
...
StreamDecoder peeks candidate bytes; FlacFormatDecoder scans backward for 0xFF/0xF8 sync. Fixes mid-stream decode failure where segments started mid-frame.
2026-06-11 09:08:33 -04:00
daniel-c-harvey
a2771c71aa
fix(mp3): guard sub-frame tail in getAlignedSegmentSize to prevent over-read past availableBytes
2026-06-11 09:04:53 -04:00
daniel-c-harvey
81b8796ba5
fix: send ReleaseType as int in CmsTrackService.UpdateAsync
2026-06-11 08:50:10 -04:00
daniel-c-harvey
489215e415
fix: send ReleaseType as int not string in CmsTrackService.UpdateAsync
2026-06-11 08:49:00 -04:00
daniel-c-harvey
b7b5933b25
docs(parallax): fold in resolved JS-placement and direction decisions
...
Resolve two open questions in the ParallaxImage spec: TS toolchain
co-located in DeepDrftShared.Client (Interop/parallax -> wwwroot/js), and
parallax direction exposed as the InvertDirection parameter. Update PLAN.md
7.1 constraint to reflect no remaining blockers.
2026-06-11 08:48:57 -04:00
daniel-c-harvey
c4930e80ba
feat(audio): add FLAC IFormatDecoder for chunked streaming + seek
2026-06-11 08:40:53 -04:00
daniel-c-harvey
b04081b960
feat(audio): add Mp3FormatDecoder streaming strategy
...
Implements IFormatDecoder for MP3: ID3v2 skip, MPEG Layer III frame-sync + header decode, Xing/Info/VBRI detection, CBR frame alignment, and VBR TOC seek interpolation. Wiring lands in Wave 3.
2026-06-11 08:40:52 -04:00
daniel-c-harvey
bd6bd4d827
docs(plan): spec ParallaxImage shared component (Phase 7)
...
Add product note and PLAN.md Phase 7 entry for a reusable scroll-parallax
image window in DeepDrftShared.Client — full-width flag, hover crossfade,
IntersectionObserver-gated scroll math, accessibility.
2026-06-11 08:36:00 -04:00
daniel-c-harvey
c835a54652
docs: record Phase 1.2 Wave 1 progress; update processor, client, and API CLAUDE.md
2026-06-11 08:23:56 -04:00
daniel-c-harvey
909d259df9
Merge branch 'p1.2-w1-t2-decoder-interface' into dev
2026-06-11 08:20:12 -04:00
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
009f565b73
fix: remove dead CalculateByteOffset C# shim; guard AudioPlayer.calculateByteOffset on parsed format
2026-06-11 06:13:52 -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
0b0bcb3dee
refactor(audio): extract IFormatDecoder/WavFormatDecoder and wire Content-Type to JS format selection
...
StreamDecoder is now format-agnostic; WavFormatDecoder delegates to WavUtils; contentType flows C# to JS.
2026-06-11 06:08:09 -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