Upstream R-1 (round 17, 2026-07-28): a click that ENDS A PAN
must not fire onElementClick. The pointer-down point is
recorded and a click is suppressed when the pointer travelled
further than this threshold. 0 restores fire-always.
R-10 (register, 2026-08-05): the threshold is measured in
SCREEN pixels, not model units. Model units were chosen for
zoom-invariance and got it backwards: at k = 0.5 a 5px finger
wobble became 10 model units and suppressed the tap entirely.
Tap slop is a property of the input device, so screen space is
the invariant that matters. Default: 4px for a fine pointer,
12px for a coarse one (a finger's slop is not a mouse's),
resolved per gesture so a hybrid device behaves correctly with
whichever pointer is in use.
Upstream R-1 (round 17, 2026-07-28): a click that ENDS A PAN must not fire onElementClick. The pointer-down point is recorded and a click is suppressed when the pointer travelled further than this threshold. 0 restores fire-always.
R-10 (register, 2026-08-05): the threshold is measured in SCREEN pixels, not model units. Model units were chosen for zoom-invariance and got it backwards: at k = 0.5 a 5px finger wobble became 10 model units and suppressed the tap entirely. Tap slop is a property of the input device, so screen space is the invariant that matters. Default: 4px for a fine pointer, 12px for a coarse one (a finger's slop is not a mouse's), resolved per gesture so a hybrid device behaves correctly with whichever pointer is in use.