You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
svelte-kit-vice/continue.md

205 lines
12 KiB

# Continue
Fecha de corte: 2026-05-14. Rama: `active-uix`.
Actualizacion 2026-05-14:
- Revision post-cambios aplicada. La supuesta perdida de proyeccion cross-modal
queda resuelta como aclaracion de ownership: la proyeccion vive en
`arts/prefs` mediante `createActivePrefsDomProjection(...)`, no en
`ActiveUix`.
- Documentacion de ecosistema actualizada en `src/uix/*` y `src/arts/*`:
ownership de prefs/proyeccion/Eidos, naming canonico (`langs`, `events`,
`active-app`, `storage`, `connection`, `session`, `cache`, `timer`,
`logger`) y marcas historicas en docs de diseno antiguas.
- Archivos documentales de revision retirados. Las conclusiones vigentes quedan
absorbidas por `src/uix/active_architecture.md`, los README de capa y
`src/uix/contracts.ts`.
- Limpieza Eidos CSS/runtime aplicada: `index.css` ya solo importa fonts,
`generated/base.css`, `archetypes.css`, `events.css` y recipes activas.
Se retiraron CSS historicos de `contracts/`, `themes/base/`,
`tokens/motion.css`, `tokens/index.css` y los token files de componentes.
- Migracion Eidos recipe tokens aplicada: los aliases `--{component}-*`
viven en `EidosConfig.recipes`, el tema base los define en
`src/uix/eidos/lib/recipes/base.ts`, y `generated/base.css` los publica
desde `npm run generate:eidos-css`.
- Superficie de consulta de recipes aplicada: `ActiveEidos.listRecipes()` y
`getRecipeTokens(component)` exponen aliases para editores de theme sin
inspeccionar CSS ni devolver handles mutables del config interno.
- La shell `/uix` ya no carga fuentes remotas; reutiliza las fuentes locales
de Eidos (`Instrument Sans`, `Azeret Mono`) para que las validaciones
Playwright no dependan de red externa.
- `src/uix/contracts.test.ts` ahora incluye guardias de regresion para que
`ActiveUix` no vuelva a bootear Soma/Eidos, los providers Soma no usen
`registerContract/registerPart`, y la shell `/uix` no escriba `prefs.theme`.
- Naming `langs`: constantes runtime y diagnosticos ya usan `langs` /
`langs.mono`; se corrigieron menciones documentales residuales `[lang]` y
`lang.mono`.
- Contrato directo fuera de `ActiveUix` aclarado: `EngineSemantic` con visual
activo necesita `dom` o `projector` y falla con `SemaConfigError` si faltan;
`ADom` directo solo usa `disabledDom` cuando el caller lo pide.
- `src/arts/prefs/README.md` reescrito al modelo actual schema-based. Se
elimina la arquitectura historica de capabilities como guia principal y se
marca `themeDimension`/`densityDimension` como legacy/custom fuera de UIX.
- `src/uix/morfo/README.md` actualizado: fija `translations`, `commonRef`,
registro via `registerMorfo` y `soma.runtime(...)` como contrato vigente.
- Commits nuevos empujados:
- `694eb5c5` — `Clarify prefs projection contract`
- `223cdf9e` — `Align sema docs with channel ownership`
- `3dc775f4` — `Update UIX architecture notes`
- `b1215549` — `Fix UIX docs theme and popover dismiss`
- `6da10987` — `Prune legacy Eidos CSS runtime`
- `d822597f` — `Generate Eidos recipe tokens from config`
- `65958538` — `Expose Eidos recipe token queries`
- `4233be62` — `Update UIX continuation notes`
- `2df58074` — `Use local fonts in UIX docs`
- `8ad04714` — `Refresh UIX architecture docs`
- `e2ba371b` — `Add UIX architecture regression guards`
- `71e05765` — `Align langs diagnostic wording`
- `607dfdbb` — `Clarify direct UIX service contracts`
- `475ac775` — `Refresh prefs architecture docs`
- Validado de nuevo:
- `npx vitest run src/uix/contracts.test.ts src/arts/prefs/test/dom-projection.test.ts src/uix/active-uix/active-uix.svelte.test.ts src/uix/eidos/active-eidos.test.ts src/uix/soma/runtime.svelte.test.ts` -> 79 tests OK.
- `npx vitest run src/uix/sema/engine.test.ts src/uix/soma/runtime.svelte.test.ts` -> 48 tests OK.
- `npx vitest run src/uix/eidos/active-eidos-config.test.ts src/uix/eidos/generated-css.test.ts src/uix/eidos/active-eidos.test.ts src/uix/contracts.test.ts` -> 52 tests OK.
- `npm run check` -> 0 errores, 0 warnings.
- `npx vitest run src/uix/contracts.test.ts` -> 12 tests OK.
- `npm run check` tras wording `langs` -> 0 errores, 0 warnings.
- Playwright `/uix`: toggle dark actualiza `html[data-theme="base-dark"]`,
`html[data-mode="dark"]` y mantiene `html[data-density="comfortable"]`;
sin `pageerror`, sin errores de consola y sin `requestfailed`.
## Estado validado
- `ActiveUix` ya no crea ni conoce `Soma` ni `Eidos`.
- Solo `ActiveApp` y `createActiveUix(...)` standalone crean servicios compartidos.
- `attachActiveUix(app)` reutiliza servicios de `ActiveApp` y falla temprano si faltan `langs` o `dom`.
- El servicio runtime de traducciones se llama `langs`. No confundir:
- `prefs.language` alimenta `langs`.
- `prefs.locale` alimenta `format`.
- `prefs.direction`, `prefs.motion`, `prefs.sound` y `prefs.haptic` se
proyectan mediante `createActivePrefsDomProjection(...)`.
- `events` es el nombre publico del motor perceptivo en `ActiveUix`; `semantic` queda solo como payload de `morfo.events[].semantic`.
- `ActiveEidos` queda aplanado: no existe engine visual separado ni directorio `engine` bajo Eidos.
- Los helpers de configuracion/render/persistencia de Eidos viven en `src/uix/eidos/lib`.
- `ActiveEidos` asume configuracion, validacion, contrato CSS, render, persistencia y scope visual.
- Shells UIX deben pasar modo/densidad visuales a `ActiveEidos` mediante
`modeSource`/`densitySource`; no escribir `prefs.theme`.
- Los componentes Eidos siguen congelados salvo orden explicita.
Validaciones ejecutadas en esta fase:
- `npx vitest run src/uix/eidos/active-eidos.test.ts src/uix/eidos/active-eidos-config.test.ts` -> 37 tests OK.
- `npx vitest run src/arts/adom/test/active-dom.test.ts src/uix/soma/runtime.svelte.test.ts src/uix/morfo/registry.test.ts src/uix/sema/resolver.test.ts src/uix/sema/chans/sound.test.ts src/uix/sema/chans/visual.test.ts src/uix/eidos/active-eidos.test.ts src/uix/eidos/active-eidos-config.test.ts src/uix/contracts.test.ts` -> 115 tests OK.
- `npm run check` -> 0 errores, 0 warnings.
## Arquitectura acordada
La regla central queda asi:
```text
ActiveApp o ActiveUix standalone crean servicios.
ActiveUix expone servicios y prefs.
Morfo declara contrato y translations.
Soma consume ActiveUix/Soma scope y transcribe morfo al DOM via uix.dom.
Sema/events emite ocurrencias perceptivas; no debe inventar servicios.
ActiveEidos consume ActiveUix y resuelve config/tokens/CSS runtime.
Los componentes no crean servicios compartidos.
```
`portal` queda como preferencia/target generico de `ActiveUix`; Soma lo adapta
a su `portalTo`. No usar nombres como `somaPortalTo` en `ActiveUix`.
## P1 cerrado
1. Ownership DOM P1 cerrado.
- Corregido: `TextSelection` ya escribe/restaura `user-select` via `ActiveDom.apply`.
- Corregido: announcers/live regions de Soma y descripciones ocultas de date/time
usan `ActiveDom.writeNode/writeText/removeNode`.
- Correcto: `ActiveUix` prefs, `SomaRuntime`, `VisualChannel`/`DomSignalProjector`
y `ActiveEidos` usan `ActiveDom`.
- Barrido P1 sin escrituras directas de produccion restantes; quedan lecturas DOM
y fixtures de tests.
2. Tabla de contratos minimos cerrada como codigo/tests:
`src/uix/contracts.ts` + `src/uix/contracts.test.ts` cubren `ActiveUix`,
`SomaRuntime`, `EngineSemantic/events`, `ActiveEidos` y `Morfo`.
3. Sema queda purgado de las slices visuales `motion`, `color` y `presence`.
El mapa canonico resuelve solo `hold`, `sound` y `haptic`; Eidos reacciona
visualmente a `data-event-*` y a sus propios tokens CSS.
4. Naming `langs` revisado en mensajes/docs/tipos principales. Quedan solo
usos tecnicos validos (`<script lang="ts">`, `v.langRef(...)`) o menciones
historicas explicitas.
5. `attachActiveUix(app)` no crea sustitutos si faltan servicios requeridos.
6. `SoundChannel` ya no registra listeners globales en el constructor; prima
el contexto en `prepare()` solo cuando una senal sonora entra en el gesto.
7. `createActivePrefsDomProjection(...)` proyecta `dir`, `data-motion`,
`data-sound` y `data-haptic`; `ActiveEidos` proyecta `data-theme`,
`data-mode` y `data-density`.
8. `SomaRuntime`, `registerMorfo` y `applyMapOverrides` tienen optimizaciones
basicas de churn/copia aplicadas.
## Pendiente P2
1. Soma: la API canonica publica de parte es `runtime.part(...)`.
`registerContract(...)` ya no se llama desde Soma; `registerMorfo(...)` lo
registra todo. `createAttrs(...)` queda solo como helper tipado para
`querySelector`/tooling, no como mecanismo runtime.
2. Morfo: los atributos `data-*` con valor libre ya se modelan con
`emit: 'value'`; `progress/meter` declaran `data-value`, `data-min` y
`data-max` en morfo y `SomaRuntime` lo cubre con test dedicado.
3. Morfo translations: mantener `translations` en el morfo, `commonRef` para
textos compartidos y `langs.ts` solo como constantes imperativas legacy.
4. Frontend/ActiveApp: cerrado para esta fase. `frontend` es servicio legacy
opt-in; no pertenece al core de `ActiveApp` ni a UIX. Las preferencias
transversales se proyectan desde `arts/prefs`; las visuales pertenecen a
`ActiveEidos`.
5. ActiveApp docs: actualizado que `langs`, `dom`, `format`, `events` y
`frontend` son servicios opt-in, y que `frontend` no debe usarse para
codigo UIX nuevo.
## Pendiente Eidos
1. Primitivas visuales sin tocar componentes: `layout` ya queda incorporado
al `EidosConfig` con `containerWidth`, `containerPaddingInline`,
`contentWidth` y `aspectRatio`, y se genera en CSS/contrato como
`--container-width-*`, `--container-padding-inline`, `--content-width-*`
y `--aspect-ratio-*`.
2. Mantener `EidosConfig` como authoring object persistible y CSS-only como
modo valido mediante `themeSource: 'css'`.
3. Density queda como primitive bridge: `scale`, `spaceScale`, `controlScale`
y `contentScale` para `compact`, `comfortable`, `spacious`; `ActiveEidos`
proyecta `data-density` y Eidos publica aliases activos como
`--density-space-scale`.
4. `src/uix/eidos/generated/base.css` queda como primer artefacto CSS generado
desde `EidosConfig` base mediante `npm run generate:eidos-css`; `index.css`
lo importa como foundation estatica.
5. Cerrado: los tokens per-component de las recipes activas quedan como
aliases estables y authorables en `EidosConfig.recipes`.
6. Los CSS historicos de `contracts/` y `themes/base/` quedan retirados del
arbol activo. El contrato se publica desde `ActiveEidos.getCssContract()` /
`renderContractCss()` y el base desde `generated/base.css`.
7. `tokens/` ya no forma parte del entrypoint estatico. Las recipes CSS
consumen los mismos custom properties, pero los valores salen de
`generated/base.css`.
8. `ActiveEidos.listRecipes()` y `getRecipeTokens(component)` exponen los
aliases para editores de theme sin leer CSS. Pendiente: afinar tipado
estructurado de `recipes` solo si una recipe lo necesita; por ahora el
contrato plano evita una jerarquia grande prematura.
9. No reintroducir engine visual separado, carpeta `engine`, ni wrapper `Eidos` sin
contrato propio.
## Pendiente de limpieza
- Validacion navegador `/uix` cerrada despues de mover recipe tokens y retirar
fuentes remotas: carga sin `requestfailed`, sin errores de consola y el
toggle dark sigue aplicando `data-theme`, `data-mode` y estilos visuales.
- Siguiente foco recomendado: si se mantiene el modulo general de Eidos sin
tocar componentes, solo queda afinar el tipado de `recipes` cuando una
recipe necesite estructura real. Si se abre trabajo de componentes, reauditar
primero la migracion option C y no mezclarla con cambios de runtime.
- Warnings de toast resueltos; `npm run check` queda en 0 errores / 0 warnings.
- No commitear logs temporales: `.codex-vite-dialog*.log`, `debug.log`, `md`.
- Antes de seguir con componentes, releer `src/uix/active_architecture.md`,
`src/uix/active-uix/README.md`, `src/uix/eidos/README.md`,
`src/uix/soma/README.md` y este archivo.

Powered by TurnKey Linux.