Commit Graph

45 Commits

Author SHA1 Message Date
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 3da12067f6 fix: match multipart field name "audioFile" to API [FromForm] binding in UploadTrackAsync 2026-06-11 09:10:50 -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 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 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 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 75bf93c2bb CMS Home autoredirect to /tracks 2026-06-06 09:52:50 -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-c-harvey 21b7661ca8 fix: suppress h1 focus ring caused by FocusOnNavigate in both Blazor apps 2026-06-04 18:18:23 -04:00
daniel-c-harvey 194a76ce4c Workflow Build Trigger
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Successful in 2m13s
Deploy DeepDrftManager / Build & Publish (push) Successful in 1m6s
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 1m26s
2026-06-04 14:32:20 -04:00
daniel-c-harvey 6143d9afef Workflow Triggers
Deploy DeepDrftAPI / Build, Publish & Bundle (push) Failing after 1m36s
Deploy DeepDrftManager / Build & Publish (push) Failing after 55s
Deploy DeepDrftPublic / Deploy (push) Has been cancelled
Deploy DeepDrftPublic / Build & Publish (push) Has been cancelled
Package install tarball / package (push) Successful in 4s
Deploy DeepDrftAPI / Deploy (push) Has been skipped
Deploy DeepDrftManager / Deploy (push) Has been skipped
2026-06-04 13:29:32 -04:00
daniel-c-harvey 252eb0bd44 environment and dependency cleanup 2026-06-03 12:36:48 -04:00
Daniel Harvey 6f90b3073d Merge trackservice-dto: ITrackService/TrackManager flipped to DTO output 2026-05-25 11:45:30 -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 ef8a0e9c6e Move AuthBlocks API host (registration, migration/seed, endpoint mounting) from Manager to DeepDrftAPI; Manager keeps only AuthBlocksWeb 2026-05-25 11:26:29 -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 95772c655e fix(manager): redirect unauth nav to login instead of 401
AddAuthBlocks installs JwtBearer as the default challenge scheme; the
authorization middleware 401s unauthenticated nav requests before the
Blazor router runs. Tokens live in localStorage and are only readable
via JS interop after the SignalR circuit is live.

- Program.cs: MapRazorComponents .AllowAnonymous() so nav reaches the
  Blazor router; API surfaces (MapAuthBlocks, MapControllers) still
  enforce JWT. Fix middleware order to UseAuthentication -> UseAntiforgery
  -> UseAuthorization per Blazor Web App template.
- App.razor: InteractiveServerRenderMode(prerender:false) on Routes and
  HeadOutlet so AuthorizeRouteView evaluates after JS interop is ready;
  extract to static field (was two inline allocations per render cycle).
- CmsLayout/Pages: drop conflicting per-component @rendermode directives
  (parent now owns the render mode).
- Routes.razor: break authenticated-but-wrong-role redirect loop; split
  NotAuthorized into unauthenticated -> RedirectToLogin and
  authenticated-wrong-role -> RedirectToAccessDenied (new component).
- Pages/Index.razor: deleted — NavigateTo('/cms') was unreachable for
  unauthenticated users and racey for authorized ones.
2026-05-24 18:29:07 -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 fc49a65824 fix(cms): use SystemRoleConstants.Admin in /cms page auth 2026-05-21 21:32:35 -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
Daniel Harvey f45a0e1f78 fix(manager): replace inline NavigateTo in NotAuthorized with AuthBlocksWeb.RedirectToLogin 2026-05-20 16:48:43 -04:00
Daniel Harvey 35099a54e5 Merge branch 'split-audit' into dev 2026-05-20 16:27:58 -04:00
Daniel Harvey b0d70ce1c6 fix(split-audit): correct CMS API client target, render mode, asset URL, and stale config
CMS pages were calling api/cms/track on https://localhost:5001 (the public host)
because the DeepDrft.API named client was base-addressed there; controllers live
on the Manager. Re-pointed to baseUrl. /cms page declared InteractiveAuto in a
Server-only host. App.razor link for MudBlazorThemeManager.css had _ outside the
@Assets[] expression. Public connections example carried a leftover Auth string.
2026-05-20 15:55:59 -04:00
Daniel Harvey 82ff20404c fix(postmerge): guard DeepDrftMenu SSR hang, add Manager root redirect, add Manager styles link 2026-05-20 15:29:40 -04:00
Daniel Harvey e5b4a79727 refactor(split): rename DeepDrftWeb -> DeepDrftPublic and DeepDrftWeb.Client -> DeepDrftPublic.Client (Phase 4) 2026-05-19 23:06:16 -04:00
Daniel Harvey 0a0a1826ce Merge branch 'split-phase3-shared' into dev 2026-05-19 17:23:46 -04:00
Daniel Harvey 8b8796fc58 refactor(split): extract DeepDrftShared.Client RCL with shared atoms
TrackCard, TracksGallery, DDIcons, DeepDrftPalettes (Default+Cms), DeepDrftFontLinks,
and palette CSS tokens extracted. Both hosts and DeepDrftCms reference the shared RCL.
2026-05-19 17:14:23 -04:00
Daniel Harvey 490bbbe942 feat(split): strip AuthBlocks from DeepDrftWeb; move CMS controllers to DeepDrftManager
Public host is now auth-free: no AuthBlocks, no DeepDrftCms ref, no stealth routing.
MainLayout restored to full chrome. DeepDrft.Content/.Cms HttpClients wired on Manager.
2026-05-19 17:01:24 -04:00
Daniel Harvey cd650c4365 feat(manager): stand up DeepDrftManager CMS host (Phase 1 of two-app split)
InteractiveServer only, full AuthBlocks, no WASM. Controllers scaffolded for future
CMS controller migration. CmsStealthRoutingHandler omitted by design (subdomain topology).
2026-05-19 15:25:25 -04:00