Skip to content

chore: upgrade SLASHED framework to v0.7.7 - #180

Merged
jackgranatowski merged 4 commits into
mainfrom
claude/framework-button-changes-sync-4np8gf
Jul 8, 2026
Merged

jackgranatowski merged 4 commits into
mainfrom
claude/framework-button-changes-sync-4np8gf

Conversation

@jackgranatowski

@jackgranatowski jackgranatowski commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Summary

Updates the bundled SLASHED framework CSS and vendored configurator from v0.7.6 to v0.7.7. This release introduces:

  • New component token: --sf-card-avatar-size (2.5rem diameter for card avatars)
  • Colour token naming: Replaces --*-ghost aliases with --*-tint across all 10 colour families (primary, secondary, tertiary, action, base, neutral, success, warning, info, danger) to better reflect their 5% alpha transparency use case
  • New gradient token: --sf-gradient-action for the action colour family (matching primary/secondary/tertiary)
  • Button component API: Expanded documentation and orthogonal axis model (colour/style/gradient) with explicit --action modifier
  • Status colour tokens: Added -tint variants (5% alpha) for success, warning, info, and danger families
  • Documentation improvements: Clarified component roadmap and colour model comments in CSS

Token count increases from 729 to 735 (6 new tokens: 1 component + 4 status tints + 1 gradient).

Type

  • chore / tooling

Checklist

  • Conventional Commit messages (feat:, fix:, docs:, …)
  • npm test passes
  • npm run lint passes (stylelint + php -l)
  • npm run verify passes (version metadata in sync)
  • Generated artifacts not hand-edited (dist/, data/inventory.json, data/variables-hints.json come from update-framework)
  • CHANGELOG.md updated under ## [Unreleased] (framework upgrade, user-facing token additions)
  • Built SPA assets committed (admin-app source changed via sync)

Notes

This is a framework upgrade via npm run update-framework. All changes are generated:

  • CSS bundles in dist/ and admin-app/framework-css/ regenerated from framework release
  • Admin-app configurator UI re-vendored from framework v0.7.7
  • Data inventories and hints regenerated
  • Version constants updated in PHP and manifest files

The --*-ghost--*-tint rename is a breaking change for any custom CSS using those tokens, but the framework's own components (.sf-btn, .sf-card) have been updated to use the new names.

https://claude.ai/code/session_01QZN7sLeiRUkfK7nU6L8DNi

Summary by CodeRabbit

  • New Features

    • Added new button styling options, including soft and gradient variants.
    • Expanded the design token library with new tint color options, an action gradient, and card avatar sizing.
  • Bug Fixes

    • Updated previews and documentation so the latest button styles appear consistently across the app.
    • Improved handling of shared configs and synced assets to better ignore outdated values and stay on the newest release.

claude added 2 commits July 8, 2026 21:59
… jsDelivr

resolveLatestTag() trusted jsDelivr's metadata CDN as the sole source of
truth for the newest framework release. That CDN is eventually-consistent:
a freshly published release can take minutes to appear, so a plugin release
cut immediately after a framework release could silently vendor the previous
version (the button-component changes in v0.7.7 shipped against v0.7.6 this way).

Query GitHub's Releases API (/releases/latest — authoritative, updates on
publish, excludes drafts/prereleases) as the primary source, keep jsDelivr as
a fallback, and take whichever reports the newer version so we never regress
to an older release when one source lags. Authenticates with GITHUB_TOKEN/
GH_TOKEN when present.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QZN7sLeiRUkfK7nU6L8DNi
Vendor the framework configurator + bundled CSS from v0.7.7, which the
0.5.4 plugin release missed: the release ran update-framework right after
the framework 0.7.7 release, and "latest" (resolved via the lagging
jsDelivr CDN) still pointed at v0.7.6, so the .sf-btn rework, ghost→tint
token rename, and gradient buttons never reached the plugin.

- SLASHED_*_CSS_REF: v0.7.6 → v0.7.7
- re-vendored admin-app configurator core (ComponentsPanel button UI)
- regenerated inventory/class-hints/variables-hints
- rebuilt admin-app SPA (assets/admin-app/app.{js,css}) so the shipped
  configurator carries the new button variants

Plugin release version stays 0.5.4 (no version bump).

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

coderabbitai Bot commented Jul 8, 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: 46 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: ef4575cc-f1c6-4886-8db7-6f04a83f1b36

📥 Commits

Reviewing files that changed from the base of the PR and between 8041dcb and f8be017.

📒 Files selected for processing (7)
  • SLASHED-for-WP/includes/class-color-resolver.php
  • SLASHED-for-WP/integrations/bricks/assets/editor-app/app.js
  • SLASHED-for-WP/integrations/bricks/editor-app/src/lib/color-model.js
  • SLASHED-for-WP/integrations/gutenberg/assets/editor/color-model.js
  • SLASHED-for-WP/integrations/gutenberg/includes/class-presets.php
  • scripts/update-framework.js
  • tests-php/ColorResolverTest.php
📝 Walkthrough

Walkthrough

This PR renames *-ghost color tokens to *-tint across core tokens, generated data, and inventories; adds a new gradient axis (--sf-gradient-action, .sf-btn--gradient) and card avatar sizing token/class updates; updates admin-app preview panels; filters removed tokens in codec.ts; switches vendored-manifest sources to local; and bumps CSS_REF constants with an improved update-framework.js version resolver.

Changes

Design tokens, button gradient/tint styling, and admin-app UI

Layer / File(s) Summary
Core token definitions
SLASHED-for-WP/admin-app/framework-css/core/tokens.css, .../optional/tokens.components.css
Adds *-tint status tokens and --sf-gradient-action, renames *-ghost aliases to *-tint, adds --sf-card-avatar-size.
sf-btn component CSS
SLASHED-for-WP/admin-app/framework-css/optional/components.css
Adds soft-tonal background properties, new .sf-btn--soft and .sf-btn--gradient implementations with family mappings and outline masking; .sf-card__avatar uses new size token.
Preview panel & Button panel UI
.../components/panels/ComponentsPanel.svelte, .../components/shell/PreviewPanel.svelte
Adds gradient family list, btnGradient state, gradient checkbox UI; demo templates swap Ghost for Soft/Gradient variants.
Codec filtering
SLASHED-for-WP/admin-app/src/lib/codec.ts
Skips removed tokens when building id/name maps and known-token allowlist.
Generated data catalogs
.../src/data/api-index.generated.json, classes.generated.json, token-registry.generated.json
Adds/renames tokens, marks ghost tokens removed, documents new/renamed .sf-btn classes.
Repo-level inventory/hints data
SLASHED-for-WP/data/inventory.json, variables-hints.json, integrations/bricks/data/inventory.json
Updates counts, adds tint/gradient/avatar tokens, removes ghost entries, updates button class lists.
Vendored manifest
SLASHED-for-WP/admin-app/.vendored-manifest.json
Switches vendored file sources from pinned GitHub refs to local configurator paths.

CSS_REF version bump and update-framework.js resolver

Layer / File(s) Summary
PHP CSS_REF bumps
SLASHED-for-WP/slashed.php, integrations/bricks/slashed-bricks.php, integrations/gutenberg/slashed-gutenberg.php
Bumps SLASHED_CSS_REF, SLASHED_BRICKS_CSS_REF, SLASHED_GUTENBERG_CSS_REF from v0.7.6 to v0.7.7.
update-framework.js resolver
scripts/update-framework.js
Adds GitHub Releases API lookup, semver comparison helpers, and combines GitHub + jsDelivr sources via resolveLatestTag().

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

Possibly related issues

Possibly related PRs

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 summarizes the main change: upgrading the SLASHED framework to v0.7.7.
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/framework-button-changes-sync-4np8gf

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.

if (/^\d+\.\d+\.\d+$/.test(ver)) return `v${ver}`; // newest-first; first stable wins
const ver = bareVer(typeof entry === 'string' ? entry : entry?.version);
if (STABLE_RE.test(ver)) return `v${ver}`; // newest-first; first stable wins
}
@coderabbitai coderabbitai Bot added the codex label Jul 8, 2026
CodeQL flagged the network-sourced version tag flowing into the release
download URL / git ref ("network data written to file system"). The tag was
already regex-validated, but .test() isn't recognized as a taint barrier and
the returned value was still a substring of the network response.

Add toStableTag(): validate against ^(\d+)\.(\d+)\.(\d+)$ and rebuild the
tag from the NUMERIC capture groups, so the result is provably v<int>.<int>.<int>
and carries no taint downstream. Both resolvers (GitHub + jsDelivr) now route
through it. Behaviour is unchanged for valid releases; malformed/path-like tags
are rejected as before.

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

Copy link
Copy Markdown

PR Summary by Qodo

Upgrade bundled SLASHED framework assets to v0.7.7 (buttons, tint tokens)

✨ Enhancement 🐞 Bug fix 🕐 40+ Minutes

Grey Divider

AI Description

• Upgrade vendored SLASHED CSS + configurator assets from v0.7.6 to v0.7.7.
• Adopt new tokens (tints/gradients, card avatar sizing) and refreshed .sf-btn API.
• Harden update-framework “latest” resolution via GitHub Releases API with jsDelivr fallback.
Diagram

graph TD
A["scripts/update-framework.js"] --> B{{"GitHub Releases API"}} --> C["Resolved tag v0.7.7"] --> D["Bundled CSS (dist/)" ] --> E["WP CSS refs"]
A --> F{{"jsDelivr metadata"}} --> C
C --> G["Admin configurator"] --> H["Generated registries"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Require explicit version pin (no “latest”)
  • ➕ Eliminates race conditions entirely
  • ➕ Forces intentional, reviewable upgrades
  • ➖ More manual work during releases
  • ➖ Still requires a process to discover the newest version
2. Resolve tags via git ls-remote instead of GitHub API
  • ➕ Avoids GitHub API rate limits/auth concerns
  • ➕ No dependency on release endpoint semantics
  • ➖ Harder to reliably exclude prereleases/drafts without extra logic
  • ➖ Doesn’t reflect the Releases “latest” contract
3. Consume framework from a package registry (npm)
  • ➕ Leverages semver tooling and lockfiles
  • ➕ Clear provenance/versioning
  • ➖ Requires a new distribution/publishing pipeline
  • ➖ Plugin still needs a bundling step for WordPress shipping

Recommendation: Keeping the vendored-asset workflow but switching “latest” resolution to GitHub Releases (with jsDelivr fallback and semver max-guard) is the best tradeoff: it prevents regressions from CDN lag while preserving the current generation + commit process.

Files changed (24) +1869 / -767

Enhancement (2) +32 / -9
ComponentsPanel.svelteUpdate button playground (variants, soft style, gradient toggle) +28/-6

Update button playground (variants, soft style, gradient toggle)

• Expands button variant families, replaces ghost/secondary styles with fill/soft/outline, and adds a gradient toggle that is disabled for unsupported families or soft style.

SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte

PreviewPanel.svelteAlign preview samples with new button modifiers +4/-3

Align preview samples with new button modifiers

• Replaces ghost button examples with soft/gradient examples and updates card footer button styling to match the new API.

SLASHED-for-WP/admin-app/src/components/shell/PreviewPanel.svelte

Bug fix (2) +80 / -9
codec.tsIgnore removed tokens when decoding share codes +7/-2

Ignore removed tokens when decoding share codes

• Filters removed token entries out of the id→name map and the known-token set to avoid rehydrating deleted tokens from legacy share codes.

SLASHED-for-WP/admin-app/src/lib/codec.ts

update-framework.jsResolve “latest” tag via GitHub Releases API (with fallback + semver guard) +73/-7

Resolve “latest” tag via GitHub Releases API (with fallback + semver guard)

• Uses GitHub’s /releases/latest endpoint as the primary “latest” source, keeps jsDelivr as fallback, and chooses the newer semver when they disagree. Supports GITHUB_TOKEN/GH_TOKEN to increase API rate limits in CI.

scripts/update-framework.js

Other (20) +1757 / -749
.vendored-manifest.jsonRefresh vendoring manifest metadata for configurator sync +54/-54

Refresh vendoring manifest metadata for configurator sync

• Updates vendoring metadata (source + timestamp) for the configurator files synced into the admin app.

SLASHED-for-WP/admin-app/.vendored-manifest.json

tokens.cssAdd tint/status/gradient tokens and rename *-ghost→*-tint +23/-9

Add tint/status/gradient tokens and rename -ghost→-tint

• Adds status -tint tokens (5% alpha), introduces --sf-gradient-action, and renames brand-family *-ghost aliases to *-tint with clarified documentation comments.

SLASHED-for-WP/admin-app/framework-css/core/tokens.css

slashed.full.cssRegenerate admin-app slashed.full.css bundle to v0.7.7 +217/-76

Regenerate admin-app slashed.full.css bundle to v0.7.7

• Updates the bundled framework CSS used by the admin app to v0.7.7, reflecting button API changes and new/renamed tokens.

SLASHED-for-WP/admin-app/framework-css/dist/slashed.full.css

components.cssUpdate .sf-btn component API (soft + gradient axes) +191/-65

Update .sf-btn component API (soft + gradient axes)

• Reworks .sf-btn to a 3-axis model (colour/style/gradient), replaces ghost/secondary with soft, adds gradient behavior, and expands supported families/modifiers (including explicit --action).

SLASHED-for-WP/admin-app/framework-css/optional/components.css

tokens.components.cssAdd card avatar sizing token +1/-0

Add card avatar sizing token

• Introduces new component token --sf-card-avatar-size (default 2.5rem).

SLASHED-for-WP/admin-app/framework-css/optional/tokens.components.css

api-index.generated.jsonRegenerate token API index (735 tokens) +354/-218

Regenerate token API index (735 tokens)

• Updates the generated API index to reflect the new token count and new entries (e.g., card avatar size and tint tokens) plus updated token descriptions using “tint” terminology.

SLASHED-for-WP/admin-app/src/data/api-index.generated.json

classes.generated.jsonRegenerate class registry for .sf-btn changes +46/-6

Regenerate class registry for .sf-btn changes

• Adds/updates class metadata for new button modifiers (e.g., --soft, --gradient, --action/base/tertiary) and refreshes descriptions to match the orthogonal-axis model.

SLASHED-for-WP/admin-app/src/data/classes.generated.json

token-registry.generated.jsonRegenerate token registry (mark ghost tokens removed, add new ids) +61/-7

Regenerate token registry (mark ghost tokens removed, add new ids)

• Marks legacy --*-ghost tokens as removed and adds new token entries (including --sf-card-avatar-size and various *-tint tokens), advancing nextId accordingly.

SLASHED-for-WP/admin-app/src/data/token-registry.generated.json

app.cssRebuild compiled admin-app CSS bundle +1/-1

Rebuild compiled admin-app CSS bundle

• Updates the built admin-app CSS artifact to match the synced configurator/framework changes.

SLASHED-for-WP/assets/admin-app/app.css

app.jsRebuild compiled admin-app JS bundle +235/-93

Rebuild compiled admin-app JS bundle

• Updates the built admin-app JS artifact after syncing the configurator UI and related generated data.

SLASHED-for-WP/assets/admin-app/app.js

inventory.jsonRegenerate token/class inventory for v0.7.7 +19/-9

Regenerate token/class inventory for v0.7.7

• Updates inventory counts (735 variables, 320 sf_classes) and lists to reflect new tokens and the ghost→tint rename.

SLASHED-for-WP/data/inventory.json

variables-hints.jsonRefresh token hints for tint tokens and card avatar size +51/-27

Refresh token hints for tint tokens and card avatar size

• Adds hints for --sf-card-avatar-size and new *-tint tokens, and removes the legacy *-ghost hint entries.

SLASHED-for-WP/data/variables-hints.json

slashed.full.cssRegenerate slashed.full.css bundle to v0.7.7 +217/-76

Regenerate slashed.full.css bundle to v0.7.7

• Upgrades the shipped full bundle to v0.7.7, including button soft/gradient rework, new/renamed tint tokens, and new gradient/status/component tokens.

SLASHED-for-WP/dist/slashed.full.css

slashed.optimal-components.cssRegenerate slashed.optimal-components.css bundle to v0.7.7 +217/-76

Regenerate slashed.optimal-components.css bundle to v0.7.7

• Upgrades the optimal-components bundle to v0.7.7 so component styling and tokens match the new framework release.

SLASHED-for-WP/dist/slashed.optimal-components.css

slashed.optimal-utilities.cssRegenerate slashed.optimal-utilities.css bundle to v0.7.7 +24/-10

Regenerate slashed.optimal-utilities.css bundle to v0.7.7

• Upgrades the optimal-utilities bundle to v0.7.7 to keep token/utility output in sync with the framework release.

SLASHED-for-WP/dist/slashed.optimal-utilities.css

slashed.optimal.cssRegenerate slashed.optimal.css bundle to v0.7.7 +24/-10

Regenerate slashed.optimal.css bundle to v0.7.7

• Upgrades the optimal bundle header/version and token definitions to v0.7.7.

SLASHED-for-WP/dist/slashed.optimal.css

inventory.jsonSync Bricks integration inventory with updated token set +19/-9

Sync Bricks integration inventory with updated token set

• Updates integration inventory counts/lists to match the v0.7.7 framework outputs (735 variables, 320 sf_classes).

SLASHED-for-WP/integrations/bricks/data/inventory.json

slashed-bricks.phpBump Bricks integration CSS ref to v0.7.7 +1/-1

Bump Bricks integration CSS ref to v0.7.7

• Updates SLASHED_BRICKS_CSS_REF to v0.7.7 to reference the newly bundled CSS.

SLASHED-for-WP/integrations/bricks/slashed-bricks.php

slashed-gutenberg.phpBump Gutenberg integration CSS ref to v0.7.7 +1/-1

Bump Gutenberg integration CSS ref to v0.7.7

• Updates SLASHED_GUTENBERG_CSS_REF to v0.7.7 to reference the newly bundled CSS.

SLASHED-for-WP/integrations/gutenberg/slashed-gutenberg.php

slashed.phpBump plugin bundled framework ref to v0.7.7 +1/-1

Bump plugin bundled framework ref to v0.7.7

• Updates SLASHED_CSS_REF constant to v0.7.7 so plugin loaders use the upgraded assets.

SLASHED-for-WP/slashed.php

@qodo-code-review

qodo-code-review Bot commented Jul 8, 2026

Copy link
Copy Markdown

Code Review by Qodo

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

Context used
✅ Compliance rules (platform): 8 rules

Grey Divider


Remediation recommended

1. Tint swatches not generated ✓ Resolved 🐞 Bug ≡ Correctness
Description
The shipped inventory now includes --sf-color-*-tint (and no longer lists --sf-color-*-ghost),
but Slashed_Color_Resolver only synthesizes the *-ghost alias and never emits *-tint. Bricks’
swatch builder drops tokens that have no hex preview value, so the new tint tokens won’t get preview
swatches in the builder UI.
Code

SLASHED-for-WP/integrations/bricks/data/inventory.json[R117-127]

    "--sf-color-action-a50",
    "--sf-color-action-a80",
    "--sf-color-action-darker",
-    "--sf-color-action-ghost",
    "--sf-color-action-lighter",
    "--sf-color-action-muted",
    "--sf-color-action-source-dark",
    "--sf-color-action-source-light",
    "--sf-color-action-subtle",
    "--sf-color-action-superdark",
    "--sf-color-action-superlight",
+    "--sf-color-action-tint",
Relevance

⭐⭐ Medium

Team fixes Bricks swatch correctness issues often, but no prior evidence for ghost→tint
resolver/swatch generation mismatch.

PR-#39
PR-#37
PR-#146

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The inventory lists --sf-color-*-tint tokens, but the resolver only defines ghost as the a5
alias; Bricks’ swatch model explicitly skips any token lacking a hex preview value.

SLASHED-for-WP/integrations/bricks/data/inventory.json[106-155]
SLASHED-for-WP/includes/class-color-resolver.php[139-151]
SLASHED-for-WP/integrations/bricks/editor-app/src/lib/color-model.js[213-225]

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 framework inventories now contain `--sf-color-*-tint` tokens, but the PHP hex-preview generator (`Slashed_Color_Resolver`) only generates `--sf-color-*-ghost` as the 5% alpha alias. Because Bricks’ UI skips swatches without a preview hex value, tint tokens won’t get swatches.

## Issue Context
- The inventory shipped to Bricks includes `--sf-color-action-tint`, `--sf-color-base-tint`, etc.
- `Slashed_Color_Resolver::$semantic_aliases` still maps `ghost => a5` only.
- Bricks’ `buildSwatch()` returns `null` when `light[varName]` is missing, so missing resolver entries directly remove swatches.

## Fix Focus Areas
- SLASHED-for-WP/includes/class-color-resolver.php[139-151]
- SLASHED-for-WP/integrations/bricks/editor-app/src/lib/color-model.js[213-225]

### Concrete fix
1. Add `tint => a5` to `Slashed_Color_Resolver::$semantic_aliases` (optionally keep `ghost => a5` for backward compatibility).
2. Ensure the resolver emits `--sf-color-<family>-tint` keys in the returned hex maps.
3. If Bricks’ color panel expects ordering/translucency handling for this alias, update the Bricks model accordingly and rebuild editor assets.

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



Informational

2. Tint alias misclassified ✓ Resolved 🐞 Bug ⚙ Maintainability
Description
Bricks/Gutenberg palette logic still special-cases the ghost alias for ordering/translucency, so
*-tint tokens won’t be treated like the prior 5% alpha alias (e.g., checkerboard underlay and
curated alias ordering). This makes tint tokens less discoverable and visually misleading once
preview values exist.
Code

SLASHED-for-WP/integrations/bricks/data/inventory.json[R117-127]

    "--sf-color-action-a50",
    "--sf-color-action-a80",
    "--sf-color-action-darker",
-    "--sf-color-action-ghost",
    "--sf-color-action-lighter",
    "--sf-color-action-muted",
    "--sf-color-action-source-dark",
    "--sf-color-action-source-light",
    "--sf-color-action-subtle",
    "--sf-color-action-superdark",
    "--sf-color-action-superlight",
+    "--sf-color-action-tint",
Relevance

⭐⭐ Medium

They care about color-token classification/ordering consistency (audit fixes in PR146), but no
direct prior ‘ghost alias’ precedent.

PR-#146
PR-#37
PR-#39

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
The UI code explicitly keys off ghost for alias ordering and translucency, while inventories now
surface *-tint tokens as the replacement alias.

SLASHED-for-WP/integrations/bricks/data/inventory.json[106-155]
SLASHED-for-WP/integrations/bricks/editor-app/src/lib/color-model.js[41-48]
SLASHED-for-WP/integrations/bricks/editor-app/src/lib/color-model.js[158-163]
SLASHED-for-WP/integrations/gutenberg/includes/class-presets.php[64-77]

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

## Issue description
After the framework rename from `ghost` to `tint`, UI code that hardcodes `ghost` as the translucent 5% alias no longer recognizes `tint`, affecting ordering and translucency heuristics.

## Issue Context
- Bricks’ color model uses `ALIAS_ORDER` containing `ghost` and a translucency regex that matches `ghost` but not `tint`.
- Gutenberg presets also include `ghost` in `ALIAS_ORDER`, which affects alias sorting.

## Fix Focus Areas
- SLASHED-for-WP/integrations/bricks/editor-app/src/lib/color-model.js[41-48]
- SLASHED-for-WP/integrations/bricks/editor-app/src/lib/color-model.js[158-163]
- SLASHED-for-WP/integrations/gutenberg/includes/class-presets.php[64-77]

### Concrete fix
1. Replace or augment `ghost` with `tint` in alias ordering lists.
2. Update translucency detection to treat `tint` as translucent.
3. Rebuild any compiled editor assets that vendor these sources.

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


3. ComponentsPanel.svelte vendored file changed 📘 Rule violation § Compliance
Description
The PR modifies SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte, but this
file is explicitly listed as vendored in SLASHED-for-WP/admin-app/.vendored-manifest.json. Per
policy, files listed in the vendored manifest must not be edited in this repo; changes should be
made upstream and then re-vendored via the approved mechanism.
Code

SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte[R16-26]

+  const BTN_VARIANTS = ["default", "primary", "secondary", "tertiary", "action", "base", "neutral", "success", "warning", "info", "danger"];
+  const BTN_STYLES: { id: "fill" | "soft" | "outline"; label: string }[] = [
+    { id: "fill",    label: "Fill" },
+    { id: "soft",    label: "Soft" },
+    { id: "outline", label: "Outline" },
  ];
  const BTN_SIZES = ["xs", "s", "m", "l", "xl"];
+  // Families with a real --sf-gradient-* token (core-4 brand families; the
+  // unmodified default resolves to action). Elsewhere --gradient is a
+  // documented solid no-op, so the toggle is disabled there.
+  const BTN_GRADIENT_FAMILIES = new Set(["default", "primary", "secondary", "tertiary", "action"]);
Relevance

⭐ Low

Vendored Svelte files are routinely re-synced and merged despite bot warnings (e.g.,
PreviewPanel.svelte in PR125).

PR-#125
PR-#122
PR-#111

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance ID 1514148 forbids modifying any file path listed in .vendored-manifest.json. The
manifest explicitly lists src/components/panels/ComponentsPanel.svelte as a vendored file, and the
PR changes that file (e.g., button variant/style definitions and gradient toggle logic).

Rule 1514148: Do not modify vendored files listed in .vendored-manifest.json
SLASHED-for-WP/admin-app/.vendored-manifest.json[69-73]
SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte[16-26]

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

## Issue description
Files listed in `SLASHED-for-WP/admin-app/.vendored-manifest.json` are vendored and must not be modified in this repository.

## Issue Context
`SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte` is listed in the vendored manifest but was changed in this PR.

## Fix Focus Areas
- SLASHED-for-WP/admin-app/src/components/panels/ComponentsPanel.svelte[16-26]
- SLASHED-for-WP/admin-app/.vendored-manifest.json[69-73]

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


Grey Divider

Qodo Logo

Comment thread SLASHED-for-WP/integrations/bricks/data/inventory.json
Comment on lines 117 to +127
"--sf-color-action-a50",
"--sf-color-action-a80",
"--sf-color-action-darker",
"--sf-color-action-ghost",
"--sf-color-action-lighter",
"--sf-color-action-muted",
"--sf-color-action-source-dark",
"--sf-color-action-source-light",
"--sf-color-action-subtle",
"--sf-color-action-superdark",
"--sf-color-action-superlight",
"--sf-color-action-tint",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Informational

3. Tint alias misclassified 🐞 Bug ⚙ Maintainability

Bricks/Gutenberg palette logic still special-cases the ghost alias for ordering/translucency, so
*-tint tokens won’t be treated like the prior 5% alpha alias (e.g., checkerboard underlay and
curated alias ordering). This makes tint tokens less discoverable and visually misleading once
preview values exist.
Agent Prompt
## Issue description
After the framework rename from `ghost` to `tint`, UI code that hardcodes `ghost` as the translucent 5% alias no longer recognizes `tint`, affecting ordering and translucency heuristics.

## Issue Context
- Bricks’ color model uses `ALIAS_ORDER` containing `ghost` and a translucency regex that matches `ghost` but not `tint`.
- Gutenberg presets also include `ghost` in `ALIAS_ORDER`, which affects alias sorting.

## Fix Focus Areas
- SLASHED-for-WP/integrations/bricks/editor-app/src/lib/color-model.js[41-48]
- SLASHED-for-WP/integrations/bricks/editor-app/src/lib/color-model.js[158-163]
- SLASHED-for-WP/integrations/gutenberg/includes/class-presets.php[64-77]

### Concrete fix
1. Replace or augment `ghost` with `tint` in alias ordering lists.
2. Update translucency detection to treat `tint` as translucent.
3. Rebuild any compiled editor assets that vendor these sources.

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

The v0.7.7 sync renames the framework's 5%-alpha color alias
--sf-color-*-ghost → --sf-color-*-tint, but the plugin's WordPress-side
color integration still hardcoded 'ghost'. Effects with the new token set:
- Slashed_Color_Resolver emitted hex previews for the now-nonexistent
  -ghost keys and none for -tint, so Bricks/Gutenberg dropped the swatches
  for the new tint tokens (swatch builder skips tokens with no preview hex);
- alias ordering + translucency/alpha classification keyed off 'ghost',
  so -tint tokens lost their curated position and checkerboard underlay.

Replace 'ghost' with 'tint' in:
- includes/class-color-resolver.php  (: tint => a5)
- bricks/editor-app color-model.js   (ALIAS_ORDER, isTranslucent, alpha regex)
- gutenberg editor color-model.js    (mirrored copy, kept byte-identical)
- gutenberg/includes/class-presets.php (ALIAS_ORDER)
- tests-php/ColorResolverTest.php     (alias expectation)

Rebuilt the Bricks editor-app bundle. Full node --test suite + drift/verify
gates pass. Reported by Qodo review on PR #180.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QZN7sLeiRUkfK7nU6L8DNi
@jackgranatowski
jackgranatowski merged commit c687b60 into main Jul 8, 2026
9 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.

3 participants