From 999481e08cd7cdd1a0f492303437f8146506098c Mon Sep 17 00:00:00 2001 From: dev Date: Mon, 24 Aug 2026 04:11:58 +0200 Subject: [PATCH] =?UTF-8?q?docs(theming):=20el=20registro=20=C2=A78=20reco?= =?UTF-8?q?ge=20scroll-area=20y=20slider,=20con=20su=20sha?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Los dos cierran la cola A por arriba y los dos cierran **sin acuñar una sola clave**: llegaban con `global` y `private` a cero y un único literal cada uno, que se firma como identidad (`opacity: 1` de la barra visible · `inline-size: 100%` del rail horizontal). Diez adjudicaciones entre los dos, todas medidas. - `scroll-area` 94 % → 100 % (`3282ef978`) — la clave que el guard leía muerta (`auto-max-block`) es la que CINCO componentes escriben sobre su propio ScrollArea. - `slider` 97 % → 100 % (`4d3ca2fd8`) — con un solo valor el tick ACTIVO no existe: `data-active` es una relación con el rango, no un estado del tick. El registro va aparte del commit del componente porque un commit no puede contener su propio sha, y el marcador `(COMMIT)` ya costó trece entradas sin resolver. Co-Authored-By: Claude Opus 5 --- docs/process/PLAN-theming.md | 45 ++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/docs/process/PLAN-theming.md b/docs/process/PLAN-theming.md index 5b62861f0..48c6747ad 100644 --- a/docs/process/PLAN-theming.md +++ b/docs/process/PLAN-theming.md @@ -509,6 +509,51 @@ excepción abre la mano para MEDIR, no para contabilizar. ## 8. Registro +- 2026-08-24 — **`slider` 97 % → 100 %** (`4d3ca2fd8`), contrato 39 → **39** + claves —ninguna acuñada—, centinela **32/39** con 7 adjudicadas. Llegaba con + `global` y `private` a CERO (sus cuatro privados son la escala por talla, que + ya deriva de públicos) y **un** knob fuera de alcance: el `inline-size: 100%` + del rail horizontal, que se FIRMA como identidad — un rail ocupa su + contenedor, y su suelo ya es un knob (`min-inline-size`). Mismo precedente que + `separator` el mismo día. **Lo que enseñó**: (1) **con un solo valor, el tick + ACTIVO no existe** — `data-active` se estampa sólo mientras el valor del tick + cae DENTRO de `[min(valores), max(valores)]` (`SliderTickProvider.isActive`), + así que un pulgar en 40 con ticks en 0/50/100 deja los tres inactivos y el + guard lee `active-tick-bg` como un token que miente; la marca activa **no es + un estado del tick, es una relación con el rango**, y con el chip `multiple` + (20–80) alcanza al instante; (2) **el pickup pide el puntero MANTENIDO** — + `active-thumb-scale` / `-shadow` viven en `:active` y el pase estático del + guard aparca el ratón: medidos con un `mouse.down()` real sobre el thumb real + (scale 1.15 → 4.56); (3) **una clave que el centinela lee muerta puede ser la + que otro componente ESCRIBE** — `min-block-size` sólo la lee la orientación + vertical, que el escenario no monta, y es justo la que `media-player` fija + para su volumen vertical. Este contrato lo COMPONEN siete componentes + (`media-player`, `skin-media-player`, `waveform` —su playhead ES este thumb—, + `color-picker`, `gradient-builder`, `image-adjustments`, `time-range-picker`), + así que ninguna clave se retira sin barrerlos. Diff de computed vacío (1.376 + valores × 7 estados, 7 nodos), capturas 2× idénticas. ⚠ El único error de + `npm run check` en su fichero de demo es PREEXISTENTE (`1857c7854`). +- 2026-08-24 — **`scroll-area` 94 % → 100 %** (`3282ef978`), contrato 13 → **13** + claves —ninguna acuñada—, centinela **10/13** con 3 adjudicadas. Llegaba con + `global` y `private` a CERO y **un** knob fuera de alcance: el `opacity: 1` de + la barra visible, que se FIRMA como identidad — deshace el `0` del estado + oculto de la regla de encima, o sea el otro extremo de un par (y el `0` + hermano el censo ni lo cuenta, así que acuñarlo habría creado una asimetría). + **Lo que enseñó**: (1) **la clave que el guard leía muerta es la más + consumida del contrato** — `auto-max-block` sólo pinta bajo `[data-autosize]`, + que el escenario no monta, y la escriben `combobox`, `command`, + `gradient-picker`, `select` y `palabras` sobre su propio ScrollArea para + cerrar la altura del panel: retirarla habría roto cinco componentes; (2) **la + excepción de demo de §7.8 no la abría** porque `data-autosize` lo estampa el + ENVOLTORIO de eidos desde una prop y el morfo no lo declara — se adjudica + forzando el atributo sobre la raíz real (none → 1234px, y `none` al quitar el + token); (3) el par `transition-*` es la clase ya conocida — SON la transición + que el guard congela, medidos sin congelar en barra y thumb (0.12s → 11.5s). + `thumb-bg-hover` **se queda con el modificador detrás**: es hover neutro, + excluido del codemod de D-TH.6, y su migración a la capa de estado sigue + bloqueada por morfo (`archetype: 'thumb'` no recibe velo) — el último knob de + la firma 3 sin resolver. Diff de computed vacío (896 valores × 7 estados, + 4 nodos), capturas 2× idénticas. - 2026-08-24 — **`tags-input` 88 % → 90 % CERRADO** (`92180c390`), contrato 90 → **91** claves, centinela **63/91** con 28 adjudicadas. Sus **cinco** knobs fuera de alcance se clasificaron uno a uno ANTES de tocar nada: **uno** era la