Repository navigation
fix(engines,track): review findings: crop debt, non-primary transform, device-lost failover, Java bridge, capture retries (#497) - #503
Merged
Conversation
… drain by time (#497) - A cropped near-full repaint left the cache outside the view stale once the screen settled: the next uncropped frame now copies in full, and a screen quiet for 250 ms with debt owed gets a fresh grab (review #5). - A duplication that cannot be created is no longer fatal at initialize (only a missing output is), so a start during UAC or with the duplication slots taken keeps the render engine (review #20). - capture() retries a failed duplication 250 ms doubling to 2 s and logs only power-of-two failures, instead of every frame (review #21). - The fresh-grab drain stops 12 ms after the first copy, not only after 40 attempts, which ran ~110 ms on 360-500 Hz panels (review #36). Pure policies in src/render/capture_policy.h, tested. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TdjopXZfsUiesYxYLYHEdH
…ssion on device-lost failover (#497) - Transform's visual offsets are monitor-local while its input mapping adds the origin, so a non-primary pick (protected, excluded, rotated or pinned) magnified the wrong region. Every pick off the primary is now render (except while the render device is lost), and a session only moves to a non-primary monitor when the render engine took the retarget (MayRetargetSession). No origin offset was added: nothing in the repo proves the DWM coordinate convention there (review #11). - The device-lost failover now runs TeardownSession for any active render session (a 1x Inspect one included) and clears prevActive/prevInspect, so the overlay is hidden and the next active tick enters a fresh transform session (review #8). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TdjopXZfsUiesYxYLYHEdH
…arets off (0,0), retry failed folders (#497) - LoadVerified reads the bridge DLL's import and delay-import tables (pure PeImportNames) and requires a valid signature on every DLL the loader would take from its folder, transitively; a fixed list of four CRT names missed e.g. MSVCR100.dll (review #15). - Java carets are converted both around the monitor origin (JDK 17+ and JBR per-monitor user space) and around (0,0); the one inside the Java window wins (JavaPickCaretPx), fixing scaled monitors away from (0,0) (review #16). - A folder whose bridge did not load is retried after a 5 s to 5 min backoff instead of being written off for the session (review #31). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TdjopXZfsUiesYxYLYHEdH
…ange (#497) publish() deduped against the last snapshot across focus generations, so a keyboard return to the same control after an unpublished focus (a skipped container) never reached StepViewOwner. The dedupe now holds within one focus generation only (TrackPublishIsRepeat, tested) (review #30). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TdjopXZfsUiesYxYLYHEdH
…k to identity (#497) CursorCrashFilter restored cursor, clip and scheme but left an enabled MagSetInputTransform in the system-wide slot. It now disables it when the last Wind publish was enabled and the crash is on the thread that owns the Magnification runtime (calls are thread-affine); an off slot is left alone, as it may belong to native Magnifier. Startup still makes no Magnification calls (review #37). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TdjopXZfsUiesYxYLYHEdH
…ttle recreate, folder-only bridge cap, focus dedupe bypass only after a miss (#497) - render: a pointer-only Desktop Duplication frame (LastPresentTime 0, or no texture) counts as a quiet screen, so a crop-debt refresh also fires while panning; the refresh's duplication re-create logs no settle diagnostics (refreshSdrWhite still runs). - java bridge: the dependency cap counts only DLLs opened from the bridge folder (refused above 32); API-set and system names no longer count. - focus tracking: the publish dedupe is bypassed only when a focus change since the last publish resolved to nothing published (skipped container, unanswered lookup) or after activation, so repeat focus events on the same control no longer take the view from the mouse. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TdjopXZfsUiesYxYLYHEdH
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #497. Fixes from the 2026-10-16 full code review (research/wind/2026-10-16-full-code-review.md), each finding adversarially verified, each diff reviewed by a second agent with follow-ups applied.
Commits:
Gates: build.bat check, build.bat test, Playwright and test:rules pass on this branch and on the combined test build (669 unit tests, 212 Playwright). Combined build deployed signed for owner testing.
🤖 Generated with Claude Code
https://claude.ai/code/session_01TdjopXZfsUiesYxYLYHEdH