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-07-20 14:13:46 -07:00
2026-08-25 11:58:22 -07:00
2026-07-02 16:27:57 -07:00
2026-06-25 23:23:15 -07:00
2026-08-24 22:52:33 -07:00
2026-06-27 21:06:04 -07:00
2026-08-28 13:03:24 -04:00
2026-08-25 20:37:49 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-04-11 21:26:04 -07:00
2026-05-07 17:57:34 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-05 21:06:44 -07:00
2026-05-07 17:57:34 -07:00
2026-05-05 21:06:44 -07:00
2026-05-07 17:57:34 -07:00
2026-04-11 21:26:04 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-05 21:06:44 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-04-11 21:26:04 -07:00
2026-04-11 21:26:04 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-05 22:13:06 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-07-06 11:51:36 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-09 19:09:48 -07:00
2026-07-06 11:51:36 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-17 11:29:26 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-05-07 17:57:34 -07:00
2026-05-09 19:09:48 -07:00
2026-05-09 19:09:48 -07:00
2026-05-09 19:09:48 -07:00
2026-05-07 17:57:34 -07:00
2026-07-06 11:51:36 -07:00
2026-05-11 12:34:49 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-07 17:57:34 -07:00
2026-05-05 22:13:06 -07:00
2026-05-07 17:57:34 -07:00
2026-05-03 16:43:07 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-28 21:29:19 -07:00
2026-05-03 16:43:07 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-07-10 00:00:09 -07:00
2026-07-10 00:00:09 -07:00
2026-07-10 01:54:46 -07:00
2026-07-10 00:00:09 -07:00
2026-07-10 01:54:46 -07:00
2026-07-10 00:00:09 -07:00
2026-05-29 21:14:30 -07:00
2026-07-23 17:10:23 -03:00
2026-05-03 16:43:07 -07:00
2026-07-28 22:46:55 -07:00
2026-05-29 21:14:30 -07:00
2026-05-29 21:14:30 -07:00
2026-07-28 09:22:28 -07:00
2026-08-14 02:41:50 -04:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-04-26 00:36:15 -07:00
2026-04-30 14:26:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-14 02:03:14 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-04-30 14:26:19 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-04-30 14:26:19 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-06-12 15:15:08 -07:00
2026-05-13 01:31:27 -07:00
2026-05-13 01:31:27 -07:00
2026-05-29 23:42:16 -07:00
2026-08-24 22:57:52 -07:00
2026-07-06 11:51:36 -07:00
2026-08-24 22:57:52 -07:00
2026-08-03 22:32:17 -07:00
2026-08-25 20:37:49 -07:00
2026-06-26 21:18:26 -07:00
2026-08-24 22:52:33 -07:00
2026-05-03 16:43:07 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-21 14:23:09 -07:00
2026-04-21 14:23:09 -07:00
2026-04-28 21:29:19 -07:00
2026-07-06 11:21:20 -07:00
2026-04-24 00:29:06 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-29 14:46:26 -07:00
2026-04-24 00:29:06 -07:00
2026-04-24 00:29:06 -07:00
2026-04-24 00:29:06 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-08-24 22:52:33 -07:00
2026-04-14 01:34:27 -07:00
2026-05-03 16:43:07 -07:00
2026-04-28 21:29:19 -07:00
2026-04-26 00:36:15 -07:00
2026-04-24 00:29:06 -07:00
2026-06-07 12:32:19 -07:00
2026-05-03 16:43:07 -07:00
2026-04-26 00:36:15 -07:00
2026-05-30 00:02:33 -07:00
2026-05-03 16:43:07 -07:00
2026-04-28 21:29:19 -07:00
2026-08-05 14:02:58 -07:00
2026-07-18 06:30:37 -07:00
2026-07-31 23:18:24 -04:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-23 17:50:47 -07:00
2026-04-28 21:29:19 -07:00
2026-04-24 00:29:06 -07:00
2026-04-28 21:29:19 -07:00
2026-04-24 00:29:06 -07:00
2026-05-03 16:43:07 -07:00
2026-04-28 21:29:19 -07:00
2026-04-14 01:34:27 -07:00
2026-05-29 21:14:30 -07:00
2026-04-24 00:29:06 -07:00
2026-07-29 03:18:10 -04:00
2026-05-29 21:14:30 -07:00
2026-07-29 03:18:10 -04:00
2026-08-24 22:52:33 -07:00
2026-08-24 22:52:33 -07:00
2026-08-24 22:52:33 -07:00
2026-04-24 00:29:06 -07:00
2026-08-24 22:52:33 -07:00
2026-05-13 01:31:27 -07:00
2026-05-17 21:58:55 -07:00
2026-07-02 22:42:26 -07:00
2026-04-28 21:29:19 -07:00
2026-05-03 16:43:07 -07:00
2026-04-30 14:26:19 -07:00
2026-07-20 00:07:33 -07:00
2026-07-14 22:44:31 -07:00
2026-08-25 20:37:49 -07:00
2026-04-21 14:23:09 -07:00
2026-07-29 03:18:10 -04:00
2026-08-03 18:19:34 -07:00
2026-08-27 13:33:04 -07:00
2026-08-25 21:01:59 -07:00
2026-08-25 20:37:49 -07:00
2026-08-25 20:37:49 -07:00
2026-06-29 20:43:40 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-04-29 22:20:55 -07:00
2026-08-03 05:57:29 -04:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-04-13 21:19:32 -07:00
2026-04-29 22:20:55 -07:00
2026-04-29 22:20:55 -07:00
2026-04-29 22:20:55 -07:00
2026-05-29 23:29:05 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-08-24 22:52:33 -07:00
2026-07-29 03:18:10 -04:00
2026-04-28 21:29:19 -07:00
2026-04-24 00:29:06 -07:00
2026-04-21 18:13:51 -07:00
2026-05-03 16:43:07 -07:00
2026-05-03 16:43:07 -07:00
2026-04-29 14:46:26 -07:00
2026-04-28 21:29:19 -07:00
2026-04-24 00:29:06 -07:00
2026-04-29 14:46:26 -07:00
2026-08-05 18:03:03 -07:00
2026-04-13 21:19:32 -07:00
2026-04-13 21:19:32 -07:00
2026-05-29 21:14:30 -07:00
2026-04-28 21:29:19 -07:00
2026-07-06 11:51:36 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-04-14 01:34:27 -07:00
2026-07-31 17:22:45 -04:00
2026-04-28 21:29:19 -07:00
2026-04-28 21:29:19 -07:00
2026-07-28 09:22:28 -07:00
2026-07-06 11:51:36 -07:00
2026-05-03 16:43:07 -07:00
2026-04-28 21:29:19 -07:00
2026-05-03 16:43:07 -07:00
2026-06-21 13:43:34 -07:00
2026-04-28 21:29:19 -07:00
2026-08-14 02:41:50 -04:00
2026-08-11 09:37:32 +03:00
2026-04-29 21:15:09 -07:00
2026-04-29 14:46:26 -07:00
2026-04-29 14:46:26 -07:00
2026-05-03 16:43:07 -07:00
2026-07-19 12:11:56 -07:00
2026-08-10 00:06:29 -07:00
2026-07-06 11:51:36 -07:00
2026-08-25 10:31:16 -07:00
2026-04-29 14:46:26 -07:00
2026-04-29 14:46:26 -07:00
2026-04-29 14:46:26 -07:00
2026-04-29 14:46:26 -07:00
2026-04-29 14:46:26 -07:00
2026-07-06 11:51:36 -07:00
2026-04-29 14:46:26 -07:00
2026-04-30 13:10:05 -07:00
2026-04-30 13:10:05 -07:00
2026-05-30 12:06:59 -07:00
2026-04-28 21:29:19 -07:00
2026-07-03 09:04:17 -07:00
2026-04-29 14:46:26 -07:00