Files
Alex Vanderveen 1fdc543a75 tools: pick a disc count in Project Studio, up to four
The New Project tab gains a Discs dropdown (1-4) that shows one
"Disc N (.cue)" row per disc, each with its own Browse. Project Studio's CLI
takes a repeatable --disc to match. Both feed the set verification added in
5d1f7be3, so a set whose discs each boot their own program is still refused
before anything is created.

NewProjectOptions grows extra_discs for discs 2..N; disc stays the boot disc,
so every single-disc caller is untouched. newproject.MAX_DISCS is the one place
that decides the cap. validate_options rejects a blank row, a missing file, a
duplicate path and more than four discs before the setup script is invoked, so
none of those reach a disc probe. Reducing the dropdown clears the rows it
hides, so a path the user can no longer see cannot be submitted.

The extra rows live in their own container: pack() appends, so re-showing a row
after a shrink would otherwise land it after the BIOS row.

The PowerShell command builder does not comma-join the disc list. An array
cannot survive `powershell -File`: subprocess quotes any argument containing a
space, and PowerShell then binds the whole quoted token as one element, so a
comma-joined list of paths with spaces in them -- which is most disc dumps --
would silently collapse into a single bogus path. The list is joined on "|",
one of the characters Windows forbids in a path, and setup_project.ps1 splits a
lone argument on it. A human typing -Disc a.cue,b.cue still gets a real array.

Verified: the GUI row logic under real Tk widgets (visibility per count,
ascending order preserved across shrink then grow, hidden rows cleared,
non-numeric and out-of-range dropdown values clamped); and end to end through
the CLI against synthesised discs -- a four-disc data-only set scaffolds with
all four probes recorded, while five discs, a duplicate, a mixed release and an
N-programs set each refuse with nothing created. The .ps1 remains unrun; there
is no PowerShell on this machine.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017AwqKPQFnK3x7xQbK4PQKj
2026-08-28 13:03:24 -04:00
..
2026-08-14 02:41:50 -04:00
2026-07-29 03:18:10 -04:00
2026-07-29 03:18:10 -04:00
2026-07-29 03:18:10 -04:00
2026-07-29 03:18:10 -04:00
2026-08-14 02:41:50 -04:00