Releases: rexa-developer/tiks
Releases · rexa-developer/tiks
v0.3.0
What's new
Features
- Hover throttling —
hover()is rate-limited in the engine (default 80 ms,init({ hoverThrottleMs }),0disables) - Declarative binding —
bindTiks()wires<button data-tiks="click">(andtoggle/toggle-on/toggle-off) via one delegated listener — ideal for the CDN/no-build setup - Two new themes —
arcade(chunky 8-bit square-wave) andglass(airy, resonant) alongsidesoftandcrisp - Svelte & Solid adapters —
@rexa-developer/tiks/svelteand…/solid, plus a framework-freecreateTiks()factory for multi-instance use (zero new dependencies)
Fixes
respectReducedMotion: falseis now honored regardless of init order (was a permanent no-op after any defaultinit())init({ muted: false })can now unmute — themutedoption is last-explicit-wins likevolume- iOS: gesture unlock no longer dead-ends when
resume()resolves while the context is interrupted
Internals
- 137-test suite incl. characterization tests pinning every generator's envelopes and frequencies
- Biome lint + format gating CI
- Fully automated releases:
npm versionsyncs the demo's CDN pin; the tag publishes to npm with provenance
Size: core ~3.5 KB gzip (everything included — tree-shakes smaller in bundler builds)
v0.2.0
Changed
- Default output is ~3× louder. Per-sound envelopes were boosted so the default
volume: 0.3is actually audible (~−10 dBFS forclick()) — the relative balance between sounds is unchanged. Apps that relied on the previous quieter level can lowervolume. prefers-reduced-motionis now respected by default and reacts to runtime preference changes. PassrespectReducedMotion: falseto opt out.
Added
- Transparent master limiter (
DynamicsCompressorNode) — prevents hard clipping when sounds overlap during rapid interaction; inactive at normal single-sound levels.
Fixed
- Crisper
click()— duration ~30ms → ~13ms and tighter band (filterQ0.7→2.0 soft, 1.2→3.0 crisp). - First sound after a tab-visibility restore is no longer dropped (played after async
resume()instead of discarded). - React:
useTiksno longer re-runsinit()every render when passed a custom theme object. - Vue:
useTiksinitializes once on mount (removed a no-opwatchEffect).
Full Changelog: v0.1.9...v0.2.0