Skip to content

feat: design wave 2 — identity tokens (goal 0001) - #48

Merged
alicoding merged 1 commit into
mainfrom
feat/design-wave2-identity
Aug 13, 2026
Merged

feat: design wave 2 — identity tokens (goal 0001)#48
alicoding merged 1 commit into
mainfrom
feat/design-wave2-identity

Conversation

@alicoding

Copy link
Copy Markdown
Owner

Summary

  • Mill's own accent scale (verdigris/teal), layered over Primer's functional accent tokens so links/focus rings/selected tabs/sidebar active row pick it up for free — proven via a computed-style e2e test against the real compiled page, not just read from the CSS.
  • Node-Kind canvas colors (composition/nodeKind.ts) decoupled from status semantics — previously aliased Primer's literal success/attention tokens (the audit's "green triple duty" finding).
  • shared/StatusStamp.tsx: one stamp component replacing 7 ad-hoc <Label variant="..."> pill families, five semantic variants only (success/caution/danger/neutral/identity).
  • shared/monoText.module.css: mono-font utility applied to machine-readable facts (MCP commands, API URLs, run timestamps, ExecEnv dirs, Decision output keys).

Test plan

  • Full local gate (tsc/eslint/boundaries/vitest/check-loc/golangci-lint/go vet/go build ×2/go test/ls_lint) — green
  • Full Playwright e2e suite — 196/196 (3 pre-existing timing-flake tests confirmed via isolated reruns, unrelated to this change)
  • New e2e proofs: accent-token cascade in both themes, StatusStamp computed color
  • docs/SPEC.md, goal 0001, BACKLOG updated

🤖 Generated with Claude Code

https://claude.ai/code/session_018pkViCNAuZp2vBv2K9AbUh

…o utility (goal 0001)

A full-app design audit (screenshots, both themes) found pill/color/
typography drift beyond wave 1's convention fixes: 7 independent ad-hoc
`<Label variant="...">` pill families with no shared vocabulary, node-kind
canvas colors literally aliasing Primer's status-semantic tokens (a
process-kind node and a success-status pill rendered the identical green
-- "green triple duty"), and machine-readable facts (URLs, IDs, commands,
timestamps) rendering in body text with nothing to mark them as such.

1. Accent scale: Mill's own desaturated verdigris/teal, layered over
   Primer's functional accent tokens (frontend/src/app/mill-tokens.css)
   so every Primer component reading them (links, focus rings, selected
   tabs, the sidebar active row) picks it up for free. Deliberately a
   separate file imported AFTER @primer/primitives' theme CSS in
   main.tsx -- Primer's own light.css sets these tokens on its
   ThemeProvider's internal wrapper <div> directly (not just :root), so
   a same-specificity override has to win the cascade by load order;
   caught by a computed-style e2e proof against the real compiled page
   after a specificity-only attempt looked correct on paper and still
   lost.
2. Node-Kind canvas colors (composition/nodeKind.ts) decoupled from
   status semantics: own fixed --mill-kind-* tokens, contrast-checked
   independently, never aliased to a Primer semantic token or the
   accent scale.
3. shared/StatusStamp.tsx: one stamp component replacing the 7 pill
   families across the app, five semantic variants only (success/
   caution/danger/neutral/identity). Primer Label stays for genuine
   categorization tags (auth type, field In/Type) -- StatusStamp is for
   STATE, Label stays for CATEGORY. Also closed two stray un-migrated
   key-combo sites (NodeInspector, SettingsView) onto wave 1's
   KeyComboChip, a gap wave 1's own commit message had claimed closed.
4. shared/monoText.module.css: a mono utility class applied to MCP
   server commands, AI provider/Integration base URLs, run timestamps,
   ExecEnv directories, Decision output keys.

Full local gate green (tsc/eslint/boundaries/vitest/check-loc/golangci-
lint/go vet/go build desktop+server/go test/ls_lint) plus a full
Playwright e2e run (196/196, 3 pre-existing timing-flake tests confirmed
via isolated reruns, none touching a Label/StatusStamp testid or
variant). docs/SPEC.md §3.8-area, goal 0001, and BACKLOG annotated;
goal stays OPEN pending wave 3 (palette IA) and the owner's live sign-off.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018pkViCNAuZp2vBv2K9AbUh
@alicoding
alicoding enabled auto-merge (squash) August 13, 2026 04:49
@alicoding
alicoding merged commit fb6858f into main Aug 13, 2026
16 checks passed
alicoding added a commit that referenced this pull request Aug 15, 2026
…o utility (goal 0001) (#48)

A full-app design audit (screenshots, both themes) found pill/color/
typography drift beyond wave 1's convention fixes: 7 independent ad-hoc
`<Label variant="...">` pill families with no shared vocabulary, node-kind
canvas colors literally aliasing Primer's status-semantic tokens (a
process-kind node and a success-status pill rendered the identical green
-- "green triple duty"), and machine-readable facts (URLs, IDs, commands,
timestamps) rendering in body text with nothing to mark them as such.

1. Accent scale: Mill's own desaturated verdigris/teal, layered over
   Primer's functional accent tokens (frontend/src/app/mill-tokens.css)
   so every Primer component reading them (links, focus rings, selected
   tabs, the sidebar active row) picks it up for free. Deliberately a
   separate file imported AFTER @primer/primitives' theme CSS in
   main.tsx -- Primer's own light.css sets these tokens on its
   ThemeProvider's internal wrapper <div> directly (not just :root), so
   a same-specificity override has to win the cascade by load order;
   caught by a computed-style e2e proof against the real compiled page
   after a specificity-only attempt looked correct on paper and still
   lost.
2. Node-Kind canvas colors (composition/nodeKind.ts) decoupled from
   status semantics: own fixed --mill-kind-* tokens, contrast-checked
   independently, never aliased to a Primer semantic token or the
   accent scale.
3. shared/StatusStamp.tsx: one stamp component replacing the 7 pill
   families across the app, five semantic variants only (success/
   caution/danger/neutral/identity). Primer Label stays for genuine
   categorization tags (auth type, field In/Type) -- StatusStamp is for
   STATE, Label stays for CATEGORY. Also closed two stray un-migrated
   key-combo sites (NodeInspector, SettingsView) onto wave 1's
   KeyComboChip, a gap wave 1's own commit message had claimed closed.
4. shared/monoText.module.css: a mono utility class applied to MCP
   server commands, AI provider/Integration base URLs, run timestamps,
   ExecEnv directories, Decision output keys.

Full local gate green (tsc/eslint/boundaries/vitest/check-loc/golangci-
lint/go vet/go build desktop+server/go test/ls_lint) plus a full
Playwright e2e run (196/196, 3 pre-existing timing-flake tests confirmed
via isolated reruns, none touching a Label/StatusStamp testid or
variant). docs/SPEC.md §3.8-area, goal 0001, and BACKLOG annotated;
goal stays OPEN pending wave 3 (palette IA) and the owner's live sign-off.


Claude-Session: https://claude.ai/code/session_018pkViCNAuZp2vBv2K9AbUh

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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