Skip to content

feat(components,configurator): button label-size scale multiplier + per-size knobs - #590

Merged
jackgranatowski merged 2 commits into
mainfrom
claude/button-size-visibility-issue-40xlwy
Jul 10, 2026
Merged

feat(components,configurator): button label-size scale multiplier + per-size knobs#590
jackgranatowski merged 2 commits into
mainfrom
claude/button-size-visibility-issue-40xlwy

Conversation

@jackgranatowski

@jackgranatowski jackgranatowski commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Why

The button label-size story was incoherent: the only exposed control was the global --sf-btn-font-size, which flattens every size to one value (destroying the .sf-btn--xs…xl ladder) — a foot-gun the UI had to warn about, while the real per-size source (the scale) wasn't editable at all. This reworks it into two coherent, non-destructive controls (plus optional per-rung parity with headings), and demotes the flatten-all override.

Framework

  • --sf-btn-font-scale (new PUBLIC knob) — a uniform label-size multiplier. font-size now reads calc(<hard-override | per-size tier> * var(--sf-btn-font-scale, 1)), so it scales every button proportionally while keeping the xs…xl ladder intact. This is the everyday "bigger/smaller button text" knob.
  • --sf-btn-{xs,s,m,l,xl}-font-size (5 new PUBLIC knobs) — per-rung label size, the button counterpart of the per-heading --sf-h{1..6}-size knobs. Each is initial → falls through to its --sf-text-{size} default; set one to retune a single rung without touching the others.
  • The flatten-all --sf-btn-font-size override still works unchanged (composes with the multiplier), just demoted in the UI.

Verified in Chromium (built dist)

scenario xs m xl
default 11.11 19.41 33.98 ladder
--sf-btn-font-scale:1.5 16.66 29.11 50.96 ×1.5, ladder preserved
--sf-btn-xs-font-size:3rem 48.00 19.41 33.98 only xs
--sf-btn-font-size:1rem 16 16 16 flatten (unchanged legacy)

Configurator

  • ComponentsPanel: primary "Label size" control is now the scale multiplier; adds a per-size editor (rung selector × text scale); demotes the flatten-all knobs (font-size override, padding-block/inline, min-height) behind an Advanced disclosure.
  • AllTokensTab: adds tier group dividers (Public → Advanced → Internal) so advanced knobs are visually separated from everyday ones in every domain.

Artifacts & gates

Regenerated token registry / docs / audit / demo artifacts; updated the token-api snapshot, empty-token coverage list, and CHANGELOG.

All green: 9 CSS gates (registry, llm-guide, macros, dead-knobs, mirrors, bundle-defs, annotations, version, audit), 109 node unit tests, 164 vitest + 25 component tests (configurator), svelte-check 0 errors, vite build OK, check-artifacts/demos OK.

Notes

  • No version bump (added under CHANGELOG ## Unreleased; the release process handles the bump).
  • SLASHED-Plugins is intentionally untouched — its admin-app/src is vendored from this repo and will inherit these changes via update-framework/sync on the next framework release.

🤖 Generated with Claude Code


Generated by Claude Code

Summary by CodeRabbit

  • New Features

    • Added global and per-size controls for scaling button label text.
    • Updated button styling to support proportional font-size adjustments across all button sizes.
    • Improved the configurator’s button label-size controls with clearer advanced options.
    • Added tier dividers to the All Tokens view for easier navigation.
  • Documentation

    • Updated token references, API metadata, demos, and changelog for the expanded button typography options.

…er-size knobs

Framework:
- Add --sf-btn-font-scale (multiply every button's label by one factor,
  keeping the xs…xl ladder intact) and per-size label knobs
  --sf-btn-{xs,s,m,l,xl}-font-size (retune a single rung; parity with the
  per-heading size knobs).
- font-size now reads calc(<hard-override | per-size tier> * font-scale).
  The flatten-all --sf-btn-font-size override still works but is demoted
  in the configurator UI.

Configurator:
- ComponentsPanel: primary label-size control is now the scale multiplier;
  add a per-size editor; demote the flatten-all knobs (font-size override,
  padding-block/inline, min-height) behind an Advanced disclosure.
- AllTokensTab: add tier group dividers (Public → Advanced → Internal) so
  advanced knobs are visually separated from everyday ones in each domain.

Regenerate token registry / docs / audit / demo artifacts; update the
token-api snapshot, empty-token coverage list, and CHANGELOG.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GnwqYHgHNAWPbsUJWUeY1w
@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@jackgranatowski, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 9 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d2f24d86-7290-4121-bb60-2687c7e114d8

📥 Commits

Reviewing files that changed from the base of the PR and between e40e3d1 and b1c9f60.

⛔ Files ignored due to path filters (1)
  • dist/css-custom-data.json is excluded by !**/dist/**
📒 Files selected for processing (10)
  • configurator/src/components/panels/AllTokensTab.svelte
  • configurator/src/data/api-index.generated.json
  • demos/full-api-demo-with-overrides.html
  • demos/full-api-demo.html
  • demos/generate.mjs
  • demos/ultimate-override.css
  • docs/api-index.json
  • docs/api-index.md
  • docs/token-annotations.json
  • tests/tokens.spec.js
📝 Walkthrough

Walkthrough

Adds global and per-size .sf-btn label typography tokens, updates the configurator UI and tier grouping, regenerates token metadata, and refreshes demos, documentation, audit output, snapshots, and coverage expectations.

Changes

Button label sizing

Layer / File(s) Summary
Typography token runtime
optional/components.css, optional/tokens.components.css, docs/llm-guide.md
Adds --sf-btn-font-scale and per-size font overrides, applies scaling in .sf-btn, and documents fallback behavior.
Configurator controls
configurator/src/components/panels/ComponentsPanel.svelte, configurator/src/components/panels/AllTokensTab.svelte
Adds multiplier and per-rung controls, moves flatten-all options into Advanced, and renders tier dividers.
Generated token metadata
configurator/src/data/*, docs/api-index.*, docs/token-index.*, docs/registry.json, token-registry.json
Registers six new public knobs and updates generated counts and indexes.
Demos and validation
demos/*, reports/full-api-audit/results/tokens-report.json, tests/*, docs/test-coverage-6-token-reference.html
Updates curated overrides, displayed token totals, audit results, snapshots, and empty-token coverage expectations.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Configurator
  participant ButtonTokens
  participant ButtonCSS
  Configurator->>ButtonTokens: Set global scale or per-size override
  ButtonTokens->>ButtonCSS: Provide resolved label size
  ButtonCSS->>ButtonCSS: Apply scaled font-size to .sf-btn
Loading

Possibly related PRs

Suggested labels: codex

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Title clearly matches the main change: new button label-size scale multiplier and per-size knobs in components/configurator.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/button-size-visibility-issue-40xlwy

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot added the codex label Jul 10, 2026
@greptile-apps

greptile-apps Bot commented Jul 10, 2026

Copy link
Copy Markdown

Greptile Summary

This PR introduces --sf-btn-font-scale (a unitless multiplier that scales every button size proportionally) and five per-rung --sf-btn-{xs,s,m,l,xl}-font-size knobs, replacing the flat --sf-text-* defaults with a two-level cascade that keeps the xs→xl size ladder intact. The configurator is updated to expose the new everyday controls on the primary surface while demoting the flatten-all padding/font-size overrides behind an "Advanced" disclosure, and the All-Tokens tab gains tier group dividers.

  • CSS change: font-size now resolves as calc(var(--sf-btn-font-size, var(--sf-btn-font-size--size)) * var(--sf-btn-font-scale, 1)), where --sf-btn-font-size--size itself first checks the new per-rung knob before falling through to the --sf-text-* scale default.
  • Configurator: adds a SliderRow for the scale multiplier and a five-tab rung selector for per-size overrides; flatten-all padding/height/font-size knobs moved into a collapsible "Advanced" section; All-Tokens tab adds "Advanced" and "Internal" tier dividers.
  • Artifacts: token registry, LLM guide, API index, snapshot, and demo files are all regenerated and consistent with the new token set.

Confidence Score: 4/5

The CSS and configurator changes are well-structured and the new token cascade is correctly wired end-to-end; the two findings are confined to the All-Tokens tab divider edge case and a misleading demo comment.

The core CSS logic (calc with the scale multiplier, per-size knob fallback chain) is correctly implemented and verified against the scenarios table in the PR description. All generated artifacts (registry, LLM guide, snapshot, test spec) are consistent. The two issues found are both in peripheral areas: the tier divider can render orphaned at the top of the list when filtering leaves no PUBLIC tokens visible, and the demo overrides file silently shadows the per-size font knobs with the flatten-all token it also sets.

configurator/src/components/panels/AllTokensTab.svelte (tier divider edge case) and demos/generate.mjs (per-size font knobs shadowed in ultimate-override demo)

Important Files Changed

Filename Overview
optional/components.css Replaces hard --sf-text-* defaults with per-size knob fallbacks and wraps the font-size property in a calc(… * var(--sf-btn-font-scale, 1)) for all five size modifiers; CSS logic is correct and the scale default of 1 is a no-op.
optional/tokens.components.css Adds --sf-btn-font-scale: 1 and the five per-size --sf-btn-{xs,s,m,l,xl}-font-size: initial knobs with thorough comments.
configurator/src/components/panels/ComponentsPanel.svelte Adds scale-multiplier SliderRow, per-rung tab selector, and moves flatten-all knobs behind an Advanced disclosure; getVal, currentStep, and setStep usage is correct for the new tokens; resetButtonTokens covers all new tokens via the --sf-btn- prefix.
configurator/src/components/panels/AllTokensTab.svelte Adds tier group dividers (Advanced/Internal) using a first-in-group pattern; the domainTokens sort guarantees tier order is preserved through filtering, but the i === 0 guard causes the divider to render orphaned at the top when no PUBLIC tokens are visible in the filtered view.
demos/generate.mjs Adds all 6 new tokens to the CURATED override set, but per-size font-size knobs are shadowed by the existing --sf-btn-font-size flatten-all in the same object, so the demo cannot independently exercise them.
token-registry.json Appends 6 new token IDs (771-776) with correct incremental nextId bump to 777; append-only contract maintained.
tests/tokens.spec.js Adds the 5 per-size knobs to EXPECTED_EMPTY (declared initial), matching the CSS source; --sf-btn-font-scale is correctly excluded since it has a concrete default of 1.
docs/llm-guide.md Correctly documents all 6 new tokens with their effective defaults and usage guidance; follows the pre-existing pattern of showing the effective fallback value rather than the declared initial.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["font-size: calc(A * B)"] --> B["A = var(--sf-btn-font-size, --sf-btn-font-size--size)"]
    A --> C["B = var(--sf-btn-font-scale, 1)"]
    B --> D{"--sf-btn-font-size set?"}
    D -- Yes --> E["Use flatten-all value\n(overrides every size)"]
    D -- No --> F["--sf-btn-font-size--size"]
    F --> G{"Per-size knob set?\n--sf-btn-{size}-font-size"}
    G -- Yes --> H["Use per-rung value\n(single rung only)"]
    G -- No --> I["--sf-text-{size}\n(scale default)"]
    C --> J{"--sf-btn-font-scale set?"}
    J -- Yes --> K["Multiply by scale factor\n(ladder preserved)"]
    J -- No --> L["x1 (no-op)"]
Loading
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
    A["font-size: calc(A * B)"] --> B["A = var(--sf-btn-font-size, --sf-btn-font-size--size)"]
    A --> C["B = var(--sf-btn-font-scale, 1)"]
    B --> D{"--sf-btn-font-size set?"}
    D -- Yes --> E["Use flatten-all value\n(overrides every size)"]
    D -- No --> F["--sf-btn-font-size--size"]
    F --> G{"Per-size knob set?\n--sf-btn-{size}-font-size"}
    G -- Yes --> H["Use per-rung value\n(single rung only)"]
    G -- No --> I["--sf-text-{size}\n(scale default)"]
    C --> J{"--sf-btn-font-scale set?"}
    J -- Yes --> K["Multiply by scale factor\n(ladder preserved)"]
    J -- No --> L["x1 (no-op)"]
Loading

Reviews (1): Last reviewed commit: "feat(components,configurator): button la..." | Re-trigger Greptile

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
configurator/src/data/api-index.generated.json (1)

1285-1304: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Empty note field on the 6 new button typography tokens.

Every sibling BUTTON TOKENS row (--sf-btn-font-size, --sf-btn-font-weight, --sf-btn-min-height, --sf-btn-radius, etc.) has a populated per-token note describing its specific role, but --sf-btn-font-scale, --sf-btn-l-font-size, --sf-btn-m-font-size, --sf-btn-s-font-size, --sf-btn-xl-font-size, and --sf-btn-xs-font-size all ship with "note": "". Since these tokens are the new public surface this PR is meant to introduce, the missing notes reduce clarity in the configurator UI and any docs/LLM reference generated from this field.

✏️ Proposed fix
     {
       "name": "--sf-btn-font-scale",
       ...
-      "note": "",
+      "note": "Proportional multiplier applied to all .sf-btn label font sizes while preserving the xs–xl size ladder.",
       ...
     },

(repeat with a size-specific note for each of the five per-size font-size tokens)

Also applies to: 1365-1404, 1485-1544

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@configurator/src/data/api-index.generated.json` around lines 1285 - 1304,
Populate the empty note fields for the six new BUTTON TOKENS entries:
--sf-btn-font-scale, --sf-btn-l-font-size, --sf-btn-m-font-size,
--sf-btn-s-font-size, --sf-btn-xl-font-size, and --sf-btn-xs-font-size. Add
clear, token-specific notes describing each token’s typography role, using
size-specific wording for the five per-size font-size tokens and matching the
style of existing button token notes.
tests/tokens.spec.js (1)

32-36: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Add focused coverage for per-size button overrides.

These tokens are excluded from the generic coverage check because their default is intentionally initial. Add a browser assertion that setting each token on the root changes the matching button size’s computed font size; otherwise regressions in the fallback or consumption chain can pass unnoticed.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/tokens.spec.js` around lines 32 - 36, Add focused browser coverage in
the token tests for the per-size button font tokens listed in the diff. Set each
token on the root element, then assert the corresponding button size’s computed
font size changes accordingly, covering the fallback and token-consumption chain
for every size.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@demos/full-api-demo-with-overrides.html`:
- Around line 1332-1333: Fix the token visualization generator for
--sf-btn-font-scale so unitless numeric values are not compared with 3px in the
generated inline-size max() expression. Omit the bar for this token or map
numeric tokens to a CSS-compatible visualization, then regenerate both demo
files and verify the output contains no incompatible CSS types.

---

Nitpick comments:
In `@configurator/src/data/api-index.generated.json`:
- Around line 1285-1304: Populate the empty note fields for the six new BUTTON
TOKENS entries: --sf-btn-font-scale, --sf-btn-l-font-size, --sf-btn-m-font-size,
--sf-btn-s-font-size, --sf-btn-xl-font-size, and --sf-btn-xs-font-size. Add
clear, token-specific notes describing each token’s typography role, using
size-specific wording for the five per-size font-size tokens and matching the
style of existing button token notes.

In `@tests/tokens.spec.js`:
- Around line 32-36: Add focused browser coverage in the token tests for the
per-size button font tokens listed in the diff. Set each token on the root
element, then assert the corresponding button size’s computed font size changes
accordingly, covering the fallback and token-consumption chain for every size.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: e11f59da-ffc7-4bd1-8284-160ebe0194a3

📥 Commits

Reviewing files that changed from the base of the PR and between bf68d37 and e40e3d1.

⛔ Files ignored due to path filters (1)
  • dist/css-custom-data.json is excluded by !**/dist/**
📒 Files selected for processing (23)
  • CHANGELOG.md
  • configurator/src/components/panels/AllTokensTab.svelte
  • configurator/src/components/panels/ComponentsPanel.svelte
  • configurator/src/data/api-index.generated.json
  • configurator/src/data/token-registry.generated.json
  • demos/full-api-demo-with-overrides.html
  • demos/full-api-demo.html
  • demos/generate.mjs
  • demos/ultimate-override.css
  • docs/api-index.json
  • docs/api-index.md
  • docs/llm-guide.md
  • docs/registry.json
  • docs/test-coverage-6-token-reference.html
  • docs/token-index.json
  • docs/token-index.md
  • docs/tokens.md
  • optional/components.css
  • optional/tokens.components.css
  • reports/full-api-audit/results/tokens-report.json
  • tests/token-api.snapshot.json
  • tests/tokens.spec.js
  • token-registry.json

Comment thread demos/full-api-demo-with-overrides.html Outdated
Comment on lines +120 to +131
{#if t.tier === "PUBLIC-ADVANCED" && (i === 0 || list[i - 1].tier !== "PUBLIC-ADVANCED")}
<div class="flex items-center gap-2 px-1.5 pt-3 pb-1">
<span class="text-[8px] font-bold uppercase tracking-widest text-amber-600/80 dark:text-amber-400/80">Advanced</span>
<div class="h-px flex-1 bg-amber-600/25"></div>
</div>
{/if}
{#if t.tier === "INTERNAL" && (i === 0 || list[i - 1].tier !== "INTERNAL")}
<div class="flex items-center gap-2 px-1.5 pt-3 pb-1">
<span class="text-[8px] font-bold uppercase tracking-widest text-rose-700/80 dark:text-rose-400/80">Internal</span>
<div class="h-px flex-1 bg-rose-800/25"></div>
</div>
{/if}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Tier divider appears at top when no PUBLIC tokens are visible

When a search query or the "only modified" filter produces results where the first item is a PUBLIC-ADVANCED or INTERNAL token (no PUBLIC entries in view), the condition i === 0 fires and the divider is rendered at position 0 — with nothing above it to separate from. The label "Advanced" or "Internal" floats at the top of an otherwise empty public section, losing its visual meaning. Adding i > 0 to the guard (i.e. i > 0 && list[i - 1].tier !== "PUBLIC-ADVANCED") prevents the orphaned header.

Comment thread demos/generate.mjs
Comment on lines 67 to +74
'--sf-btn-padding-inline': '2rem',
'--sf-btn-min-height': '4rem',
// Uniform label-size multiplier (unitless) + per-size label knobs (also
// `initial`) — explicit lengths exercise each rung's per-size override.
'--sf-btn-font-scale': '1.6',
'--sf-btn-xs-font-size': '0.9rem',
'--sf-btn-s-font-size': '1.1rem',
'--sf-btn-m-font-size': '1.4rem',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Per-size font knobs shadowed by flatten-all override in demo

The CURATED object also contains '--sf-btn-font-size': '1.5rem' (the flatten-all), which shadows the five --sf-btn-{xs,s,m,l,xl}-font-size values added here. The inline comment "explicit lengths exercise each rung's per-size override" is therefore not accurate — the per-size overrides are inert whenever the flatten-all is active. The ultimate-override demo cannot independently verify each per-size knob is wired correctly when the two are set simultaneously.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

- AllTokensTab: guard tier-group divider with `i > 0` so the "Advanced"/
  "Internal" header isn't rendered orphaned at the top of a filtered list
  with no Public tokens above it.
- token-annotations.json: add notes for the 6 new button typography tokens
  (--sf-btn-font-scale + per-size --sf-btn-{xs,s,m,l,xl}-font-size) and
  clarify --sf-btn-font-size as the flatten-all override; these flow into
  the configurator note field and the api-index description.
- demos/generate.mjs: skip the flatten-all --sf-btn-font-size in the
  ultimate-override demo so it no longer shadows the per-size knobs (which
  now visibly exercise each rung); omit the visual bar for unitless numeric
  tokens (--sf-btn-font-scale) so the generated inline-size no longer does
  an invalid max(<number>, 3px).
- tests/tokens.spec.js: add a browser test proving each per-size knob
  retunes only its rung and --sf-btn-font-scale multiplies the whole ladder.

Regenerate demo/docs/configurator artifacts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GnwqYHgHNAWPbsUJWUeY1w
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants