1c42fd7d35
The UI's `OnUpdate` walk ran before the frame's input pass. So an `OnUpdate` reading `IsShiftKeyDown()` or a button's pushed state saw the last frame's input, and a click's `OnMouseDown` ran after that frame's `OnUpdate`. 1.12.1's tick runs the window input (`0x420d23`), then the packets (`0x420d55`), then the frame time, and only then the frame pass (`0x420d6a`), whose interface layer runs the `OnUpdate` walk. The input pass and its bindings now run ahead of the packet feeds, and those ahead of a new tick set. Clicks hit-test the last frame's rects, as the reference's records do. The `vm_pass` doc now names the walk's category. Tests run the client's own systems in schedule order: Shift seen in `OnUpdate`, `OnMouseDown` before `OnUpdate`, and a packet event between them. Fixes #2351 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>