fix(configurator): dedupe cross-panel controls; full Google Fonts catalogue with mono target - #633
Conversation
…alogue with mono target Redundancy pass across every control panel: - Typography: the Advanced power-knob group duplicated the dedicated "Text/ Display scale multiplier" sliders added under the fluid generators — remove the typography knob domain and the Advanced block; the dedicated sliders inherit the knobs' wider 0.5–2 range. - Focus ring now has one home (Borders): the width knob is removed from the Colors panel and the style picker moves from Misc into Borders' Focus ring section, so width/offset/color/style + preview live together. - Components: drop the reduced duplicate of the global --sf-object-fit picker (Misc owns the full one). Fonts DX: - The Google Font loader gains a Mono target (--sf-font-mono, monospace fallback) alongside Body and Heading. - Replace the 27-font curated dropdown + free-text pair with a single autocomplete input backed by the full Google Fonts catalogue (google-fonts.generated.json — 1942 families + categories, generated from fonts.google.com/metadata/fonts, sorted by popularity). Verified in-browser: exactly two multiplier rows in typography, 1942 datalist options, Mono target applies to --sf-font-mono, Ring style renders in Borders, the Colors knob and Misc section are gone; svelte-check clean, 186 tests pass (three fewer cases — they iterated the removed knobs). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013BRVgKfEYocPCHz9KU96FN
|
Warning Review limit reached
Next review available in: 39 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the 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 configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe configurator updates focus-ring and contrast controls, expands Google Font selection to the full catalogue with mono support, changes typography scale controls, and removes obsolete object-fit, focus-ring, and typography power-knob controls. ChangesConfigurator control consolidation
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
Greptile SummaryThis PR is a cross-panel deduplication and font-loader DX pass on the configurator. It removes duplicate occurrences of the two scale-multiplier sliders (which previously appeared both in the fluid generators and in a separate "Advanced" power-knob group), consolidates focus-ring controls (width, offset, color, and style) into a single Borders section, removes the reduced
Confidence Score: 4/5Safe to merge — all deduplication targets are fully cleaned up, no dead references remain, and the font loader correctly handles the new mono target. The control-panel cleanup is thorough: no stale references to removed knobs or state variables were found across any of the affected panels. The mono font target correctly writes to --sf-font-mono with a monospace fallback. The one nit is that the focus ring preview label in BordersPanel is now static ('Focus preview') where the old MiscPanel version showed the live style name — the visual ring still reflects the CSS variable correctly, so this is cosmetic only. TypographyPanel.svelte — the new datalist-based font loader and the slider step/range change are the most behaviour-affecting parts of the diff and warrant a quick sanity check against the running configurator. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[User types in autocomplete input] --> B{Selects font from datalist?}
B -- Yes --> C[oninput fires / googleFontChoice = g.f]
B -- No, typed directly --> C
C --> D[Clicks target button: body / heading / mono]
D --> E[customFontTarget updated]
E --> F[Clicks 'Load & apply']
F --> G[applyCustomFont fontName, target]
G --> H[injectGoogleFont: appends link to document.head]
H --> I{Target?}
I -- body --> J["onSet('--sf-font-body', 'FontName, sans-serif')"]
I -- heading --> K["onSet('--sf-font-heading', 'FontName, sans-serif')"]
I -- mono --> L["onSet('--sf-font-mono', 'FontName, monospace')"]
%%{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[User types in autocomplete input] --> B{Selects font from datalist?}
B -- Yes --> C[oninput fires / googleFontChoice = g.f]
B -- No, typed directly --> C
C --> D[Clicks target button: body / heading / mono]
D --> E[customFontTarget updated]
E --> F[Clicks 'Load & apply']
F --> G[applyCustomFont fontName, target]
G --> H[injectGoogleFont: appends link to document.head]
H --> I{Target?}
I -- body --> J["onSet('--sf-font-body', 'FontName, sans-serif')"]
I -- heading --> K["onSet('--sf-font-heading', 'FontName, sans-serif')"]
I -- mono --> L["onSet('--sf-font-mono', 'FontName, monospace')"]
|
Restores the behaviour the old Misc preview had before the focus-ring
consolidation: the preview text reads "Focus ring · {style}" so the active
style is confirmed in text as well as visually (Greptile review note).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013BRVgKfEYocPCHz9KU96FN
Summary
Follow-up to #632 — a redundancy pass across every control panel plus fonts-loader DX, addressing user-reported issues: the scale multipliers appeared twice (under the fluid generators AND in the typography Advanced group), the Google Font loader had no Mono target, and the font dropdown covered only 27 curated families.
--sf-text-scale,--sf-text-display-scale) that already have dedicated sliders under the fluid generators. The typography knob domain and the Advanced block are removed; the dedicated sliders inherit the knobs' wider 0.5–2 range.--sf-focus-ring-widthknob is removed from the Colors panel and the style picker moves from Misc into Borders' Focus ring section — width, offset, color, style and the live preview now live together.--sf-object-fitpicker is removed; Misc owns the full one. A programmatic scan of tokens edited in 2+ panels confirms the only remaining cross-panel editors are intentional (WCAG auto-fix touching color sources; the shared fluid viewport range labelled "(shared)").--sf-font-mono, monospace fallback), and the curated 27-font dropdown + free-text pair is replaced by a single autocomplete input backed by the full Google Fonts catalogue —google-fonts.generated.json, 1942 families + categories generated fromfonts.google.com/metadata/fonts, sorted by popularity.Type
Checklist
feat:,fix:,docs:, …) — enforced by commitlintnpm run lint:csspasses (stylelint) — no CSS source touched (configurator-only)npm run buildrebuildsdist/(bundles are git-ignored; CI rebuilds and stamps headers)npm testpasses — configurator suite 186/186 (three fewer cases than before: they iterated the removed power knobs),svelte-check0 errors,check:curationOKnpm run check:version) — n/a, no version files touchedcore/*.css,optional/*.css, ortoken-registry.jsonchanged (npm run check:llm-guide) — n/a, framework untouchedgoogle-fonts.generated.jsonis machine-generated from the Google Fonts metadata endpointCHANGELOG.mdupdated under## [Unreleased](for user-facing changes) — configurator-internal UI changesNotes
Browser-verified with Playwright against the built app: exactly two multiplier rows in typography (one per generator, no Advanced group), 1942 options in the font datalist, the Mono target writes
--sf-font-mono, Ring style renders inside Borders' Focus ring section, the Colors focus knob and Misc focus-ring-style section are gone, zero runtime errors.🤖 Generated with Claude Code
https://claude.ai/code/session_013BRVgKfEYocPCHz9KU96FN
Generated by Claude Code
Summary by CodeRabbit
New Features
Improvements