v0.24.4
Released June 18, 2026 · All releases
Changes
codegroupanddiffchrome now derives from the code surface instead of the page chrome. For both runes the wrapper fill, header/topbar, tabs, their text, and the internal separators are now derived from--rf-color-code-bg/--rf-color-code-text(the tokens a syntax preset owns) viacolor-mix, with only the outer frame (border + shadow) staying in the page world. Previouslycodegroup's topbar/tabs anddiff's header used--rf-color-surface, so when the active preset gave the code surface a palette that diverged from the page — e.g. Nord's Polar Night code surface on an otherwise-neutral site — the light card chrome clashed with the dark code body. Both runes are now internally coherent with their own code body in light and dark modes.- Add a
contentMeasureaxis so page sections keep their content readable when bled to thewidetrack. Previouslywidth="wide"widened both a section's background and its content, whilewidth="full"widened only the background (content stayed anchored to the text measure) — an inconsistency for runes likeheroandfeature. RuneConfig.contentMeasure: 'anchored' | 'fill'(defaultfill) is emitted asdata-content-measure.anchoredrunes (hero, cta, feature) keep their content at the text measure atwidth="wide"so only the surface/gradient bleeds, matchingwidth="full".fillrunes (card, table, bento) keep the "break gently out of the text column" behavior.width="full"still anchors content into a band for every rune, so composing any rune into a hero (elevation="flush" width="full") is unchanged.- Round the corners of a
sandboxlike other rich media guests. The iframe canvas is opaque (the behaviour writescolor-schemeonto the srcdoc, so the browser paints a solid backdrop thatbackground: transparentcan't see through), so a rounded shape can only come from the embedding element clipping the iframe — but the sandbox owned no radius, so it rendered square (most visibly in a bleed host like ahero, where the slot no longer imposes its radius on guests). - The sandbox now owns a
border-radiusand lets the iframe inherit it, so skeleton'soverflow: hiddenclips the iframe to the rounded shape. It mirrorscodegroup:radius-containerstandalone (and in a bleed host, keeping its own chrome), the smaller media tier when merged into a clip-host well (card/bento), and flush in a full-bleed cover/backdrop. - Fix
validateThemeTokensConfigrejecting valid tokens because its internalTOKEN_CONTRACT_SHAPEhad drifted from theTokenContracttype. The validator was missing the SPEC-056 extended syntax roles (type,property,parameter,tag,attribute,operator,number,regex), the spacing densification band (spacing.snug,spacing.cozy), andshadow.none. As a result, an integrated preset like Nord — which sets the extended syntax roles when it's the active preset — failed validation with "unknown token key" errors, even though those keys are part of the contract (scoped Nord tints took a different code path and were unaffected). The validator shape now mirrorsSyntaxTokensand the rest ofTokenContract.