From 2b6b6aa10bfb0dec7bb8f689654046049de45615 Mon Sep 17 00:00:00 2001 From: dev Date: Mon, 24 Aug 2026 03:04:46 +0200 Subject: [PATCH] =?UTF-8?q?docs(theming):=20el=20registro=20=C2=A78=20reco?= =?UTF-8?q?ge=20image-adjustments=20y=20separator,=20con=20su=20sha?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Las dos entradas de la tanda, con el sha PUESTO (no el marcador `(COMMIT)`, que ya dejó trece filas sin resolver): `image-adjustments` 67 % → 100 % (`e76d2db2b`) y `separator` 67 % → 100 % (`acf9c3a23`). Lo que las dos dejan escrito, y no estaba en el registro: - **El techo puede estar en el contrato que YA existe.** `separator` cierra en el 100 % sin acuñar una sola clave: sus dos knobs fuera de alcance eran los `100%` de cada orientación, que son la IDENTIDAD del primitivo y se FIRMAN. - **Medir de más midió menos, y por un tope numérico**: el pase de hover del centinela recorre como mucho 30 nodos, así que ampliar `extraNodes` de una fila a seis empujó el control medido al puesto 32 y su token leyó muerto por una razón ajena a él. - **Un token muerto por la ORIENTACIÓN que la demo no monta se arregla midiendo**: `sweepAttr` sobre `data-orientation` recorre las dos sobre los mismos nodos, mientras que cambiar el chip de la demo cambia una por la otra. Co-Authored-By: Claude Opus 5 --- docs/process/PLAN-theming.md | 48 ++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/docs/process/PLAN-theming.md b/docs/process/PLAN-theming.md index 1fb0dceef..c68e5f22d 100644 --- a/docs/process/PLAN-theming.md +++ b/docs/process/PLAN-theming.md @@ -509,6 +509,54 @@ excepción abre la mano para MEDIR, no para contabilizar. ## 8. Registro +- 2026-08-24 — **`separator` 67 % → 100 %** (`acf9c3a23`), contrato **3** claves + intacto (**cero acuñadas**), centinela **3/3** con **cero adjudicadas**. Su + alcance no subía por falta de tokens: subía **firmando lo que nunca fue un + knob**. Los dos que quedaban fuera eran `inline-size: 100%` en el horizontal y + `block-size: 100%` en el vertical — la IDENTIDAD del primitivo: una regla + ocupa su contenedor, y uno que no lo hiciera sería otro componente (su propio + README ya lo decía en sus Gaps, «Horizontal already fills 100%»). Llevan su + `/* literal: … */` y salen del ratio. Acuñar un `--separator-length` habría + sido inventar un eje que nadie pidió. **Lo que enseñó**: (1) **el techo puede + estar en el contrato que YA existe** — `thickness` (el mismo token alimenta + `block-size` en horizontal e `inline-size` en vertical), `fg` y `min-length` + son toda su apariencia, y el `border: 0` / `flex-shrink: 0` no son apariencia + sino puesta a cero y defensa contra el colapso en un padre flex; (2) + **`min-length` leía MUERTO y no mentía** — la demo arranca en el ejemplo + `stacked`, que monta sólo reglas horizontales, y media receta cuelga de + `[data-orientation='vertical']`; se arregla MIDIENDO, con un `sweepAttr` sobre + `data-orientation` que recorre las dos orientaciones **sobre los mismos + nodos**, no cambiando el chip de la demo al ejemplo `toolbar`, que **cambia + una orientación por la otra en vez de sumarlas** («montar MÁS puede medir + MENOS», otra vez). Diff de computed vacío (448 valores × 7 estados), + capturas 2× antes/después. +- 2026-08-24 — **`image-adjustments` 67 % → 100 %** (`e76d2db2b`), contrato + 12 → **16** claves, centinela **15/16** con 1 adjudicada. Las cuatro que + entran son **LA COSTURA** (§2-A) y ninguna un diseño nuevo: `head-gap` + (`--space-2`) y `label-line-height` (`--leading-ui`), que la receta leía a + pelo; `hover-reset-fg` (`--color-content-primary`), que **no es un hover + inventado por componente** sino TINTA —el velo del sistema es + `background-image`, y un control sin superficie no puede recibirlo—; y + `focus-reset-radius` (`--radius-sm`), con el precedente exacto + `rating-group.focus-radius`. El catálogo corrigió DOS nombres de la §4 + generada: `item-label-line-height` cuando el bloque ya habla `label-*` para + esa parte, y `reset-radius` cuando el radio sólo existe bajo `:focus-visible`. + Su único literal queda FIRMADO (`outline-color: Highlight` bajo + `@media (forced-colors: active)`: la paleta del SO manda ahí). **Lo que + enseñó**: (1) **medir de MÁS midió menos, y por un tope numérico** — el pase + de hover del guard recorre como mucho **30 nodos**, así que ampliar + `extraNodes` de la fila `hue` a las seis filas llevó el conjunto a 32 nodos y + convirtió al reset en el nº 32: `hover-reset-fg` leía muerto por una razón + ajena al token, y acotar el selector a la fila que la receta realmente + re-tinta lo revivió; (2) `hue-track` leía muerto (11/12) y estaba vivísimo — + pinta en el `::before` del `` **compuesto**, cuyo nodo lleva + `data-slider*` y no `data-image-adjustments-*` (la clase de `waveform`); (3) + **el canal de VALOR de un panel de ajustes no toca el CSS** — su salida es la + cadena `filter` que soma entrega por `onFilterChange`, así que aquí no había + nada que confundir con un knob. Píxel hacia arriba sobre la regla `:hover` + tocada: el hover mueve `color` y sólo `color` en el propio `