A Vibration API hook that plays a normalized haptic pattern from a user gesture, names every refusal instead of failing silently, honours a page-wide haptics mute, and cancels the pattern it owns on unmount.
Zyeon UI limits how often it can be asked, and useVibrate hasn't had its turn. Its source will show here once it has.