feat: migration to okhst - #1229
Open
tenphi wants to merge 2 commits into
Open
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
🦋 Changeset detectedLatest commit: bffa100 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Contributor
🧪 Storybook is successfully deployed!
|
Contributor
🏋️ Size limit report
Click here if you want to find out what is changed in this build |
Contributor
📦 NPM canary releaseDeployed canary version 0.0.0-canary-fb1ba42. |
tenphi
force-pushed
the
feat-migration-to-okhsl
branch
from
July 30, 2026 10:05
d158789 to
19d6918
Compare
Contributor
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 19d6918. Configure here.
tenphi
force-pushed
the
feat-migration-to-okhsl
branch
from
July 30, 2026 10:14
19d6918 to
26210ae
Compare
tenphi
force-pushed
the
feat-migration-to-okhsl
branch
from
July 31, 2026 09:53
888125c to
296fa2b
Compare
Makes the pastel palette the shipped default: the app seed moves to saturation 100 with `pastel: true`, giving a softer, more even spread across hues. Rewritten onto the runtime-tunable palette that landed in #1277. The original version of this branch hand-edited the whole recipe in `palette.ts`; that file is now generated from `PaletteConfig`, which already exposes `saturation` and `pastel` as first-class options. So the change collapses from a few hundred lines of rewritten recipe to two defaults, and anything tuning the palette at runtime keeps working — opting back out is `{ saturation: 80, pastel: false }`. Also drops this branch's own "keep syntax highlighting out of the pastel base" commit. #1281 landed the same fix on main and did it better, pinning `pastel: false` on the code theme's instance config with tests, rather than splitting out a parallel code theme the way this branch had. **`DEFAULT_CODE_SATURATION` is the one genuinely new thing here.** The code seed read `DEFAULT_SATURATION`, deliberately not the palette-level saturation, so that tuning the app could not wash out a code block. Moving that single constant to 100 would have dragged the syntax colors along with it — reintroducing exactly the coupling `PaletteCodeSeed` and the `pastel` opt-out both exist to prevent. Splitting it lets the app seed move while the code palette stays on the value it was calibrated against. Four tests assumed non-pastel was the default and used `{ pastel: true }` as their perturbation, which is now a no-op. They are inverted to toggle pastel OFF rather than re-baselined, so each still asserts what it was written to assert. The exception is `anchors its contrast floors to the real surface`: bit-for-bit equality between the code theme's mirrored surface and the live one only holds while the page is non-pastel, so it now pins that explicitly — its sibling already covers the pastel case on tone, which is what the AA/AAA floors are solved against. Verified: 45 passing, and the 9 remaining failures are present on clean origin/main too (contrastLevel / renderPaletteTokens / glaze-interop). Typecheck is unchanged at 29 errors, 12 of them in src/tokens — all pre-existing on main, none in the files this touches.
tenphi
force-pushed
the
feat-migration-to-okhsl
branch
from
August 6, 2026 12:38
296fa2b to
824aada
Compare
… stale defaults
`Ocean`, `Forest` and `Ember` were authored on main, where `pastel` defaulted to
`false`, and their saturation seeds are tuned for the per-hue chroma ceiling.
Shipping the pastel palette silently restyled all three — 133 of 156 light-scheme
tokens move per preset — and flattened them against `Slate`, whose entire identity
is being the soft one. Pin the flag off so each preset states its own stance.
`Slate` keeps its explicit `pastel: true`, now redundant against the default but
kept so the four read as a set; its comment no longer claims pastel distinguishes
it from the shipped palette, only from the three siblings that pin it off.
`Cube` stays `{}` on purpose — it *is* the shipped palette and should follow the
default wherever the default goes.
The docs page had gone stale in the same commit that moved the default:
- the options table still advertised `saturation: 80` and `pastel: false`;
- the "pastel is a redesign, not a filter" caveat warned about opting *in* with
seeds tuned for non-pastel, which is now exactly backwards — `pastel: false` is
the departure, and the re-tuning warning applies in whichever direction you flip;
- `themes.code.saturation` is still 80, but that is now its own constant rather
than a value shared with the app seed, which is what keeps syntax colors put.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Note
Medium Risk
Default palette changes affect every consumer on the kit’s global tokens (visual breaking change for apps that relied on implicit defaults), though behavior is tunable and code syntax colors are isolated.
Overview
Makes the pastel palette the shipped default by changing
PaletteConfigdefaults tosaturation: 100andpastel: true, which re-resolves almost every app token (snapshot updated). Consumers can restore the previous look with{ saturation: 80, pastel: false }without API changes.Decouples syntax colors from the app seed by introducing
DEFAULT_CODE_SATURATION(still80) and resolvingthemes.code.saturationfrom it instead ofDEFAULT_SATURATION, so raising the app seed to100does not pullcode-*tokens along.Keeps Storybook presets stable by pinning
pastel: falseon Ocean / Forest / Ember and documenting why; Cube still uses{}to track whatever the kit ships. Theming docs and tests are updated for the new defaults (e.g. pastel tests toggle off to perturb the palette).Reviewed by Cursor Bugbot for commit bffa100. Bugbot is set up for automated code reviews on this repo. Configure here.