Commit d297357
gui: a preset screen, and a guard that compares the two surfaces by their bytes
A second screen that starts from a question rather than from numbers. It shows
the question a preset closes and what it typically finds, and its parameters
are drawn by the code that draws a format's settings - because a preset
parameter is a format.Property. Nothing in the screen knows what
size-boundaries takes.
Expanding a preset moved out of internal/cli into internal/preset, so the
window, "generate --preset" and "preset eject" all call one Expand. The
manifest record stays a small literal in each surface on purpose: putting it in
internal/preset would make an input concept import the output contract.
The run half of a screen is now shared. A runner owns preview, generate,
progress, cancel, the manifest save and the close intercept, and a screen
supplies only what to produce. Written when the second screen arrived rather
than after the two had drifted, because the parts that drift here are the ones
nobody compares: whether closing waits, whether a preview writes.
The guard for all this does not compare two lists of fields. It runs one preset
from both surfaces and compares seven files byte for byte, the preset block of
the manifest and the recipe hash - because turning a parsed recipe into engine
targets is written twice and cannot be shared, and that exact conversion
drifted before, when validate lost BoundaryLimit and started refusing recipes
generate accepted.
It found two real differences on its first run.
A field filled in with its declared default makes "I did not state this"
impossible to express, so the window would never have marked a parameter as
defaulted - untouchable rule 5 broken by a form convenience. No field arrives
filled in now, and what a setting falls back to is shown as a hint instead.
And the window had nowhere to put the sentences the command line prints as
"note:", so it stayed silent about building a set around a limit nobody gave
it. A set built around a number we invented carries expectations that read
exactly like a set built around the real one, so saying so is not decoration.
The close intercept moved to Open and asks every screen, because a run keeps
going while somebody moves to another screen and the busy one is not
necessarily the visible one.
D1 parity 36 of 60 to 39 of 60. Seven mutation patterns repointed after the
refactor moved their code, which the staleness check caught rather than a
twelve minute run.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 07d850b commit d297357
11 files changed
Lines changed: 858 additions & 277 deletions
File tree
- internal
- cli
- guard
- gui
- parts
- window
- preset
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
19 | 33 | | |
20 | 34 | | |
21 | 35 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
57 | 22 | | |
58 | 23 | | |
59 | | - | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
60 | 31 | | |
61 | 32 | | |
62 | 33 | | |
63 | 34 | | |
64 | 35 | | |
65 | 36 | | |
66 | 37 | | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | 38 | | |
83 | 39 | | |
84 | 40 | | |
| |||
92 | 48 | | |
93 | 49 | | |
94 | 50 | | |
95 | | - | |
| 51 | + | |
96 | 52 | | |
97 | 53 | | |
98 | 54 | | |
| |||
358 | 314 | | |
359 | 315 | | |
360 | 316 | | |
361 | | - | |
| 317 | + | |
362 | 318 | | |
363 | 319 | | |
364 | 320 | | |
| |||
374 | 330 | | |
375 | 331 | | |
376 | 332 | | |
377 | | - | |
| 333 | + | |
378 | 334 | | |
379 | 335 | | |
380 | | - | |
| 336 | + | |
381 | 337 | | |
382 | 338 | | |
383 | 339 | | |
| |||
431 | 387 | | |
432 | 388 | | |
433 | 389 | | |
434 | | - | |
| 390 | + | |
435 | 391 | | |
436 | 392 | | |
437 | 393 | | |
| |||
470 | 426 | | |
471 | 427 | | |
472 | 428 | | |
473 | | - | |
| 429 | + | |
474 | 430 | | |
475 | 431 | | |
476 | 432 | | |
| |||
555 | 511 | | |
556 | 512 | | |
557 | 513 | | |
558 | | - | |
| 514 | + | |
559 | 515 | | |
560 | 516 | | |
561 | 517 | | |
562 | 518 | | |
563 | 519 | | |
564 | 520 | | |
565 | | - | |
| 521 | + | |
566 | 522 | | |
567 | 523 | | |
568 | 524 | | |
| |||
581 | 537 | | |
582 | 538 | | |
583 | 539 | | |
584 | | - | |
| 540 | + | |
585 | 541 | | |
586 | 542 | | |
587 | 543 | | |
| |||
618 | 574 | | |
619 | 575 | | |
620 | 576 | | |
621 | | - | |
| 577 | + | |
622 | 578 | | |
623 | 579 | | |
624 | 580 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
51 | 59 | | |
52 | 60 | | |
53 | 61 | | |
| |||
111 | 119 | | |
112 | 120 | | |
113 | 121 | | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | 122 | | |
118 | 123 | | |
119 | 124 | | |
| |||
0 commit comments