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

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.
  • Referencias legacy de frontend afinadas: su densidad se documenta como vocabulario compatible para migracion, no como flujo desde prefs.density.
  • 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
    • 35958a49 — Clarify morfo translation contract
    • bd37e5dd — Clarify legacy frontend density 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:

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.