Repository navigation
experimental theme: exact how amounts and parts, app copy said behind everywhere, per-variant one-mode colors, input and preview follow-through - #11546
Conversation
…amount is said, fractional px, part line height, opacity and font size the asked way, exact whole-theme radius and border width, own side and per-side padding, corner percents as amounts, zero words, px moves and steps keep state) (cherry picked from commit 2ec2752c36cc4dc0e29c4388b7e5a14fabfaecb0)
…xcept keeps every excepted value, sub-parts and catalog parts by name, comparisons copy onto the subject, own variants per clause, bare sizes, heading levels, font stacks, padding sides, state-word parts, own asks after and, --theme typo keeps the question) (cherry picked from commit ea013ba4bc0a68e407828f4e57c6d71b1180af81)
…d and check, links/folders/write failures stop it loudly, a lost descriptor is written back, compile finds the copy's source, lock and fonts, a refused compile writes no copy) (cherry picked from commit b94bbebef9f3754e9390b091f2afe44b47f875d4)
…meant, nearest by spelling first, refusals name a command that works, desktop.ini is OS junk, undo names the <Theme mode>, a stop after the save says so) (cherry picked from commit fc08375a624c86bd8a34ec7553c3dd0e43b60f8c)
…e, stopped picture runs, the see line, unserved and hand-edited previews), and the input cleanup reads pairs, labels, escapes and JSON (cherry picked from commit 5f91942a9742c6c42b185eed31fed8e3b286a937)
…, or a mode or base entry in the settings list, is offered only lines that unlock the theme) (cherry picked from commit 2942394ce49135ba83f97bee54d95026e34e9972)
…riant's exact other half, hover on every variant, later longhands over base keys, nested card padding, kept sizes on the spacing dial, per-mode runs and corner notes)
… family trimmed, as set saves it
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
AI review status for this pull request.
|
|
/approve-spec 84d6f0c |
|
/approve-spec b67e27f |
There was a problem hiding this comment.
Changes requested: the experimental theme editor needs two code fixes and one description fix.
- Setting a part's dark color after its light color (
set … background … --on button --mode light, then--mode dark) leaves every variant rule with the base theme's light half, so the saved light color is lost (packages/cli/api/theme-edit/_settings.mjs:3145); keep the variant rule's existing other half and add a light-then-dark case totheme-parts43. howreads side words inside part names, sohow 'code block padding 12px'answerspadding-block 12px --on code-blockandhow 'top nav padding 20px'answerspadding-top 20px --on top-nav(_how-question.mjs:4056,:5417); match side words with the part names taken out and add both asks totheme-hunt68.- The description lists new suites
theme-hunt68totheme-hunt74, but notheme-hunt74suite exists (its cases are intheme-hunt64.test.mjs), so correct that list.
Smaller points that do not block: "I'd like card padding bigger than button padding" is answered as a copy of the button's padding, "16 x 16" is read as sixteen times, and the appCopyStale JSDoc still names only a file or a link.
Claims and files checked
- Claim: how reads quarter, half again, 2x, ×2, x0, 4 times, by a factor, +50%, 50 percent and ½ as a factor of the current value for padding, gap, radius, font size, line height, letter spacing, opacity, width and border width: verified (theme-hunt69 factor table and part cases)
- Claim: fractional pixels are kept: verified (theme-hunt69, 0.5px border width, 7.5px font size, 0.33px letter spacing)
- Claim: whole-theme radius and border-width amounts set exact tokens, and step-only amounts say so: verified (theme-hunt69)
- Claim: zero words set 0 for padding and gap: verified (theme-hunt69)
- Claim: lighter or darker fills start from the resting color and keep alpha: verified (theme-hunt68)
- Claim: except keeps every excepted part or variant in one answer: verified (theme-hunt68)
- Claim: parts named in words reach the real part, and a missing sub-part says so: verified (theme-hunt68)
- Claim: comparisons copy or scale onto the first part only: verified (theme-hunt68, theme-how); non-blocking: a plain like also triggers it
- Claim: side words write only those sides: verified for the tested asks (theme-hunt68); defect 2: part names such as code block and top nav are read as sides
- Claim: each clause keeps its own variant, and a second part keeps its own ask: verified (theme-hunt68 and a direct run)
- Claim: headings amounts scale each level, and a mistyped --theme keeps the question: verified (theme-hunt68)
- Claim: compile, compile --check and a no-op set say when the app copy is behind, with the reason: verified (theme-hunt70)
- Claim: a refused compile writes no copy, and a deleted descriptor is written back: verified (theme-hunt70)
- Claim: compiling the copy's source takes the theme's lock: verified in code (the copy source joins the held themes in editorThemeHold)
- Claim: fonts loaded by the copy's stylesheet are not called unloaded: verified (theme-hunt70)
- Claim: path and camelCase names, edit-distance suggestions, working refusals for damaged settings, desktop.ini as empty, the undo mode note and the stop message: verified (theme-hunt71, theme-hunt73)
- Claim: preview remove of a file, part-named pictures, and the see line fixes: verified (theme-hunt72)
- Claim: input cleanup (corner-bracket quotes, escapes, debris, night and day, JSON stacks and objects, color pairs, other-setting labels, vibrancy 0.5): verified (theme-hunt72, theme-hunt64)
- Claim: one-mode colors per variant keep the other mode unchanged: verified for one setting (theme-parts43); false once both modes are set (defect 1)
- Claim: whole-part hover, later longhands, nested-card padding, kept sizes and the border mode step: verified (theme-parts43)
- Claim: only the experimental group supplies the new hook, so stable theme build is unchanged: verified in code
- Claim: new suites theme-hunt68 to theme-hunt74 and theme-parts43: false, there is no theme-hunt74 suite (defect 3)
- Claim: the padding and mode cases run against the real Neutral and Butter bases: verified (theme-parts43)
- Claim: the held-out how set result: not checkable, the set is not in the repository
- Claim: the listed suites and checks pass: verified for 12 theme-edit suites (1015 tests), the changeset, structure and format checks, and CI's lint, typecheck and test-ui jobs passed at this head
- File: packages/cli/api/theme-edit/_settings.mjs: defect 1; non-blocking sizePx note
- File: packages/cli/api/theme-edit/_how-question.mjs: defect 2; non-blocking like and 16 x 16 notes
- File: packages/cli/api/theme-edit/theme-edit.type.mjs: non-blocking appCopyStale wording
- File: the eight .changeset files: clear, except the parts43 claim that defect 1 makes false
- File: _adapter.mjs, _check.mjs, _context.mjs, _edit.mjs, _how.mjs, _normal.mjs, _parts.mjs, _preview-app.mjs, _preview.mjs: clear
- File: clients/cli/commands/theme.mjs and experimental/theme.mjs: clear
- File: the four experimental theme command docs (compile, editor, editor show, editor undo): clear
- File: theme-how, theme-hunt61, theme-hunt64, theme-hunt68 to theme-hunt73, theme-parts43, theme-preview-safety and theme-real-bases tests: clear (all pass at this head)
PR Analysis Report🔎 Preview ·
|
…mode's color the variant rule already holds
…r than another part as a step past it, and N x M as a size
|
/approve-spec ca8b99e |
There was a problem hiding this comment.
Changes requested: the experimental theme editor needs two more fixes; the three blocking points from the last review are fixed at this head.
- A variant's own color is lost in the other mode: after
set … background '#ff0000' --on button --when variant:primary(the commandhow 'make primary buttons red'hands back), a laterset … background '#eeeeee' --on button --mode lightcompiles the primary rule tobackground: #ff0000; background-color: light-dark(#eeeeee, var(--color-accent)), so dark mode shows the accent instead of red, becausepackages/cli/api/theme-edit/_settings.mjs:3147reads only the rule'sbackgroundColor; take the other half from itsbackgroundtoo and add that order totheme-parts43. - Miss:
compile --checkprints "Theme outputs are up to date" and exits 0 while the app copy is behind after a write that failed (for examplesrc/themes/<theme>/not writable), because that failure is kept only in memory and the check reads only blockers on disk (packages/cli/api/theme-edit/_adapter.mjs:1040), although the compile help and the description say the check fails then; compare the copy with the build (or test that its folder is writable) in the check and add the case totheme-hunt70, or narrow that wording.
One smaller point does not block: how 'card padding 24x24px' answers a one-step spacing more and drops the size.
Claims and files checked
- Claim:
howreads quarter, half again, 2x, ×2, x0, 4 times, by a factor, +50%, 50 percent and ½ as a factor of the current value for padding, gap, radius, font size, line height, letter spacing, opacity, width and border width, in the state or variant asked: verified (theme-hunt69) - Claim: fractional pixels are kept: verified (theme-hunt69: 0.5px, 7.5px, 0.33px)
- Claim: whole-theme radius and border-width amounts set exact token values, and step-only amounts say so: verified (theme-hunt69)
- Claim: zero words set 0 for padding and gap: verified (theme-hunt69)
- Claim: lighter or darker fills start from the resting color and keep alpha: verified (theme-hunt68)
- Claim: except keeps every excepted part or variant in one answer: verified (theme-hunt68)
- Claim: parts named in words reach the real part, and a missing sub-part says so: verified (theme-hunt68)
- Claim: comparisons copy or scale onto the first part only: verified (theme-hunt68, theme-how)
- Claim: side words write only those sides, and part names are not read as sides: verified (theme-hunt68 and direct runs)
- Claim: each clause keeps its own variant, and a second part keeps its own ask: verified (theme-hunt68)
- Claim: headings amounts scale each level, and a mistyped --theme keeps the question: verified (theme-hunt68)
- Claim: bigger or smaller than another part is a step past or under it, and 16 x 16 is a size: verified (theme-hunt68 and direct runs)
- Claim: compile, compile --check and a no-op set say when the app copy is behind, with the real reason, a folder that cannot be written included: verified for set, compile and every blocker on disk (theme-hunt70); false for compile --check after a failed write (second blocking point)
- Claim: a refused compile writes no copy, and a deleted descriptor is written back: verified (theme-hunt70)
- Claim: compiling the copy's source takes the theme's lock: verified in code and theme-hunt70
- Claim: fonts the copy's stylesheet loads are not called unloaded: verified (theme-hunt70)
- Claim: path and camelCase names, edit-distance suggestions, working refusals for damaged settings, desktop.ini as empty, the undo mode note and the stop message: verified (theme-hunt71, theme-hunt73)
- Claim: preview remove of a file, part-named pictures and the see-line fixes: verified (theme-hunt72)
- Claim: input cleanup (corner-bracket quotes, escapes, debris and French-quoted fonts, night and day, JSON stacks and objects, color pairs, other-setting labels, vibrancy 0.5): verified (theme-hunt72, theme-hunt64)
- Claim: a one-mode color goes into each variant's rule and leaves the other mode unchanged for every variant: verified for whole-part settings in both orders (theme-parts43); false when a variant has its own
background(first blocking point) - Claim: whole-part hover, later longhands, nested-card padding, kept sizes and the border mode step: verified (theme-parts43)
- Claim: only the experimental group supplies the new font hook, so stable theme build is unchanged: verified in code
- Claim: new suites theme-hunt68 to theme-hunt73 and theme-parts43, with the French-quoted case in theme-hunt64, run against real Neutral and Butter bases: verified
- Claim: the held-out how set result: not checkable, the set is not in the repository
- Claim: the listed suites and checks pass: verified for 12 theme-edit suites (1021 tests), and CI's lint and typecheck jobs passed at this head
- File: packages/cli/api/theme-edit/_settings.mjs: first blocking point
- File: packages/cli/api/theme-edit/_adapter.mjs: second blocking point
- File: packages/cli/api/theme-edit/_preview.mjs: clear (its in-memory failure record feeds the second point)
- File: packages/cli/api/theme-edit/_how-question.mjs: clear; non-blocking 24x24px note
- File: the nine .changeset files: clear, except the parts43 and hunt70 lines the two blocking points make false
- File: _check.mjs, _context.mjs, _edit.mjs, _how.mjs, _normal.mjs, _parts.mjs, _preview-app.mjs, theme-edit.type.mjs: clear
- File: clients/cli/commands/theme.mjs and experimental/theme.mjs: clear
- File: the four experimental theme command docs (compile, editor, editor show, editor undo): clear
- File: theme-how, theme-hunt61, theme-hunt64, theme-hunt68 to theme-hunt73, theme-parts43, theme-preview-safety and theme-real-bases tests: clear (all pass at this head)
…n background as its other half and leaves no background shorthand over it
…s with a code when it is behind, each copy follows its own build, copy files are no theme sources, missing copy files written back)
|
/approve-spec 7e0c504 |
There was a problem hiding this comment.
Changes requested: the experimental theme editor's one-mode per-variant colors need two more fixes; the blocking points from the earlier reviews are fixed at this head.
- Miss: an earlier both-modes button color is lost in the other mode, because
packages/cli/api/theme-edit/_settings.mjs:3153-3156takes the other half only from the variant's own rule or the base value: afterset … background '#123456' --on buttonandset … background '#eeeeee' --on button --mode light, the primary rule compiles tobackground: #123456; background-color: light-dark(#eeeeee, var(--color-accent)), so dark mode shows the accent instead of#123456(the base kept it); fall back to the part's own plain-rule color first, as the plain branch does withprev, and add that order totheme-parts43. - A variant's own gradient is deleted by a later one-mode color, because
packages/cli/api/theme-edit/_settings.mjs:3158removes the whole background family even after skipping the gradient as the other half: afterset … background 'linear-gradient(red, blue)' --on button --when variant:primary(whathow 'make primary buttons a gradient from red to blue'hands back) and a light-mode button background, the primary rule keeps onlybackground-color: light-dark(#eeeeee, var(--color-accent))and no note says so; leave such a variant as it is and say so (or keep its image), with atheme-parts43case.
One smaller point does not block: how 'card padding 24x24px' still answers a one-step spacing more and drops the size.
Claims and files checked
- Claim:
howreads every amount form (a quarter, half again, 2x, ×2, x0, 4 times, by a factor, +50%, 50 percent, ½) as a factor of the current value for padding, gap, radius, font size, line height, letter spacing, opacity, width and border width, in the state or variant asked: verified (theme-hunt69) - Claim: fractional pixels are kept: verified (theme-hunt69: 0.5px, 7.5px, 0.33px)
- Claim: whole-theme radius and border-width amounts set exact token values, and step-only amounts say so: verified (theme-hunt69)
- Claim: zero words set 0 for padding and gap: verified (theme-hunt69)
- Claim: lighter or darker fills start from the resting color and keep alpha: verified (theme-hunt68)
- Claim: except keeps every excepted part or variant in one answer: verified (theme-hunt68)
- Claim: parts named in words reach the real part, and a missing sub-part says so: verified (theme-hunt68)
- Claim: comparisons copy or scale onto the first part only, and bigger or smaller than another part is a step past or under it: verified (theme-hunt68, theme-how)
- Claim: side words write only those sides and are read outside part names: verified (theme-hunt68)
- Claim: each clause keeps its own variant, and a second part keeps its own ask: verified (theme-hunt68)
- Claim: headings amounts scale each level, and a mistyped --theme keeps the question: verified (theme-hunt68)
- Claim: a dimension pair is a size, never an amount: verified for the amount reader (theme-hunt68);
card padding 24x24pxstill drops the size (non-blocking) - Claim: compile, compile --check and a no-op set say when the app copy is behind, with the real reason: verified (theme-hunt70, theme-hunt75)
- Claim: a refused compile writes no copy, and a deleted descriptor is written back: verified (theme-hunt70)
- Claim: compiling the copy's source takes the theme's lock: verified in code (editorThemeHold) and theme-hunt70
- Claim: fonts the copy's stylesheet loads are not called unloaded, in text, --json and --detail full: verified (theme-hunt70, theme-hunt75)
- Claim: compile --check compares the copy file by file and fails with ERR_THEME_STALE when it is kept back, missing a file, gone or different, a copy left behind after a failed write included: verified (theme-hunt75)
- Claim: each theme's copy follows its own build: verified (theme-hunt75)
- Claim: a copy with only its build outputs left is still the editor's: verified (theme-hunt75)
- Claim: copy files, the app's theme module, a subfolder run and --out into the copy are refused with the right command: verified (theme-hunt75)
- Claim: a missing copy file is written back by the next change, and compile --json carries appCopyStale: verified (theme-hunt75)
- Claim: path and camelCase names, edit-distance suggestions, working refusals for damaged settings, desktop.ini as empty, the undo mode note and the stop message: verified (theme-hunt71, theme-hunt73)
- Claim: preview remove of a file, pictures under a temporary name and the see-line fixes: verified (theme-hunt72)
- Claim: input cleanup (corner-bracket quotes, escapes, debris and French-quoted fonts, night and day, JSON stacks and objects, color pairs, other-setting labels, vibrancy 0.5): verified (theme-hunt72, theme-hunt64)
- Claim: a one-mode color goes into each variant's rule with that variant's other half, so the other mode is unchanged for every variant, and a later other-mode setting or an earlier variant color keeps its half: verified for one-mode pairs and a variant's own color,
backgroundshorthand included (theme-parts43, direct run); false after an earlier both-modes part color and for a variant's own gradient (the two blocking points) - Claim: whole-part hover, later longhands, nested-card padding, kept sizes and the border mode step: verified (theme-parts43)
- Claim: only the experimental group supplies the new hooks, so stable theme build is unchanged: verified in code
- Claim: new suites theme-hunt68 to theme-hunt75 and theme-parts43, the French-quoted case in theme-hunt64, run against real Neutral and Butter bases: verified
- Claim: the held-out how set result: not checkable, the set is not in the repository
- Claim: the listed suites and checks pass: verified: every theme-edit suite passes at this head, CI lint and the CLI smoke test passed, and the one failing CI test (a page-template render) passes when run again and is outside this change
- File: packages/cli/api/theme-edit/_settings.mjs: both blocking points
- File: packages/cli/api/theme-edit/_how-question.mjs: clear; non-blocking 24x24px note
- File: _adapter.mjs, _preview.mjs, _check.mjs, _context.mjs, _edit.mjs, _how.mjs, _normal.mjs, _parts.mjs, _preview-app.mjs, theme-edit.type.mjs: clear
- File: clients/cli/commands/theme.mjs and experimental/theme.mjs: clear
- File: the four experimental theme command docs (compile, editor, editor show, editor undo): clear
- File: theme-how, theme-hunt61, theme-hunt64, theme-hunt68 to theme-hunt73, theme-hunt75, theme-parts43, theme-preview-safety and theme-real-bases tests: clear (all pass at this head)
- File: the ten .changeset files: clear, except the parts43 line the two blocking points make false
…lier color as its other half, and leaves a variant's own background image as it is
|
/approve-spec 3dd568e |
There was a problem hiding this comment.
Changes requested: the experimental theme editor's one-mode per-variant colors need one more fix; the two blocking points from the last review are fixed at this head.
- Miss: after
set … background '#123456' --on buttonand thenset … background '#eeeeee' --on button --mode light, the build repeats the plainbackground: #123456after the variant'sbackground-color: light-dark(#eeeeee, #123456)on every variant the base theme styles itself (neutral's destructive, butter's secondary and destructive;packages/cli/api/theme-edit/_settings.mjs:3180, with the lift at:4600-4624), so those buttons stay#123456in light mode where the base showed#eeeeee; skip that lift where the variant's rule already holds the color this branch wrote (or write that color asbackground), and maketheme-parts43check that nobackground:followsbackground-colorin those rules.
Smaller points that do not block: the gradient note now repeats on every later set of the theme (_edit.mjs:1962), a one-mode color over a plain gradient changes nothing visible and says nothing, and how 'card padding 24x24px' still drops the size.
Claims and files checked
- Claim:
howreads every amount form (a quarter, half again, 2x, ×2, x0, 4 times, by a factor, +50%, 50 percent, ½) as a factor of the current value for padding, gap, radius, font size, line height, letter spacing, opacity, width and border width, in the state or variant asked: verified (theme-hunt69) - Claim: fractional pixels are kept: verified (theme-hunt69)
- Claim: whole-theme radius and border-width amounts set exact token values, and step-only amounts say so: verified (theme-hunt69)
- Claim: zero words set 0 for padding and gap: verified (theme-hunt69)
- Claim: lighter or darker fills start from the resting color and keep alpha: verified (theme-hunt68)
- Claim: except keeps every excepted part or variant in one answer: verified (theme-hunt68)
- Claim: parts named in words reach the real part, and a missing sub-part says so: verified (theme-hunt68)
- Claim: comparisons copy or scale onto the first part only, and bigger or smaller than another part is a step past or under it: verified (theme-hunt68, theme-how)
- Claim: side words write only those sides and are read outside part names: verified (theme-hunt68)
- Claim: each clause keeps its own variant, and a second part keeps its own ask: verified (theme-hunt68)
- Claim: headings amounts scale each level, and a mistyped --theme keeps the question: verified (theme-hunt68)
- Claim: a dimension pair is a size, never an amount: verified for the amount reader (theme-hunt68);
card padding 24x24pxstill drops the size (non-blocking) - Claim: compile, compile --check and a no-op set say when the app copy is behind, with the real reason: verified (theme-hunt70, theme-hunt75)
- Claim: a refused compile writes no copy, and a deleted descriptor is written back: verified (theme-hunt70)
- Claim: compiling the copy's source takes the theme's lock: verified in code and theme-hunt70
- Claim: fonts the copy's stylesheet loads are not called unloaded, in text, --json and --detail full: verified (theme-hunt70, theme-hunt75)
- Claim: compile --check compares the copy file by file and fails with ERR_THEME_STALE when it is kept back, missing a file, gone or different: verified (theme-hunt75)
- Claim: each theme's copy follows its own build, and a copy with only its build outputs left is still the editor's: verified (theme-hunt75)
- Claim: copy files, the app's theme module, a subfolder run and --out into the copy are refused with the right command; a missing copy file is written back; compile --json carries appCopyStale: verified (theme-hunt75)
- Claim: path and camelCase names, edit-distance suggestions, working refusals for damaged settings, desktop.ini as empty, the undo mode note and the stop message: verified (theme-hunt71, theme-hunt73)
- Claim: preview remove of a file, pictures under a temporary name and the see-line fixes: verified (theme-hunt72)
- Claim: input cleanup (corner-bracket quotes, escapes, debris and French-quoted fonts, night and day, JSON stacks and objects, color pairs, other-setting labels, vibrancy 0.5): verified (theme-hunt72, theme-hunt64)
- Claim: a one-mode color goes into each variant's rule with that variant's other half, so the other mode is unchanged for every variant, and a later other-mode setting, an earlier variant color or an earlier both-modes part color keeps its half: verified for the variants Core styles and for a variant's own color or gradient (theme-parts43, direct run); false for variants the base theme styles itself after a both-modes part color (the blocking point)
- Claim: whole-part hover, later longhands, nested-card padding, kept sizes and the border mode step: verified (theme-parts43)
- Claim: only the experimental group supplies the new hooks, so stable theme build is unchanged: verified in code
- Claim: new suites theme-hunt68 to theme-hunt75 and theme-parts43, the French-quoted case in theme-hunt64, run against real Neutral and Butter bases: verified
- Claim: the held-out how set result: not checkable, the set is not in the repository
- Claim: the listed suites and checks pass: verified for the editor's suites (every theme-edit test file passes at this head); CI test shards were still running
- File: packages/cli/api/theme-edit/_settings.mjs: the blocking point
- File: packages/cli/api/theme-edit/_edit.mjs: non-blocking repeated note
- File: packages/cli/api/theme-edit/_how-question.mjs: clear; non-blocking 24x24px note
- File: _adapter.mjs, _preview.mjs, _check.mjs, _context.mjs, _how.mjs, _normal.mjs, _parts.mjs, _preview-app.mjs, theme-edit.type.mjs: clear
- File: clients/cli/commands/theme.mjs and experimental/theme.mjs: clear
- File: the four experimental theme command docs (compile, editor, editor show, editor undo): clear
- File: theme-parts43 test: passes, but its both-modes case does not check rule order (the blocking point)
- File: theme-how, theme-hunt61, theme-hunt64, theme-hunt68 to theme-hunt73, theme-hunt75, theme-preview-safety and theme-real-bases tests: clear
- File: the ten .changeset files: clear, except the parts43 line the blocking point makes false
… one-mode color; build notes are said once, and a part's own gradient over a one-mode color is named
|
/approve-spec 304f4e3 |
There was a problem hiding this comment.
Changes requested: the last review's blocking point (a plain background landing after a variant's one-mode color) is fixed at this head, and the experimental theme editor needs three more fixes.
- The widened lift filter in
buildTheme(packages/cli/api/theme-edit/_settings.mjs:4613-4629) skips every variant that holds a longhand the plain shorthand covers, so on the butter base a whole-buttonborder '3px dashed #ff0000'followed by a secondaryborder-color '#0000ff'draws secondary buttons 1.5px solid blue instead of 3px dashed blue; skip only where the variant's longhand already carries the plain value (or lift, then write the variant's later longhands as sides), with atheme-parts43case. - Miss:
compile themes/<t>/<t>.theme.ts --out src/themes/<t>/, the folder form the--outhelp documents, passes the check atpackages/cli/api/theme-edit/_adapter.mjs:822(rel.length >= 4), prints[ok], and the app-copy refresh then writes the copy back over the files it reported writing, although the changeset says an--outinto the copy folder is refused; refuse fromrel.length >= 3and add the folder form totheme-hunt75. - Miss:
how 'inline code padding 4px'now answerspadding-inline 4px --on codewhere the base answeredpadding 4px --on code, becausesideIn(packages/cli/api/theme-edit/_how-question.mjs:4341) reads the "inline" of inline code as a side; readinlineandblockas sides only next to "padding", with atheme-hunt68case.
A smaller point that does not block: how 'card padding 24x24px' still drops the size, as on the base.
Claims and files checked
- Claim:
howreads every amount form (a quarter, half again, 2x, ×2, x0, 4 times, by a factor, +50%, 50 percent, ½) as a factor of the current value: verified (theme-hunt69) - Claim: fractional pixels are kept; whole-theme radius and border-width amounts are exact tokens, and step-only amounts say so; zero words set 0: verified (theme-hunt69)
- Claim: lighter or darker fills start from the resting fill and keep alpha: verified (theme-hunt68)
- Claim: except keeps every excepted part or variant in one answer: verified (theme-hunt68, direct run)
- Claim: parts named in words reach the real part, and a missing sub-part says so: verified (theme-hunt68)
- Claim: comparisons copy or scale onto the first part only; bigger or smaller than another part is a step past or under it: verified (theme-hunt68)
- Claim: side words write only those sides and are read with part names taken out: verified for code block and top nav (theme-hunt68); false for inline code (blocking point)
- Claim: each clause keeps its own variant, a second part keeps its own ask, headings scale per level, a mistyped --theme keeps the question: verified (theme-hunt68)
- Claim: a dimension pair is a size, never an amount: verified for the amount reader (theme-hunt68); the padding answer still drops the size (non-blocking)
- Claim: every build and check says when the app copy is behind, with the real reason; a refused compile writes no copy; a deleted descriptor is written back; compiling the copy source takes the lock; loaded fonts are not called unloaded: verified (theme-hunt70, theme-hunt75)
- Claim: compile --check compares the copy file by file and fails with ERR_THEME_STALE; each copy follows its own build; build outputs alone are still the editor's: verified (theme-hunt75)
- Claim: copy files and the app theme module are refused as sources, and a subfolder run names the app root: verified (theme-hunt75)
- Claim: an --out into the copy folder is refused: verified for a file path (theme-hunt75); false for the folder itself (blocking point)
- Claim: a missing copy file is written back by the next change; compile --json carries appCopyStale: verified (theme-hunt75)
- Claim: path and camelCase names, edit-distance suggestions, working refusals for damaged settings, desktop.ini as empty, the undo mode note and the stop message: verified (theme-hunt71, theme-hunt73)
- Claim: preview remove of a file, pictures under a temporary name, and the see-line fixes: verified (theme-hunt72)
- Claim: input cleanup (corner-bracket quotes, escapes, debris, French-quoted fonts, night and day, JSON stacks and objects, color pairs, other-setting labels, vibrancy 0.5): verified (theme-hunt72, theme-hunt64)
- Claim: a one-mode color goes into each variant's rule with that variant's exact other half, and an earlier or later color keeps its half: verified on both real bases (theme-parts43)
- Claim: a whole-part hover reaches every variant: verified (theme-parts43)
- Claim: a longhand set after a shorthand wins: verified within one rule (theme-parts43); a whole-part border with a variant longhand loses the border (blocking point)
- Claim: nested card padding, kept sizes on the spacing dial and the per-mode border step: verified (theme-parts43)
- Claim: only the experimental group supplies the new hooks, so stable theme build is unchanged: verified in code (shared theme client)
- Claim: the new and changed suites pass: verified (13 files, 1037 tests at this head); the held-out how set is not in the repository; typecheck and lint were left to CI
- File: packages/cli/api/theme-edit/_settings.mjs: blocking point (lift filter)
- File: packages/cli/api/theme-edit/_adapter.mjs: blocking point (--out folder)
- File: packages/cli/api/theme-edit/_how-question.mjs: blocking point (inline code); non-blocking size note
- File: _check.mjs, _context.mjs, _edit.mjs, _how.mjs, _normal.mjs, _parts.mjs, _preview-app.mjs, _preview.mjs, theme-edit.type.mjs: clear
- File: clients/cli/commands/theme.mjs and experimental/theme.mjs: clear
- File: the four experimental theme command docs (compile, editor, editor show, editor undo): clear
- File: theme-hunt68 to theme-hunt73, theme-hunt75, theme-parts43, theme-how, theme-hunt61, theme-hunt64, theme-preview-safety and theme-real-bases tests: clear, but missing cases for the three blocking points
- File: the ten changesets: clear, except the --out and side-word lines the blocking points make false
…ess the variant's own longhand already carries it, and the variant's later longhands are written as sides
…as padding sides only beside the padding, never inside a part name
|
/approve-spec 14e91e0 |
There was a problem hiding this comment.
Changes requested: the last review's three blocking points are fixed at this head (the whole-button border on butter's secondary buttons, an --out at the copy folder, and "inline code" read as a side), and the reworked lift in buildTheme needs two more fixes.
String(v).includes(String(x.value))atpackages/cli/api/theme-edit/_settings.mjs:4628-4629skips the lift whenever a variant's side longhand contains the whole-button value as text, so on butterborder-width 2px --on buttonthen a secondaryborder-bottom-width 12px(orborder-color '#ff0000'then a secondaryborder-bottom-color '#ff000080', or an equalborder-bottom-style dashed) leaves secondary's other three sides at butter's own 1.5px, accent or solid, where main applied the whole-button value; decide by property instead (lift whatever the longhand's value, and skip only for a longhand the base theme's rule also holds and that cannot be split, which covers the one-modelight-dark()color) and addtheme-parts43cases.- A variant
background-colorset after a whole-buttonbackgroundloses to it again where the base theme holds that longhand, becauselaterLonghandsAsSideskeepsbackground-colorin the base's earlier place (_settings.mjs:4653-4659): on neutral,background '#123456' --on buttonthen a destructivebackground-color '#00ff00'compilesbackground-color: #00ff00; …; background: #123456;, which makes the parts43 changeset's "a longhand set after a shorthand wins even where the base theme holds that longhand" false; skip the copy for a longhand the base theme's rule holds and that cannot be split, as the previous head did, with atheme-parts43case.
A smaller point that does not block: how 'card padding 24x24px' still drops the size, as on main.
Claims and files checked
- Claim:
howreads every amount form (a quarter, half again, 2x, ×2, x0, 4 times, by a factor, +50%, 50 percent, ½) as a factor of the current value: verified (theme-hunt69) - Claim: fractional pixels are kept; whole-theme radius and border-width amounts are exact tokens, and step-only amounts say so; zero words set 0: verified (theme-hunt69)
- Claim: lighter or darker fills start from the resting fill and keep alpha: verified (theme-hunt68)
- Claim: except keeps every excepted part or variant in one answer: verified (theme-hunt68)
- Claim: parts named in words reach the real part, and a missing sub-part says so: verified (theme-hunt68)
- Claim: comparisons copy or scale onto the first part only; bigger or smaller than another part is a step past or under it: verified (theme-hunt68)
- Claim: side words write only those sides, read with part names taken out, and inline, block, horizontal and vertical count only beside padding: verified (theme-hunt68; direct runs for inline code, block quote, code block and top nav)
- Claim: each clause keeps its own variant, a second part keeps its own ask, headings scale per level, a mistyped --theme keeps the question: verified (theme-hunt68)
- Claim: a dimension pair is a size, never an amount: verified for the amount reader (theme-hunt68); the padding answer still drops the size (non-blocking)
- Claim: every build and check says when the app copy is behind, with the real reason; a refused compile writes no copy; a deleted descriptor is written back; compiling the copy source takes the lock; loaded fonts are not called unloaded: verified (theme-hunt70, theme-hunt75)
- Claim: compile --check compares the copy file by file and fails with ERR_THEME_STALE; each copy follows its own build; build outputs alone are still the editor's: verified (theme-hunt75)
- Claim: copy files and the app theme module are refused as sources, and a subfolder run names the app root: verified (theme-hunt75)
- Claim: an --out into the copy folder is refused: verified, the folder itself included (theme-hunt75)
- Claim: a missing copy file is written back by the next change; compile --json carries appCopyStale: verified (theme-hunt75)
- Claim: path and camelCase names, edit-distance suggestions, working refusals for damaged settings, desktop.ini as empty, the undo mode note and the stop message: verified (theme-hunt71, theme-hunt73)
- Claim: preview remove of a file, pictures under a temporary name, and the see-line fixes: verified (theme-hunt72)
- Claim: input cleanup (corner-bracket quotes, escapes, debris, French-quoted fonts, night and day, JSON stacks and objects, color pairs, other-setting labels, vibrancy 0.5): verified (theme-hunt72, theme-hunt64)
- Claim: a one-mode color goes into each variant's rule with that variant's exact other half, and an earlier or later color keeps its half: verified on both real bases (theme-parts43)
- Claim: a whole-part hover reaches every variant: verified (theme-parts43)
- Claim: a longhand set after a shorthand wins even where the base theme holds it: verified for side longhands (theme-parts43); false for a variant background-color after a whole-button background (blocking point)
- Claim: nested card padding, kept sizes on the spacing dial and the per-mode border step: verified (theme-parts43)
- Claim: only the experimental group supplies the new hooks, so stable theme build is unchanged: verified in code (shared theme client)
- Claim: the new and changed suites, typecheck and lint pass: verified (13 files, 1040 tests at this head; typecheck and lint pass in CI); the held-out how set is not in the repository
- File: packages/cli/api/theme-edit/_settings.mjs: two blocking points (the lift)
- File: packages/cli/api/theme-edit/_adapter.mjs: clear
- File: packages/cli/api/theme-edit/_how-question.mjs: clear; non-blocking size note
- File: _check.mjs, _context.mjs, _edit.mjs, _how.mjs, _normal.mjs, _parts.mjs, _preview-app.mjs, _preview.mjs, theme-edit.type.mjs: clear
- File: clients/cli/commands/theme.mjs and experimental/theme.mjs: clear
- File: the four experimental theme command docs (compile, editor, editor show, editor undo): clear
- File: theme-hunt68 to theme-hunt73, theme-hunt75, theme-parts43, theme-how, theme-hunt61, theme-hunt64, theme-preview-safety and theme-real-bases tests: clear, but missing cases for the two blocking points
- File: the eleven changesets: clear, except the parts43 longhand line the second blocking point makes false
…ant is decided by property, so a variant's later longhand is written after it
|
/approve-spec 6cc2a03 |
|
/approve-spec e0735a0 |
# Conflicts: # scripts/vitest-node-durations.json
|
/approve-spec 40932d0 |
There was a problem hiding this comment.
Approved pending CI: some required checks have not finished on this head yet.
The last review's two blocking points in the variant lift are fixed: whether a whole-part setting is copied into a variant's rule is now decided by property, and new theme-parts43 cases hold both on the real butter and neutral bases. Every change stays inside the experimental theme commands, with [experimental] patch changesets, and stable theme build behaves as before.
- Non-blocking:
how 'card padding 24x24px'still answersspacing more --on cardand drops the size, as on main.
Claims and files checked
- Claim:
compile --checkof an editor theme compares its app copy file by file and fails withERR_THEME_STALE, saying why; each copy follows its own build; copy files, the app theme module and an--outinto the copy folder are refused; a copy with only its build outputs is still the editor's; a missing copy file is written back; an unwritable folder is named: verified (theme-hunt75, theme-hunt70) - Claim: inline, block, horizontal and vertical name a padding side only beside the padding: verified (theme-hunt68)
- Claim: side words are read with the part's name taken out; bigger or smaller than another part's padding is a step past or under it; a dimension pair is a size, never an amount: verified for the amount reader (theme-hunt68); the padding answer still drops a 24x24px size (non-blocking)
- Claim: lighter or darker fills start from the resting fill and keep transparency; except keeps every excepted part in one answer; sub-parts and catalog parts named in words reach the part; comparisons copy onto the first part only; each clause keeps its variant; headings scale per level; a font stack stays whole; a near theme name keeps the question: verified (theme-hunt68)
- Claim: every amount form is read as a factor of the current value; fractional pixels are kept; whole-theme radius and border width amounts are exact; step-only amounts say so; zero words set 0: verified (theme-hunt69)
- Claim: every build and check says when the app copy is behind, with the real reason; a link or folder at a copy name stops it; a deleted descriptor is written back; compiling the copy's source takes the lock; fonts the copy loads are not called unloaded: verified (theme-hunt70, theme-hunt75)
- Claim: names typed as paths or in camelCase reach the theme meant; suggestions rank by edit distance; refusals name a command that works; desktop.ini counts as empty; undo names the Theme mode change; a stop after the save says so: verified (theme-hunt71)
- Claim: preview remove of a file is refused cleanly; pictures are taken under a temporary name; the see line fixes; a dial value labeled with another setting is refused; the input cleanup cases: verified (theme-hunt72)
- Claim: hand-edited headings, mode and base entries are offered only commands that unlock the theme: verified (theme-hunt73)
- Claim: a saved French-quoted font family is offered trimmed: verified (theme-hunt64)
- Claim: a one-mode color goes into each variant's rule with that variant's exact other half; a whole-part hover reaches every variant; a longhand set after a shorthand wins even where the base theme holds it; nested card padding; kept sizes on the spacing dial; the per-mode border step; the corners note: verified on both real bases (theme-parts43)
- Claim: only the experimental group supplies the new shared-client hooks, so stable theme build is unchanged: verified in code (stable theme words carry neither hook)
- Claim: the new suites, typecheck, lint and the theme-edit suites pass: verified for 14 theme-edit files at this head (1050 tests) and for lint and typecheck in CI; the held-out how set is not in the repository, so its count is unverified
- File: packages/cli/api/theme-edit/_settings.mjs: clear (lift decided by property)
- File: packages/cli/api/theme-edit/_adapter.mjs, _preview.mjs: clear, including the merged app copy mark
- File: packages/cli/api/theme-edit/_how-question.mjs: clear; non-blocking size note
- File: _check.mjs, _context.mjs, _edit.mjs, _how.mjs, _normal.mjs, _parts.mjs, _preview-app.mjs, theme-edit.type.mjs: clear
- File: clients/cli/commands/theme.mjs and experimental/theme.mjs: clear
- File: the four experimental theme command docs (compile, editor, editor show, editor undo): clear
- File: theme-hunt68 to theme-hunt73, theme-hunt75, theme-parts43, theme-how, theme-hunt61, theme-hunt64, theme-preview-safety and theme-real-bases tests: clear
- File: the eleven changesets: clear
- File: scripts/vitest-node-durations.json: clear (one suite timing)
Summary
Fixes from the next round of hunting on
astryx experimental theme(six hunters across every command and option, plus a seeded chaos run of 3,000 steps). Experimental code, plus one optional hook in the shared theme command client that only the experimental group uses.editor how--themekeeps the question.The app copy (
src/themes/<theme>/)Every result that builds or checks the theme says when the copy is behind (
compile,compile --check, a no-opset), with the real reason: a file, folder or link at a copy name, a file where the folder goes, or a folder that can't be written. A refused compile writes no copy. A deleted descriptor is written back. Compiling the copy's own source takes the theme's lock. Fonts the copy's stylesheet loads are not called unloaded.compile --checkcompares the app copy with what the current build writes, file by file, and fails withERR_THEME_STALE(never "up to date") when the copy is kept back, missing a file, gone or different;--jsonsays why. Each theme's copy follows its own build when several are compiled. Only the build's own output files left in the folder count as the editor's and are repaired. A copy file other than the source, or the app's theme module, given to compile is refused with the right command; compiling the copy's source from a subfolder gets the same answer as the editor's source.--outinto the copy folder is refused. A missing copy file is written back by the next change.compile --jsoncarriesappCopyStale, and fonts the copy loads are not called unloaded in--jsonor--detail fulleither.Names, undo and repair
new themes/brandandnew ./tread the name; nearest-name suggestions rank by edit distance and read camelCase (brandDark→brand-dark). Damaged settings get a suggestion that works, including a damaged mode beside another bad value, a headings entry with no axis, and a mode or base line inside the settings list.desktop.inicounts as empty. An undo that switches the mode gives the<Theme mode>note. Ctrl-C after a change is saved says so.Preview
preview remove --path <a file>is refused cleanly.--pngwrites pictures under a temporary name, so a killed run never blocks later pictures. Theseeline namespreview add --theme <t>when there are several themes, gives no URL for folders Next doesn't serve, says what blocked--pngor the page write, gives paths that work from a subfolder, and names a hand-edited preview.Input
--mode night/day; a JSON-escaped font stack is read; a JSON object of several settings gives one line each; a light/dark pair typed as one value gets per-mode lines; another setting's label is refused with did-you-mean;vibrancy 0.5reads as 50.Padding and modes
backgroundshorthand), keeps its half.--modeon a border offers the per-mode step.Scope
Components: none (CLI). One shared client file,
clients/cli/commands/theme.mjs, gains an optionalloadedFontshook; onlyexperimental themesupplies it, so stabletheme buildbehaves as before.Tests
New suites
theme-hunt68totheme-hunt73andtheme-parts43(the saved French-quoted font case is intheme-hunt64); the padding and mode cases run against the real Neutral and Butter bases. The held-outhowset is unchanged (236 right, 18 wrong). Theme-edit, theme, doctor and command suites, typecheck, lint, format, structure and changeset checks pass.