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
59505e6da2
feat(splitter): sema + dynamic drag-signal sound infrastructure
Splitter previously had no sema bindings — handle-pick / handle-drag /
commit-set fired silently. Closes the asymmetry with Slider and Drawer.
Sema (src/uix/sema/components/splitter.ts):
- handle-pick → sound('handle.pickup.air', gain 0.10) + tick haptic
- handle-drag → channels: ['sound', 'haptic'] (channels-only; per-emit
signal.overrides from soma own the dynamic curve so cascade doesn't
clobber them)
- commit-set → sound('handle.snap.chime', gain 0.14) + tap haptic
Sound resolver (src/uix/sema/sounds.ts):
- resolveSplitterDragSound — heavier sonic register than slider since
splitters move whole panels, not a thumb:
pitch 480..820 Hz (slider: 760..1280)
centroid 2400..4800 (slider: 3600..6800) — less brilliant
roughness 0.006 (slider: 0.003) — woody texture, not metallic
envelope attack 16 / decay 72 / duration 76 — perceptual mass
gain 0.025 + velocity*0.03 — restrained ceiling, long swipes ok
Soma drag-signal infrastructure (splitter-provider.svelte.ts):
- Mirrors slider's frame-throttled signal pipeline:
dragSignalFrame / pendingDragPercent / lastDragSignalAt / lastDragPercent
DRAG_SIGNAL_MS = 72ms throttle (≈14 Hz emit cadence)
- dragSignalOverrides(percent01) computes velocity01 from frame delta,
builds SemaSignatureOverride with sound (via resolveSplitterDragSound)
and haptic (tick scaled by velocity).
- queueHandleDrag / cancelQueuedHandleDrag wrap requestFrame so each
pointermove only schedules one trigger per throttle window.
- onpointerdown calls resetDragSignal(startSizeA/100) to anchor the
velocity baseline at grab time.
- onpointerup / onlostpointercapture / unmount $effect all cancel the
queued frame so we don't fire post-release.
Verified in browser at /uix/components/splitter:
handle-pick → 1 event (family: handle)
handle-drag → frame-throttled across 6 pointermoves
commit-set → 1 event (family: commit, intent: neutral)
Checks: svelte-check 0 errors, 133/133 vitest (splitter + sema),
component:audit 91/91 PASS.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
5 months ago |
|
.claude
|
sium: v2.0 → v2.2 — Issue idlangref, SiumProvider, progressive forms, plurals
|
6 months ago |
|
.idea
|
soma: tier 1/2 components, Field/NumberField integration, codex_audit fixes
|
6 months ago |
|
.kilo/plans
|
soma: 12 components, architecture docs, naming fixes, form tier complete
|
6 months ago |
|
.vscode
|
Initial commit: SvelteKit application with modular libraries
|
7 months ago |
|
routes/web
|
docs: consolidate kind contract + composition norms (sweep)
|
5 months ago |
|
scripts
|
feat(eidos foundation): vertebrate typography via named-style aliases + R-2.7
|
5 months ago |
|
src
|
feat(splitter): sema + dynamic drag-signal sound infrastructure
|
5 months ago |
|
static
|
Expand air component system and translator integration
|
6 months ago |
|
web/routes
|
feat(eidos foundation): vertebrate typography via named-style aliases + R-2.7
|
5 months ago |
|
.gitignore
|
uix: date-picker + date-range-picker components + component audit infra
|
5 months ago |
|
.npmrc
|
Initial commit: SvelteKit application with modular libraries
|
7 months ago |
|
.prettierignore
|
Generate Eidos base CSS artifact
|
5 months ago |
|
.prettierrc
|
Refactor active uix architecture
|
5 months ago |
|
AGENTS.md
|
docs: COMPONENT_AUDIT_GUIDE.md — inviolable pre-flight for component work
|
5 months ago |
|
CLAUDE.md
|
Continue Eidos component migration
|
5 months ago |
|
DATA_ATTRS.md
|
soma: tier 1/2 components, Field/NumberField integration, codex_audit fixes
|
6 months ago |
|
continue.md
|
wip(popover): unified min-width = anchor + sideOffset 6 across pickers
|
5 months ago |
|
package-lock.json
|
soma: tier 1/2 components, Field/NumberField integration, codex_audit fixes
|
6 months ago |
|
package.json
|
uix: rename morfo.translations → morfo.texts (idlangref discipline)
|
5 months ago |
|
svelte.config.js
|
Add ActiveClipboard service for Soma clipboard
|
5 months ago |
|
tsconfig.json
|
Initial commit: SvelteKit application with modular libraries
|
7 months ago |
|
tsconfig.tsbuildinfo
|
soma: refactor providers to follow terra patterns, fix translations, add table/number-field
|
6 months ago |
|
vite.config.ts
|
Add ActiveClipboard service for Soma clipboard
|
5 months ago |