Skip to content

feat: ship the Claude Design setup payload and brand assets (#36) - #737

Merged
thomasluizon merged 1 commit into
redesign/mainfrom
feature/ticket-36-design-system-assets
Aug 15, 2026
Merged

thomasluizon merged 1 commit into
redesign/mainfrom
feature/ticket-36-design-system-assets

Conversation

@thomasluizon

Copy link
Copy Markdown
Owner

Ticket: #36. Follows PR #735, which landed the spec rewrite and the rendered reference.

Everything needed to build the Orbit design system inside Claude Design, plus the spec gap that work exposed. No screens: screens come after the design system exists and is selected.

What is here

design/brand/SETUP.md carries the five Claude Design setup fields, filled and pasteable, and the by-hand import checklist. There is no documented token export from Claude Design, so that checklist is the only gate between the import and every screen built on it.

design/brand/ extracts the mark, the 16 native redraw, the Astra glyph, the lockup and the platform icon out of design/reference.html as real files, value for value, in both accent candidates. 10 SVGs and 12 PNGs at 16 / 48 / 128 / 512.

design/brand/fonts/ holds Geist 1.800, Geist Mono 1.701 and Space Grotesk 2.000 as full variable TTFs from github.com/google/fonts, with their OFL licences. The woff2 embedded in reference.html are subsets and would break pt-BR copy.

The mark is a DRAFT. It exists so the accent is decidable against a real identity surface. Ticket #79 owns the real mark.

The GitHub link field is deliberately left empty

It takes a whole repo URL with no branch control, so it reads main, which predates the redesign. apps/web/app/globals.css on redesign/main still carries all six colour schemes, violet #7f46f7, --primary-glow, --gradient-header-from, --status-done: var(--primary), Rubik / Inter / Roboto, and oklch() literals. Attaching that teaches the tool the system this redesign deletes. SETUP.md recommends the local folder field on design/ instead, and states what is lost.

Assumptions

  • Both accent candidates ship as assets rather than one. The accent is open, so a single set would have forced the choice in this PR.
  • The SVGs use var(--fg-1, #F4F4F6) rather than literal hex. Standalone viewers resolve the dark fallback, which is the primary mode; inlined copies resolve the live token, so light mode needs no second file. The two icon-512-*.svg bake literal hex, because a platform icon must never follow a page mode.
  • No design/proto/** and no DesignSync push. A design system project's type is immutable at creation and no project exists yet, so its type cannot be verified. Every proto would also bake a placeholder accent.
  • No tools/ script for the PNG rebuild. The recipe is in design/brand/README.md instead, so this does not add a gated tool for a one-shot regeneration.

The spec gap, and why it changes the accent recommendation

DESIGN.md's light mode block never listed --status-overdue or --status-bad. Those values existed only in reference.html. This PR records them.

That omission was load-bearing. Both status hues darken to clear the floor on #FAFAFA, which drags overdue from hue 65.4 to 54.5 and bad from 25.4 to 28.5, filling the warm band. Measured 2026-08-15:

pair hue gap lightness gap
warm orange #C4530F vs LIGHT overdue #B45B00 9.8 0.012
warm orange #C4530F vs light bad #E7000B 16.3 0.003
rose #BF4D8A vs light overdue 64.6 0.020
rose #BF4D8A vs light bad 38.6 0.005

Derivation rule 6 treats two hues within 15 degrees as the same colour. The accent had only ever been measured against the dark status values. An accent progress ring and an overdue ring share the trailing column of one habit list, so this is a real adjacency on the canonical surface.

Orange cannot move: hue 45 already sits at the midpoint between the two dark status hues. Light overdue cannot easily move either, boxed between the destructive red at 28.5 and the 3:1 floor on white.

Recommendation: rose #BF4D8A. This overturns the stated lean toward orange. Orange stays reachable if light --status-overdue moves or retires as a hue, exactly as --status-frozen already did on this precedent. That is a status ramp decision and it is Thomas's, settled on the canvas.

This PR changes no settled decision. It records values that were already rendered and applies the spec's own floor to them.

One more defect found

--fg-on-overdue is now #FFFFFF in light mode. reference.html never repoints it, so it inherits the dark #020618, which measures 4.26:1 on #B45B00 and misses the 4.5 text floor. The page is incomplete there rather than authoritative, so the floor decides.

Verification

  • node tools/check-dashes.mjs clean on every changed file, and lefthook pre-commit passed.
  • Font family names, versions and wght axis ranges read directly out of the TTF name and fvar tables, not assumed. Two import traps documented: the sans family really reports as Geist, and SpaceGrotesk[wght].ttf reports name ID 1 as Space Grotesk Light with its axis defaulting to 300, a weight DESIGN.md bans.
  • Every contrast ratio and OKLCH hue quoted here was recomputed from the token bytes. All existing DESIGN.md figures matched exactly.
  • The light mode collision was confirmed by rendering it, not only by arithmetic.

redesign/main has no CI and no Pullfrog review: nine workflows key on branches: [main] and Pullfrog's required check is configured on main. A green PR here is not a reviewed PR. Worth fixing before the R tickets.

🤖 Generated with Claude Code

Everything needed to build the Orbit design system inside Claude Design,
plus the spec gap that work exposed.

design/brand/SETUP.md carries the five setup fields filled and pasteable,
and the by-hand import checklist. There is no documented token export from
Claude Design, so that checklist is the only gate between the import and
every screen built on it.

design/brand/ extracts the mark, the 16 native redraw, the Astra glyph, the
lockup and the platform icon out of design/reference.html as real files,
value for value, in both accent candidates. The three type families come
from github.com/google/fonts as full variable TTFs with their licences: the
woff2 embedded in reference.html are subsets and would break pt-BR copy.

The mark is a DRAFT. It exists so the accent is decidable against a real
identity surface. Ticket #79 owns the real mark.

DESIGN.md gains the light-mode status values, which existed only in
reference.html. That omission was load-bearing: both status hues darken to
clear the floor on #FAFAFA, which drags overdue to hue 54.5 and bad to 28.5
and fills the warm band. A hue 45 warm-orange accent lands 9.8 degrees from
light overdue, inside derivation rule 6's 15-degree band, while rose at 350
clears by 64.6. The accent had only ever been measured against the dark
status values.

Also records --fg-on-overdue as #FFFFFF in light mode. reference.html never
repoints it, so it inherits #020618 at 4.26:1 on #B45B00 and misses the 4.5
floor.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@pullfrog

pullfrog Bot commented Aug 15, 2026

Copy link
Copy Markdown
  • Check out PR feat: ship the Claude Design setup payload and brand assets (#36) #737 and read the complete authoritative diff and summary snapshot
  • Trace affected assets, setup payload behavior, references, and required repository conventions
  • Run targeted verification and validate any disposition-changing concerns
  • Update the PR summary snapshot and submit exactly one review

Pullfrog  | View workflow run | via Pullfrog | Using GPT Sol𝕏

@vercel

vercel Bot commented Aug 15, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
orbit-ui-mobile-web Ignored Ignored Aug 15, 2026 5:14pm

Request Review

@thomasluizon
thomasluizon merged commit 30b0f09 into redesign/main Aug 15, 2026
4 checks passed
@thomasluizon
thomasluizon deleted the feature/ticket-36-design-system-assets branch August 15, 2026 17:15
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