Repository navigation
Fix Windows switch capture recovery and WebView focus failures - #792
Merged
Merged
Conversation
- Diagnose unexpected mapped-key pass-through without treating Raw Input as gesture delivery. - Replace failed hooks and consume a recovery gesture before rearming scanning. - Preserve cancellation, held-key ownership and generated-event filtering with regression coverage. 🤖 Auto-generated
- Run native switch capture in the same signed executable without initializing a WebView - Use bounded private IPC, generation checks and a shared time origin for gesture events - Preserve cancellation and latch worker failures until restart so uncertain held keys cannot re-arm actions - Contain the worker in a kill-on-close job and cover framing, stale events, failure races and clock translation 🤖 Auto-generated
enaboapps
marked this pull request as ready for review
September 18, 2026 18:24
This was referenced Sep 18, 2026
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.
Windows keyboard switches could stop responding with Switchify's WebView focused, and hook loss could leave stale held-key state. Run native capture in a private worker of the same executable, before WebView initialization. Detect lost suppression, cancel queued scanning actions and consume a recovery gesture before allowing a separate Select action.
The worker retains the existing native hook and gesture logic. Bounded inherited-pipe IPC preserves generations, cancellation and the parent's time origin. A kill-on-close Windows job contains the worker. Abnormal worker/IPC failure stays stopped until the app is restarted after releasing switches; it never clears uncertain ownership and automatically re-arms. No elevation, driver, signing-identity, BLE, settings-schema or Mac capture changes.
Closes #791
Validation at c1dbf2e:
Remaining validation limitations: signed UIAccess self-spawn and signed-build native holds/generated-shortcut validation. All GitHub CI checks pass at this head. Raw-hook fault qualification passed in isolated probes; attempts to inject an equivalent full-app thread/window fault were inconclusive and are not counted as passing. One heartbeat timeout occurred while the VM was compiling; the app stopped capture, and idle reruns succeeded. Do not interpret idle heartbeats as proof that the hook is installed. An event that reveals a lost hook may already have reached the foreground app.
The focus-specific symptom also has independent upstream reports: tauri-apps/wry#1761 and https://github.com/wudaming00/wh-keyboard-ll-chromium. The VM tests, rather than those reports alone, established the need for isolation here.
User desktop follow-up: the reported Space leak opens a macOS file preview for a Windows desktop item. Parallels documents this Quick Look integration (https://kb.parallels.com/en/123351). VM diagnostics observed Space down/up suppression and delivery of Select to the main app. Disabling Quick Look and repeating the desktop test has not yet been performed, so this is a likely explanation rather than completed qualification. The user explicitly requested merge and pull after this finding.