From 49bb7389f781546e6518593c96b26e60ae2cd698 Mon Sep 17 00:00:00 2001 From: AJ Isaacs Date: Sat, 24 Oct 2026 11:18:03 -0400 Subject: [PATCH] feat(desktop): preview the release and fold its options away MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The release dialog now reads as a sentence ("Release set 'X' ×N") and previews what Make Nests will do ("Creates 2 nests: ..."), with refused materials counted and Fix Drawings reachable without selecting them. An Options toggle holds the Release ticks, the Nest column and Include archived drawings; collapsed, an option stays shown while it differs from its default, and the Nest column shows whenever a Draft nest could be merged into. Defaults, release, undo and retry are unchanged. The Status column wraps so refusals are not cut off, and the retry status reads "... Try Again records it; the nests are not made again." Co-Authored-By: Claude Opus 5.5 --- .../Forms/SetReleaseFormsTests.cs | 81 ++++++++++- OpenNest/Forms/ReleaseSetForm.Designer.cs | 87 +++++++++--- OpenNest/Forms/ReleaseSetForm.cs | 133 ++++++++++++++++-- docs/nest-storage.md | 40 ++++-- 4 files changed, 297 insertions(+), 44 deletions(-) diff --git a/OpenNest.WinForms.Tests/Forms/SetReleaseFormsTests.cs b/OpenNest.WinForms.Tests/Forms/SetReleaseFormsTests.cs index cc311991..4043de77 100644 --- a/OpenNest.WinForms.Tests/Forms/SetReleaseFormsTests.cs +++ b/OpenNest.WinForms.Tests/Forms/SetReleaseFormsTests.cs @@ -114,6 +114,72 @@ public class SetReleaseFormsTests "The release choice test did not complete."); } + [Fact] + public void Release_PreviewsTheNestsWithOptionsCollapsed_AndKeepsChangedOptionsShown() + { + StaTestThread.Run( + () => + { + var library = new PackageLibrary(); + var a = library.Add("SYN-A", "Synthetic Steel"); + var c = library.Add("SYN-C", "Synthetic Aluminum"); + var old = library.Add("SYN-OLD", "Synthetic Steel", archived: true); + var sets = new InMemoryDrawingSets(); + var set = CreateSet(sets, (a, 2), (c, 1), (old, 1)); + var nests = new MemoryNests(); + + using var form = new ReleaseSetForm(sets, library, nests, Server, set, (_, _) => { }); + form.ShowMessage = (_, _, _) => DialogResult.OK; + form.CreateNest = (group, _) => Task.FromResult(new Nest("N") { Units = group.Units }); + form.Show(); + var grid = Field(form, "groupGrid"); + var archived = Field(form, "includeArchivedCheckBox"); + var options = Field