v0.6.1 (build 914)

0.6.1 #

Fix touchpad flicks ending with an interrupted cancellation: zero axis deltas no longer interrupt native inertia.

0.6.0 #

SyncroMesh 0.6.0 replaces raw mouse/touch callbacks with virtual interactions. This is a breaking input API release; migrate scripts and rebuild native integrations using the 0.5.0 → 0.6.0 migration guide.

Added #

  • Named virtual handlers: onPress, onActivate, onHover, onDrag, onScroll, onLongPress, onDoubleActivate, and onTransform, with matching element setters and typed event objects.
  • Window input registration: Helix/Input.setHandlers(windowId, handlers) and setOptions(windowId, options) provide scoped handlers and recognition defaults. Elements can override thresholds, accepted buttons, drag axis, and input blocking.
  • Gesture recognition: ancestor takeover, long press, immediate single activations plus double activation on the second qualified activation, and two-contact pan/pinch/rotation.
  • Input metadata: opaque interaction/contact IDs, semantic buttons, modifiers, logical-window/UI/local coordinates, two-axis scroll units and source, and available touch pressure or contact geometry.
  • Board-aware input: window registrations are scoped to their script/board; unclaimed interactions retain their original recipients. Window handlers receive current world coordinates and a frozen startWorld projection.
  • Native scroll containers: scroll: true or axis/options configuration clips and moves children, supports touch inertia and Wayland finger-axis stops, and emits start/change/end/cancel notifications. Includes programmatic scroll/stop methods and a native scrolling guide.

Changed #

  • Breaking removal: element onMouse* options, setOnMouse* methods, and native koya_ui_set_on_mouse_* callbacks are replaced without compatibility adapters. Each new callback receives one event object.
  • Ownership and routing: started presses/drags retain their owner and finish with end or cancel; UI recognition runs before window/game fallback. Handler return values do not decide consumption.
  • Standard controls and examples: buttons, text inputs, and bundled input examples use virtual interactions.
  • Breaking removal: global mouseDown, mouseUp, mouseMove, and mouseScroll events are replaced by window virtual input handlers.

Fixed #

  • Lost releases: moving outside an element no longer loses the interaction terminal event. Capture loss, focus/device/window loss, handler changes, owner teardown, and native drag handoff explicitly cancel active interactions.
  • Multi-contact state: independent contacts and buttons retain separate lifecycles; hover is independent of held state. Cancellation cannot trigger activation.
  • SDL input normalization: native touch avoids duplicate synthetic mouse events, preserves contact IDs/pressure, and normalizes wheel direction. Detaching or stopping a board cancels its interactions.

Upgrading #

Replace raw callbacks by intent and handle cancellation alongside release. See the migration guide and Helix/Input reference. Keyboard, text input, custom Helix/Event events, and OS data drag/drop retain their separate APIs.