diff --git a/continue.md b/continue.md index 32b1e6119..44ea9b6b0 100644 --- a/continue.md +++ b/continue.md @@ -81,6 +81,16 @@ Actualizacion 2026-05-16: `~sium`. - Ninguna feature nueva entra si solo duplica Zod/Valibot sin consumidor propio de Active. +- Soma public surface: + - Cerrado: el wrapper publico de Select pasa de + `components/select-provider.svelte` a `components/select.svelte`. El + runtime interno sigue en `select-provider.svelte.ts`. + - Cerrado: `Command`, `Form` y `Table` ya no reexportan motores de `$libs`. + Los consumidores deben importar `computeFuzzyScore` desde `$libs/strings`, + `createForm` desde `$libs/forms` y `createTable`/tipos desde + `$libs/datagrid`. + - Guardia nueva en `src/uix/contracts.test.ts`: ningun barrel publico de Soma + puede exportar desde `*provider.svelte` ni desde `$libs/*`. Actualizacion 2026-05-15: @@ -89,8 +99,8 @@ Actualizacion 2026-05-15: - Las clases runtime internas `DialogProvider`, `DrawerProvider` y `PopoverProvider` dejan de exportarse desde los barrels publicos; los wrappers siguen usandolas por import directo. - - `computeCommandScore` sigue reexportado desde Command por DX, pero el - algoritmo vive como `computeFuzzyScore` en `src/libs/strings`. + - `computeCommandScore` ya no se reexporta desde Command; el algoritmo vive + como `computeFuzzyScore` en `src/libs/strings`. - `table-core` se mueve a `src/libs/datagrid` con su test. - `form-core` se mueve a `src/libs/forms`, usa el Standard Schema comun de `src/libs/standard-schema.ts`, elimina la copia local de Soma y anade tests @@ -99,7 +109,7 @@ Actualizacion 2026-05-15: existen en el arbol activo. - `SelectType`/`ScrollAlignment` y el resto de tipos publicos de componentes salen de `types.ts`; los barrels ya no exportan contratos desde - `*-provider.svelte.ts` (excepto el wrapper Svelte publico de Select). + `*-provider.svelte.ts`. - `Dismissal` y `SafePolygon` usan `uix.timers` cuando Soma lo tiene disponible, con fallback nativo solo para uso standalone fuera de UIX. - Cobertura nueva para Combobox: selección single/multiple, `inputValue` y @@ -291,8 +301,8 @@ Actualizacion 2026-05-15: - `drag-drop-provider.svelte.test.ts` -> 2 tests OK. - guardia `*-provider.svelte.ts` sin test directo -> `NO_MISSING_PROVIDER_TESTS`. - guardia `rg "from './.*provider\\.svelte'" src/uix/soma/components -g 'exports.ts'` - -> solo queda `select/components/select-provider.svelte`, que es wrapper - publico, no runtime provider. + -> 0 resultados; Select ya no conserva el wrapper publico con nombre + `select-provider.svelte`. - Commits nuevos empujados: - `a3bcb66c` — `Refresh UIX audit follow-up docs` - `25870b4e` — `Expand Soma component coverage` diff --git a/src/uix/contracts.test.ts b/src/uix/contracts.test.ts index b954c5bdc..8008948e0 100644 --- a/src/uix/contracts.test.ts +++ b/src/uix/contracts.test.ts @@ -315,6 +315,26 @@ describe('UIX layer contracts', () => { expect(missingExports).toEqual([]); }); + it('guards Soma public barrels from provider implementation filenames', () => { + const violations = collectPublicSomaComponentDirs() + .map((dir) => join(HERE, 'soma', 'components', dir, 'exports.ts')) + .filter((file) => + /from ['"][^'"]*provider\.svelte(?:\.ts)?['"]/.test(readFileSync(file, 'utf8')) + ) + .map((file) => file.replace(REPO_ROOT, '')); + + expect(violations).toEqual([]); + }); + + it('guards Soma public barrels from shared lib facades', () => { + const violations = collectPublicSomaComponentDirs() + .map((dir) => join(HERE, 'soma', 'components', dir, 'exports.ts')) + .filter((file) => /from ['"]\$libs\//.test(readFileSync(file, 'utf8'))) + .map((file) => file.replace(REPO_ROOT, '')); + + expect(violations).toEqual([]); + }); + it('guards Soma public component modules against Morfo soma scope', () => { expect(collectPublicSomaComponentDirs()).toEqual(collectMorfoComponentNamesByScope('soma')); }); diff --git a/src/uix/soma/components/command/exports.ts b/src/uix/soma/components/command/exports.ts index d7c31854c..8a165a788 100644 --- a/src/uix/soma/components/command/exports.ts +++ b/src/uix/soma/components/command/exports.ts @@ -13,8 +13,6 @@ export { default as Empty } from './components/command-empty.svelte'; export { default as Loading } from './components/command-loading.svelte'; export { default as Separator } from './components/command-separator.svelte'; -export { computeFuzzyScore as computeCommandScore } from '$libs/strings'; - export type { CommandFilterFn, CommandApi, diff --git a/src/uix/soma/components/form/README.md b/src/uix/soma/components/form/README.md index f9017499f..0cb382668 100644 --- a/src/uix/soma/components/form/README.md +++ b/src/uix/soma/components/form/README.md @@ -24,7 +24,7 @@ No single library covers all axes. `soma/Form` is the only one built on **Svelte ```svelte @@ -330,7 +332,7 @@ The unique columns soma wins: **runes-native**, **UI primitives integrated**, ** ```svelte