Commit Graph

583 Commits

Author SHA1 Message Date
daniel-c-harvey 6f63fe7d7c docs: amend Phase 9 spec — apply SOLID review fixes F0-F13 2026-06-12 21:15:36 -04:00
daniel-c-harvey 8087fd04ce docs: SOLID review of Phase 9 spec — waveform compute tier flagged critical 2026-06-12 21:00:04 -04:00
daniel-c-harvey c1271aeb90 docs: resolve 3 Phase 9 open questions from Daniel
Genre browse stays route-reachable (deprioritized, not retired).
Session/Mix single-track is a hard upload constraint.
/albums redirects to /cuts when CUTS lands.
2026-06-12 17:39:30 -04:00
daniel-c-harvey 0b349da5f8 docs: spec Phase 9 — Release Medium Types
Four-wave plan for ReleaseMedium discriminator (Cut/Session/Mix),
medium-specific metadata tables, CMS Release Archive tab, and public
ARCHIVE nav + CUTS/SESSIONS/MIXES browse + detail surfaces.
2026-06-12 16:26:32 -04:00
daniel-c-harvey f07ad58655 Merge branch 'parallax-js-deploy-fix' into dev
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Successful in 2m9s
Deploy DeepDrftManager / Build & Publish (push) Successful in 1m23s
Deploy DeepDrftPublic / Build & Publish (push) Successful in 3m49s
Deploy DeepDrftAPI / Deploy (push) Successful in 1m32s
Deploy DeepDrftManager / Deploy (push) Successful in 1m29s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m28s
2026-06-12 06:41:51 -04:00
daniel-c-harvey 2f7f8dbdf8 fix: track compiled RCL parallax JS for MapStaticAssets deployment
DeepDrftShared.Client's wwwroot/js/ was gitignored, so the TS-compiled
parallax.js was absent at build-time manifest generation. MapStaticAssets
serves _content/ exclusively from the build manifest, so the file was
missing from the publish output — requests fell through to the Blazor
HTML handler, producing a text/html MIME-type error in the browser.

DeepDrftPublic audio JS is unaffected because UseStaticFiles() serves
that startup project's physical wwwroot/ directly, bypassing the manifest.
The RCL has no such bypass, so its compiled JS must be present at
manifest-generation time, which requires tracking it in git.
2026-06-12 06:39:07 -04:00
daniel-c-harvey 528b904d72 Merge branch 'cms-bug-fixes' into dev 2026-06-12 06:33:24 -04:00
daniel-c-harvey 0448711082 fix: CMS image proxy + partial unique index for soft-deleted releases 2026-06-12 06:27:34 -04:00
daniel-c-harvey dd30d57838 Merge branch 'tsconfig-publish-fix' into dev
Deploy DeepDrftManager / Build & Publish (push) Successful in 1m19s
Deploy DeepDrftPublic / Build & Publish (push) Successful in 3m50s
Deploy DeepDrftManager / Deploy (push) Successful in 1m23s
Deploy DeepDrftPublic / Deploy (push) Successful in 1m27s
2026-06-11 20:58:37 -04:00
daniel-c-harvey 70f110bed7 fix: use Content Update to suppress tsconfig.json from publish output 2026-06-11 20:55:43 -04:00
daniel-c-harvey 80ebc80a2a fix: Home Page Styles Cleanup
Deploy DeepDrftPublic / Build & Publish (push) Failing after 3m27s
Deploy DeepDrftPublic / Deploy (push) Has been skipped
2026-06-11 19:59:08 -04:00
daniel-c-harvey 68bf328e7c docs: add Phase 8 §8.7 to COMPLETED (upload cache invalidation + Albums→Releases rename)
Deploy DeepDrftManager / Build & Publish (push) Successful in 1m29s
Deploy DeepDrftPublic / Build & Publish (push) Failing after 3m29s
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Successful in 1m59s
Deploy DeepDrftManager / Deploy (push) Successful in 1m23s
Deploy DeepDrftPublic / Deploy (push) Has been skipped
Deploy DeepDrftAPI / Deploy (push) Successful in 1m36s
2026-06-11 18:57:03 -04:00
daniel-c-harvey b5bd1c977b Merge branch 'p8-w7-release-label-upload-stale' into dev 2026-06-11 18:55:50 -04:00
daniel-c-harvey 4b26e0a969 fix: invalidate VM cache after upload and rename Albums tab/card to Releases 2026-06-11 18:55:36 -04:00
daniel-c-harvey c6078a3e71 assets: add studio, live, and DJ mix images for home medium section 2026-06-11 18:50:07 -04:00
daniel-c-harvey 0874042040 docs: move Phase 8.6 from PLAN to COMPLETED, correct type labels to Studio/Live/Mix 2026-06-11 18:49:58 -04:00
daniel-c-harvey 6d3b9cd4d3 Merge branch 'p8-w6-medium-section' into dev 2026-06-11 18:38:10 -04:00
daniel-c-harvey 9792d4346e docs: add Phase 8 §8.6 to COMPLETED (cache invalidation + orphaned release fixes) 2026-06-11 17:58:31 -04:00
daniel-c-harvey fc20a5d3d2 Merge branch 'p8-w6-stale-refresh-album-delete' into dev 2026-06-11 17:57:08 -04:00
daniel-c-harvey f02974b3c2 fix: refresh stale browse cache on track edits and allow deleting empty releases
- Add CmsTrackBrowserViewModel.Invalidate(); called from TrackEdit/BatchEdit on save or delete so album/genre cache is invalidated and re-fetches on next mode switch
- CmsAlbumBrowser now handles 0-track releases: confirm dialog + DeleteReleaseAsync instead of early return; partial-failure path also fires OnReleasesChanged to trigger cache invalidation
- TrackList.OnAlbumsChanged now calls VM.Invalidate() so genres stay fresh after any album delete
- UnifiedTrackService.DeleteAsync cascades release soft-delete when last live track is removed (non-fatal; logs on failure)
- New DELETE api/track/release/{id} endpoint (ApiKeyAuthorize) for direct release soft-delete
- EF migration SoftDeleteOrphanedReleases backfills existing orphaned release rows via raw SQL (data-only, no schema change)
2026-06-11 17:56:18 -04:00
daniel-c-harvey a6e565e445 feat: replace home genre cards with Music through Every Medium image section 2026-06-11 17:55:13 -04:00
daniel-c-harvey 38e345ccf7 docs: add Phase 8.6 'Music through Every Medium' section spec to PLAN 2026-06-11 17:48:25 -04:00
daniel-c-harvey fd8c0e389f fix: correct missing @ directives on ExpandedGenre bindings in genre browser 2026-06-11 17:30:11 -04:00
daniel-c-harvey b359786e69 docs: move Phase 8 §8.1-§8.5 from PLAN to COMPLETED (landed 2026-06-12) 2026-06-11 17:00:55 -04:00
daniel-c-harvey bef3f590ca Merge branch 'p8-w5c-batch-edit' into dev 2026-06-11 16:57:18 -04:00
daniel-c-harvey 407ed90341 feat: add BatchEdit page and extract reusable batch sub-components from BatchUpload
fix: TrackNumber sort case, stale _imagePath reset, skip Done rows on retry in BatchEdit
2026-06-11 16:56:55 -04:00
daniel-c-harvey 92a3bea129 Merge branch 'p8-w5b-t2-genre-browser' into dev 2026-06-11 16:45:10 -04:00
daniel-c-harvey 6480953189 Merge branch 'p8-w5b-t1-album-browser' into dev 2026-06-11 16:45:07 -04:00
daniel-c-harvey b22c3f96d7 feat: add CmsGenreBrowser genre browse mode to CMS track list
fix: add @key="ExpandedGenre" to CmsTrackGrid so genre switch forces fresh component instance
2026-06-11 16:42:46 -04:00
daniel-c-harvey 62620bc0d4 feat(cms): add expandable Album browser to Track Browser 2026-06-11 16:26:44 -04:00
daniel-c-harvey 55b26b2e41 Merge branch 'p8-w5a-foundation' into dev 2026-06-11 16:18:19 -04:00
daniel-c-harvey 508a522a8d feat(cms): add Track Browser foundation with mode toggle and CmsTrackGrid
- Extend ICmsTrackService.GetPagedAsync with album/genre filter params
- Add CmsTrackBrowserViewModel (DI-scoped) with lazy album/genre load
- Extract CmsTrackGrid: 9-column layout, waveform status, per-row generate,
  info tooltip, album/genre filter params, OnStatusLoaded callback
- Restructure TrackList: remove MudTabs, add three @page routes, mode toggle,
  Generate All Missing button; album/genre stubs for next wave
2026-06-11 16:17:45 -04:00
daniel-c-harvey cf557e16aa Merge branch 'p7-w6-parallax-pop' into dev 2026-06-11 16:09:34 -04:00
daniel-c-harvey a2f9742f8a fix(parallax): prime parallax position with pre-Blazor init script to kill Server->WASM position pop 2026-06-11 16:08:55 -04:00
daniel-c-harvey a29b961c27 docs: move Phase 8 §8.0 to COMPLETED; unblock §8.1-§8.5 in PLAN 2026-06-11 15:58:30 -04:00
daniel-c-harvey e077b8ec7b Merge branch 'p8-w12-release-track-normalize' into dev 2026-06-11 15:55:10 -04:00
daniel-c-harvey 612b21b1e7 Merge branch 'p7-w5-parallax-prerender-pos' into dev 2026-06-11 15:47:48 -04:00
daniel-c-harvey 70d4a87cd5 fix: include Release nav on all TrackRepository query paths; add unique constraint on release(title, artist) 2026-06-11 14:48:52 -04:00
daniel-c-harvey ae531116b7 fix(parallax): animate background-position-y directly so SSR parallax works pre-WASM 2026-06-11 14:45:30 -04:00
daniel-c-harvey 63bdc5ee93 feature: Home Pictures part 1 2026-06-11 13:47:41 -04:00
daniel-c-harvey f767d288c5 feat: normalize release-cardinal fields out of track into a Release entity (Phase 8 §8.0) 2026-06-11 12:51:21 -04:00
daniel-c-harvey 9d7f2ff003 feat(home): wire ParallaxImage hero to homepage; tweak crossfade to 700ms 2026-06-11 12:12:35 -04:00
daniel-c-harvey c59f59c3fe Merge branch 'p7-w4-parallax-css-scroll' into dev 2026-06-11 12:12:05 -04:00
daniel-c-harvey 91566692f6 fix(parallax): drive --parallax-pos via CSS scroll animation to kill SSR/hydration position pop 2026-06-11 11:57:43 -04:00
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