From 47cf3552bf1151aed99477653dacd14993f3c736 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Tue, 9 Jun 2026 18:40:34 -0500 Subject: chore(todo): mark ramp generator core (Phase 1) done --- todo.org | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/todo.org b/todo.org index a90fdde7..69d7189f 100644 --- a/todo.org +++ b/todo.org @@ -77,8 +77,8 @@ The v1 feature (ramp generation + background-contrast safety, with the worst-cas ** TODO [#B] theme-studio palette ramps + contrast safety v1 :feature:theme-studio: The v1 build from [[file:docs/theme-studio-palette-ramps-spec.org][theme-studio-palette-ramps-spec.org]] (Ready, Codex-reviewed). Two coupled features: a ramp generator (one base color → harmonized tonal ramp) and background-contrast safety (worst-case floor over a face's foreground set + safe-lightness guidance). Phases land in spec order, each leaving the tree green and =make theme-studio-test= passing. Aesthetic and real-Emacs-fidelity sign-off lives under the Manual testing parent below. -*** TODO [#B] Ramp generator core :solo: -Phase 1. =ramp(baseHex, {n, stepL, chromaEase})= in app-core.js → ={steps: [{hex, clamped}], error?}=. Holds hue, steps OKLCH-L by =stepL=, eases chroma toward the extremes, gamut-clamps each step. Defaults n=2, stepL=0.08, chromaEase=0.5; clamp out-of-range knobs with a flag; malformed =baseHex= → ={steps: [], error: 'bad-hex'}= (not thrown). Node tests: Normal (mid base), Boundary (near-white/near-black base, n at 1 and 4), Error (bad hex, out-of-range knobs). No UI. Verify: =make theme-studio-test= green. +*** 2026-06-09 Tue @ 18:40:20 -0500 Ramp generator core landed +Phase 1 (commit =1d51a332=). =ramp(baseHex, {n, stepL, chromaEase})= in app-core.js → ={steps: [{hex, clamped, offset}], adjusted}= or ={steps: [], error: 'bad-hex'}=. Holds the OKLCH hue, steps lightness by =stepL=, quadratic chroma-ease toward the extremes, gamut-clamps each step; knobs clamp to range with the clamped knob named in =adjusted= (n=2/stepL=0.08/chromaEase=0.5 defaults). 10 node tests (mid/near-white/near-black bases, hue-hold, chroma ease, knob clamping, malformed hex), suite 55→65, =make theme-studio-test= green. The app-core integrity stripper now drops =import= lines too. *** TODO [#B] Ramp UI in palette :solo: Phase 2. Base swatch → preview ramp row (darkest→lightest, base marked, clamp badge per step) → add selected steps as named palette entries. Names derive from source swatch (=blue= → =blue+1=/=blue-1=); base preview-only by default; steps insert adjacent to source in =-n..+n= order. Collisions never silent: name collision flags + forces rename, hex collision flags as duplicate but allows add. Add a #ramptest hash-gate pinning generation + insertion + collision behavior. Depends on Phase 1. Verify: hash-gate green + headless screenshot read. *** TODO [#B] Foreground-set + floor + L_max core :solo: -- cgit v1.2.3