Skip to content

refactor: replace color-mix palette ramp with absolute OKLCH anchors - #627

Merged
jackgranatowski merged 8 commits into
mainfrom
claude/framework-color-system-wr49vc
Jul 16, 2026
Merged

refactor: replace color-mix palette ramp with absolute OKLCH anchors#627
jackgranatowski merged 8 commits into
mainfrom
claude/framework-color-system-wr49vc

Conversation

@jackgranatowski

@jackgranatowski jackgranatowski commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Summary

Replaces the color-mix()-based palette ramp model with an absolute OKLCH lightness anchor system. The numeric color steps (50–950) now pull each family colour's own lightness a fixed fraction toward absolute targets (--sf-palette-tint-l and --sf-palette-shade-l), clamped to prevent folding. This guarantees monotonic light→dark ordering for any source colour and anchor configuration.

Key changes:

  • Removed 10 --sf-palette-mix-* knobs (50, 100, 200, 300, 400, 600, 700, 800, 900, 950); replaced with 2 PUBLIC-ADVANCED anchors: --sf-palette-tint-l (default 0.97) and --sf-palette-shade-l (default 0.1)
  • Updated all 50 numeric color tokens (5 families × 10 steps) to use oklch(from …) relative colour syntax with per-step pull fractions and chroma taper
  • Token count: 754 → 746 (8 fewer knobs, same consumption tokens)
  • Updated configurator UI to reflect the new ramp model with preset curves
  • Added tests/ramp-monotonic.spec.js to verify the ramp never folds across any source lightness
  • Updated all generated docs and API indices

Why: The old model folded into a "U" shape when a source colour fell outside the anchor band (e.g., a very dark primary on a light theme). The absolute-anchor model with clamping guarantees a monotonic ladder regardless of source position or theme, while reducing the number of tunable knobs from 10 to 2.

Type

  • feat
  • fix
  • docs
  • chore / tooling

Checklist

  • Conventional Commit messages (feat:, fix:, docs:, …) — enforced by commitlint
  • npm run lint:css passes (stylelint)
  • npm run build rebuilds dist/ (bundles are git-ignored; CI rebuilds and stamps headers)
  • npm test passes (unit + Playwright e2e) — new ramp-monotonic.spec.js verifies monotonicity
  • Version references in sync if any version-related file changed (npm run check:version)
  • LLM guide reviewed/updated if core/*.css, optional/*.css, or token-registry.json changed (npm run check:llm-guide)
  • Generated artifacts regenerated, not hand-edited (npm run check:macros, check:registry, audit:check)
  • CHANGELOG.md updated under ## [Unreleased] (for user-facing changes)
  • Breaking changes include migration docs — new user manual section system-kolorow.md added with full colour system guide

Notes

  • New user manual: user-manual/system-kolorow.md (497 lines) provides a complete walkthrough of the three-layer colour model, decision tree, and section-by-section landing page example. Addresses the most common confusion points (.sf-surface--* vs data-theme vs --sf-color-text--on-*).
  • Monotonicity guarantee: The new ramp model mathematically cannot fold because each step clamps its pull toward an absolute anchor. Verified by ramp-monotonic.spec.js, which sweeps source lightnesses from 0.06 to 0.98 and confirms step luminance is always non-increasing from 50 to 950.
  • Configurator UI: Updated ColorsPanel.svelte to show the new RAMP_CURVE (baked per-step fractions) and two anchor knobs instead of ten mix percentages. Preset curves ("Softer", "Bolder", "High contrast") now tune the two anchors.
  • Token registry: Marked the 10 removed --sf-palette-mix-*

https://claude.ai/code/session_012X2fkd5DbmNJywKcNy6NjF

Summary by CodeRabbit

  • New Features
    • Palette numeric ramps now generate tints-to-shades using absolute lightness anchors for more consistent, monotonic behavior.
    • The Colors panel palette ramp editor was updated to control these lightness anchors with updated presets and live previews.
    • Added expanded SLASHED color-system guidance to the user manual.
  • Breaking Changes
    • Removed per-step palette mix controls; replaced with --sf-palette-tint-l and --sf-palette-shade-l.
  • Bug Fixes
    • Improved info/danger subtle alpha levels (0.12).
    • Fixed container-query breakpoint documentation to use rem.
  • Tests
    • Added automated checks ensuring brand ramp steps stay monotonic across color families.

claude added 3 commits July 16, 2026 11:28
…ion recipes

Adds user-manual/system-kolorow.md — a practical, task-oriented walkthrough
of the color system built around a real landing-page layout (alternating
light/dark bands with a single brand accent).

Covers the three-layer mental model, the .sf-surface--* vs data-theme vs
--sf-color-text--on-* decision, the primary/action split, ramps vs alpha
variants, status tokens, and a section-by-section recipe. Also records three
framework nits (status -subtle alpha 0.12 vs 0.10 for info/danger, the
subtle-naming overload, and the old-engine .sf-surface degradation).

Passes check:doc-refs (all --sf-*/.sf-* references live).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012X2fkd5DbmNJywKcNy6NjF
The numeric brand ramps (--sf-color-{primary,secondary,tertiary,action,
neutral}-50…950) previously generated each step with color-mix() toward the
theme's --sf-color-surface (tints) / --sf-color-text (shades). When a chosen
source colour fell outside the lightness band between those two anchors — a
brand darker than the text colour, or a project that lightened --sf-color-
neutral — the shade half inverted: steps 600–950 came out lighter than 500 and
the ramp folded into a "U" (50 ≈ 950).

Generate each step in OKLCH instead by pulling the family colour's own
lightness a fixed fraction toward an ABSOLUTE target (--sf-palette-tint-l /
--sf-palette-shade-l), clamped with max()/min() so a tint can never end darker
than the base nor a shade lighter. The ladder is now monotonic light→dark for
any source colour and any anchor configuration; chroma is tapered toward the
extremes. Output is visually unchanged for default-palette colours (already
in-band); only out-of-band / moved-anchor cases are corrected. base is
untouched (already absolute-lightness).

Breaking: removed the --sf-palette-mix-50…950 knobs; replaced with two
lightness anchors --sf-palette-tint-l (0.97) and --sf-palette-shade-l (0.1).

- core/tokens.css: new ramp formulas + anchor knobs (base/alpha/status unchanged)
- tests/ramp-monotonic.spec.js: sweep the lightness axis for all 5 families,
  assert the ramp never folds and no step is transparent
- token surface: snapshot, annotations, token-tiers, regenerated docs/registry
- demo/index.html: refresh coverage inventory + per-token default strings
- docs/llm-guide.md, user-manual/{colors,system-kolorow}.md: document the model
- configurator/domain-patterns.json: match "palette" so the new knobs categorise
- CHANGELOG: Bug Fixes + Breaking Changes entries

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012X2fkd5DbmNJywKcNy6NjF
The Colors panel's "Palette ramp" section drove the ten removed
--sf-palette-mix-* knobs (percentage-toward-surface/text sliders) and previewed
each step with the old color-mix() formula. Swap it to the new model:

- two 0–1 sliders for the lightness anchors --sf-palette-tint-l /
  --sf-palette-shade-l (replacing the ten percentage sliders)
- Softer / Default / Punchy presets now patch the two anchors
- the live primary-palette preview and the mini-palette strips compute each
  step with the absolute-anchor OKLCH formula, so the preview matches the
  framework and is always monotonic light→dark
- domain-patterns keyword already updated to "palette" so the new knobs land in
  the colours domain (prior commit)

Verified: svelte-check (0 errors), configurator unit suite (164 tests),
curation gate, and a production vite build all pass; visually confirmed the
panel renders the two anchor sliders and a monotonic palette preview.

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

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown

Review Change Stack

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

💤 Files selected but had no reviewable changes (1)
  • demo/index.html
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: db93d9af-495f-4670-a2bb-a8dbc9b49595

📥 Commits

Reviewing files that changed from the base of the PR and between fa1391a and 69acb25.

📒 Files selected for processing (1)
  • demo/index.html

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The PR replaces per-step palette mix controls with absolute OKLCH tint and shade anchors, updates configurator controls and previews, refreshes generated token references and registries, adds monotonicity tests, and documents the revised color ramp and color-system usage.

Changes

Palette ramp migration

Layer / File(s) Summary
Ramp implementation and configurator
core/tokens.css, configurator/src/components/panels/ColorsPanel.svelte, configurator/src/data/domain-patterns.json
Numeric palette steps now use OKLCH lightness anchors; the configurator exposes anchor sliders, updated presets, and resolved swatch previews.
Ramp monotonicity validation
tests/ramp-monotonic.spec.js
Playwright tests sweep source lightness values and verify opaque, monotonic ramp output and light-to-dark endpoints.
Token contract and generated references
token-registry.json, tests/token-api.snapshot.json, demo/index.html, docs/*, scripts/token-tiers.js
Removed palette mix tokens, added anchor tokens, and regenerated token formulas, counts, coverage data, indexes, classifications, and snapshots.
Documentation and release notes
CHANGELOG.md, README.md, user-manual/colors.md, user-manual/system-kolorow.md, badges/badge-optimal.json
Documented the ramp migration, color-system usage, breaking token changes, updated token totals, and bundle-size badge.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ColorsPanel
  participant CSSPaletteTokens
  participant Browser
  ColorsPanel->>CSSPaletteTokens: update tint and shade anchors
  CSSPaletteTokens->>Browser: compute OKLCH palette steps
  Browser->>ColorsPanel: render resolved palette swatches
Loading

Possibly related PRs

Suggested labels: codex

Suggested reviewers: claude

🚥 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 summarizes the main change: replacing the color-mix palette ramp with absolute OKLCH anchors.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
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/framework-color-system-wr49vc

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.

Comment thread tests/ramp-monotonic.spec.js Fixed
@coderabbitai coderabbitai Bot added the codex label Jul 16, 2026
@greptile-apps

greptile-apps Bot commented Jul 16, 2026

Copy link
Copy Markdown

Greptile Summary

Replaces the color-mix()-based palette ramp with absolute OKLCH lightness anchors across all five brand families, reducing 10 tunable --sf-palette-mix-* knobs to two (--sf-palette-tint-l / --sf-palette-shade-l). The change eliminates the fold-into-U bug that occurred when a source colour sat outside the surface/text anchor band.

  • core/tokens.css — all 50 numeric palette steps now use oklch(from …) relative-colour syntax with per-step pull fractions and max()/min() clamping; logic is identical across all five families and consistent with the configurator preview.
  • configurator/src/components/panels/ColorsPanel.svelte — UI rewired to the two new anchor sliders (0–1 range); computePaletteSwatch mirrors the CSS formula exactly so the live preview matches the framework output.
  • tests/ramp-monotonic.spec.js — new Playwright spec sweeps five source lightnesses for all five families and asserts monotonicity; covers the out-of-band edge cases that caused the old model to fold.

Confidence Score: 4/5

Safe to merge after fixing the CHANGELOG breaking-change entry, which currently contains layout-bugfix text that has no relation to the palette change.

The CSS token formulas are correct and consistent across all five families; the configurator preview mirrors the CSS logic exactly; the monotonic test covers the edge cases that motivated the refactor. The one concrete defect is in CHANGELOG.md: the tokens breaking-change bullet has the layout em→rem description appended to it, leaving users who read the changelog to understand the migration path with a confusing, incomplete entry.

CHANGELOG.md — the Breaking Changes bullet for the tokens refactor needs the accidentally-appended layout-fix text removed before this ships.

Important Files Changed

Filename Overview
core/tokens.css Replaces 10 --sf-palette-mix-* variables with 2 absolute OKLCH anchor variables; all 50 numeric palette steps updated to use relative-color oklch(from …) syntax with per-step pull fractions and monotonicity clamping. Logic is consistent across all 5 families.
tests/ramp-monotonic.spec.js New Playwright spec sweeping 5 source lightnesses across all 5 families in light-theme only; verifies monotonicity and opacity. Dark-theme sweep is missing.
CHANGELOG.md Breaking-change entry for the palette refactor has the layout emrem bugfix text appended to it, corrupting the migration guidance for users of --sf-palette-mix-*.
configurator/src/components/panels/ColorsPanel.svelte UI updated: MIX_STEPS replaced with RAMP_CURVE and ANCHOR_KNOBS; computePaletteSwatch now mirrors the CSS formula exactly; sliders rewired to 0–1 range for the two new anchor knobs.
scripts/token-tiers.js Regex pattern updated from /^--sf-palette-mix-\d+$/ to `/^--sf-palette-(?:tint
token-registry.json 10 --sf-palette-mix-* entries marked "removed": true; 2 new anchor tokens added with sequential IDs. Stable-ID contract preserved.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    SRC["--sf-color-{family} (source, L = l)"]
    TINT_L["--sf-palette-tint-l (0.97)"]
    SHADE_L["--sf-palette-shade-l (0.1)"]

    SRC --> T50["50: max(l, l+(tint_l-l)×0.95) · c×0.20"]
    SRC --> T100["100: max(l, l+(tint_l-l)×0.88) · c×0.30"]
    SRC --> T200["200: max(l, l+(tint_l-l)×0.72) · c×0.50"]
    SRC --> T300["300: max(l, l+(tint_l-l)×0.52) · c×0.72"]
    SRC --> T400["400: max(l, l+(tint_l-l)×0.30) · c×0.88"]
    SRC --> T500["500: source colour itself"]
    SRC --> S600["600: min(l, l+(shade_l-l)×0.16) · c×0.96"]
    SRC --> S700["700: min(l, l+(shade_l-l)×0.36) · c×0.88"]
    SRC --> S800["800: min(l, l+(shade_l-l)×0.58) · c×0.72"]
    SRC --> S900["900: min(l, l+(shade_l-l)×0.78) · c×0.52"]
    SRC --> S950["950: min(l, l+(shade_l-l)×0.90) · c×0.38"]

    TINT_L -.-> T50
    TINT_L -.-> T100
    TINT_L -.-> T200
    TINT_L -.-> T300
    TINT_L -.-> T400

    SHADE_L -.-> S600
    SHADE_L -.-> S700
    SHADE_L -.-> S800
    SHADE_L -.-> S900
    SHADE_L -.-> S950
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
    SRC["--sf-color-{family} (source, L = l)"]
    TINT_L["--sf-palette-tint-l (0.97)"]
    SHADE_L["--sf-palette-shade-l (0.1)"]

    SRC --> T50["50: max(l, l+(tint_l-l)×0.95) · c×0.20"]
    SRC --> T100["100: max(l, l+(tint_l-l)×0.88) · c×0.30"]
    SRC --> T200["200: max(l, l+(tint_l-l)×0.72) · c×0.50"]
    SRC --> T300["300: max(l, l+(tint_l-l)×0.52) · c×0.72"]
    SRC --> T400["400: max(l, l+(tint_l-l)×0.30) · c×0.88"]
    SRC --> T500["500: source colour itself"]
    SRC --> S600["600: min(l, l+(shade_l-l)×0.16) · c×0.96"]
    SRC --> S700["700: min(l, l+(shade_l-l)×0.36) · c×0.88"]
    SRC --> S800["800: min(l, l+(shade_l-l)×0.58) · c×0.72"]
    SRC --> S900["900: min(l, l+(shade_l-l)×0.78) · c×0.52"]
    SRC --> S950["950: min(l, l+(shade_l-l)×0.90) · c×0.38"]

    TINT_L -.-> T50
    TINT_L -.-> T100
    TINT_L -.-> T200
    TINT_L -.-> T300
    TINT_L -.-> T400

    SHADE_L -.-> S600
    SHADE_L -.-> S700
    SHADE_L -.-> S800
    SHADE_L -.-> S900
    SHADE_L -.-> S950
Loading

Comments Outside Diff (1)

  1. CHANGELOG.md, line 17 (link)

    P1 Breaking-change entry contains unrelated layout-fix copy-paste

    The **tokens:** breaking-change bullet ends at "...or override individual --sf-color-{family}-{step} resolved tokens)." and then continues with the layout emrem description ("Inside a container query an em resolves against the query container's own font-size…"), including mentions of docs/architecture.md and .sf-grid-cols-* — none of which are related to the palette change. Anyone reading the changelog to understand how to migrate away from --sf-palette-mix-* will be confused by the appended, unrelated text.

    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!

Reviews (1): Last reviewed commit: "feat(configurator): rewire Colors palett..." | Re-trigger Greptile

Comment thread tests/ramp-monotonic.spec.js Outdated
// lightnesses and return, per sweep, the {step, lum, alpha} of every step.
function sweepFamily([family, steps, sourceLs]) {
const root = document.documentElement;
root.setAttribute('data-theme', 'light');

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 Dark theme ramp monotonicity is not verified

sweepFamily always sets data-theme='light' and varies the source-light property. The dark theme uses --sf-color-{family}-source-dark tokens, which map to a separate --sf-color-{family} value under data-theme='dark'. A very light source-dark (e.g. L ≈ 0.98) would exercise the same clamp path that used to fold in the old model. Adding a second data-theme='dark' sweep with --sf-color-{family}-source-dark overrides would close this gap and make the guarantee symmetric.

…assignment

- CHANGELOG: the layout em→rem explanation had leaked onto the tokens
  Breaking-Changes bullet (an Edit matched only the first sentence of the long
  layout line); restore the full layout Bug-Fixes bullet and end the tokens
  breaking bullet at its migration note (greptile P1).
- tests/ramp-monotonic.spec.js: add a second data-theme="dark" sweep driving
  --sf-color-{family}-source-dark, so monotonicity is verified symmetrically in
  both modes, not just light (greptile P2). Now 11 cases, all green.
- tests/ramp-monotonic.spec.js: drop the redundant `ctx.fillStyle = '#000'`
  write immediately overwritten by `ctx.fillStyle = c` (code-scanning nit).

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

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
demo/index.html (1)

4266-4266: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Update the static token count to match the new inventory.

The PR summary notes a reduction in the total token count from 754 to 746 due to removing 10 mix tokens and adding 2 anchor tokens. Update this hardcoded number so the visual header accurately reflects the new token count.

💡 Proposed fix
-        <h3 id="cov-tokens-h" class="cov-area-h">Design tokens <span class="cov-count">754</span></h3>
+        <h3 id="cov-tokens-h" class="cov-area-h">Design tokens <span class="cov-count">746</span></h3>
🤖 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 `@demo/index.html` at line 4266, Update the hardcoded cov-count value in the
Design tokens header (id="cov-tokens-h") from 754 to 746, leaving the
surrounding markup unchanged.
🧹 Nitpick comments (2)
tests/ramp-monotonic.spec.js (1)

22-28: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Cover hue, chroma, and anchor overrides in the sweep.

Every family is replaced with the same oklch(L 0.16 264), so the loop repeats identical ramp math and does not validate “any source colour.” Add representative hue/chroma values and default, extreme, and inverted anchor pairs to protect the central contract.

🤖 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/ramp-monotonic.spec.js` around lines 22 - 28, Update the test fixtures
in ramp-monotonic.spec.js so the sweep exercises varied source hues and chromas
rather than assigning every family the same color. Expand the anchor cases to
include default, extreme, and inverted anchor pairs, ensuring the ramp
assertions validate behavior for arbitrary source colors and all supported
anchor configurations.
docs/llm-guide.md (1)

1308-1311: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Add missing semicolons to the CSS custom properties.

The properties --sf-palette-tint-l and --sf-palette-shade-l are missing trailing semicolons in this code block. While this is just documentation, adding the semicolons ensures it behaves as valid CSS if users copy and paste it into their stylesheets.

♻️ Proposed refactor
 /* Absolute OKLCH lightness poles the 50–950 numeric ramp reaches toward */
---sf-palette-tint-l:  0.97   /* how light the lightest step (50) can reach */
---sf-palette-shade-l: 0.1    /* how dark the darkest step (950) can reach */
+--sf-palette-tint-l:  0.97;  /* how light the lightest step (50) can reach */
+--sf-palette-shade-l: 0.1;   /* how dark the darkest step (950) can reach */
 /* per-step pull fraction + chroma taper are baked into each family */
🤖 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 `@docs/llm-guide.md` around lines 1308 - 1311, Add trailing semicolons to the
`--sf-palette-tint-l` and `--sf-palette-shade-l` CSS custom property
declarations in the documented palette block, preserving their existing values
and comments.
🤖 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 `@demo/index.html`:
- Around line 4813-4814: In the palette token list, swap the two adjacent
entries so --sf-palette-shade-l appears before --sf-palette-tint-l, preserving
the alphabetical order and matching the cov-data JSON sequence.

In `@user-manual/system-kolorow.md`:
- Around line 430-472: Remove the entire “Znalezione nieścisłości we frameworku”
section from the user-facing manual, including subsections 9.1–9.3, their
developer commentary, code snippets, and details block. Preserve the preceding
manual content and do not incorporate these findings into the documentation;
track them separately in an issue or internal document.

---

Outside diff comments:
In `@demo/index.html`:
- Line 4266: Update the hardcoded cov-count value in the Design tokens header
(id="cov-tokens-h") from 754 to 746, leaving the surrounding markup unchanged.

---

Nitpick comments:
In `@docs/llm-guide.md`:
- Around line 1308-1311: Add trailing semicolons to the `--sf-palette-tint-l`
and `--sf-palette-shade-l` CSS custom property declarations in the documented
palette block, preserving their existing values and comments.

In `@tests/ramp-monotonic.spec.js`:
- Around line 22-28: Update the test fixtures in ramp-monotonic.spec.js so the
sweep exercises varied source hues and chromas rather than assigning every
family the same color. Expand the anchor cases to include default, extreme, and
inverted anchor pairs, ensuring the ramp assertions validate behavior for
arbitrary source colors and all supported anchor configurations.
🪄 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: 6f2e73ec-779b-49a2-b56f-fbdfe53ab657

📥 Commits

Reviewing files that changed from the base of the PR and between 50f9849 and 09cb9f6.

⛔ Files ignored due to path filters (3)
  • configurator/src/data/api-index.generated.json is excluded by !**/*.generated.*
  • configurator/src/data/token-registry.generated.json is excluded by !**/*.generated.*
  • dist/css-custom-data.json is excluded by !**/dist/**
📒 Files selected for processing (20)
  • CHANGELOG.md
  • badges/badge-optimal.json
  • configurator/src/components/panels/ColorsPanel.svelte
  • configurator/src/data/domain-patterns.json
  • core/tokens.css
  • demo/index.html
  • docs/api-index.json
  • docs/api-index.md
  • docs/llm-guide.md
  • docs/registry.json
  • docs/token-annotations.json
  • docs/token-index.json
  • docs/token-index.md
  • docs/tokens.md
  • scripts/token-tiers.js
  • tests/ramp-monotonic.spec.js
  • tests/token-api.snapshot.json
  • token-registry.json
  • user-manual/colors.md
  • user-manual/system-kolorow.md

Comment thread demo/index.html Outdated
Comment thread user-manual/system-kolorow.md Outdated
claude added 3 commits July 16, 2026 16:33
…r-system-wr49vc

# Conflicts:
#	docs/llm-guide.md
…ange

The palette-ramp refactor nets -8 tokens (10 --sf-palette-mix-* removed, 2
anchors added). check:doc-refs enforces the 'N design tokens' claims against
the live total; update both README mentions to 746.

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

- core/tokens.css: --sf-color-info-subtle and --sf-color-danger-subtle were
  0.10 alpha while success/warning were 0.12, so danger/info alert backgrounds
  rendered slightly fainter than success/warning at the same content. Unify all
  four status -subtle washes to 0.12 (the finding documented while writing the
  colour manual). Regenerated value-bearing docs.
- user-manual/system-kolorow.md: remove the "Znalezione nieścisłości we
  frameworku" section (§9) — maintainer-facing findings don't belong in a user
  manual (PR #627 review); renumber the cheatsheet §10 → §9. Also refresh one
  stale §8 rationale ("ramp computed for a specific background") to the new
  solid-colour-doesn't-blend wording.
- CHANGELOG: note the status -subtle alpha fix.

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

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 16, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
demo/index.html (1)

4454-4454: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Update stale alpha values for status subtle colors. The PR unified all status subtle-color alpha values to 0.12, but the static coverage defaults for danger and info were missed and remain at 0.1.

  • demo/index.html#L4454-L4454: change 0.1 to 0.12 in the data-cov-default attribute for --sf-color-danger-subtle.
  • demo/index.html#L4463-L4463: change 0.1 to 0.12 in the data-cov-default attribute for --sf-color-info-subtle.
🤖 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 `@demo/index.html` at line 4454, Update the static coverage defaults for
--sf-color-danger-subtle in demo/index.html:4454-4454 and --sf-color-info-subtle
in demo/index.html:4463-4463, changing each alpha value from 0.1 to 0.12 in its
data-cov-default attribute.
🤖 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.

Outside diff comments:
In `@demo/index.html`:
- Line 4454: Update the static coverage defaults for --sf-color-danger-subtle in
demo/index.html:4454-4454 and --sf-color-info-subtle in
demo/index.html:4463-4463, changing each alpha value from 0.1 to 0.12 in its
data-cov-default attribute.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 79a2b8f5-3a68-48c9-a367-7ddcb891193b

📥 Commits

Reviewing files that changed from the base of the PR and between 09cb9f6 and fa1391a.

⛔ Files ignored due to path filters (2)
  • configurator/src/data/api-index.generated.json is excluded by !**/*.generated.*
  • dist/css-custom-data.json is excluded by !**/dist/**
📒 Files selected for processing (12)
  • CHANGELOG.md
  • README.md
  • core/tokens.css
  • demo/index.html
  • docs/api-index.json
  • docs/api-index.md
  • docs/llm-guide.md
  • docs/token-index.json
  • docs/token-index.md
  • docs/tokens.md
  • tests/ramp-monotonic.spec.js
  • user-manual/system-kolorow.md
🚧 Files skipped from review as they are similar to previous changes (9)
  • docs/tokens.md
  • CHANGELOG.md
  • docs/token-index.md
  • tests/ramp-monotonic.spec.js
  • docs/api-index.json
  • docs/llm-guide.md
  • core/tokens.css
  • docs/token-index.json
  • docs/api-index.md

The status -subtle alpha was unified to 0.12, but the hand-maintained
data-cov-default display strings for --sf-color-danger-subtle and
--sf-color-info-subtle in the coverage inventory still read 0.1 (PR #627
review). Display-only; all four status -subtle now show 0.12.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012X2fkd5DbmNJywKcNy6NjF
@jackgranatowski
jackgranatowski merged commit 4befe6c into main Jul 16, 2026
13 checks passed
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