Skip to content

v0.6.0

Choose a tag to compare

@smm-h smm-h released this 16 Jul 15:20

Light-dismiss engine and invoker contract: centralized outside-press dismissal with gesture-claim (registerLightDismiss, registerOverlayTrigger), fixing drawer dismissal reliability and toggle close-reopen races across all overlays.

Context

v0.5.0's registry publish was gated on a CI failure that exposed a real race (the drawer's deferred outside-dismiss listener registration could be starved on loaded machines, reproduced deterministically under CPU throttle). Rather than patching the timer, this release ships the already-designed structural replacement: light-dismiss centralized in one synchronous capture-phase listener beside the existing Escape stack, with per-gesture claim so a trigger press closes without re-opening; all five bespoke overlay implementations migrated onto it. Also hardens the e2e suite against a second CI-only flake class (axe scans sampling mid entrance-animation).

Features

  • Overlay-trigger invoker + light-dismiss engine. New registerOverlayTrigger(triggerEl, opener) and registerLightDismiss(opts) (from tinymoon/chrome) give overlays a framework-owned toggle button (aria-expanded, gesture-claim so a close-press cannot immediately reopen) and a centralized outside-pointer dismissal registry.

Fixes

  • Reliable drawer dismissal. A non-modal drawer could intermittently fail to close on an outside click in slow or loaded environments; toggling a drawer via its trigger could close-then-reopen. Both are fixed — outside-pointer dismissal is now registered synchronously and a re-press on the trigger closes it for good.