0.3.3
Release notes for 0.3.3.
Released: 2026-06-23
Features
OKLCH display & edit for opt-in GenericTab color items. A
GenericTab{ kind: "color" }tier item can now setformat: "oklch"to route through the OKLCH/HSLColorPickerinstead of the native<input type="color">, so host/secondary panels can faithfully display and edit wide-gamut oklch/P3 palette values (e.g. a family-named--palette-cool-700: oklch(...)) with no lossy hex round-trip on commit. Additive and backward compatible — omittingformat(or"hex") keeps the native color input, so existing consumers,ColorTab, and the highlight popover are unchanged. (#373, supersedes #372)Add a
cssToOklchaCSS Color 4oklch()parser (number/percentage L, chroma%= 0.4, deg/rad/grad/turn hue,none, alpha; strict — rejects malformed channels). (#374)Extend the public
{ kind: "color" }tier-item type with optionalformat?: "hex" | "oklch". (#375)Give
ColorPickeravalueFormatcontract: in oklch mode a canonicalOklchais the source of truth and wide-gamut chroma survives prop→edit→emit without sRGB clamping. (#376)HSL/alpha/preset hardening: the OKLCH↔HSL mode toggle is emit-free; only an HSL slider edit is a (documented) sRGB-oriented path. (#377)
Add a shared
ColorField(swatch-button → picker popover) and route both generic item editors through it. (#378)
Fixed
Style the
ColorFieldswatch and reject malformed oklch tokens. The new opt-in swatch had no CSS (an emptydivwith only a background color → zero-size/invisible affordance); added sized swatch styles. ThecssToOklchatokenizer also accepted malformed channels (e.g.oklch(50px 0.1 120)) by silently extracting numeric substrings; it now requires exactly three fully-anchored channel tokens and rejects unknown suffixes. (#380) (2d045d0)
Other Changes
Add an end-to-end test asserting the oklch round-trip (panel
onChange+ apply path both emitoklch(...)) and wide-gamut P3 preservation. (#379) (0595f28)