Skip to content

fix(layout): rebuild .sf-equal as CSS multi-column, plus 4 quick-win fixes - #509

Merged
jackgranatowski merged 3 commits into
mainfrom
claude/issues-verification-priority-gokbg3
Jul 3, 2026
Merged

fix(layout): rebuild .sf-equal as CSS multi-column, plus 4 quick-win fixes#509
jackgranatowski merged 3 commits into
mainfrom
claude/issues-verification-priority-gokbg3

Conversation

@jackgranatowski

@jackgranatowski jackgranatowski commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Also updates the frozen full-api-audit snapshots and token-annotations.json
descriptions that referenced the old .sf-equal grid behavior, and adds a
CHANGELOG entry for the breaking .sf-equal change.

Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01TEb3f55AdgmjtbG9RijeoZ

Summary by CodeRabbit

  • New Features

    • .sf-equal now supports flowing multi-column layouts with optional column rules.
    • Added drop-shadow utility classes for small, medium, and large shadows.
    • Print styles now use fixed heading sizes for more consistent printed output.
    • VS Code users can now get token autocomplete from bundled custom data.
  • Bug Fixes

    • Updated layout behavior so equal columns avoid breaking content across columns.
    • Refreshed demos, docs, and generated references to match the new token and class set.
  • Chores

    • Updated bundle headers and release notes metadata.

…fixes

- .sf-equal was a byte-for-byte duplicate of .sf-grid--fit (auto-fit grid).
  Rebuilt on real CSS multi-column (column-width/-count/-gap/-rule) so
  content actually flows between columns like a newspaper, instead of
  sitting in fixed grid cells. --sf-equal-min-col-2/-3/-4/-6 are replaced
  by a direct column-count per --2/--3/--4/--6 modifier; new
  --sf-equal-rule-width/-style/-color add an optional column-rule
  (off by default). (#502)
- Print headings now get static pt sizes inside @media print instead of
  inheriting the viewport-relative fluid --sf-text-* scale, which has no
  reliable meaning on a print page box. (#498)
- Add .sf-drop-shadow-s/-m/-l utility classes for the existing
  --sf-drop-shadow-* tokens, which had no consuming class. (#491)
- Stamp dist bundle headers with a minifier-safe /*! ... */ MIT license
  banner instead of a plain comment that minifiers strip. (#482)
- Generate a VS Code CSS Custom Data file (badges/css-custom-data.json)
  from the published API index so --sf-* tokens autocomplete with
  descriptions in-editor. (#362)

Also updates the frozen full-api-audit snapshots and token-annotations.json
descriptions that referenced the old .sf-equal grid behavior, and adds a
CHANGELOG entry for the breaking .sf-equal change.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TEb3f55AdgmjtbG9RijeoZ
@coderabbitai

coderabbitai Bot commented Jul 3, 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: 22 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: 251efd77-dade-4449-9f39-f8c4a3f0f50b

📥 Commits

Reviewing files that changed from the base of the PR and between 1ec534f and db6cb8d.

📒 Files selected for processing (7)
  • configurator/src/components/panels/LayoutPanel.svelte
  • configurator/src/data/classes.generated.json
  • configurator/src/data/domain-patterns.json
  • core/macros.css
  • docs/api-index.json
  • docs/api-index.md
  • scripts/artifacts.json
📝 Walkthrough

Walkthrough

Replaces .sf-equal's grid-based implementation with CSS multi-column flowing layout, adding column-rule tokens (--sf-equal-rule-{width,style,color}) and removing --sf-equal-min-col-* presets. Adds .sf-drop-shadow-{s,m,l} macro classes, static print heading sizes, VS Code CSS custom data generation tooling, minifier-safe bundle license banners, and corresponding configurator, docs, registry, and test updates.

Changes

Equal-columns rewrite, drop-shadow macros, print sizes, and tooling

Layer / File(s) Summary
Core CSS: multi-column rewrite, drop-shadow macros, print sizes
core/layout.css, core/tokens.layout.css, core/macros.css, core/print.css
.sf-equal switches to column-width/column-gap/column-rule with break-inside: avoid; --2/--3/--4/--6 set column-count; new --sf-equal-rule-* tokens added, --sf-equal-min-col-* removed; adds .sf-drop-shadow-{s,m,l} filter utilities; adds fixed pt heading sizes under @media print.
Tests for multi-column, drop-shadow, print
tests/layout.spec.js, tests/macros.spec.js, tests/print.spec.js
Replaces grid-template assertions with columnCount/columnWidth/break-inside checks, adds drop-shadow filter assertions, adds print heading font-size test.
Configurator LayoutPanel wiring
configurator/src/components/panels/LayoutPanel.svelte
Adds equalRuleWidth derived value and replaces "Equal grid" controls with "Equal columns (flowing)" sliders for min column width and rule width.
Generated token/class registry updates
configurator/src/data/*.generated.json, docs/api-index.json, docs/token-index.json, docs/token-annotations.json, docs/registry.json, token-registry.json, tests/token-api.snapshot.json, reports/full-api-audit/results/*
Removes --sf-equal-min-col-{2,3,4,6}, adds --sf-equal-rule-{color,style,width} tokens and sf-drop-shadow-{l,m,s} class entries across generated data files, registries, and audit reports.
Docs and demo pages updated for new behavior/counts
docs/*.md, README.md, CHANGELOG.md, CLAUDE.md, demos/full-api-demo*.html, docs/test-coverage-6-token-reference.html, badges/badge-optimal.json
Updates prose, token/class counts, and demo tiles to describe flowing multi-column layout, drop-shadow macros, print sizes, editor integration, and refreshed version/size counts.
VS Code data tooling, bundle banner, demo overrides
scripts/gen-vscode-custom-data.js, package.json, scripts/bundle.js, demos/generate.mjs, demos/ultimate-override.css
Adds a script generating badges/css-custom-data.json from docs/api-index.json with a new docs:vscode-data npm script; updates bundle header to a minifier-safe MIT license banner; adds curated --sf-equal-rule-* overrides to demo generation.

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

Possibly related PRs

  • codeslash-dev/SLASHED#59: Adds/aligns the --sf-drop-shadow-{s,m,l} token definitions consumed by the new macro classes.
  • codeslash-dev/SLASHED#117: Both PRs modify the .sf-equal primitive at the source level, with this PR replacing the earlier grid-based approach.
  • codeslash-dev/SLASHED#339: Both PRs directly modify .sf-equal implementation and --sf-equal-* tokens in core/layout.css/core/tokens.layout.css in conflicting directions.

Suggested labels: codex

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly names the main change: rebuilding .sf-equal as a CSS multi-column layout, with the extra fixes noted as secondary.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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/issues-verification-priority-gokbg3

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 3, 2026
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Fix .sf-equal to use CSS multi-column flow + print/drop-shadow/vscode tooling

🐞 Bug fix ✨ Enhancement 🧪 Tests 📝 Documentation ⚙️ Configuration changes 🕐 40+ Minutes

Grey Divider

AI Description

• Rebuild .sf-equal as true CSS multi-column flow with optional column-rule tokens.
• Add print-safe heading sizes and new .sf-drop-shadow-* utilities with test coverage.
• Improve distribution/tooling: minifier-safe license banner and generated VS Code token custom
 data.
Diagram

graph TD
TOK["core/tokens.layout.css"] --> LAY["core/layout.css"] --> BND(["scripts/bundle.js"]) --> DIST["badges/ dist assets"]
MAC["core/macros.css"] --> BND
PRT["core/print.css"] --> BND
API["docs/api-index.json"] --> VSC(["scripts/gen-vscode-custom-data.js"]) --> DIST
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Introduce a new flowing-columns class (e.g. `.sf-columns`) and deprecate `.sf-equal`
  • ➕ Avoids a breaking semantic change for existing users relying on the grid-like behavior
  • ➕ Allows a smoother migration window with docs and deprecation warnings
  • ➖ Leaves the duplicate .sf-equal behavior in place longer
  • ➖ Requires maintaining/teaching two overlapping primitives until the deprecation completes
2. Support both behaviors behind explicit modifiers (e.g. `.sf-equal--flow` vs `.sf-equal--grid`)
  • ➕ Preserves backward compatibility while still enabling true column flow
  • ➕ Lets users opt into the new behavior incrementally
  • ➖ Adds API surface and ongoing maintenance cost
  • ➖ More complexity in docs/tests and potential user confusion about which variant to choose
3. Keep grid implementation but rename presets and fix documentation only
  • ➕ No behavioral breakage
  • ➕ Minimal code churn
  • ➖ Does not solve the core issue: grid cannot provide newspaper-style content flow
  • ➖ Retains the accidental duplication of .sf-grid--fit

Recommendation: Given .sf-equal was a byte-for-byte duplicate of .sf-grid--fit, repurposing it to implement the originally implied “equal columns” flowing behavior is a reasonable cleanup despite being breaking. The PR mitigates risk by updating docs/registries/audit snapshots, configurator UI, and adding Playwright tests for the new column-count/column-width behavior. If compatibility concerns arise, the best fallback is adding a temporary .sf-equal--grid compatibility modifier.

Files changed (39) +4001 / -335

Enhancement (4) +3449 / -31
css-custom-data.jsonAdd generated VS Code CSS Custom Data for '--sf-*' tokens +3420/-0

Add generated VS Code CSS Custom Data for '--sf-*' tokens

• Introduces a generated VS Code custom data file (schema v1.1) listing PUBLIC/PUBLIC-ADVANCED tokens with descriptions and syntax for editor autocomplete.

badges/css-custom-data.json

LayoutPanel.svelteAlign configurator layout panel with new '.sf-equal' semantics +13/-22

Align configurator layout panel with new '.sf-equal' semantics

• Renames the UI section from equal grid to equal flowing columns, removing sliders for the removed '--sf-equal-min-col-{2,3,4,6}' presets. Adds a slider for the new '--sf-equal-rule-width' token and updates helper text.

configurator/src/components/panels/LayoutPanel.svelte

macros.cssAdd '.sf-drop-shadow-s/-m/-l' utilities consuming existing tokens +4/-0

Add '.sf-drop-shadow-s/-m/-l' utilities consuming existing tokens

• Introduces three macro utility classes that apply 'filter: var(--sf-drop-shadow-*)', making the existing drop-shadow tokens usable without custom CSS.

core/macros.css

tokens.layout.cssUpdate equal-column token contract and add column-rule tokens +12/-9

Update equal-column token contract and add column-rule tokens

• Rewrites the '.sf-equal' token documentation to reflect CSS multi-column flow behavior. Removes the old preset min-width tokens and adds '--sf-equal-rule-width/style/color' defaults (rule off by default).

core/tokens.layout.css

Bug fix (2) +19 / -7
layout.cssRebuild '.sf-equal' using CSS multi-column flow and direct column counts +9/-7

Rebuild '.sf-equal' using CSS multi-column flow and direct column counts

• Replaces the previous grid-based implementation with 'column-width', 'column-gap', and optional 'column-rule'. Adds 'break-inside: avoid' to children and changes '--2/--3/--4/--6' modifiers to set 'column-count' directly.

core/layout.css

print.cssPin print heading sizes to static pt values +10/-0

Pin print heading sizes to static pt values

• Adds 'h1'–'h6' font-size rules under print media to avoid vw-based fluid token scaling, improving print output predictability.

core/print.css

Tests (4) +57 / -16
layout.spec.jsUpdate '.sf-equal' tests for multi-column behavior and new guarantees +31/-12

Update '.sf-equal' tests for multi-column behavior and new guarantees

• Replaces grid column-count assertions with 'column-count' checks and adds coverage for 'column-width' wiring via '--sf-equal-min-col'. Adds a test ensuring children get 'break-inside: avoid'.

tests/layout.spec.js

macros.spec.jsAdd tests for '.sf-drop-shadow-*' macro utilities +10/-0

Add tests for '.sf-drop-shadow-*' macro utilities

• Adds a small test suite verifying '.sf-drop-shadow-s/-m/-l' sets a non-'none' computed 'filter', proving the new utilities consume the drop-shadow tokens.

tests/macros.spec.js

print.spec.jsAdd print regression test for static heading sizes +13/-0

Add print regression test for static heading sizes

• Adds a print-media test asserting 'h1' and 'h6' resolve to expected px sizes derived from the new pt rules, preventing regressions back to vw-based scaling.

tests/print.spec.js

token-api.snapshot.jsonUpdate token API snapshot for removed equal presets and new rule tokens +3/-4

Update token API snapshot for removed equal presets and new rule tokens

• Refreshes the snapshot list to remove '--sf-equal-min-col-2/-3/-4/-6' and include '--sf-equal-rule-color/style/width'.

tests/token-api.snapshot.json

Documentation (19) +266 / -153
CHANGELOG.mdDocument breaking '.sf-equal' behavior and new utilities/tooling +12/-0

Document breaking '.sf-equal' behavior and new utilities/tooling

• Adds an Unreleased entry describing the breaking change where '.sf-equal' becomes a CSS multi-column flow layout. Notes new equal column-rule tokens, print heading sizing, drop-shadow utilities, VS Code custom data, and the minifier-safe license banner.

CHANGELOG.md

CLAUDE.mdUpdate dist header guidance to reflect bang-comment license banner +2/-2

Update dist header guidance to reflect bang-comment license banner

• Updates contributor docs to note that unminified dist bundles use a '/*! ... */' header so minifiers keep the MIT notice.

CLAUDE.md

README.mdAdd VS Code CSS Custom Data editor integration instructions +13/-0

Add VS Code CSS Custom Data editor integration instructions

• Documents how to wire 'badges/css-custom-data.json' into VS Code via 'css.customData' so '--sf-*' tokens autocomplete with descriptions.

README.md

full-api-demo-with-overrides.htmlRefresh demo counts and add drop-shadow tiles +17/-5

Refresh demo counts and add drop-shadow tiles

• Updates displayed version/count text to match the new token/class totals. Adds tiles demonstrating '.sf-drop-shadow-*' and updates the equal token section to include rule tokens.

demos/full-api-demo-with-overrides.html

full-api-demo.htmlRefresh demo counts and add drop-shadow tiles +17/-5

Refresh demo counts and add drop-shadow tiles

• Updates displayed version/count text to match the new token/class totals. Adds tiles demonstrating '.sf-drop-shadow-*' and updates the equal token section to include rule tokens.

demos/full-api-demo.html

generate.mjsInclude new equal rule tokens in curated demo overrides +2/-0

Include new equal rule tokens in curated demo overrides

• Adds '--sf-equal-rule-width' and '--sf-equal-rule-style' into the curated override set so demos visibly exercise the new column-rule controls.

demos/generate.mjs

ultimate-override.cssUpdate ultimate override to use new equal rule tokens +4/-6

Update ultimate override to use new equal rule tokens

• Removes overrides for the deleted '--sf-equal-min-col-{2,3,4,6}' tokens and adds overrides for '--sf-equal-rule-style' and '--sf-equal-rule-width'. Refreshes header counts to reflect updated knob totals.

demos/ultimate-override.css

api-index.jsonRegenerate API index for '.sf-equal' and new drop-shadow utilities +108/-61

Regenerate API index for '.sf-equal' and new drop-shadow utilities

• Updates counts (tokens/classes) and replaces removed equal preset tokens with new rule tokens. Reflects new '.sf-equal' descriptions (flowing columns) and added '.sf-drop-shadow-*' classes.

docs/api-index.json

api-index.mdUpdate human-readable API index counts and equal token/class descriptions +18/-16

Update human-readable API index counts and equal token/class descriptions

• Refreshes total counts and updates the layout token/class tables to reflect '.sf-equal' flowing columns and '--sf-equal-rule-*' tokens. Adds '.sf-drop-shadow-*' macro classes to the list.

docs/api-index.md

classes.mdRegenerate class reference counts for added drop-shadow utilities +5/-2

Regenerate class reference counts for added drop-shadow utilities

• Updates the generated class reference counts and includes the new '.sf-drop-shadow-s/-m/-l' entries in the macro list.

docs/classes.md

layout.mdUpdate '.sf-equal' docs to describe flowing multi-column behavior +1/-1

Update '.sf-equal' docs to describe flowing multi-column behavior

• Updates the layout primitive table entry for '.sf-equal' to clarify it uses CSS columns (not grid), uses 'column-count' modifiers, and is controlled by '--sf-equal-rule-*' tokens.

docs/layout.md

llm-guide.mdAlign token guidance with '.sf-equal' flow and drop-shadow usage +8/-5

Align token guidance with '.sf-equal' flow and drop-shadow usage

• Updates the guide to note drop-shadow tokens are consumed by '.sf-drop-shadow-*' classes. Rewrites the equal section to reflect CSS multi-column flow and introduces the new rule tokens.

docs/llm-guide.md

macros.mdDocument new '.sf-drop-shadow-*' utilities and their tokens +18/-0

Document new '.sf-drop-shadow-*' utilities and their tokens

• Adds a new section describing how drop-shadow utilities work (alpha-respecting shadows) and maps each class to its corresponding token.

docs/macros.md

registry.jsonUpdate registry lists for removed and added equal tokens/classes +8/-6

Update registry lists for removed and added equal tokens/classes

• Refreshes token/class counts and replaces removed '--sf-equal-min-col-*' entries with '--sf-equal-rule-*'. Adds '.sf-drop-shadow-*' classes to the class registry list.

docs/registry.json

test-coverage-6-token-reference.htmlRefresh token list used for token-reference coverage demo +1/-1

Refresh token list used for token-reference coverage demo

• Updates the embedded TOKENS list to reflect removal of equal preset tokens and addition of '--sf-equal-rule-*' tokens.

docs/test-coverage-6-token-reference.html

token-annotations.jsonUpdate token and class annotation descriptions for '.sf-equal' change +9/-10

Update token and class annotation descriptions for '.sf-equal' change

• Replaces annotations that described '.sf-equal' as an auto-fill grid and removes annotations for deleted preset tokens. Adds annotations for the new '--sf-equal-rule-*' tokens and updates '.sf-equal--N' descriptions to column-count.

docs/token-annotations.json

token-index.jsonRegenerate token index to reflect removed presets and new rule tokens +11/-19

Regenerate token index to reflect removed presets and new rule tokens

• Updates global counts and replaces the removed equal preset token entries with '--sf-equal-rule-color/style/width', including updated roles and values.

docs/token-index.json

token-index.mdRegenerate token index markdown counts and equal token list +7/-8

Regenerate token index markdown counts and equal token list

• Refreshes token counts by tier/role and updates the equal token section to list '--sf-equal-rule-*' instead of the removed preset min-col tokens.

docs/token-index.md

tokens.mdRegenerate full token reference after equal token contract change +5/-6

Regenerate full token reference after equal token contract change

• Updates total token counts and replaces the old equal preset token list with the new '--sf-equal-rule-*' tokens in the layout token section.

docs/tokens.md

Other (10) +210 / -128
badge-optimal.jsonRefresh optimal bundle size badge output +1/-1

Refresh optimal bundle size badge output

• Updates the reported gzip size for the optimal badge to reflect the new dist output.

badges/badge-optimal.json

api-index.generated.jsonSync configurator API index with new equal tokens and removals +26/-49

Sync configurator API index with new equal tokens and removals

• Updates generated sync metadata and token counts, reflecting removal of equal preset tokens and addition of '--sf-equal-rule-*' tokens with updated descriptions/groups.

configurator/src/data/api-index.generated.json

classes.generated.jsonSync configurator class registry for '.sf-equal' docs and drop-shadow utilities +35/-5

Sync configurator class registry for '.sf-equal' docs and drop-shadow utilities

• Updates '.sf-equal' and modifier descriptions to describe flowing columns and direct 'column-count'. Adds the new '.sf-drop-shadow-s/-m/-l' macro classes to the registry.

configurator/src/data/classes.generated.json

token-registry.generated.jsonMark removed equal preset tokens and add new column-rule tokens +21/-5

Mark removed equal preset tokens and add new column-rule tokens

• Marks '--sf-equal-min-col-2/-3/-4/-6' as removed in the token registry and adds new IDs for '--sf-equal-rule-width/style/color'. Bumps registry 'nextId' accordingly.

configurator/src/data/token-registry.generated.json

package.jsonWire VS Code custom data generation into docs pipeline +2/-1

Wire VS Code custom data generation into docs pipeline

• Extends the 'docs' script to run the new VS Code custom data generator and adds a dedicated 'docs:vscode-data' script entry.

package.json

reachable-ui.jsonUpdate reachable UI token snapshot for equal token removals/additions +2/-5

Update reachable UI token snapshot for equal token removals/additions

• Refreshes the audited list to remove '--sf-equal-min-col-{2,3,4,6}' and include the new equal rule token(s), keeping snapshots in sync with the public surface.

reports/full-api-audit/results/reachable-ui.json

tokens-report.jsonUpdate tokens audit snapshot for new equal rule tokens +43/-56

Update tokens audit snapshot for new equal rule tokens

• Adjusts audited totals and removes entries for the deleted equal preset tokens. Adds audit rows for '--sf-equal-rule-width/style/color' so the report matches current token output.

reports/full-api-audit/results/tokens-report.json

bundle.jsEmit minifier-safe dist banner with MIT notice +1/-1

Emit minifier-safe dist banner with MIT notice

• Changes the dist header comment to a bang-comment '/*! ... */' so minifiers preserve the license/version banner in distributed CSS bundles.

scripts/bundle.js

gen-vscode-custom-data.jsAdd generator for VS Code CSS Custom Data from docs API index +58/-0

Add generator for VS Code CSS Custom Data from docs API index

• Introduces a script that reads 'docs/api-index.json', filters to PUBLIC/PUBLIC-ADVANCED tokens, and writes 'badges/css-custom-data.json' with descriptions, defaults, and syntax for editor tooling.

scripts/gen-vscode-custom-data.js

token-registry.jsonMark equal preset tokens removed and add new equal rule tokens +21/-5

Mark equal preset tokens removed and add new equal rule tokens

• Updates the canonical token registry to mark '--sf-equal-min-col-2/-3/-4/-6' as removed and introduces new registry entries for '--sf-equal-rule-width/style/color'.

token-registry.json

@qodo-code-review

qodo-code-review Bot commented Jul 3, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (1) 📎 Requirement gaps (0) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 11 rules

Grey Divider


Action required

1. Missing .sf-equal rule style/color UI ✓ Resolved 📎 Requirement gap ≡ Correctness
Description
The configurator’s Equal columns panel exposes --sf-equal-rule-width but does not provide controls
for --sf-equal-rule-style or --sf-equal-rule-color. This prevents the UI from reflecting the
full updated .sf-equal token set required by the checklist.
Code

configurator/src/components/panels/LayoutPanel.svelte[R465-482]

+        <!-- Equal columns (flowing CSS multi-column, not a grid) -->
        <section class="space-y-2">
-          <div class="text-[9px] font-semibold text-slate-500 uppercase tracking-widest">Equal grid</div>
+          <div class="text-[9px] font-semibold text-slate-500 uppercase tracking-widest">Equal columns (flowing)</div>
+          <div class="text-[9px] text-slate-600">Content flows between columns like a newspaper — use .sf-grid for discrete grid cells instead.</div>
          <SliderRow
-            label="Min column" value={equalMinCol} min={6} max={36} step={0.5} unit="rem"
-            help="--sf-equal-min-col — minimum column width for .sf-equal"
+            label="Min column width" value={equalMinCol} min={6} max={36} step={0.5} unit="rem"
+            help="--sf-equal-min-col — column-width floor for .sf-equal"
            overridden={"--sf-equal-min-col" in overrides}
            onChange={(v) => onSet("--sf-equal-min-col", `${v}rem`)}
            onReset={() => onReset("--sf-equal-min-col")}
          />
-          <div>
-            <div class="text-[9px] text-slate-600 mb-1.5">Named column counts (equal-min-col-2/3/4/6)</div>
-            <div class="space-y-1.5">
-              {#each [
-                { label: "2-col", token: "--sf-equal-min-col-2", def: 28 },
-                { label: "3-col", token: "--sf-equal-min-col-3", def: 15 },
-                { label: "4-col", token: "--sf-equal-min-col-4", def: 16 },
-                { label: "6-col", token: "--sf-equal-min-col-6", def: 10 },
-              ] as c (c.token)}
-                <SliderRow
-                  label={c.label} value={parseRem(overrides[c.token], c.def)} min={4} max={36} step={0.5} unit="rem"
-                  overridden={c.token in overrides}
-                  onChange={(v) => onSet(c.token, `${v}rem`)}
-                  onReset={() => onReset(c.token)}
-                />
-              {/each}
-            </div>
-          </div>
+          <SliderRow
+            label="Rule width" value={equalRuleWidth} min={0} max={4} step={0.5} unit="px"
+            help="--sf-equal-rule-width — column-rule width between flowing columns, 0 = off"
+            overridden={"--sf-equal-rule-width" in overrides}
+            onChange={(v) => onSet("--sf-equal-rule-width", `${v}px`)}
+            onReset={() => onReset("--sf-equal-rule-width")}
+          />
Relevance

⭐⭐ Medium

Configurator token-control gaps sometimes fixed, but no direct precedent for equal-rule style/color
UI exposure.

PR-#438
PR-#423

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance ID 1537799 requires the configurator Equal-columns section to expose the new
.sf-equal rule token set (width/style/color). The updated panel adds only a Rule width slider
for --sf-equal-rule-width, with no corresponding UI for --sf-equal-rule-style or
--sf-equal-rule-color.

Configurator UI reflects the updated .sf-equal tokens and behavior
configurator/src/components/panels/LayoutPanel.svelte[465-482]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The configurator LayoutPanel Equal-columns section only wires `--sf-equal-rule-width`, but the updated `.sf-equal` token set also includes `--sf-equal-rule-style` and `--sf-equal-rule-color`.

## Issue Context
Compliance requires the configurator UI to expose the updated `.sf-equal` tokens (rule width/style/color), not just the width.

## Fix Focus Areas
- configurator/src/components/panels/LayoutPanel.svelte[465-482]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Custom-data artifact unchecked ✓ Resolved 🐞 Bug ☼ Reliability
Description
npm run docs now generates badges/css-custom-data.json, but the CI artifact freshness job will
never flag it as stale because it is not listed in scripts/artifacts.json outputs. This can allow
merges where the published VS Code autocomplete data drifts from docs/api-index.json without
detection.
Code

package.json[R40-41]

+    "docs": "node scripts/audit.js && node scripts/gen-token-reference.js && node scripts/gen-class-reference.js && node scripts/gen-token-index.js && node scripts/gen-api-index.js && npm run gen:registry && npm run configurator:sync && npm run docs:vscode-data",
+    "docs:vscode-data": "node scripts/gen-vscode-custom-data.js",
Relevance

⭐⭐⭐ High

New generated/committed docs artifacts are typically added to scripts/artifacts.json for CI
staleness checks.

PR-#211
PR-#281

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The docs pipeline now runs the generator that writes a committed file in badges/, but the artifact
checker only verifies paths enumerated in scripts/artifacts.json.outputs (and CI runs that
checker). Since badges/css-custom-data.json is absent from the outputs list, it can change without
causing CI to fail.

package.json[34-42]
scripts/gen-vscode-custom-data.js[21-24]
scripts/gen-vscode-custom-data.js[53-56]
scripts/check-artifacts.js[54-69]
scripts/artifacts.json[1-17]
.github/workflows/ci.yml[74-95]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The new docs step (`docs:vscode-data`) writes a committed artifact (`badges/css-custom-data.json`), but `scripts/check-artifacts.js --check` only diffs files declared in `scripts/artifacts.json.outputs`. Because the new file is missing from that list, CI can miss staleness/drift for this artifact.

## Issue Context
- `npm run docs` now includes `npm run docs:vscode-data`.
- `scripts/gen-vscode-custom-data.js` writes `badges/css-custom-data.json`.
- CI runs `node scripts/check-artifacts.js --check`, which only asserts freshness for the explicit `outputs` list in `scripts/artifacts.json`.

## Fix Focus Areas
- scripts/artifacts.json[1-18]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. bundle.js stamp not /* SLASHED */ 📘 Rule violation § Compliance
Description
The bundle header stamp generated by scripts/bundle.js is now /*! ... | MIT License | ... */,
which does not match the exact /* SLASHED vX.Y.Z */ header format required for unminified
badges/*.css bundles by the checklist. This can cause version-stamp checks that expect the exact
legacy format to fail.
Code

scripts/bundle.js[161]

+  const header = `/*! SLASHED v${VERSION} — ${path.basename(output)}${flatTag} | MIT License | github.com/codeslash-dev/SLASHED */\n`;
Relevance

⭐⭐⭐ High

Repo previously enforced exact bundle header stamping (/* SLASHED v… */) to prevent version/header
drift.

PR-#263
PR-#280

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance IDs 1353202 and 1353203 require unminified badges/*.css bundles to begin with the
exact header /* SLASHED vX.Y.Z */. The PR changes the generated header to `/*! SLASHED v${VERSION}
— ... | MIT License | ... */`, which does not match the required exact legacy pattern.

Rule 1353202: Keep project version number consistent across all specified artifacts
Rule 1353203: Unminified CSS bundles in badges/ must start with a version stamp header comment
scripts/bundle.js[161-161]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The bundler now emits a bang-comment MIT header, but compliance IDs 1353202/1353203 require the first non-empty line of unminified `badges/*.css` bundles to be exactly `/* SLASHED vX.Y.Z */`.

## Issue Context
This PR changed the header to a new format (`/*! SLASHED v${VERSION} — ... | MIT License | ... */`). If the compliance requirement still enforces the legacy exact header pattern, emitted bundles will be non-compliant.

## Fix Focus Areas
- scripts/bundle.js[161-161]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

Comment thread configurator/src/components/panels/LayoutPanel.svelte
Comment thread scripts/bundle.js
const outputPath = resolveInsideRoot(output);
const flatTag = flat ? ' (flat)' : '';
const header = `/* SLASHED v${VERSION} — ${path.basename(output)}${flatTag} */\n`;
const header = `/*! SLASHED v${VERSION} — ${path.basename(output)}${flatTag} | MIT License | github.com/codeslash-dev/SLASHED */\n`;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

2. bundle.js stamp not /* slashed */ 📘 Rule violation § Compliance

The bundle header stamp generated by scripts/bundle.js is now /*! ... | MIT License | ... */,
which does not match the exact /* SLASHED vX.Y.Z */ header format required for unminified
badges/*.css bundles by the checklist. This can cause version-stamp checks that expect the exact
legacy format to fail.
Agent Prompt
## Issue description
The bundler now emits a bang-comment MIT header, but compliance IDs 1353202/1353203 require the first non-empty line of unminified `badges/*.css` bundles to be exactly `/* SLASHED vX.Y.Z */`.

## Issue Context
This PR changed the header to a new format (`/*! SLASHED v${VERSION} — ... | MIT License | ... */`). If the compliance requirement still enforces the legacy exact header pattern, emitted bundles will be non-compliant.

## Fix Focus Areas
- scripts/bundle.js[161-161]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread package.json

@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: 3

🤖 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 `@configurator/src/components/panels/LayoutPanel.svelte`:
- Line 60: The derived value equalRuleWidth in LayoutPanel.svelte is parsed with
raw parseFloat and can become NaN from a malformed override; update this derived
binding to use the same guarded parsing approach as the other numeric values in
the component (for example, the parseRem-based pattern) so it falls back to a
safe default before reaching the slider.

In `@configurator/src/data/classes.generated.json`:
- Around line 977-1006: The generated description for the sf-drop-shadow-l/m/s
entries is being taken from a stylelint pragma instead of the intended
human-readable documentation. Fix the source comment/doc-comment handling in
core/macros.css or the gen-classes generation logic so the lint disable
directive is not captured as the description, and ensure the macro metadata
populates a real group value if applicable. Then regenerate
classes.generated.json from the corrected source so the configurator UI and docs
show the proper text.

In `@docs/api-index.md`:
- Around line 881-883: The API index is rendering the stylelint suppression note
instead of the actual drop-shadow utility description for the sf-drop-shadow
macros. Update the doc generation path or the source class doc comment for the
.sf-drop-shadow-s, .sf-drop-shadow-m, and .sf-drop-shadow-l entries so they
resolve to the intended filter: var(--sf-drop-shadow-*) utility text rather than
the stylelint-disable-next-line note.
🪄 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: e340a6f0-2feb-4e7e-beda-3c68632c937c

📥 Commits

Reviewing files that changed from the base of the PR and between 3e3bfa5 and 1ec534f.

📒 Files selected for processing (39)
  • CHANGELOG.md
  • CLAUDE.md
  • README.md
  • badges/badge-optimal.json
  • badges/css-custom-data.json
  • configurator/src/components/panels/LayoutPanel.svelte
  • configurator/src/data/api-index.generated.json
  • configurator/src/data/classes.generated.json
  • configurator/src/data/token-registry.generated.json
  • core/layout.css
  • core/macros.css
  • core/print.css
  • core/tokens.layout.css
  • 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/classes.md
  • docs/layout.md
  • docs/llm-guide.md
  • docs/macros.md
  • docs/registry.json
  • docs/test-coverage-6-token-reference.html
  • docs/token-annotations.json
  • docs/token-index.json
  • docs/token-index.md
  • docs/tokens.md
  • package.json
  • reports/full-api-audit/results/reachable-ui.json
  • reports/full-api-audit/results/tokens-report.json
  • scripts/bundle.js
  • scripts/gen-vscode-custom-data.js
  • tests/layout.spec.js
  • tests/macros.spec.js
  • tests/print.spec.js
  • tests/token-api.snapshot.json
  • token-registry.json

Comment thread configurator/src/components/panels/LayoutPanel.svelte Outdated
Comment thread configurator/src/data/classes.generated.json
Comment thread docs/api-index.md Outdated
claude added 2 commits July 3, 2026 12:35
#510 (light-mode dark: classes) and this PR (rebuild .sf-equal, drop
--sf-equal-min-col-2/3/4/6) both touched the Equal grid panel section.
Kept this PR's replacement (the tokens the old per-column sliders wrote
to no longer exist in core CSS) and added the missing dark: pairing to
the new helper text to match the rest of the panel's light-mode styling.
- Add "equal-rule" to the layout DOMAIN_PATTERNS bucket so
  --sf-equal-rule-width/-style aren't flagged as uncategorised knobs
  (curation.test.js CI failure; -color already matched the colors bucket).
- Guard equalRuleWidth with the existing parseRem NaN-safe parser instead
  of raw parseFloat, matching every other derived value in this panel
  (CodeRabbit).
- Add a real doc comment above .sf-drop-shadow-s/-m/-l in core/macros.css:
  the generator's "nearest preceding comment" heuristic had latched onto
  an unrelated stylelint-disable note ~260 lines earlier, so the
  generated api-index/classes description was that pragma text instead
  of a real description (CodeRabbit).
- Add badges/css-custom-data.json to scripts/artifacts.json's tracked
  outputs so the new docs:vscode-data step is covered by artifact
  drift-checking (Qodo).
- Expose --sf-equal-rule-style and --sf-equal-rule-color in the
  configurator's Equal columns panel, matching the existing
  divider-style/divider-color pattern — only rule-width had a control
  (Qodo).

The bang-comment dist bundle header (/*! SLASHED vX.Y.Z ... */) is the
intended change and is already documented in CLAUDE.md; the bot flag
citing the old exact-format checklist is stale, not acted on.
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