From fdc020833915717fa5e3e762f6edddb7529679e6 Mon Sep 17 00:00:00 2001 From: daniel-c-harvey Date: Sat, 13 Jun 2026 12:53:48 -0400 Subject: [PATCH 1/2] Collapse BatchEdit to single-track form for Session/Mix media MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mirror BatchUpload.OnMediumChanged: switching to Session/Mix trims the track list to one row and hides the add-track affordance, enforcing the §9.3 single-track invariant on the edit path. Cut releases unchanged. --- .../Components/Pages/Tracks/BatchEdit.razor | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/DeepDrftManager/Components/Pages/Tracks/BatchEdit.razor b/DeepDrftManager/Components/Pages/Tracks/BatchEdit.razor index 46be53f..81554ea 100644 --- a/DeepDrftManager/Components/Pages/Tracks/BatchEdit.razor +++ b/DeepDrftManager/Components/Pages/Tracks/BatchEdit.razor @@ -53,15 +53,15 @@ } + @* Session/Mix are single-track releases (§9.3): suppress the add-track affordance and keep the + list collapsed to one row — OnMediumChanged trims rows 2..n when the medium switches to a + single-track medium, mirroring BatchUpload's same-named collapse. Cut keeps the full list. *@ - @* The medium write path persists _medium on save (9.5.B). BatchEdit still shows the full - multi-track list for every medium; collapsing to a single-track slot for Session/Mix - (matching BatchUpload's @if (_medium == ReleaseMedium.Cut) guard) is deferred form-shape - work, not part of the write-path wiring. *@ _medium = medium; + // + // Switching to a single-track medium (Session/Mix) collapses any multi-track list to the first row + // so the single-track invariant (§9.3) holds before save — the same collapse BatchUpload.OnMediumChanged + // performs. Dropping rows 2..n is an in-memory trim only; existing tracks are not deleted server-side + // (RemoveRow owns deletion), so the hidden rows simply fall out of this edit session. + private void OnMediumChanged(ReleaseMedium medium) + { + _medium = medium; + if (medium != ReleaseMedium.Cut && _tracks.Count > 1) + { + _tracks.RemoveRange(1, _tracks.Count - 1); + _selectedIndex = _tracks.Count > 0 ? 0 : -1; + } + } protected override async Task OnInitializedAsync() { From 9122cfee6e8ec0e85f5d30a9690fed23a04f344a Mon Sep 17 00:00:00 2001 From: daniel-c-harvey Date: Sat, 13 Jun 2026 13:17:05 -0400 Subject: [PATCH 2/2] fix: collapse Session/Mix track list on load in BatchEdit (load-path parity with OnMediumChanged) --- DeepDrftManager/Components/Pages/Tracks/BatchEdit.razor | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/DeepDrftManager/Components/Pages/Tracks/BatchEdit.razor b/DeepDrftManager/Components/Pages/Tracks/BatchEdit.razor index 81554ea..e9bbdf2 100644 --- a/DeepDrftManager/Components/Pages/Tracks/BatchEdit.razor +++ b/DeepDrftManager/Components/Pages/Tracks/BatchEdit.razor @@ -194,6 +194,11 @@ Status = BatchRowStatus.Queued }).ToList(); + if (_medium != ReleaseMedium.Cut && _tracks.Count > 1) + { + _tracks.RemoveRange(1, _tracks.Count - 1); + } + _selectedIndex = _tracks.Count > 0 ? 0 : -1; _loading = false; }