Skip to content

Restore the gold accent, and write down the states - #5

Merged
timbogdanov merged 1 commit into
mainfrom
feat/design-reconciliation
Aug 19, 2026
Merged

Restore the gold accent, and write down the states#5
timbogdanov merged 1 commit into
mainfrom
feat/design-reconciliation

Conversation

@timbogdanov

Copy link
Copy Markdown
Owner

Phase 1 of the v0.2.0 plan — design consistency.

The contradiction

docs/09-design-system.md specified Aseprite's gold accent with "blue only for links". The stylesheet used #2962ff, and tools/verify-ui.py asserted "accent is no longer gold". Code and checker agreed with each other; the document whose entire purpose is preventing drift was the thing that had drifted — and --link:#6e9adb had become a second blue eight hue-degrees from the accent, doing an unrelated job.

Gold wins. Chrome belongs to the audience, which lives in Aseprite; OpenFront fidelity is carried by the format, the codec and the preview, not by the accent colour. The checker now fails on #2962ff, so the round trip does not happen a third time.

What else this found

Reconciling one claim exposed four more that were false:

Claim in the doc Reality
Default interface scale is It is 1.5×
Layout has two side columns It has three — the preview holds its own
Tab collapses both columns It collapses all three, plus the gutters
The gutters are drag-to-resize, unmentioned entirely

And four status messages wrote colour as inline hex (style="color:#e5674b") beside a --danger token that already held that job.

States

States were the part of the system nobody wrote down, which is exactly why they drifted — the document covered tokens, radius, density and layout, and said nothing about focus, disabled, hover, pressed, success or error. All eight are specified now, six are mechanically checked, and the checker rejects inline colour where a status token belongs. I verified that last check catches the old form rather than passing vacuously.

Icon

The duotone band moves to the same gold. It now colours only the ink — giving the band its own ground introduced a third grey between paper and ink and muddied the tile at small sizes.

Verification

./tools/verify-all.sh green, including six new state checks. Rendered the app and confirmed the accent reads as one colour across the tool rail, zoom segment, Export, the active layer row, the alpha thumb and the palette selection.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UCrKKTD2mwHx8Fm1EnJiQ3

docs/09-design-system.md specified Aseprite's gold accent with "blue only for
links". The stylesheet used #2962ff and verify-ui.py asserted "accent is no
longer gold". Code and checker agreed; the document whose whole purpose is
preventing drift was the thing that had drifted, and --link (#6e9adb) had become
a second blue sitting eight hue-degrees from the accent while doing an unrelated
job.

Gold wins. Chrome belongs to the audience, which lives in Aseprite; OpenFront
fidelity is carried by the format, the codec and the preview, not by the accent.
verify-ui.py now fails on #2962ff, so the round trip is not repeated.

Four status messages were writing colour as inline hex — style="color:#e5674b" —
beside a --danger token that already held that job. They now use the tokens, and
the checker rejects inline colour in that position.

States were the part of the system nobody had written down, which is why they
drifted: the document specified tokens, radius, density and layout, and said
nothing about focus, disabled, hover, pressed, success or error. All eight are
specified now and six are mechanically checked.

Three other claims in the document were false and are corrected: the default
interface scale is 1.5x rather than 2x, the preview holds a column of its own,
and Tab collapses three columns rather than two. The gutters between them are
drag-to-resize, which went unmentioned entirely.

The icon's duotone band moves to the same gold. It draws only the ink in colour
now — giving the band its own ground introduced a third grey between paper and
ink and muddied the tile at small sizes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UCrKKTD2mwHx8Fm1EnJiQ3
@timbogdanov
timbogdanov merged commit 1aa5303 into main Aug 19, 2026
5 checks passed
@timbogdanov
timbogdanov deleted the feat/design-reconciliation branch August 19, 2026 01:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant