Summary
Replace repeated full-delta pointer jumps with continuous, time-based pixel movement for mouse.move repeat commands.
Scope
- Run held move-repeat at an internal 8 ms cadence.
- Preserve the existing command delta, pointer speed, movement interval, and acceleration settings as the velocity model.
- Emit an immediate pixel-sized step for short presses, then accumulate fractional displacement into whole-pixel movement.
- Account for timer jitter without large catch-up jumps.
- Keep one-off movement and all scrolling behavior unchanged.
- Preserve equivalent Windows and macOS behavior and all existing repeat cleanup guarantees.
Acceptance criteria
- Held pointer movement is continuous rather than a full jump at each configured repeat interval.
- A short press produces an immediate pixel-sized movement.
- Average speed continues to respond to pointer speed and Movement interval.
- Acceleration still ramps from 25% to full speed using the selected duration.
- Release, replacement, disable, disconnect, shutdown, and injection failure stop movement deterministically.
- Protocol and persisted settings schemas remain compatible.
- Automated tests use fake input adapters and cover timing, accumulation, generation ownership, and unchanged scroll/one-off behavior.
- Required frontend and Rust validation passes on Node.js 24 and Rust 1.97.1.
Summary
Replace repeated full-delta pointer jumps with continuous, time-based pixel movement for
mouse.moverepeat commands.Scope
Acceptance criteria