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.
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 |
| .. |
|
auth
|
sema/morfo/eidos: typed selector builder + dialog wrapper + emerge color
|
5 months ago |
|
cache
|
eidos: pilot wrapper pattern + doctrinal API conventions
|
5 months ago |
|
perm
|
eidos: pilot wrapper pattern + doctrinal API conventions
|
5 months ago |
|
index.ts
|
eidos: pilot wrapper pattern + doctrinal API conventions
|
5 months ago |