mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-07 10:31:46 +00:00
The arming invariant had a hole: 'snapping' clears early (the moment no word is mid-flip, which happens mid-animation), so the velocity-based re-arm read the snap's own animation tail as organic scrolling and let the ping-pong chain re-arm itself. Velocity can't distinguish a snap's motion from the user's. Re-arming now lives exclusively on unambiguous input events — wheel, touchmove, keydown, and rail thumb drags. Programmatic scrolls produce none of these, so after a heading jump or a snap the system stays disarmed until the user actually acts. Claude-Session: https://claude.ai/code/session_01YBoaBEt3gynzTwogBFtn4B