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

14 KiB

Continue

Fecha de corte: 2026-05-15. Rama: active-uix.

Actualizacion 2026-05-15:

  • Intent queda como vocabulario unico en src/uix/intent.ts. No existen alias EidosIntent, UixIntent, ToastIntent ni SemaIntent; Sema usa IntentBinding / IntentPolicy cuando necesita especializar el contrato del evento, pero el intent canonico no pertenece a una capa concreta.
  • MorfoData valida nombres data-*: solo acepta atributos publicos lowercase kebab-case; data-_* queda reservado para estado privado del provider y no puede declararse en morfo.
  • frontend queda eliminado del arbol activo: no hay src/arts/frontend, factory defineActiveFrontend, alias $frontend, ruta /active/docs/fend ni servicio services.frontend. Las referencias documentales restantes son notas explicitas de retirada o usos genericos de la palabra frontend.
  • themeDimension(...) y densityDimension(...) fueron retiradas del catalogo publico de $prefs. Las preferencias visuales theme/mode/density son entradas de ActiveEidos; prefs mantiene solo dimensiones transversales o custom via primitivas genericas.
  • SemaActiveChannel fue eliminado. La unica fuente publica para canales es SemaChannelId.
  • Verificaciones ejecutadas despues de la retirada:
    • npm run check -> 0 errores, 0 warnings.
    • npm run test -> 165 archivos, 2002 tests OK.
  • Commits nuevos empujados:
    • a4cbe0c0 — Tighten intent and morfo contracts
    • fbacd113 — Remove frontend art
    • 68dd40ef — Remove visual prefs dimensions

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; las dimensiones visuales theme/mode/density pertenecen a ActiveEidos.
  • src/uix/morfo/README.md actualizado: fija translations, commonRef, registro via registerMorfo y soma.runtime(...) como contrato vigente.
  • frontend retirado como artefacto: no queda factory, alias ni ruta activa.
  • Validacion global ejecutada: npm run check, tests focales UIX/arts y npm run build pasan. Solo queda el warning de chunks grandes del build.
  • Eidos general queda cerrado sin tocar componentes: no hay EngineEidos, wrapper Eidos, eidos/engine ni eidos/core/headless; se anade guardia de regresion en contracts.test.ts.
  • recipes queda como RecipeTokenSet plano por decision: subir a tipo estructurado solo cuando exista builder/consumer real que lo necesite.
  • 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.
  9. frontend retirado; ActiveApp ya no puede declarar un servicio visual shell heredado.
  10. themeDimension/densityDimension retiradas; el catalogo $prefs no ofrece dimensiones visuales UIX.

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. frontend no existe como artefacto activo ni como servicio opt-in. Las preferencias transversales se proyectan desde arts/prefs; las visuales pertenecen a ActiveEidos.
  5. ActiveApp docs: actualizado que langs, dom, format y events son servicios opt-in; no hay servicio visual shell heredado.

Eidos cerrado para modulo general

  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. El tipado plano de recipes es intencional mientras no haya builder/consumer estructurado.
  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: reauditar componentes Eidos option C solo cuando se autorice explicitamente. No mezclar esa fase con runtime ni arquitectura general.
  • 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.