feat(palette): 2.0.0 retune — neutrals, comments, ANSI, accents, CVD; verifier hard-fail - #14
Conversation
- Neutrals shifted at constant L* to drop residual blue-subpixel drive (fg #C4B8A4→#C8B89A, ops #D4C8B8→#D8C8A8, bright #E8DCD0→#EDDCC4, …). - Comments #5C544A→#6E665B (Lc 16→23), doc comments →#787062, line numbers →#56504A; Soft comments →#625A50. - Ghost text fg #6B635A + translucent bg (new tokenized editorGhostText.background). - Badge/remote fills #D4A048→#A87C34; defaultLibrary/this #B89860→#B08C50. - Numbers #E0A850→#DEA64E (Variables→Numbers gap ≥ 3 L*). - Parameters #BCA890→#B8AA9C (CVD vs Variables 4.7→6.6); Soft Functions #9A6D53→#976D56. - ANSI blue #9C948E, cyan #C08868, brightBlue #B2AAA3, brightCyan #CEA284 (normal-8 pairwise ΔE2000 ≥ 10); terminal/* mirrored. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- POLICY: every check now `fail` (tightGap/apca/cvd/ansi/wavelengthScan). - pipeline test checks v1.2.0 snapshot structure (keys, rules, scopes, fontStyles) instead of hex equality; PALETTE_CHANGED gate removed. - README verifier blocks re-rendered; ladder/terminal prose updated. - CHANGELOG [2.0.0]; version bump. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…dered block) Addresses Sourcery general comment on PR #10. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Reviewer's GuidePalette 2.0.0 retune that warms neutrals, raises comment/ghost/line-number contrast, reworks ANSI blue/cyan and accents, and tightens verification/tests so all perceptual checks are now hard failures. All user-visible changes are in the YAML variants and mirrored terminal schemes; tests and verifier now treat v1.2.0 JSON as a structural reference rather than hex snapshot. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey - I've left some high level feedback:
- The new structural parity test still depends on the exact
tokenColorsarray order, so any future reordering of rules (even if semantically equivalent) will fail the test; consider normalizing/sortingtokenColors(e.g. byname/scope) before comparison so the check is order-insensitive but still guards scope/fontStyle drift. shape(theme).colorscurrently enforces an exact color-key set match with the v1.2.0 snapshot, which will flag intentional additions like new VS Code color keys; you might want to allow supersets (e.g. assert that snapshot keys are a subset of built keys) so the test doesn’t block forward compatibility.- Since all verifier checks are now hard failures, it may be worth adding a short-lived override mechanism (e.g. an env flag) instead of requiring
POLICYedits when experimenting with in-flight palette changes, to reduce the chance of accidentally committing relaxed policies.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The new structural parity test still depends on the exact `tokenColors` array order, so any future reordering of rules (even if semantically equivalent) will fail the test; consider normalizing/sorting `tokenColors` (e.g. by `name`/`scope`) before comparison so the check is order-insensitive but still guards scope/fontStyle drift.
- `shape(theme).colors` currently enforces an exact color-key set match with the v1.2.0 snapshot, which will flag intentional additions like new VS Code color keys; you might want to allow supersets (e.g. assert that snapshot keys are a subset of built keys) so the test doesn’t block forward compatibility.
- Since all verifier checks are now hard failures, it may be worth adding a short-lived override mechanism (e.g. an env flag) instead of requiring `POLICY` edits when experimenting with in-flight palette changes, to reduce the chance of accidentally committing relaxed policies.Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5cbe87fae3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| Object.entries(theme.semanticTokenColors).map(([k, v]) => [ | ||
| k, typeof v === 'string' ? null : (v.fontStyle ?? null), |
There was a problem hiding this comment.
Preserve semantic token style flags in snapshot shape
Record the actual semantic-token style properties rather than fontStyle. The generated themes represent these styles as italic, bold, underline, and strikethrough booleans (for example, comment has italic: true and keyword has bold: true), so every current object maps to null here. Consequently, a future change that silently removes or alters a semantic selector's visual style will still pass this structural-parity test despite the stated invariant.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Good catch — fixed in 244a3d0: the shape now records the italic/bold/underline/strikethrough flags (16 styled selectors in the snapshot are now actually compared).
…ourcery on PR #14) Compare the v1.2.0 snapshot by name-keyed rule signatures and colour-key membership instead of sorted-array deepEqual, so rule reordering and new VS Code colour keys/rules/selectors don't fail the test while drops and restyles still do. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Re Sourcery review 4958052317:
|
Summary
PR 3 of the audit-remediation plan (
docs/plans/2026-08-18-audit-remediation.md). First palette change since 1.0 → 2.0.0. All edits are inthemes/_src/variants/*.yaml(+ one tokenized key inbase.yaml) and mirrored into the fourterminal/files. The verifier's perceptual checks introduced in #10 (APCA floors, CVD confusability, ANSI ΔE2000, tight-gap, whole-theme wavelength scan) are flipped to hard failures and the shipped palette passes all of them with zero warnings.Standard / Focused (Soft gets the same transforms scaled — see CHANGELOG for its hexes):
#C4B8A4→#C8B89A,#D4C8B8→#D8C8A8,#E8DCD0→#EDDCC4, …).#5C544A→#6E665B(APCA Lc 16 → 23, WCAG 2.7 → 3.5); doc comments→#787062; line numbers→#56504A.#6B635A+ faint translucent bg (editorGhostText.background, newly tokenized inbase.yaml). Ghost italic is VS Code CSS, not themable.#D4A048→#A87C34(buttons, focus border, cursor keep gold).*.defaultLibrary+this/self/super#B89860→#B08C50— one real L* step below Types.#E0A850→#DEA64Eso Variables→Numbers clears the 3 L* tight-gap floor.#BCA890→#B8AA9C— CVD vs Variables 4.7 → 6.6 (separation on the b* axis red-green observers keep).#9A6D53→#976D56(Soft Types/Functions CVD 5.7).#9C948E(warm gray, Lc 45) / cyan#C08868(terracotta = Functions); bright slots#B2AAA3/#CEA284. Normal-8 pairwise ΔE2000 min 13.6 (was 5.2). Deviates from the plan's proposed#B09878/#C0A888— two warm grays can't reach ΔE ≥ 10 at usable Lc, so cyan reuses an existing chromatic hex instead.POLICYinscripts/verify-palette.mjs: every checkfail. Tight-gap rule unchanged (L* < 3 or ΔE2000 < 4 fails).tests/pipeline.test.mjs: v1.2.0 snapshot test now asserts structural parity (keys, rules, scopes, font styles) instead of hex equality;PALETTE_CHANGEDgate removed.[2.0.0](folds the feat: verifier v2 (APCA, ΔE2000, CVD, ANSI, wavelength scan, README tables) + tests + CI #10 Unreleased entry);package.json2.0.0.themes/_snapshot/is untouched (immutable v1.2.0 reference).Verification
npm run check→✓ all checks passed(0 failures, 0 warnings across Alone / Focused / Soft).npm test→ 26/26.npx vsce package→ 14 files, 50.7 KB.🤖 Generated with Claude Code
Summary by Sourcery
Ship the 2.0.0 palette retune with stronger perceptual validation and warmer, more distinguishable colors across editor and terminal themes.
New Features:
Bug Fixes:
Enhancements:
Documentation:
Tests:
Chores: