Never take a post-click screenshot when a pre-click frame exists
The remaining 'captured slightly after the click' reports came from the fresh-shot fallback, which grabs the screen when the click is processed (after it). The previous lead change made that fallback *more* likely: a frame now had to be >=120ms before the click to qualify, so on machines where the capture stream can't always keep a frame that old buffered, more clicks fell through to the post-click shot. Make the click-lead a two-tier preference instead of a hard gate in selectFrameForClick: 1. newest frame captured at least leadMs before the click (ideal margin), else 2. newest frame captured before the click at all. Only when no pre-click frame exists does the caller fresh-shot. leadMs is threaded through the stream backend to the worker so both selection paths agree. Verified end to end: frames land ~120-170ms before each click, markers stay at 0.00%, and the 8-click burst still saves all 8. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+6
-4
@@ -24,10 +24,12 @@ Keep-a-Changelog conventions; versions follow semver.
|
||||
- Physical→DIP coordinate conversion is multi-monitor and scale-factor
|
||||
aware (`screen.screenToDipPoint` on Windows, display-geometry math
|
||||
elsewhere), fixing marker drift on displays scaled away from 100%.
|
||||
- A configurable click-lead (`capture.clickLeadMs`, default 120ms) targets
|
||||
the screen just before each click so the saved step shows what the user
|
||||
was about to act on, not the click's onset; the stream sampling cadence
|
||||
was tightened to 50ms so a frame near that target always exists.
|
||||
- A configurable click-lead (`capture.clickLeadMs`, default 120ms) prefers
|
||||
a frame captured a little before each click so the saved step shows what
|
||||
the user was about to act on, not the click's onset; the stream sampling
|
||||
cadence was tightened to 50ms so a frame near that target always exists.
|
||||
The lead is a preference, not a gate: selection falls back to the newest
|
||||
frame still before the click, so it never forces a post-click screenshot.
|
||||
|
||||
### Fixed
|
||||
|
||||
|
||||
Reference in New Issue
Block a user