daniel-c-harvey
8b62915083
Make release Medium writable via upload + meta-edit; resolve detail-page track by releaseId not album title
2026-06-13 11:34:45 -04:00
daniel-c-harvey
2f47efeb46
CMS Phase 9 Wave 3: Release Archive tab, medium selector, Session/Mix browsers
...
Renames Genre tab to Release Archive with switch-free medium card group
(Enum.GetValues-driven). Adds MediumFields single dispatch + CutFields/SessionFields/
MixFields per-medium sections embedded by all five upload/edit forms. BatchUpload
enforces single-track invariant for Session/Mix. Adds CmsSessionBrowser (hero-image
upload) and CmsMixBrowser (waveform status + per-row Generate trigger).
ICmsReleaseService/CmsReleaseService wraps api/release endpoints.
Note: medium selector is forward-compat only — API write path pending.
2026-06-12 23:07:15 -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
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
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
fd8c0e389f
fix: correct missing @ directives on ExpandedGenre bindings in genre browser
2026-06-11 17:30:11 -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
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
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
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
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
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
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
ded5a3e5eb
feat(manager): add optional cover art upload to Add Track form
2026-06-10 14:14:35 -04:00
daniel-c-harvey
c4dc382bd7
fix: client-side image type guard and deselect affordance on TrackEdit
2026-06-07 16:41:02 -04:00
daniel-c-harvey
5703ac2752
feat: CMS cover-art upload on track edit page
2026-06-07 16:33:53 -04:00
daniel-c-harvey
3de88c786a
feat: capture and display original upload filename for tracks
2026-06-07 09:00:17 -04:00
daniel-c-harvey
97c8439ed7
Fold waveform preprocessing into tracks page as tab
2026-06-05 18:20:33 -04:00
daniel-c-harvey
6e25ad3085
Add CMS waveform pre-processing panel with backfill endpoints
...
GET api/track/waveform-status and POST api/track/{id}/waveform (ApiKey);
CmsTrackService methods; TrackPreProcessing page with per-row and
sequential bulk generation; nav links from TrackList and Index.
2026-06-05 17:56:25 -04:00
Daniel Harvey
4351302a25
Flip ITrackService/TrackManager to DTO output; TrackConverter is the sole entity<->DTO path across all consumers
2026-05-25 11:35:04 -04:00
Daniel Harvey
551cef0fe8
DeepDrftAPI Rename
2026-05-25 10:38:36 -04:00
Daniel Harvey
98b2c8d744
Manager Cleanup
2026-05-25 10:17:21 -04:00
Daniel Harvey
d9e4052e39
fix: review remediation — _busy finally block, TrackNotFoundMessage const, null-safe error log
2026-05-25 09:11:15 -04:00
Daniel Harvey
f404602536
refactor: make DeepDrftContent sole authority over track SQL + vault; Manager goes HTTP-only
2026-05-25 08:46:09 -04:00
Daniel Harvey
72c33d9940
CMS -> API refactor part 1
2026-05-25 04:04:59 -04:00
Daniel Harvey
7f99479cae
fix(manager): review remediation — DeleteTrackAsync dead code, TrackEdit Id long, dead @using
2026-05-24 21:14:26 -04:00
Daniel Harvey
428359b241
refactor(manager): replace internal CMS HTTP layer with direct CmsTrackService calls
2026-05-24 20:46:22 -04:00
Daniel Harvey
e2a2064f7a
fix(tracknew): attach bearer token to WAV upload request
2026-05-24 18:57:48 -04:00
Daniel Harvey
e73b3c3218
chore(manager): upgrade AuthBlocks to 10.3.33; migrate ITokenService → IAuthSession, SystemRoleConstants, hoist usings to _Imports
2026-05-22 23:33:25 -04:00
Daniel Harvey
710705415a
move DeleteTrackDialog to Shared/, drop redundant usings
2026-05-21 20:44:32 -04:00
Daniel Harvey
ce1cbccad5
inline DeepDrftCms RCL into DeepDrftManager and delete the project
2026-05-21 20:36:00 -04:00