Commit 3eafd06
feat(design-system): catalog synced to claude.ai/design + /cron & /shells redesigns (#84)
* docs: add Claude Karma design system spec
Design system that mirrors real code (extracted tokens.css single source)
and syncs an in-repo catalog to claude.ai/design via DesignSync. Approach B:
generated foundation cards + hand-authored previews for the 13 ui/ primitives
+ a mapping.json round-trip contract.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs: incorporate feature-dev review into design system spec
- exact token line ranges (12-211/264-403/406-539) + keep @theme & import order
- git strategy: commit authored sources, gitignore derived (tokens copy/foundations)
- generator: zero-dep state-machine parser; skip --plugin-*, alias --data-*; 8 spacing
- per-primitive notes: bits-ui DOM hardcoding, TierBadge hardcoded hex, KarmaIcon SVG
- build hygiene: .prettierignore catalog (marker on line 1), .gitignore, eslint
- known dark-block token inconsistencies tracked as future cleanup
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs: add design system implementation plan (8 tasks, TDD where applicable)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* refactor(frontend): extract design tokens into single-source tokens.css
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore(design-system): scaffold catalog shared assets + ignore rules
* feat(design-system): token parser + foundation card generator
* feat(design-system): build-catalog + drift-check + ds:build/ds:drift scripts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(design-system): remove unused imports in build/drift scripts
* feat(design-system): static primitive previews (badge, card, key-indicator, text-input, select, empty-state, tier-badge, theme-toggle)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat(design-system): interactive primitive previews (segmented-control, switch, tabs, collapsible-group, modal)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(design-system): align collapsible focus token, modal xl ref width, drop text-input ring litter
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs(design-system): catalog README + round-trip usage
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs(design-system): clarify drift trigger + ds:build pipeline in README
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(design-system): enforce mapping contract, group colors page, honest render-check, segmented-control + chrome fidelity
- build-catalog: load mapping.json and enforce bidirectional contract (card without key → exit 1; key without file → exit 1)
- build-catalog: compute honest thin counter (body < 200 non-WS chars); drop variantsIdentical (was always 0)
- generate-foundations: exclude --shadow* and --focus* from color grid (they have own cards); group remaining swatches into 10 labeled sections (Core/Semantic/Model/Event/Subagent/Provider/Ticket Status/Live Status/Nav/Scope + Other catch-all); Core RGB values shown as text notes not broken chips; subtitle count is now accurate (110)
- preview.css: add border-bottom on .ds-swatch__chip so near-invisible alpha tints show bounds; .ds-section-label and .ds-swatch__val raised from --text-faint/--text-muted to --text-secondary (AA contrast)
- segmented-control.html: active label color changed from #fff to var(--bg-base) matching real SegmentedControl.svelte
- README: update render-check description to match actual counters
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(frontend): darken light-mode semantic/model/event tokens for WCAG AA contrast
Seven light-mode foreground tokens failed WCAG AA on their -subtle tint backgrounds
(ratios ranged from 1.99:1 to 3.29:1). Darkened each to its Tailwind -700 shade:
warning #f59e0b → #b45309 (amber-700, 4.65:1)
success #10b981 → #047857 (emerald-700, 4.99:1)
error #ef4444 → #b91c1c (red-700, 5.66:1)
info #3b82f6 → #1d4ed8 (blue-700, 5.99:1)
model-haiku = success; model-sonnet = info (same hue pairs)
event-command #14b8a6 → #0f766e (teal-700, 4.63:1)
Tint backgrounds and dark-mode blocks unchanged. Adds WCAG note to badge catalog card.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs(design-system): record synced claude.ai/design projectId
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(design-system): add Pages layer — /cron and /shells page cards
Two static HTML page cards in catalog/pages/ snapshot the current
/cron and /shells routes with spec sample data and real var(--…) tokens.
Adds mapping.json entries, a Pages-layer README section, and task report.
ds:build → "catalog OK — 23 cards validated"; ds:drift → no drift.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(design-system): README card count + shells session link
Updated README.md to reflect 23 cards validated (was 21), and made session slug clickable in shells.html with accent-colored link styling.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs(design-system): record Pages-layer sync to claude.ai/design
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(design-system): self-host Inter + JetBrains Mono so catalog cards show brand fonts
Catalog previews named the brand families via tokens but loaded no web font,
so claude.ai/design (and direct-opened HTML) fell back to system fonts. Vendor
the woff2 weights actually used (Inter 400/500/600/700, JetBrains Mono 400/500/600)
under shared/fonts/ and add @font-face to preview.css. Re-synced to claude.ai/design.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(frontend): self-host Inter + JetBrains Mono web fonts
The app named these brand families via tokens but loaded no web font,
silently falling back to system fonts on any machine without them installed.
Vendor the used weights (Inter 400/500/600/700, JetBrains Mono 400/500/600)
under static/fonts/ and add @font-face to app.css. Verified: build copies them
to build/client/fonts/ and the bundled CSS references /fonts/*.woff2.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(cron): redesign Claude-crons view as "The Ledger" (trust column + inline outcome)
Surface the two things hidden behind a click onto every row: a trust verdict
(Confirmed/Inferred/TTL expired/Deleted + fire subline) and the inline last
outcome. Group rows by status (Active / Expired & deleted) into bordered tables,
reframe the stat strip around trust, add a legend. Presentation only — all data
wiring, filters, URL state, expand, TTL, rescan, and the System tab preserved.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(ui): reserve 2-line label height in StatsCard so value rows align
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* feat(shells): redesign as "The Process Monitor" (triage table, pinned running + inline kill + sparkline)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs(design-system): refresh cron + shells page cards to new designs (Ledger, Process Monitor)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 88fb805 commit 3eafd06
52 files changed
Lines changed: 6079 additions & 670 deletions
File tree
- .superpowers/sdd
- docs
- superpowers
- plans
- specs
- frontend
- design-system
- catalog
- components
- pages
- scripts
- src
- lib/components
- routes
- cron
- shells
- styles
- static/fonts
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 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 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
Lines changed: 675 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 294 additions & 0 deletions
Large diffs are not rendered by default.
Binary file not shown.
Binary file not shown.
0 commit comments