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/.claude/settings.local.json

198 lines
13 KiB

{
"permissions": {
"allow": [
"Bash(grep -v \"$lib/internal\")",
"Bash(grep \"from.*label\" g:/dev/svelte/vicen/src/uix/acel/field/components/*.svelte)",
"Bash(grep -n \"from\" g:/dev/svelte/vicen/src/uix/acel/field/components/*.svelte)",
"Bash(sed -i 's|from \"\"\\\\./field\\\\.svelte\"\"|from \"\"../field.svelte\"\"|g' *.svelte)",
"Bash(sed -i 's|from \"\"\\\\.\\\\.\\\\/\\\\.\\\\.\\\\/utilities\"\"|from \"\"../../utilities/index\"\"|g' *.svelte)",
"Bash(sed -i 's|from \"\"\\\\.\\\\/\\\\.\\\\.\\\\/types\"\"|from \"\"../types\"\"|g' *.svelte)",
"Bash(grep -n \"new PresenceManager\" /g/dev/svelte/vicen/src/uix/terra/**/*.svelte.ts)",
"Bash(find /g/dev/svelte/vicen/src/uix/terra/base -name README* -o -name *.md)",
"Bash(grep -n \"import.*watch\" src/uix/terra/**/*.svelte.ts)",
"Bash(do)",
"Bash(sed -i 's/new Context</createTerraContext</g' \"$f\")",
"Bash(echo \"Done: $f\")",
"Bash(node:*)",
"Bash(ls -d \"/g/dev/svelte/vicen/src/uix/terra\"/*/)",
"Bash(head -20 /g/dev/svelte/vicen/src/uix/terra/button/*.svelte)",
"Bash(head -30 /g/dev/svelte/vicen/src/uix/terra/accordion/*.svelte.ts)",
"Bash(grep -v '^\\\\.$')",
"Bash(grep -v '^\\\\.\\\\.$')",
"Bash(grep -r \"$terra\" \"G:/dev/svelte/vicen\" --include=\"*.js\" --include=\"*.ts\" --include=\"*.json\")",
"Bash(grep:*)",
"Bash(cp:*)",
"Bash(sed -i \"s|from ''\\\\.\\\\./config/terra-config\\\\.ts''|from ''../../config/terra-config.ts''|g\" \"G:/dev/svelte/vicen/src/uix/terra/base/direction/direction.svelte.ts\")",
"Bash(sed -i 's|from \"\"\\\\.\\\\./config/prop-resolvers\\\\.ts\"\"|from \"\"../../config/prop-resolvers.ts\"\"|g' \"G:/dev/svelte/vicen/src/uix/terra/base/portal/portal.svelte\")",
"Bash(__NEW_LINE_9f9527b2dc89162d__ LAYERS=\"G:/dev/svelte/vicen/src/uix/terra/layers\")",
"Bash(__NEW_LINE_9f9527b2dc89162d__ mv:*)",
"Bash(mv \"$LAYERS/escape-layer\" \"$LAYERS/escape\")",
"Bash(mv \"$LAYERS/presence-layer\" \"$LAYERS/presence\")",
"Bash(mv \"$LAYERS/text-selection-layer\" \"$LAYERS/text-selection\")",
"Bash(__NEW_LINE_a65563a60047bfcf__ LAYERS=\"G:/dev/svelte/vicen/src/uix/terra/layers\")",
"Bash(cp -r \"$LAYERS/floating-layer\" \"$LAYERS/floating\")",
"Bash(rm -rf \"$LAYERS/floating-layer\")",
"Bash(__NEW_LINE_bf7543f9714a9de4__ FS=\"G:/dev/svelte/vicen/src/uix/terra/layers/focus-scope\")",
"Bash(PR=\"G:/dev/svelte/vicen/src/uix/terra/layers/presence\")",
"Bash(__NEW_LINE_bf7543f9714a9de4__ mv:*)",
"Bash(mv \"$PR/presence.svelte.ts\" \"$PR/use-presence.svelte.ts\")",
"Bash(sed -i \"s|''./focus-scope\\\\.svelte\\\\.js''|''./use-focus-scope.svelte.js''|g\" \"G:/dev/svelte/vicen/src/uix/terra/layers/focus-scope/focus-scope-manager.ts\" \"G:/dev/svelte/vicen/src/uix/terra/layers/focus-scope/focus-scope.svelte\")",
"Bash(__NEW_LINE_543cbdcf7d13aeac__ sed:*)",
"Bash(__NEW_LINE_95e83c596e19d973__ LAYERS=\"G:/dev/svelte/vicen/src/uix/terra/layers\" __NEW_LINE_95e83c596e19d973__ find \"$LAYERS\" \\\\\\( -name \"*.ts\" -o -name \"*.svelte\" \\\\\\))",
"Bash(xargs sed:*)",
"Bash(__NEW_LINE_9aa46f2d17c41a3d__ PRES_UTILS=\"G:/dev/svelte/vicen/src/uix/terra/utils/presence\")",
"Bash(PRES_LAYER=\"G:/dev/svelte/vicen/src/uix/terra/layers/presence\")",
"Bash(__NEW_LINE_9aa46f2d17c41a3d__ cp:*)",
"Bash(cp \"$PRES_UTILS/presence-manager.svelte.ts\" \"$PRES_LAYER/\")",
"Bash(rm -rf \"$PRES_UTILS\")",
"Bash(pnpm check:*)",
"Bash(__NEW_LINE_ec548c10481f74d5__ TERRA=\"G:/dev/svelte/vicen/src/uix/terra\" __NEW_LINE_ec548c10481f74d5__ find \"$TERRA\" \\\\\\( -name \"*.ts\" -o -name \"*.svelte.ts\" -o -name \"*.svelte\" \\\\\\))",
"Bash(pnpm svelte-kit:*)",
"Bash(__NEW_LINE_9a92beff9c90538f__ TERRA=\"G:/dev/svelte/vicen/src/uix/terra\" __NEW_LINE_9a92beff9c90538f__ find \"$TERRA\" \\\\\\( -name \"*.ts\" -o -name \"*.svelte.ts\" -o -name \"*.svelte\" \\\\\\))",
"Bash(git -C G:/dev/svelte/vicen status --short)",
"Bash(git:*)",
"Bash(ls:*)",
"Bash(npm install:*)",
"Bash(xargs wc:*)",
"Bash(wc:*)",
"Bash(sed:*)",
"Bash(find:*)",
"Bash(cat)",
"Bash(chmod +x /tmp/audit.sh)",
"Bash(bash /tmp/audit.sh)",
"Bash(chmod +x /tmp/final_check.sh)",
"Bash(bash /tmp/final_check.sh)",
"Bash(awk '{print $NF}')",
"Bash(cp -r G:/dev/svelte/vicen/src/uix/terra/config G:/dev/svelte/vicen/src/uix/terra/system)",
6 months ago
"Bash(cp -r G:/dev/svelte/vicen/src/uix/air/config G:/dev/svelte/vicen/src/uix/air/system)",
"WebFetch(domain:www.radix-ui.com)",
"WebSearch",
"WebFetch(domain:ui.shadcn.com)",
"WebFetch(domain:github.com)",
"WebFetch(domain:bits-ui.com)",
"WebFetch(domain:www.shadcn.io)",
"WebFetch(domain:chakra-ui.com)",
Add air components (toggle-group, toolbar, avatar, meter, collapsible), fix CSS audit issues, fix combobox scroll, rebuild documentation Components: - Add ToggleGroup air wrapper (surface/outline/ghost variants, 6 colors, sound) - Add Toolbar air wrapper (Provider, Group, GroupItem, Button, Link + semantics) - Add Avatar air wrapper (6 sizes, solid/soft/outline, 6 colors, 4 radii) - Add Meter air wrapper (3 sizes, 6 colors, animated fill bar) - Add Collapsible air wrapper (trigger, animated content, expansion semantics) CSS audit fixes: - Rename 65 public resolver vars to private (--_air-*) in checkbox, switch - Fix button radius privatization and warning solid-fg - Fix slider circular reference in default tokens - Add disabled-opacity tokens to button, toggle, tabs, toggle-group - Tokenize combobox chip styles (12 direct semantic refs → component tokens) - Fix tabs stack-gap public override → private resolver Bug fix: - Fix combobox scroll-on-open: replace scrollIntoView() with viewport-scoped scroll in select.svelte.ts to prevent page scroll when opening dropdown Documentation rebuild (19 → 9 normative + 5 archived): - Consolidate 15 air docs into 6 (README, ARCHITECTURE, TOKENS, VISUAL_LANGUAGE, SEMANTICS, IMPLEMENTATION_GUIDE) - Archive 5 historical docs to _archive/ - Fix config/ → system/ references across terra and air docs - Update component inventory (13 → 30 components) - Fix font documentation (add Lora serif, update 12-step scale) - Absorb SVELTE5_BINDABLE_PATTERN into terra README - Update air hub page with all new component entries Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
6 months ago
"WebFetch(domain:ark-ui.com)",
"Bash(xargs -I{} basename {})",
"Bash(xargs -I {} sh -c 'echo \"=== {} ===\" && grep \"air\\\\.interaction\\\\.play\" {}')",
"WebFetch(domain:www.shadcn-svelte.com)",
"WebFetch(domain:next.shadcn-svelte.com)",
"WebFetch(domain:www.bits-ui.com)",
"WebFetch(domain:shadcn-svelte.com)",
"WebFetch(domain:raw.githubusercontent.com)",
"Bash(curl -sL \"https://api.github.com/search/code?q=pagination-link+repo:huntabyte/shadcn-svelte+extension:svelte\")",
"Bash(timeout 10 npx vite dev --port 5173)",
"Bash(curl -s http://localhost:5175/test/air/color-picker)",
"Bash(curl -s http://localhost:5173/test/air/color-picker)",
"Bash(curl -s http://localhost:5174/test/air/color-picker)",
"Bash(npx vite:*)",
"Bash(bash /tmp/layer_stats.sh)",
soma: 12 components, architecture docs, naming fixes, form tier complete Components (12): - Accordion (keyboard nav, single/multiple, collapsible, loop) - Checkbox (indeterminate, group, readonly) - Collapsible - Combobox (input + floating listbox, consumer-side filtering) - Dialog (variant dialog/alertdialog, modal, nested, animations, forceMount) - DropdownMenu (15 parts, submenus, typeahead, checkbox/radio items) - Popover (floating, openOnHover, modal, custom anchor) - RadioGroup (roving tabindex, orientation, readonly) - Select (single/multiple, typeahead, scroll-into-view, hidden select) - Slider (drag, keyboard, single/range, ticks, vertical) - Switch (hidden input, data-checked) - Tooltip (skip-delay group, 3-state, hover/focus) Architecture: - State class files renamed: {name}.svelte.ts → {name}-provider.svelte.ts (avoids Vite module resolution ambiguity with .svelte wrappers) - Export name standardized: always Provider, never Root - COMPONENT_GUIDE.md: step-by-step implementation guide with checklist - SOMA_ARCHITECTURE.md: updated structure, anti-patterns, improvements table - README.md: updated naming, file structure, inventory - context.ts: error message uses Provider not Root - Demo index page at /test/soma/ Bug fixes: - DropdownMenu trigger missing onclick/onkeydown in props - DropdownMenu interactOutsideBehavior always 'close' (not modal-dependent) - Checkbox getContext in event handler → captured in constructor - Select context not found → was Vite cache issue (not naming) - ScrollLock unlock path - Floating wrapper z-index: auto override Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
6 months ago
"Bash(cat:*)",
"Bash(curl -s \"https://www.radix-ui.com/primitives/docs/components/dialog\")",
"Bash(curl -s \"https://ark-ui.com/docs/components/dialog\")",
"Bash(curl -s \"https://bits-ui.com/docs/components/dialog\")",
"Bash(curl -s \"https://www.radix-ui.com/primitives/docs/components/popover\")",
"Bash(curl -s \"https://ark-ui.com/docs/components/popover\")",
"Bash(curl -s \"https://bits-ui.com/docs/components/popover\")",
"Bash(curl -s \"https://www.radix-ui.com/primitives/docs/components/accordion\")",
"Bash(curl -s \"https://ark-ui.com/docs/components/accordion\")",
"Bash(curl -s \"https://bits-ui.com/docs/components/accordion\")",
"Bash(curl -s \"https://www.radix-ui.com/primitives/docs/components/tooltip\")",
"Bash(curl -s \"https://ark-ui.com/docs/components/tooltip\")",
"Bash(curl -s \"https://bits-ui.com/docs/components/tooltip\")",
"Bash(curl -s \"https://www.radix-ui.com/primitives/docs/components/dropdown-menu\")",
"Bash(curl -s \"https://ark-ui.com/docs/components/menu\")",
"Bash(curl -s \"https://bits-ui.com/docs/components/dropdown-menu\")",
"Bash(curl -s \"https://www.radix-ui.com/primitives/docs/overview/introduction\")",
"Bash(curl -s \"https://ark-ui.com/docs/overview/introduction\")",
"Bash(curl -s \"https://bits-ui.com/docs\")",
"Bash(curl -s \"https://www.radix-ui.com/primitives/docs/components/switch\")",
"Bash(curl -s \"https://www.radix-ui.com/primitives/docs/components/checkbox\")",
"Bash(curl -s \"https://www.radix-ui.com/primitives/docs/components/radio-group\")",
"Bash(curl -s \"https://www.radix-ui.com/primitives/docs/components/select\")",
"Bash(curl -s \"https://ark-ui.com/docs/components/select\")",
"Bash(curl -s \"https://next.bits-ui.com/docs/components/select\")",
"WebFetch(domain:next.bits-ui.com)",
"Bash(curl -s \"https://ark-ui.com/docs/components/combobox\")",
"Bash(curl -s \"https://next.bits-ui.com/docs/components/combobox\")",
"Bash(curl -s http://localhost:5173/test/soma/tabs)",
"WebFetch(domain:sonner.emilkowal.ski)",
"WebFetch(domain:www.radix-vue.com)",
"WebFetch(domain:react-resizable-panels.vercel.app)",
"WebFetch(domain:mantine.dev)",
"WebFetch(domain:react-aria.adobe.com)",
"WebFetch(domain:reka-ui.com)",
"WebFetch(domain:www.w3.org)",
"WebFetch(domain:zagjs.com)",
"WebFetch(domain:react-spectrum.adobe.com)",
"WebFetch(domain:headless-tree.lukasbach.com)",
"WebFetch(domain:mui.com)",
"WebFetch(domain:primereact.org)",
"WebFetch(domain:a11ymatters.com)",
"WebFetch(domain:base-ui.com)",
"WebFetch(domain:tanstack.com)",
"WebFetch(domain:icflorescu.github.io)",
"WebFetch(domain:www.ag-grid.com)",
"Bash(sort -t'\"' -k2)",
"Bash(uniq -f1)",
"Bash(netstat -tlnp)",
"Bash(xargs -I {} basename {})",
"Bash(curl:*)",
"Bash(gh api:*)",
"Bash(python -c \"import sys,json; [print\\(f['name']\\) for f in json.loads\\(sys.stdin.read\\(\\)\\)]\")",
"Bash(npx vitest:*)",
"WebFetch(domain:vaul.emilkowal.ski)",
"Bash(npm ls *)",
"Bash(npx -y degit chakra-ui/ark/packages/react/src/components/dialog ark-dialog)",
"Bash(ls ark-dialog/)",
"Bash(npx -y degit emilkowalski/vaul vaul-source --force)",
"Bash(npx -y degit chakra-ui/ark/packages/react/src/components/drawer ark-drawer)",
"Bash(ls ark-drawer/)",
"Bash(npx -y degit radix-ui/primitives/packages/react/dialog/src radix-dialog-source --force)",
"Bash(npx -y degit chakra-ui/zag/packages/machines/drawer/src zag-drawer)",
"Bash(ls zag-drawer/)",
"Bash(npx -y degit chakra-ui/zag/packages/machines/drawer zag-drawer-pkg)",
"Bash(ls zag-drawer-pkg/)",
"Bash(ls zag-drawer-pkg/src/)",
"WebFetch(domain:deepwiki.com)",
"WebFetch(domain:www.vaul-svelte.com)",
"WebFetch(domain:emilkowal.ski)",
"WebFetch(domain:www.npmjs.com)",
feat(eidos): TSC v2.2 (parts + composition) + universal theming coverage Token Scope Contract universal — no más excepciones arquitectónicas. Los 3 componentes que vivían fuera de TSC v2.1 (select, avatar, toggle-group) ahora están dentro del contrato via dos extensiones nuevas. TSC v2.2 extensiones (lib/config-types.ts + render-css.ts + config.ts): - `parts: readonly string[]` en RecipeTokenMultiDeclaration — emite selectores comma-separados (`[data-{c}-x], [data-{c}-y]`) para componentes con data-color cascadeado per-part. Consumer: select. - `composition: { foreignRecipe: { targetSelector, tokens } }` sibling key — overrides cross-recipe scoped a la cascade del host. Consumer: toggle-group modifica `--toggle-palette-*` en sus items. Migraciones: - select: 3 private `_accent-{track,border,text}` con parts: ['trigger', 'content'] + 7 cascades color:X each. Removed orphan `_accent-solid` (CSS no consumía). - avatar: 6 tokens via composite scopes `['variant:X', 'color:Y']` con matrix helper inline. Badge usa parts: ['badge']. Reemplaza 24 bloques CSS × 2 partes. - toggle-group: composition block con 8 palette tokens × 4 colors. Reemplaza 4 bloques CSS per-color. Bug toggle-group post-composition (encontrado y arreglado): Tras la composition migration, el cascade del toggle-group seguía roto porque los tokens derivados (`--toggle-solid-on-bg`, `--toggle-outline-fg`, etc.) viven en scope `[data-toggle]`. El `[data-toggle-group-item]` es sibling (no descendant), así que `var(--toggle-solid-on-bg)` resolvía undefined. Fix: inlined derivation expressions directamente en `[data-toggle-group-item]` y sus variant cascades (solid/outline/ghost), referenciando palette tokens en su propio scope local. Validador + emisor + contract: - `validateRecipeComposition` valida el shape `{ targetSelector, tokens }` y rechaza composition entries con scope='root'. - `stripCompositionKey` + `emitComposition` separan el pipeline. - `appendRecipeContractTokens` skip-list para `composition` (no aparece como fake `--{c}-composition` knob). - `tokenKeys`/`tokenEntries` helpers en recipe-css-contract.test.ts filtran composition en todos los iteradores. Documentación: - THEMING.md §18 reescrito como "Cobertura universal de TSC". §7 extendido con subsecciones "Multi-part scope" y "Cross-recipe composition" + ejemplos completos. TOC actualizado. - eidos/README.md tabla de referencia ampliada con TSC v2.2 + §18. - CLAUDE.md gana hand-off "2026-05-27 #5" (TSC v2.2 + cobertura universal). - CONTINUE.md reescrito al estado actual de la sesión. Working tree también incluye sprint Words en paralelo (multiple authors): slash menu, find/replace regex, code language picker, table audit, toolbar family menu, code highlight engine. Tests: 786/786 pass en src/uix/{eidos,morfo,soma,sema}. `npm run check`: 6 errores pre-existentes (lib/_demo, soma/components/internal, web/routes/active) no relacionados. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
"Bash(awk NR==507||NR==635||NR==723||NR==866 { print NR\": \"$0 } *)",
"Bash(awk '$4 > 0 {print}')",
"Bash(awk '/FAIL/{flag=1; print; next} /PASS/{flag=0} flag')",
"Bash(awk 'BEGIN{cur=\"\"} /^FAIL/{cur=$2; print \"--- \"$2\" ---\"; next} /^PASS/{cur=\"\"; next} cur && /\\\\[/{print \" \"$0}')",
"Bash(BASE_URL=http://localhost:5173 node --import tsx/esm scripts/probe-toggle-pressed-intents.ts)",
"Bash(BASE_URL=http://localhost:5173 node --import tsx/esm scripts/probe-toggle-fresh.ts)",
"Bash(awk '{print length, $0}')",
"Bash(gzip -c src/uix/eidos/generated/base.css)",
"Bash(awk -F'-' '{print $3}')",
"Bash(sort -k2 -rn)",
"Bash(awk '/^\tcheckbox: \\\\{/,/^\t\\\\},$/' src/uix/eidos/lib/recipes/base.ts)",
"Bash(grep -c data-color= src/uix/eidos/components/__TRACKED_VAR__/__TRACKED_VAR__.css)",
"Bash(grep -c data-variant.*data-color src/uix/eidos/components/__TRACKED_VAR__/__TRACKED_VAR__.css)",
"Bash(awk '/^\tbutton: \\\\{/,/^\t\\\\},$/' src/uix/eidos/lib/recipes/base.ts)",
"Bash(awk '/^\tswitch: \\\\{/,/^\t\\\\},$/' src/uix/eidos/lib/recipes/base.ts)",
"Bash(awk '/^\tswitch: \\\\{/{flag=1} flag{print NR\": \"$0} /^\t\\\\},$/{if\\(flag\\){flag=0}}' src/uix/eidos/lib/recipes/base.ts)",
"Bash(awk '/^\twords: \\\\{/,/^\t\\\\},$/' src/uix/eidos/lib/recipes/base.ts)",
"Bash(awk '/^\tstepper: \\\\{/,/^\t\\\\},$/' src/uix/eidos/lib/recipes/base.ts)",
"Bash(awk \"/^\t'tags-input': \\\\{/,/^\t\\\\},$/\" src/uix/eidos/lib/recipes/base.ts)",
"Bash(awk 'BEGIN{p=0} /^\t.tags-input.: \\\\{/{p=1} p{print NR\": \"$0} /^\t\\\\},$/{if\\(p\\){p=0; exit}}' src/uix/eidos/lib/recipes/base.ts)",
"Bash(awk 'BEGIN{p=0} /^\twords: \\\\{/{p=1} p{print NR\": \"$0} /^\t\\\\},$/{if\\(p\\){p=0; exit}}' src/uix/eidos/lib/recipes/base.ts)",
"Bash(awk \"BEGIN{p=0} /^\t'file-upload': \\\\{/{p=1} p{print NR\\\\\": \\\\\"\\\\$0} /^\t\\\\},\\\\$/{if\\(p\\){p=0; exit}}\" src/uix/eidos/lib/recipes/base.ts)",
"Bash(awk \"BEGIN{p=0} /^\t'tag-group': \\\\{/{p=1} p{print NR\\\\\": \\\\\"\\\\$0} /^\t\\\\},\\\\$/{if\\(p\\){p=0; exit}}\" src/uix/eidos/lib/recipes/base.ts)",
"Bash(awk \"BEGIN{p=0} /^\tbadge: \\\\{/{p=1} p{print NR\\\\\": \\\\\"\\\\$0} /^\t\\\\},\\\\$/{if\\(p\\){p=0; exit}}\" src/uix/eidos/lib/recipes/base.ts)",
"Bash(awk \"BEGIN{p=0} /^\tcard: \\\\{/{p=1} p{print NR\\\\\": \\\\\"\\\\$0} /^\t\\\\},\\\\$/{if\\(p\\){p=0; exit}}\" src/uix/eidos/lib/recipes/base.ts)",
"Bash(awk \"BEGIN{p=0} /^\teditable: \\\\{/{p=1} p{print NR\\\\\": \\\\\"\\\\$0} /^\t\\\\},\\\\$/{if\\(p\\){p=0; exit}}\" src/uix/eidos/lib/recipes/base.ts)",
"Bash(awk 'NR>=2800 && NR<=2870 && /^\\\\[|^:root|^}/')",
"Bash(git show *)",
"Bash(awk 'NR>=2800 && NR<=2870 && /^\\\\[|^:root|^}/' /tmp/old-base.css)",
"Bash(awk 'NR>=2800 && NR<=2870 {print NR\": \"$0}' /tmp/old-base.css)",
"Bash(awk 'NR>=2700 && NR<=2870 && \\(/^\\\\[/ || /^:root/ || /^}/\\)' /tmp/old-base.css)"
morfo: cross-layer contract + 14 new WAI-ARIA components + Dialog wired Morfo (src/uix/morfo/): machine-readable contract of a component's public DOM surface, shared between soma/sema/eidos. Shape v5 consolidated across three independent AI reviews (Gemini, Grok, ChatGPT) plus Sema alignment. Types, sium-based validator with cross-field invariants, dialog.ts as the first canonical morfo with data-last-action for Sema-causal exits, 7 passing unit tests. createAttrs(morfo) and registerContract(morfo) now consume a Morfo — legacy inline signature removed. Dialog provider refactored to derive parts + data contract from dialogMorfo. The other 65 soma components need porting (svelte-check lists them) — tracked work. Tooling: scripts/smoke-check.mjs — Playwright smoke over 65 soma demo routes scripts/morfo-check.ts — validates emitted DOM vs morfo scripts/morfo-vocabulary-check.ts — canonical vocabulary consistency npm run smoke / morfo:check / morfo:vocabulary WAI-ARIA APG components added (100% APG coverage now): Announce, Avatar, Clipboard, DragDrop, Feed, GridList, Meter, Progress, SearchField, TagGroup, TreeGrid + Table.RowDetail/Trigger (detail panel pattern; hierarchical Table rows deprecated — use TreeGrid instead). air: Link, Banner. Sema prep: src/uix/sema/sema_pre.md documents the semantic layer's DOM requirements. Morfo already provides everything Sema needs (data-last-action patterns, transition markers, enumerable state values, cross-component consistency). Sema implementation deferred. COMPONENT_GUIDE updated: items 37-39 (translation namespace grep, DOM topology vs .require() audit, npm run smoke is part of done) + A34 rule with incident log. WAI-ARIA pattern listed as soma membership criterion. Pagination translation bug fixed (soma.pagination.page -> idlangref PAGINATION_LANGS.PAGE). Table demo namespace fix (soma.table.* -> components.table.*). Avatar demo now offline-safe (SVG data URL). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6 months ago
],
"additionalDirectories": [
"\\tmp"
]
}
}

Powered by TurnKey Linux.