Skip to content

fix(input): input, inspect and tracking correctness (review batch 3) - #422

Merged
Maxaubert merged 1 commit into
mainfrom
fix/421-input-tracking-fixes
Oct 10, 2026
Merged

Maxaubert merged 1 commit into
mainfrom
fix/421-input-tracking-fixes

Conversation

@Maxaubert

Copy link
Copy Markdown
Owner

Closes #421. Batch 3 of the 2026-10-09 review: input, Inspect and tracking correctness.

Fixed

  • 2: gain learner skips ticks where the pointer is pinned at the clip bound (Wind-placed moves are already excluded via lastSetVirtual).
  • 3: monitor retarget: when the render half refuses but the transform half accepts (multi-GPU), the session is forced onto the transform engine (renderStale) instead of mapping a render overlay left on the old monitor.
  • 4: monitor retarget/re-detect now also runs when Inspect is toggled at 1x.
  • 5: game-inspect focus-stealer window is hidden in EndGameInspect.
  • 46: stale swallow records cleared by every non-swallowed DOWN (mouse buttons, Inspect commit, bound keys).
  • 50: Wind's own mask keystroke (VK 0xE8) no longer stamps the any-key clock (hook and Raw Input).
  • 51: g_maskedThisHold cleared on keyboard hook suspend/reinstall.
  • 52: click quiet period stamped from Raw Input button edges, not only per-tick GetAsyncKeyState.
  • 53: Inspect pans with the measured GainLearner::gainFor; mouse_ballistics, cookPacket, drainCooked, cookActive and their test deleted.
  • 55: EditContext (VS Code) with no MSAA caret reports not-found instead of the start-of-line UIA rect.
  • 56: line-end ghost suppression is no longer sticky: a suppressed report that persists 300 ms is followed (pure helpers + tests).
  • 57: Win32 caret rect normalised with min/max (mirrored/RTL windows).
  • 58 (partial): bridge DLL exports are probed with DONT_RESOLVE_DLL_REFERENCES (no DllMain) before the real load.
  • 60: a late FocusLookup answer is accepted only for the focus generation it was asked under.
  • 64: selection rect uses the last line's rectangle so Shift+arrow growth moves the followed point (pure LastRectOffset + test).
  • 66: FocusTracker::run creates its queue before publishing tid_; stop() sets a flag run() checks, so an early stop cannot hang on join.

Skipped

  • 54: raw-input UP check/clear is a microsecond window; making it atomic across the two per-key records needs a lock in the LL hook path, a worse trade than the race (self-heals on the next press).
  • 58 (rest): signer allowlist and narrowing the WM_COPYDATA filter need field verification against every real JDK vendor and cannot be done safely here; the filter cannot be restricted per process.
  • 57 (rest): direction-bound filters were not verified by the review; only the Win32 normalisation was.
  • 2 (injected moves): already excluded, curDx is measured against lastSetVirtual.

Tests

  • build.bat test: [doctest] test cases: 593 | 593 passed | 0 failed | 0 skipped
  • build.bat: builds clean (pre-existing C4996 fopen warnings only)
  • build.bat uiaccess: builds clean
  • Not run: Playwright (batch 7 only), hands-on field checks of Inspect speed (item 53 changes Inspect pan to the learned gain; field-verify).

No version bump: bumped at merge time.

🤖 Generated with Claude Code

https://claude.ai/code/session_011zPmivSAQeivGUdBjTsaMu

@Maxaubert

Copy link
Copy Markdown
Owner Author

Review follow-up: item 54 is deliberately skipped (a microsecond window; closing it needs a lock in the LL hook path, and a missed clear self-heals on the next press). Item 58 is partial: only the DllMain-free export probe is done; the signer allowlist and narrowing the WM_COPYDATA filter need field verification against real JDK vendors. Both are listed in the PR body. No code change in this pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_011zPmivSAQeivGUdBjTsaMu

The branch is main plus exactly the combined test build's state after this PR
(conflicts with the PRs merged before it resolved as tested), version 0.24.14.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011zPmivSAQeivGUdBjTsaMu
@Maxaubert
Maxaubert force-pushed the fix/421-input-tracking-fixes branch from 0dda1b4 to a16a3f5 Compare October 10, 2026 02:34
@Maxaubert
Maxaubert merged commit 2588081 into main Oct 10, 2026
1 check passed
@Maxaubert
Maxaubert deleted the fix/421-input-tracking-fixes branch October 10, 2026 03:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Input, Inspect and tracking correctness

1 participant