v3.3.8 — Guard 2 CGWindowID Fallback
Fix — Window tiling / snapping focus loss
Guard 2 now passes when both CGWindowList and AX report visible windows for the frontmost app, even if the AXCGWindowID cross-reference fails.
Details
macOS window tiling, window snapping, and certain apps can have mismatched window IDs between AX and CGWindow. The v3.3.6 CGWindowID cross-reference was too strict — it treated any mismatch as "not visible", triggering unwanted focus recovery.
Preserved
- Ghost/hidden window filtering (v3.3.6): if CGWindowList has no windows for the app, Guard 2 still fails
- Launch grace period (v3.3.7): AXUIElementDestroyed from apps launched <2.0s ago are ignored