astra
alpha-0.1-background
alpha-0.1-dir-prefs
alpha-0.1-sec-dom
menubar-v4-safe
active-uix
morfo-runtime
morfo-driven-soma
semantuix
glm-5
main
sium-v1.0
${ noResults }
6 Commits (0d7a97cb7ad839193ffeede68bc02135a766e978)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
9fc38b19a4 |
fix(demos): el contador de la pestaña Tokens se DERIVA del contrato — tres ya mentían
El panel de Tokens existe precisamente para no escribir a mano lo que el contrato ya sabe: pregunta a ActiveEidos.getRecipeTokens(). Pero el número junto a la etiqueta de la pestaña SÍ estaba escrito a mano, y derivó como deriva siempre una segunda fuente de verdad. Auditadas las 105 demos que montan el panel: 90 contadores correctos, 15 sin contador y TRES que mentían — carousel decía 30 y son 27, drag-drop 10 y son 9, link-preview 33 y son 35. Nadie edita un badge cuando cambia una receta. Nace web/routes/uix/lib/TokensTabCount.svelte, que hace la MISMA pregunta que el panel de debajo y filtra los forwards con guion bajo. 102 demos convertidas; las tres que faltan (scroll-area, slider, tabs) están en manos de otra sesión y van en una segunda pasada, para que el índice compartido no vea nunca dos escritores sobre un fichero. Verificado en navegador: carousel pasa de decir 30 a decir 27, con 27 filas en el panel y ninguna sin resolver; metrics, que no tenía contador, dice 72 y lista 72. npm run check COMPLETED con los 72 errores preexistentes de la rama y ninguno en los 102 ficheros. Dos sesiones de esta tanda discreparon sobre si poner el contador —una lo puso a mano, otra lo omitió por ser justo lo que el panel evita—. Tenían razón las dos a medias: el contador es útil y no debe escribirse. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
2 months ago |
|
|
99a9011dd9 |
uix(demos): la pestaña Tokens en cinco demos — la superficie de tema se VE
El paso 11 del protocolo (`PLAN-theming.md` §7) llegó DESPUÉS de que estos cinco cerraran su tokenización, así que su superficie de tema no se veía en ninguna parte. La demo ES el producto: un componente temable cuya demo esconde sus tokens está a medio entregar. Las cinco piezas del molde de `collapsible`, sin una sola lista escrita a mano: el panel pregunta a `ActiveEidos.getRecipeTokens(name)`, de modo que un token que se añada, se renombre o se caiga aparece aquí sin que nadie se acuerde de tocar la demo. El `stage` que recibe cada panel es el nodo del escenario que ya existía en cada fichero (`stageRef`), no uno nuevo. Filas que lista cada panel — el número es el de claves públicas de su bloque en `lib/recipes/base.ts`, no una cifra copiada: radio-cards 40 password-field 30 aura 37 gradient-builder 72 (6 de ellas estructuradas: «por talla / ámbito») nav-tree 18 Verificado en Chrome de verdad, abriendo la pestaña en las cinco páginas: las tres columnas resuelven sobre el escenario vivo, cero filas sin resolver («—») y cero errores de consola. `npm run check`: 72 errores preexistentes, ninguno en estos ficheros. De paso: `gradient-builder` declaraba su `type Tab` en una línea de 101 columnas que prettier ya quería partir antes de esta sesión; al tocar esa misma línea queda en su forma canónica y el fichero pasa a estar limpio. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
2 months ago |
|
|
b906dd4077 |
fix(direction): el atributo `dir` se estampaba VACIO cuando nadie lo afirmaba
El contrato de `013ceac57` dice que `dir` se OMITE cuando nadie ha afirmado una
direccion. `6.5` habia visto `dir=""` en sidebar y tree-view sin averiguar de
donde salia. Es el shorthand `{dir}`: para `dir` Svelte emite una asignacion de
PROPIEDAD ademas del atributo, y con `undefined` el resultado es la cadena
vacia en vez de la omision. Atrapado con un trap sobre `setAttribute` + el
descriptor de la propiedad: dos escrituras, la segunda por propiedad.
No estaba en el SSR (`dir=""` no aparece ni una vez en el HTML servido) — lo
escribia el cliente al hidratar.
Un valor invalido HEREDA, asi que nada pintaba mal; pero contradice la letra
del contrato y hace que `[dir]` matchee.
Arreglado con spread condicional, que si omite:
{dir} -> {...dir ? { dir } : {}}
- `tree-view` (eidos): el wrapper LO NECESITA cuando el valor es concreto — el
recipe selecciona con `[data-tree-view-root]:dir(rtl)` y ese div es el
ANCESTRO del provider que estampa el attr. Con el valor ausente hereda, que
es lo correcto.
- 26 demos: el arnes estandar (`data-uix-stage-area` / `data-uix-canvas-inner`).
Verificado: en `auto` solo quedan `<html>` (la proyeccion de prefs) y el
provider con su valor resuelto — cero `dir=""`; en `rtl` los tres elementos lo
reciben concreto; al volver a `auto` desaparece limpiamente. Las 26 rutas
sirven 200 y ninguna trae `dir=""`.
METODO: mi primer regex tambien matcheaba dentro de `dir={dir}` y dejo
`dir={...}` — dos ficheros con parse error que `check` cazo (76 vs 74). Contar
ficheros modificados NO basta; hay que mirar el diff.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2 months ago |
|
|
5469e05df9 |
feat(direction): las demos dejan de clavar ltr, y la prosa inglesa se declara inglesa
Cierra el eje de direccion abierto en
|
2 months ago |
|
|
45ae36919a |
feat(gradient): S9 gradient-* — graduate from ACTIVE_DEV_TRACK + apg + dossiers (initiative close)
The initiative's real remaining scope (verified 2026-07-10 against the repo; the "uncommitted work" memory was stale — builder landed in |
3 months ago |
|
|
b3d0e29037 |
feat(gradient): GradientBuilder editor polish + presets; land gradient WIP
GradientBuilder (this session): - Stop color editor uses the canonical ColorField value row (swatch + styled Select), not a native select; rails at 90% width + xl track. - Composable footer: ColorPicker.Cancel / ColorPicker.Close + trash remove-stop, as a sibling of PickerShell.Body. - Surface-agnostic by default (variant='ghost'): no card, adapts to host. - '+' add-stop on the kind-switch row; inserts between the selected stop and the next; rail click-to-add re-enabled (insert at cursor). - GradientBuilder.StopList composable stops list (rendered by default). - presets prop (Gradient[]) rendered below the editor (flex, not tabs); save-to-presets with a maxPresets cap; the action button flips Save <-> Delete when a saved preset is selected (ColorPicker mechanic). Also lands the in-progress gradient tree so HEAD is self-consistent (langs/components/index.ts already imported ./gradient-picker, whose file was untracked). gradient-builder + gradient-picker stay on ACTIVE_DEV_TRACK; the GradientPicker 2-tab redesign is next (see gradient-builder/CONTINUE.md). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
3 months ago |