diff --git a/DeepDrftPublic.Client/Common/ReleaseRoutes.cs b/DeepDrftPublic.Client/Common/ReleaseRoutes.cs index 7ed08b0..582204b 100644 --- a/DeepDrftPublic.Client/Common/ReleaseRoutes.cs +++ b/DeepDrftPublic.Client/Common/ReleaseRoutes.cs @@ -5,11 +5,11 @@ namespace DeepDrftPublic.Client.Common; /// /// The single source of truth for a release's dedicated detail route (Phase 11 §2). A release -/// resolves to its per-medium detail page purely from its id and — no -/// round-trip needed at call sites that already hold the medium (Archive cards, AlbumsView cards, -/// the player-bar title). The thin /tracks/{id} redirect page fetches by id to discover the -/// medium, then resolves through this same helper, so the medium→route table lives in exactly one -/// place. +/// resolves to its per-medium detail page from its and +/// — no round-trip needed at call sites that already hold the medium +/// (Archive cards, AlbumsView cards, the player-bar title). The thin /tracks/{entryKey} +/// redirect page fetches by EntryKey to discover the medium, then resolves through this same +/// helper, so the medium→route table lives in exactly one place. /// public static class ReleaseRoutes { diff --git a/DeepDrftPublic.Client/Controls/ReleaseGallery.razor b/DeepDrftPublic.Client/Controls/ReleaseGallery.razor index 47ec7d9..22ca0a6 100644 --- a/DeepDrftPublic.Client/Controls/ReleaseGallery.razor +++ b/DeepDrftPublic.Client/Controls/ReleaseGallery.razor @@ -3,7 +3,7 @@ @* The single release-card grid for every browse surface (Sessions, Mixes, Cuts, Archive). Cards open a detail page; how a card computes its href is the only real divergence across surfaces, so the parent supplies it one of two ways: - - DetailRoute (the simple default): every card links /{DetailRoute}/{id} (Sessions, Mixes). + - DetailRoute (the simple default): every card links /{DetailRoute}/{entryKey} (Sessions, Mixes). - HrefResolver (per-card): each card links HrefResolver(release), so Archive routes each card by its own medium through the one ReleaseRoutes table, and Cuts routes to /cuts/{entryKey}. HrefResolver wins when both are supplied. The card subtitle defaults to the artist; SubtitleResolver @@ -74,7 +74,7 @@ [Parameter] public bool Loading { get; set; } /// - /// Route segment for a card's detail page; a card links to /{DetailRoute}/{id}. The simple + /// Route segment for a card's detail page; a card links to /{DetailRoute}/{entryKey}. The simple /// fixed-route default used by Sessions/Mixes. Ignored when is supplied. /// [Parameter] public string? DetailRoute { get; set; } diff --git a/DeepDrftPublic/wwwroot/styles/deepdrft-styles.css b/DeepDrftPublic/wwwroot/styles/deepdrft-styles.css index f27154a..5767715 100644 --- a/DeepDrftPublic/wwwroot/styles/deepdrft-styles.css +++ b/DeepDrftPublic/wwwroot/styles/deepdrft-styles.css @@ -375,15 +375,6 @@ h2, h3, h4, h5, h6, word-break: break-all; } -/* display:contents so the anchor wraps the card's cover and title without - introducing its own box — the container's positioning context and the - content column's flex layout are both preserved. */ -.deepdrft-track-card-link { - display: contents; - text-decoration: none; - color: inherit; -} - @media (max-width: 419.98px) { .deepdrft-track-detail-meta { flex-direction: column; diff --git a/DeepDrftTests/MediumWritePathTests.cs b/DeepDrftTests/MediumWritePathTests.cs index e672d94..6fd3ffd 100644 --- a/DeepDrftTests/MediumWritePathTests.cs +++ b/DeepDrftTests/MediumWritePathTests.cs @@ -122,7 +122,7 @@ public class MediumWritePathTests var release = new ReleaseEntity { - EntryKey = "rk-flip", Title = "Originally a Cut", Artist = "Artist A", + EntryKey = Guid.NewGuid().ToString("N"), Title = "Originally a Cut", Artist = "Artist A", Medium = ReleaseMedium.Cut, ReleaseType = ReleaseType.EP, }; var track = new TrackEntity { EntryKey = "ek-1", TrackName = "Track", Release = release }; @@ -151,7 +151,7 @@ public class MediumWritePathTests { var sessionWithStaleType = new ReleaseEntity { - EntryKey = "rk-stale", Title = "Session", Artist = "A", + EntryKey = Guid.NewGuid().ToString("N"), Title = "Session", Artist = "A", Medium = ReleaseMedium.Session, ReleaseType = ReleaseType.Album, };