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
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
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
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
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
f0185587f7
fix(data): route all TrackRepository queries through soft-delete-filtered Query
2026-06-10 14:32:31 -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
0d4ef369b9
feat: Stream Now instant-play of a random track from the nav button
2026-06-07 18:33:08 -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
c83b132522
feature: Embed Frame Player
2026-06-06 15:43:09 -04:00
daniel-c-harvey
cd226f3ce9
fix: factory falls back to design-time dummy; remove CI dummy-file step and creds-env cp lines
2026-06-04 14:16:31 -04:00
Daniel Harvey
708836a169
docs: update CLAUDE.md files for DeepDrftPublic simplification
2026-05-25 17:33:32 -04:00
Daniel Harvey
068205a84e
docs: update CLAUDE.md files for AuthBlocks split, DTO layer boundary, and CLI removal
2026-05-25 12:22:07 -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
2574ed9af8
docs: update CLAUDE.md files for Content SQL authority and Manager HTTP-only
2026-05-25 09:33:28 -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
e34f76b3bb
fix(data): load connection string from connections.json; correct HasIndex comment
2026-05-18 22:39:20 -04:00
Daniel Harvey
cd700dc758
feat(data): rename *.Services projects, lift TrackEntity onto BlazorBlocks data layer, regenerate initial Postgres migration
...
DeepDrftWeb.Services → DeepDrftData; DeepDrftContent.Services → DeepDrftContent.Data.
TrackEntity:BaseEntity, TrackRepository:Repository<>, TrackManager:Manager<>+ITrackService.
Drops DeepDrftModels PagingParameters/PagedResult in favour of Models.Common.* from BlazorBlocks.
InitialCreate migration captures full schema including is_deleted index.
2026-05-18 22:22:09 -04:00