dev
09e2618787
Continue Eidos component migration
5 months ago
dev
00742e33b4
Advance Eidos component migration
5 months ago
dev
0b399cc6e8
Add Eidos dialog reference comparison
5 months ago
dev
458996882e
Add Eidos breadcrumb wrapper
5 months ago
dev
e359cabd4b
Document Eidos migration handoff
5 months ago
dev
4dc09c2897
Add Eidos number field wrapper
5 months ago
dev
3c60d33a6c
Add Eidos search field wrapper
5 months ago
dev
5a6193d365
Add Eidos rating group wrapper
5 months ago
dev
f62b32677c
Add Eidos pagination wrapper
5 months ago
dev
bdaae718ad
Add Eidos slider wrapper
5 months ago
dev
5895f9d8b8
Add Eidos progress and meter wrappers
5 months ago
dev
d3efdb5c30
Remove legacy Eidos CSS layout fallback
5 months ago
dev
3c115ce093
Guard Eidos namespace assignments
5 months ago
dev
f815dd95ac
Guard Eidos visual attr wiring
5 months ago
dev
53b76f6b4d
Clarify Eidos visual-only parts
5 months ago
dev
a8045658aa
Guard Eidos recipe CSS contract
5 months ago
dev
13cc14f971
Normalize Eidos component surface
5 months ago
dev
8ad0471471
Refresh UIX architecture docs
5 months ago
dev
c12b1c48c8
Refactor active uix architecture
5 months ago
dev
cb5097b3c3
Add active eidos runtime and morfo lang registry
5 months ago
dev
7214ae7940
uix: drawer/popover/toast/accordion eidos wrappers + sema packs + /uix docs scaffold
...
- eidos: migrate drawer / popover / toast / accordion to wrapper subdirectory
pattern (provider + parts + tokens + recipe per component); avatar wrapper
added; toggle/switch/collapsible recipe polish.
- sema: per-component packs (accordion, drawer, popover, toast); engine /
resolver / event / sema-map updates; visual channel hold refinements.
- morfo: drawer event surface (variant, dragToDismiss, isDragging, minSize/
maxSize, onDragStart); popover/toast/accordion event refinements; schema +
types updates.
- soma: drawer provider rewrite (variant, dragToDismiss, isDragging binding,
drag callbacks); toast provider/toaster restructure with toast-main +
toast-status parts; popover content/arrow polish; gesture/floating layer
updates; manipulation layer scaffold; avatar removed (eidos owns it now).
- web/routes: legacy demos updated for new APIs; new /uix docs scaffold
(web/routes/uix/) with Radix-style shell, theme/lang/format/semantic prefs,
and standardized component template (Drawer page first — 6 tabs, live
controls, drag-hint arrows, scroll-safe body wrapper).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
dev
e6862265e2
sema/morfo/eidos: typed selector builder + dialog wrapper + emerge color
...
sema architecture
- sema-map: 5-channel registry (motion / sound / color / presence / haptic)
via SemaChannelSignatures declaration merging; engine stamps data-event-*
tokens; flat CSS-style cascade replaces the eventLabel-overrides middle layer.
- sema-map: emerge family gains base.color so intent deltas can shift
hue / saturation / intensity. Without a base, the resolver was skipping the
channel and Dialog open with intent='threat' rendered as neutral blue in the
Sema tab visualisation.
- types: SEMA_FAMILY_POLICY const drives compile-time + runtime intent
requirements per family. Object shape so future per-family policy fields
fit alongside. Emerge events MAY now declare intent (canon update — a
Dialog confirming threat carries it in its very appearance).
- chans: rename vibra→haptic, add HapticChannel V1 (Vibration API);
SoundChannel eager-init on first user gesture (autoplay race fix).
morfo selector discipline
- morfo/selectors.ts (new): semaSelector(morfo, partKebab, matchers?) —
type-checked against morfo.parts and morfo.events. Sema cascade rules MUST
use it; hand-written strings are an architecture violation that breaks
silently when morfo renames a part.
- dialog morfo: open carries intent via fromProp; close-cancel /
close-dismiss / close-dismiss-outside drop intent (cancellation has no
evaluative load); close-save stays hardcoded fulfill (commit fulfils the
user's decision regardless of dialog context).
eidos dialog migration (4th pilot)
- eidos/components/dialog/: full subdirectory wrapper — flat <Dialog> +
compound Provider/Trigger/Overlay/Content/Title/Description/Close/Header/
Footer; size + position responsive props; sheet auto-form on narrow
viewports; closePosition for the auto-X.
- sema/components/dialog.ts: cascade rules use semaSelector(dialogMorfo,
'content', matchers?). Intent block adds character (haptic kind / pattern)
but never overrides pitch / gain / contour — those are intent.deltas
signature ownership and overriding flattens per-intent perceptual difference.
demo controls + dialog page
- src/lib/_demo (DemoSwitch / DemoEnum / DemoText / DemoRange) — unified
controls reused across all component demos.
- web/routes/dialog: live preview always rendered above tabs; per-event
Sema tab with independent intent probe; signature visualisation + Play
buttons with fallback target chain.
documentation
- CLAUDE.md: intent.deltas signature ownership rule; eidos drift defense
doctrine (types over lint); 2026-05-09 hand-off entry.
- morfo/README: Typed selector builder section.
- eidos/README: linter section reframed as opt-in safety net for plain CSS
recipes; the architectural mechanism is compile-time typing.
- sema/README: open channel registry + flat cascade docs + override
semantics + intent policy const + selector builder discipline.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago
dev
f5a2a7fb49
eidos: pilot wrapper pattern + doctrinal API conventions
...
Toggle as the eidos pilot: subdirectory layout (recipe + Svelte wrapper +
types + index + README) replacing the flat CSS-only form. Pattern is
documented in eidos/components/README.md and the toggle README.
Shared types live in eidos/lib/types.ts. First export is `Size` (8 values
xxs..xxl + full); components narrow with `Extract<Size, ...>` per the
per-component-subset doctrine. No `Eidos` prefix on types — module path
already conveys the layer.
API doctrine:
- soma stays compound (Toggle.Provider) for symmetry with multi-part
- eidos exports both default + Provider so single-part components
accept both `<Toggle>` (ergonomic) and `<Toggle.Provider>`
(compound-style consumers)
SoundChannel eager-init fixes the autoplay race: AudioContext is created
+ resumed synchronously on the first user gesture (capture-phase
listener registered in the constructor), avoiding the previous race
where the first emit() scheduled the resume in a microtask outside the
gesture window.
Demo page (web/routes/toggle/+page.svelte) restructured so the live
preview renders ALWAYS above the tablist — Sema-tab Play buttons can
fire on the real toggle. Motion preview amplifies scale ×8 visually
only; doctrinal values stay in the <dl>.
Conventions 7-13 added to src/docs/sema-implementation-guide.md
covering: directory structure, wrapper composition, no Eidos prefix,
soma compound vs eidos flat, iconOnly sr-only body, sound eager-init,
docs-preview amplification.
CLAUDE.md gets a session hand-off block listing where things stand and
next concrete steps (migrate switch/collapsible/dialog/drawer/popover/
toast/avatar; wire topbar sound mute to masterGain; rename theme
tokens to drop the success/warning/danger fallback aliases).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 months ago