Initial commit: SvelteKit application with modular libraries
Add comprehensive library system for internationalization, logging,
formatting, and UI state management:
- ling: i18n library with translation keys, plural rules, and JSON serialization
- logr: logging system with levels, filters, history, and transports
- glob: number (numr), date (dati), currency (curr), and unit (unit) formatters
- actx: application context integrating all modules with Svelte 5 reactivity
- uiux: reactive UI state for theme, toasts, modals, menus, and breakpoints
Features:
- 247 passing tests across 4 test suites
- Svelte 5 runes ($state) for reactive context
- Lazy initialization for optional modules
- Type-safe configuration with TypeScript
- Locale-aware formatting using Intl APIs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7 months ago
{
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
"permissions" : {
"allow" : [
"Bash(git add:*)" ,
"Bash(git commit:*)" ,
"Bash(npx svelte-check:*)" ,
"Bash(npx tsc:*)" ,
"Bash(grep -v \"^$\")" ,
"Bash(grep -n export.*Mutable g:/dev/svelte/vicen/src/lib/glob/lib/date/utils.ts)" ,
"Bash(grep -rn export.*Mutable g:/dev/svelte/vicen/src/lib/glob/lib/date/ --include=*.ts)" ,
"Bash(wc -l \"g:/dev/svelte/vicen/src/uix/uisv/lib/bits/calendar/components/\"*.svelte)" ,
"Bash(grep -n \"from \"\"@internationalized\\\\|from ''.*shared/date\\\\|from \"\".*shared/date\\\\|getDocument\\\\|isBrowser\\\\|styleToString\\\\|afterTick\" \"g:/dev/svelte/vicen/src/uix/acel/internal/date-time/utils.ts\" \"g:/dev/svelte/vicen/src/uix/acel/internal/date-time/formatter.ts\" \"g:/dev/svelte/vicen/src/uix/acel/internal/date-time/announcer.ts\" \"g:/dev/svelte/vicen/src/uix/acel/internal/date-time/calendar-helpers.svelte.ts\")" ,
"Bash(grep -r from.*[''].*internal/ g:/dev/svelte/vicen/src/uix/acel --include=*.ts --include=*.svelte -l)" ,
"Bash(grep -r from.*[''].*shared/ g:/dev/svelte/vicen/src/uix/acel --include=*.ts --include=*.svelte -l)" ,
"Bash(grep -rh \"from.*[''''].*\\\\\\(internal\\\\|shared\\\\\\)/\" g:/dev/svelte/vicen/src/uix/acel --include=*.ts --include=*.svelte)" ,
"Bash(grep -v \"^//\")" ,
"Bash(grep -r \"from.*[''''].*\\\\\\(internal\\\\|shared\\\\\\)/\" g:/dev/svelte/vicen/src/uix/acel --include=*.ts --include=*.svelte)" ,
"Bash(grep -v '^\\\\s*//')" ,
"Bash(git -C g:/dev/svelte/vicen status --short -- src/uix/acel/date-field/)" ,
"Bash(npx tsx:*)" ,
"Bash(for file:*)" ,
"Bash(sed -i 's/: \\\\\\([^.]*\\\\\\) ? \"\"\"\" : undefined,/: boolToEmptyStrOrUndef\\(\\\\1\\),/g' \"$file\")" ,
"Bash(node -e \":*)" ,
"Bash(while read:*)" ,
"Bash(do if:*)" ,
"Bash(! grep:*)" ,
"Bash(sed -i 's/DatePickerRootContext/DatePickerRootState.ctx/g' \"$file\")" ,
"Bash(sed -i 's/DateRangePickerRootContext/DateRangePickerRootState.ctx/g' \"$file\")" ,
"Bash(sed -i 's/MenuCheckboxGroupContext/MenuCheckboxGroupState.ctx/g' \"$file\")" ,
"Bash(sed -i 's/ScrollAreaRootContext/ScrollAreaRootState.ctx/g' \"$file\")" ,
"Bash(echo \"Fixed: $file\")" ,
"Read(//g/dev/svelte/vicen - copia/**)" ,
"Bash(bash /tmp/fix-imports.sh)" ,
"Bash(sed -i 's/CalendarRootContext/CalendarRootState.ctx/g' src/uix/terra/range-calendar/range-calendar.svelte.ts)" ,
"Bash(sed -i 's/CalendarRootState\\\\.ctx\\\\.get/CalendarRootState.ctx.get/g' src/uix/terra/range-calendar/range-calendar.svelte.ts)" ,
"Bash(sed -i \"s/data-switch-root/data-switch/g\" contracts.ts)" ,
"Bash(sed -i \"s/data-checkbox-root/data-checkbox/g\" contracts.ts)" ,
"Bash(sed -i \"s/data-toggle-root/data-toggle/g\" contracts.ts)" ,
"Bash(sed -i \"s/data-toggle-group-root/data-toggle-group/g\" contracts.ts)" ,
"Bash(sed -i \"s/data-slider-root/data-slider/g\" contracts.ts)" ,
"Bash(xxd \"G:/dev/svelte/vicen - copia/src/uix/terra/date-picker/components/date-picker-calendar.svelte\")" ,
"Bash(awk 'NR==40 {print \"\\\\t\\\\t *\"} NR==41 {print \"\\\\t\\\\t * ## Selectores CSS\"} NR==42 {print \"\\\\t\\\\t * ```\"} NR==43 {print \"\\\\t\\\\t * [data-tags-input] \\\\u2192 Elemento contenedor del componente\"} NR==44 {print \"\\\\t\\\\t * [data-disabled] \\\\u2192 Estado cuando el campo est\\\\u00e1 deshabilitado\"} NR==45 {print \"\\\\t\\\\t * ```\"} NR==46 {print \"\\\\t\\\\t *\"} {print}' tags-input-root.svelte)" ,
"Bash(awk 'NR==25 {print \"\\\\t\\\\t *\"} NR==26 {print \"\\\\t\\\\t * ## Selectores CSS\"} NR==27 {print \"\\\\t\\\\t * ```\"} NR==28 {print \"\\\\t\\\\t * [data-tags-input-tag] \\\\u2192 Elemento contenedor del tag\"} NR==29 {print \"\\\\t\\\\t * [data-readonly] \\\\u2192 Estado cuando el tag es de solo lectura\"} NR==30 {print \"\\\\t\\\\t * [data-disabled] \\\\u2192 Estado cuando el tag est\\\\u00e1 deshabilitado\"} NR==31 {print \"\\\\t\\\\t * ```\"} NR==32 {print \"\\\\t\\\\t *\"} {print}' tags-input-tag.svelte)" ,
"Bash(awk 'NR==40 {print \"\\\\t\\\\t *\"} NR==41 {print \"\\\\t\\\\t * ## Selectores CSS\"} NR==42 {print \"\\\\t\\\\t * ```\"} NR==43 {print \"\\\\t\\\\t * [data-tags-input] -> Elemento contenedor del componente\"} NR==44 {print \"\\\\t\\\\t * [data-disabled] -> Estado cuando el campo esta deshabilitado\"} NR==45 {print \"\\\\t\\\\t * ```\"} NR==46 {print \"\\\\t\\\\t *\"} {print}' tags-input-root.svelte)" ,
"Bash(awk 'NR==25 {print \"\\\\t\\\\t *\"} NR==26 {print \"\\\\t\\\\t * ## Selectores CSS\"} NR==27 {print \"\\\\t\\\\t * ```\"} NR==28 {print \"\\\\t\\\\t * [data-tags-input-tag] -> Elemento contenedor del tag\"} NR==29 {print \"\\\\t\\\\t * [data-readonly] -> Estado cuando el tag es de solo lectura\"} NR==30 {print \"\\\\t\\\\t * [data-disabled] -> Estado cuando el tag esta deshabilitado\"} NR==31 {print \"\\\\t\\\\t * ```\"} NR==32 {print \"\\\\t\\\\t *\"} {print}' tags-input-tag.svelte)" ,
"Bash(sed -i '43s/->/\\\\u2192/; 44s/->/\\\\u2192/' tags-input-root.svelte)" ,
"Bash(sed -i '28s/->/\\\\u2192/; 29s/->/\\\\u2192/; 30s/->/\\\\u2192/' tags-input-tag.svelte)" ,
"Bash(sed -i 's/data-terra-dialog-content/data-dialog-content/g' contracts.ts)" ,
"Bash(sed -i 's/data-terra-dialog-trigger/data-dialog-trigger/g' contracts.ts)" ,
"Bash(sed -i 's/data-terra-dialog-overlay/data-dialog-overlay/g' contracts.ts)" ,
"Bash(sed -i 's/data-terra-dialog-title/data-dialog-title/g' contracts.ts)" ,
"Bash(sed -i 's/data-terra-dialog-description/data-dialog-description/g' contracts.ts)" ,
"Bash(sed -i 's/data-alert-dialog-content/data-dialog-content/g' contracts.ts)" ,
"Bash(sed -i 's/data-alert-dialog-trigger/data-dialog-trigger/g' contracts.ts)" ,
"Bash(sed -i 's/data-alert-dialog-overlay/data-dialog-overlay/g' contracts.ts)" ,
"Bash(sed -i 's/data-alert-dialog-title/data-dialog-title/g' contracts.ts)" ,
"Bash(sed -i 's/data-alert-dialog-description/data-dialog-description/g' contracts.ts)" ,
"Bash(sed -i 's/AlertDialog usa el mismo contrato que Dialog con variant=\"alert-dialog\"/AlertDialog es una variante de Dialog, usa los mismos attrs data-dialog-*/g' contracts.ts)" ,
"Bash(sed -i '/Los attrs se generan con data-alert-dialog-/d' contracts.ts)" ,
"Bash(python3)" ,
"Bash(pnpm run:*)" ,
"Bash(sed -i 's/<div {...mergedProps}>/<button {...mergedProps}>/g' \"g:/dev/svelte/vicen - copia/src/uix/terra/splitter/components/splitter-resize-trigger.svelte\")" ,
"Bash(sed -i 's/<\\\\/div>/<\\\\/button>/g' \"g:/dev/svelte/vicen - copia/src/uix/terra/splitter/components/splitter-resize-trigger.svelte\")" ,
"Bash(sed -n '106p' \"g:/dev/svelte/vicen - copia/src/routes/test/air/spinner/+page.svelte\")" ,
"Bash(sed -n '123p' \"g:/dev/svelte/vicen - copia/src/routes/test/editable/+page.svelte\")" ,
"Bash(sed -n '151p' \"g:/dev/svelte/vicen - copia/src/routes/test/editable/+page.svelte\")" ,
"Bash(sed -n '93p' \"g:/dev/svelte/vicen - copia/src/routes/test/file-upload/+page.svelte\")" ,
"Bash(sed -n '151p' \"g:/dev/svelte/vicen - copia/src/routes/test/file-upload/+page.svelte\")" ,
"Bash(perl -i -pe 's/\\\\.\"\\\\$$\"/\"/g' air/spinner/+page.svelte editable/+page.svelte file-upload/+page.svelte link-preview/+page.svelte stepper/+page.svelte)" ,
"Bash(mkdir -p external/dates)" ,
"Bash(cp -r adapters/dates/* external/dates/)" ,
"Bash(find src/uix/terra -type f '\\(' -name '*.ts' -o -name '*.svelte' -o -name '*.md' '\\)' -exec sed -i 's|from ['\\\\'']\\\\$terra/adapters/dates['\\\\'']|from '\\\\''$terra/external/dates'\\\\''|g' '{}' +)" ,
"Bash(find src/uix/terra -type f '\\(' -name '*.ts' -o -name '*.svelte' '\\)' -exec perl -pi -e 's|from [\"\\\\x27]\\\\$terra/adapters/dates[\"\\\\x27]|from \"$terra/external/dates\"|g' '{}' +)" ,
"Bash(find src/uix/terra -type f '\\(' -name '*.ts' -o -name '*.svelte' '\\)' -exec sed -i 's|from \"/external/dates\"|from \"$terra/external/dates\"|g' '{}' ';')" ,
"Bash(xargs -n1 basename)" ,
"Bash(find \"g:/dev/svelte/vicen - copia/src/uix/air/icons/lib\" -name \"*.svelte\" -exec basename {} \\\\;)" ,
"Bash(find \"g:/dev/svelte/vicen - copia/src/uix/air/icons/lib\" -name \"*.svelte\" -exec basename {} .svelte \\\\;)" ,
"Read(//tmp/**)" ,
"Read(//g/dev/svelte/**)" ,
"Bash(sed -i -e 's/\\\\bairReveal\\\\b/reveal/g' -e 's/\\\\bairDismiss\\\\b/dismiss/g' -e 's/export function airContext\\\\b/export function contextIn/g' -e 's/export function airContextOut\\\\b/export function contextOut/g' -e 's/\\\\bairExpand\\\\b/expand/g' -e 's/\\\\bairExpandOut\\\\b/expandOut/g' g:/dev/svelte/vicen/src/uix/air/internal/motion/transitions.ts)" ,
"Bash(sed -i -e 's/\\\\bairFeedback\\\\b/feedback/g' -e 's/\\\\bairAttention\\\\b/attention/g' -e 's/\\\\bairEmphasis\\\\b/emphasis/g' -e 's/\\\\bairPersistence\\\\b/persistence/g' -e 's/\\\\bairSelection\\\\b/selection/g' -e 's/\\\\bairCompletion\\\\b/completion/g' g:/dev/svelte/vicen/src/uix/air/internal/behavior/behaviors.svelte.ts)" ,
"Read(//c/Users/dev/.claude/projects/g--dev-svelte-vicen/memory/**)" ,
"Bash(npm run *)" ,
"Bash(echo \"dev pid: $!\")" ,
"Bash(pkill -f \"vite dev\")"
] ,
"additionalDirectories" : [
"g:\\dev\\svelte\\vicen\\src\\uix\\soma\\components\\search-field"
]
}
Initial commit: SvelteKit application with modular libraries
Add comprehensive library system for internationalization, logging,
formatting, and UI state management:
- ling: i18n library with translation keys, plural rules, and JSON serialization
- logr: logging system with levels, filters, history, and transports
- glob: number (numr), date (dati), currency (curr), and unit (unit) formatters
- actx: application context integrating all modules with Svelte 5 reactivity
- uiux: reactive UI state for theme, toasts, modals, menus, and breakpoints
Features:
- 247 passing tests across 4 test suites
- Svelte 5 runes ($state) for reactive context
- Lazy initialization for optional modules
- Type-safe configuration with TypeScript
- Locale-aware formatting using Intl APIs
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7 months ago
}