Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
3f3cf38
docs: add Claude Karma design system spec
JayantDevkar Jun 24, 2026
ebcc4dd
docs: incorporate feature-dev review into design system spec
JayantDevkar Jun 24, 2026
2587740
docs: add design system implementation plan (8 tasks, TDD where appli…
JayantDevkar Jun 24, 2026
b23ed1c
refactor(frontend): extract design tokens into single-source tokens.css
JayantDevkar Jun 24, 2026
53446ae
chore(design-system): scaffold catalog shared assets + ignore rules
JayantDevkar Jun 24, 2026
996ac1d
feat(design-system): token parser + foundation card generator
JayantDevkar Jun 24, 2026
35ed6b5
feat(design-system): build-catalog + drift-check + ds:build/ds:drift …
JayantDevkar Jun 24, 2026
0e4dc14
fix(design-system): remove unused imports in build/drift scripts
JayantDevkar Jun 24, 2026
12970c9
feat(design-system): static primitive previews (badge, card, key-indi…
JayantDevkar Jun 24, 2026
fd57e76
feat(design-system): interactive primitive previews (segmented-contro…
JayantDevkar Jun 24, 2026
b5a2fa1
fix(design-system): align collapsible focus token, modal xl ref width…
JayantDevkar Jun 24, 2026
9c0a43a
docs(design-system): catalog README + round-trip usage
JayantDevkar Jun 24, 2026
5c1f24f
docs(design-system): clarify drift trigger + ds:build pipeline in README
JayantDevkar Jun 24, 2026
fa4e255
fix(design-system): enforce mapping contract, group colors page, hone…
JayantDevkar Jun 24, 2026
61fc4e0
fix(frontend): darken light-mode semantic/model/event tokens for WCAG…
JayantDevkar Jun 24, 2026
e8f6e2f
docs(design-system): record synced claude.ai/design projectId
JayantDevkar Jun 24, 2026
aa54e5c
feat(design-system): add Pages layer — /cron and /shells page cards
JayantDevkar Jun 24, 2026
c403bdf
fix(design-system): README card count + shells session link
JayantDevkar Jun 24, 2026
889022b
docs(design-system): record Pages-layer sync to claude.ai/design
JayantDevkar Jun 24, 2026
79b4423
fix(design-system): self-host Inter + JetBrains Mono so catalog cards…
JayantDevkar Jun 24, 2026
ec3c219
fix(frontend): self-host Inter + JetBrains Mono web fonts
JayantDevkar Jun 24, 2026
c54d027
feat(cron): redesign Claude-crons view as "The Ledger" (trust column …
JayantDevkar Jun 24, 2026
cbb7c31
fix(ui): reserve 2-line label height in StatsCard so value rows align
JayantDevkar Jun 24, 2026
0140eb2
feat(shells): redesign as "The Process Monitor" (triage table, pinned…
JayantDevkar Jun 24, 2026
5caa104
docs(design-system): refresh cron + shells page cards to new designs …
JayantDevkar Jun 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions .superpowers/sdd/task-9-remediation-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# Task 9 Remediation Report

## Findings addressed

### 1. Enforce mapping.json contract in build-catalog.mjs (code-review Important)
**File:** `frontend/design-system/scripts/build-catalog.mjs`

Added bidirectional mapping.json enforcement:
- Loads `mapping.json` after `generate()` runs.
- Iterates all discovered `.html` files; any missing a mapping key is collected in `missingMappings`.
- Iterates all mapping keys; any pointing to a non-existent card file is collected in `missingFiles`.
- Both arrays cause `process.exit(1)` with offender lists printed.
- Existing marker validation retained unchanged.
- Current 21 cards all pass (8 foundation + 13 component keys all present).

### 2. colors.html generator fixes (H2, H3, M3, M4-count)
**File:** `frontend/design-system/scripts/generate-foundations.mjs`

- **(M3) Exclude shadow/focus tokens:** `buildColorSections()` pre-filter now excludes `--shadow*` and `--focus*` in addition to the prior `--font*`/`--plugin*`/`--data*` exclusions. These tokens have their own foundation cards.
- **(H2) Grouped sections:** Replaced the flat `auto-fill` grid with 10 labeled `ds-section` groups: Core, Semantic, Model, Event, Subagent, Provider, Ticket Status, Live Status, Nav, Scope. An "Other" section catches any future token not matching a family. Core's raw `*-rgb` values are rendered as a compact text note instead of chips (background: `124, 58, 237` is not a valid CSS color).
- **(H3) Chip borders:** Added `border-bottom: 1px solid var(--border)` on `.ds-swatch__chip` in `preview.css` so near-invisible low-alpha tints show their bounds. (The outer `.ds-swatch` already has a full border; the chip border provides an internal separator.)
- **(M4-count) Accurate subtitle:** Count is computed as `swatchCount` (actual chips rendered), currently 110. The stale hardcoded "115" is gone.

### 3. Honest render-check counters (UI/UX M4)
**File:** `frontend/design-system/scripts/build-catalog.mjs`

- `thin`: computed as number of cards where `body` inner content (tags stripped, whitespace removed) < 200 chars. Currently 6 (focus, brand, motion, typography, shadow, radius — all legitimately brief by design).
- `variantsIdentical`: removed entirely (was always `0`; not measured). README updated to match.
- Current output: `{ "total": 21, "bad": 0, "thin": 6 }`.

### 4. segmented-control.html fidelity fix (UI/UX M1)
**File:** `frontend/design-system/catalog/components/segmented-control.html`

Changed `.seg-btn[aria-checked="true"]` active label color from `#fff` to `var(--bg-base)`, matching the real `SegmentedControl.svelte` (`text-[var(--bg-base)]`). First-line `@dsCard` marker preserved.

### 5. Catalog chrome contrast fix (UI/UX M5)
**File:** `frontend/design-system/catalog/shared/preview.css`

- `.ds-section-label`: changed `color: var(--text-faint)` → `color: var(--text-secondary)`.
- `.ds-swatch__val`: changed `color: var(--text-muted)` → `color: var(--text-secondary)`.
Both are catalog-internal chrome only; no app token values changed.

## Verification output

```
$ cd frontend && npm run ds:build
catalog OK — 21 cards validated

$ cd frontend && node --test design-system/scripts/*.test.mjs
✔ parseTokens extracts light tokens (0.991208ms)
✔ parseTokens extracts dark overrides only from the data-theme block (0.102625ms)
✔ accepts a valid first-line marker (0.79925ms)
✔ rejects a marker not on the first line (0.12525ms)
✔ rejects a missing marker (0.066209ms)
ℹ tests 5, pass 5, fail 0

$ cd frontend && npm run ds:drift
no drift — all cards are current with their sources
```

## Scope confirmation

`git diff --name-only HEAD` shows only:
- `frontend/design-system/README.md`
- `frontend/design-system/catalog/components/segmented-control.html`
- `frontend/design-system/catalog/shared/preview.css`
- `frontend/design-system/scripts/build-catalog.mjs`
- `frontend/design-system/scripts/generate-foundations.mjs`

No changes to `frontend/src/styles/tokens.css` or any `frontend/src/lib/**` file.
675 changes: 675 additions & 0 deletions docs/superpowers/plans/2026-06-23-claude-karma-design-system.md

Large diffs are not rendered by default.

294 changes: 294 additions & 0 deletions docs/superpowers/specs/2026-06-23-claude-karma-design-system-design.md

Large diffs are not rendered by default.

Binary file added docs/system-overview-a4.pdf
Binary file not shown.
Binary file added docs/system-overview-letter.pdf
Binary file not shown.
Loading
Loading