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.
9.9 KiB
9.9 KiB
Continue
Fecha de corte: 2026-05-13. 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/prefsmediantecreateActivePrefsDomProjection(...), no enActiveUix. - Documentacion de ecosistema actualizada en
src/uix/*ysrc/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 ysrc/uix/contracts.ts. - Limpieza Eidos CSS/runtime aplicada:
index.cssya solo importa fonts,generated/base.css,archetypes.css,events.cssy recipes activas. Se retiraron CSS historicos decontracts/,themes/base/,tokens/motion.css,tokens/index.cssy los token files de componentes. - Migracion Eidos recipe tokens aplicada: los aliases
--{component}-*viven enEidosConfig.recipes, el tema base los define ensrc/uix/eidos/lib/recipes/base.ts, ygenerated/base.csslos publica desdenpm run generate:eidos-css. - Superficie de consulta de recipes aplicada:
ActiveEidos.listRecipes()ygetRecipeTokens(component)exponen aliases para editores de theme sin inspeccionar CSS ni devolver handles mutables del config interno. - Commits nuevos empujados:
694eb5c5—Clarify prefs projection contract223cdf9e—Align sema docs with channel ownership3dc775f4—Update UIX architecture notesb1215549—Fix UIX docs theme and popover dismiss6da10987—Prune legacy Eidos CSS runtimed822597f—Generate Eidos recipe tokens from config65958538—Expose Eidos recipe token queries
- 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.- Playwright
/uix: toggle dark actualizahtml[data-theme="base-dark"],html[data-mode="dark"]y mantienehtml[data-density="comfortable"]; sinpageerror. Los unicos recursos bloqueados son fuentes externas por sandbox de red (fonts.googleapis.com,api.fontshare.com).
Estado validado
ActiveUixya no crea ni conoceSomaniEidos.- Solo
ActiveAppycreateActiveUix(...)standalone crean servicios compartidos. attachActiveUix(app)reutiliza servicios deActiveAppy falla temprano si faltanlangsodom.- El servicio runtime de traducciones se llama
langs. No confundir:prefs.languagealimentalangs.prefs.localealimentaformat.prefs.direction,prefs.motion,prefs.soundyprefs.hapticse proyectan mediantecreateActivePrefsDomProjection(...).
eventses el nombre publico del motor perceptivo enActiveUix;semanticqueda solo como payload demorfo.events[].semantic.ActiveEidosqueda aplanado: no existe engine visual separado ni directorioenginebajo Eidos.- Los helpers de configuracion/render/persistencia de Eidos viven en
src/uix/eidos/lib. ActiveEidosasume configuracion, validacion, contrato CSS, render, persistencia y scope visual.- Shells UIX deben pasar modo/densidad visuales a
ActiveEidosmediantemodeSource/densitySource; no escribirprefs.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
- Ownership DOM P1 cerrado.
- Corregido:
TextSelectionya escribe/restaurauser-selectviaActiveDom.apply. - Corregido: announcers/live regions de Soma y descripciones ocultas de date/time
usan
ActiveDom.writeNode/writeText/removeNode. - Correcto:
ActiveUixprefs,SomaRuntime,VisualChannel/DomSignalProjectoryActiveEidosusanActiveDom. - Barrido P1 sin escrituras directas de produccion restantes; quedan lecturas DOM y fixtures de tests.
- Corregido:
- Tabla de contratos minimos cerrada como codigo/tests:
src/uix/contracts.ts+src/uix/contracts.test.tscubrenActiveUix,SomaRuntime,EngineSemantic/events,ActiveEidosyMorfo. - Sema queda purgado de las slices visuales
motion,colorypresence. El mapa canonico resuelve solohold,soundyhaptic; Eidos reacciona visualmente adata-event-*y a sus propios tokens CSS. - Naming
langsrevisado en mensajes/docs/tipos principales. Quedan solo usos tecnicos validos (<script lang="ts">,v.langRef(...)) o menciones historicas explicitas. attachActiveUix(app)no crea sustitutos si faltan servicios requeridos.SoundChannelya no registra listeners globales en el constructor; prima el contexto enprepare()solo cuando una senal sonora entra en el gesto.createActivePrefsDomProjection(...)proyectadir,data-motion,data-soundydata-haptic;ActiveEidosproyectadata-theme,data-modeydata-density.SomaRuntime,registerMorfoyapplyMapOverridestienen optimizaciones basicas de churn/copia aplicadas.
Pendiente P2
- 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 paraquerySelector/tooling, no como mecanismo runtime. - Morfo: los atributos
data-*con valor libre ya se modelan conemit: 'value';progress/meterdeclarandata-value,data-minydata-maxen morfo ySomaRuntimelo cubre con test dedicado. - Morfo translations: mantener
translationsen el morfo,commonRefpara textos compartidos ylangs.tssolo como constantes imperativas legacy. - Frontend/ActiveApp: cerrado para esta fase.
frontendes servicio legacy opt-in; no pertenece al core deActiveAppni a UIX. Las preferencias transversales se proyectan desdearts/prefs; las visuales pertenecen aActiveEidos. - ActiveApp docs: actualizado que
langs,dom,format,eventsyfrontendson servicios opt-in, y quefrontendno debe usarse para codigo UIX nuevo.
Pendiente Eidos
- Primitivas visuales sin tocar componentes:
layoutya queda incorporado alEidosConfigconcontainerWidth,containerPaddingInline,contentWidthyaspectRatio, y se genera en CSS/contrato como--container-width-*,--container-padding-inline,--content-width-*y--aspect-ratio-*. - Mantener
EidosConfigcomo authoring object persistible y CSS-only como modo valido mediantethemeSource: 'css'. - Density queda como primitive bridge:
scale,spaceScale,controlScaleycontentScaleparacompact,comfortable,spacious;ActiveEidosproyectadata-densityy Eidos publica aliases activos como--density-space-scale. src/uix/eidos/generated/base.cssqueda como primer artefacto CSS generado desdeEidosConfigbase mediantenpm run generate:eidos-css;index.csslo importa como foundation estatica.- Cerrado: los tokens per-component de las recipes activas quedan como
aliases estables y authorables en
EidosConfig.recipes. - Los CSS historicos de
contracts/ythemes/base/quedan retirados del arbol activo. El contrato se publica desdeActiveEidos.getCssContract()/renderContractCss()y el base desdegenerated/base.css. tokens/ya no forma parte del entrypoint estatico. Las recipes CSS consumen los mismos custom properties, pero los valores salen degenerated/base.css.ActiveEidos.listRecipes()ygetRecipeTokens(component)exponen los aliases para editores de theme sin leer CSS. Pendiente: afinar tipado estructurado derecipessolo si una recipe lo necesita; por ahora el contrato plano evita una jerarquia grande prematura.- No reintroducir engine visual separado, carpeta
engine, ni wrapperEidossin contrato propio.
Pendiente de limpieza
- Siguiente foco recomendado: validar en navegador que
/uixsigue cargando con los recipe tokens generados y que el cambio de theme/mode sigue aplicandodata-theme,data-modey estilos visuales. - Warnings de toast resueltos;
npm run checkqueda 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.mdy este archivo.