Drop firmly in place — tail-only throw + jump() to clear velocity

Fixkamo-internal
Shipped
2026年4月30日 03:00 UTC
Author
kamo
Commit
14bc9d8

The previous fix still let heads drift on release because: 1. Throw detection averaged velocity across the full 110ms window. A user who flicked then decelerated to a slow crawl before release still averaged > 650 px/s over that window and got a false-positive throw. Now we look only at the last RELEASE_TAIL_MS (60ms) of pointer samples, so a decelerating release with slow tail velocity is correctly read as a deliberate drop. Pause guard widened to 60ms to match. 2. animate(mx, fx, { velocity: 0 }) doesn't actually clear MotionValue's internally-tracked velocity from the rapid mx.set() chain — it just starts a new spring with 0 initial velocity. Switched to mx.jump(fx), which is purpose-built for this: it stops active animations, zeros tracked velocity, and sets the value in one call. 3. For the mega-cluster path, rewireCluster now runs BEFORE the anchor jump so follower change subscriptions are reattached cleanly before the jump fires its anchor-change event — the new subs see velocity-0 targets unchanged from where they just sprung to.

All changes

就像你看到的运输?

每一个都自动更新您工作空间的地盘。 开始自由,看它成长 一周又一周.

永远开始自由查看定价