Skip to content

docs(promo): refresh the site to 0.8.1 - #66

Merged
handamade merged 12 commits into
mainfrom
docs/promo-refresh-0-8-0
Aug 1, 2026
Merged

docs(promo): refresh the site to 0.8.1#66
handamade merged 12 commits into
mainfrom
docs/promo-refresh-0-8-0

Conversation

@handamade

Copy link
Copy Markdown
Owner

The site's last update entry was 0.7.0, its component count predated Menu, and its Theming section still described a customer brand as colour alone — a claim D56 made understated. This brings apps/promo level with the shipped packages.

The headline: shape is themeable, and now the page proves it

A live --psi-control-radius dial sits above the three theme preview cards. Drag it and every control in all three re-rounds at once — measured 4px at rung 4, 12px at rung 12, in light, dark and acme simultaneously. Tag and Switch deliberately hold 9999px: pill-ness is component identity, not theme expression (D56).

The dial steps the published rung scale (4 | 6 | 8 | 12), never free pixels — an off-scale dial would depict a range no real theme can set.

One implementation note worth keeping: components.css emits --psi-control-radius under :where(:root, [data-psi-theme]), so every preview card re-declares the default on itself. The inline value must land on the same node as data-psi-theme, not a wrapper, or the cards silently override it.

Also

  • Counts now track dist/manifest.json (15 → 18). 22 icons and 4 themes were already correct and are untouched.
  • A Menu card — Menu's first appearance on the site, exercising all three onClose reasons. It runs against the D58-fixed component.
  • Two curated update entries (0.8.0, and the MIT declaration), four roadmap rows, and the theme console named publicly in "Next".

Corrections caught in final review

  • The 0.7.2 entry was dated 07-21; it shipped 07-31. That error came from the spec and rendered as a real <time> — the page was telling readers MIT landed ten days early.
  • The dial announced "2 of 3" to screen readers (it binds a rung index). Now carries aria-valuetext="radius-8", with the visual <output> hidden from the a11y tree to avoid double announcement.
  • The "Control ramp" roadmap row over-claimed: IconButton binds height only, and gap is Button-only.

No package, token or component changes — apps/promo is private, so no changeset.

Spec: docs/superpowers/specs/2026-07-31-promo-refresh-design.md
Plan: docs/superpowers/plans/2026-07-31-promo-refresh.md

🤖 Generated with Claude Code

@vercel

vercel Bot commented Aug 1, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
psi Ready Ready Preview Aug 1, 2026 12:34am

@cursor

cursor Bot commented Aug 1, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

handamade and others added 12 commits August 1, 2026 02:34
The site's last update entry is 0.7.0, its component count predates
Menu, and its Theming section still describes a customer brand as
colour alone — a claim D56 has since made understated.

Specifies: manifest-backed counts (15 -> 18), a live control-radius
dial on the three theme cards, a Menu card in the playground, two
curated update entries, and the theme console named on the public
roadmap.

Not a decision — apps/promo is a consumer app catching up to shipped
packages. No D number, no package change, no changeset.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Six tasks over apps/promo only. Records two findings that shape the
work: apps/promo has no test harness (verification is typecheck + lint +
named browser checks, per the spec), and Menu's trigger counts as an
outside click, so a naive toggle reopens the menu its own light dismiss
just closed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A browser investigation refuted the hypothesis that clicking an open
Menu's trigger re-opens it: light dismiss lands on pointerdown, before
click, and the toggle that drives onClose is queued ~50ms after it. The
plain toggle is correct, so the timestamp guard is gone.

Records the four real Menu faults the same investigation found, marked
explicitly as separate-branch work.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Task 0 ended in `git add .claude/launch.json`, which is gitignored
("local Claude Code session config") — the step would have failed. The
launch entry is machine-local by design and must not be committed.

0.8.1 released after this plan was written, so the Playground's version
chip target moves 0.8.0 -> 0.8.1. The update-feed entries stay as they
are: 0.8.0 was a real release and the entry is a historical announcement.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
preview_start spawns its server on Node 20, where pnpm 11.9 dies with
ERR_UNKNOWN_BUILTIN_MODULE. Vite itself runs fine there (6.4.3 on
node-v20.20.2), so invoking its binary directly sidesteps pnpm and needs
no Node pinning.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Menu shipped as three separately-propped manifest entries. Icon count
(22) and theme count (4) were already correct and are unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
D56 made control shape themeable; the Theming section still argued a
customer brand was colour alone. The dial steps the published rung scale
(4|6|8|12) and sets --psi-control-radius inline on each data-psi-theme
node -- components.css declares it under :where(:root, [data-psi-theme]),
so a value on a wrapper would be overridden by the cards themselves.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Menu's first real controlled consumer: every story ships open:true, so
nothing in the repo exercised a real toggle. Handles all three onClose
reasons.

Also gives .pg-menu a full-width grid-column span in promo.css — without
it the card was a bare 1/12 grid track (no rule existed for the new
class), squashing the trigger and note into an unreadable column.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Curated, per the file's own rule: 0.7.1 stays out (an artifact fix with
no consumer-visible effect).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Naming the console publicly is deliberate: the control-radius dial in the
Theming section is its visible groundwork.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Final-review fixes: the 0.7.2 feed entry now dates to its actual
release (2026-07-31, not 07-21); the radius dial exposes
aria-valuetext so screen readers announce the rung's meaning, not
its index; the paired <output> is hidden from the accessibility
tree to stop double-announcement; and the roadmap's "Control ramp"
row now states which components bind which properties, verified
against IconButton/Input/Select CSS.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The spec dated 0.7.2 as 2026-07-21; it shipped 2026-07-31 (release commit
03524e6 and all three 0.7.2 tags). That error had propagated onto the
public update feed, where it renders as a real <time> element — telling
readers MIT was declared ten days early. Fixed in both places.

The plan's "Related Menu bugs" appendix listed four faults as open work
for a separate branch. All four shipped as D58 in 0.8.1, before this
branch's base — marked closed so the next reader does not act on it.

Also: chip target 0.8.0 -> 0.8.1, promo.css line reference 510 -> 529, and
Checkbox's min() floor struck from the dial's acceptance criteria (no
ThemePreview card contains a Checkbox, so it is unobservable there).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@handamade
handamade force-pushed the docs/promo-refresh-0-8-0 branch from b16e3bb to b7fb9c1 Compare August 1, 2026 00:34
@handamade
handamade merged commit e9f2238 into main Aug 1, 2026
3 checks passed
@handamade
handamade deleted the docs/promo-refresh-0-8-0 branch August 1, 2026 00:40
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