Changelog
Release history and notable changes for each version of SyncroMesh.
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, andonTransform, with matching element setters and typed event objects. - Window input registration:
Helix/Input.setHandlers(windowId, handlers)andsetOptions(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
worldcoordinates and a frozenstartWorldprojection. - Native scroll containers:
scroll: trueor 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 nativekoya_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
endorcancel; 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, andmouseScrollevents 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.