Commit 81f89b0
feat: add Win32 API foreground check as alternative to a11y-based detection (#114)
* feat: add Win32 API foreground check as alternative to a11y-based detection
Add _check_foreground_win32() method that uses GetForegroundWindow() +
GetWindowText() via PowerShell P/Invoke for fast, reliable foreground
window title checking. This replaces the slow a11y-based check as the
default, while keeping a11y available via the focus_check_method config.
- New config field: focus_check_method (win32, a11y, or both)
- New CLI flag: --focus-check-method for run and live subcommands
- Detection of known-bad foreground states (Document Recovery, Start Center)
- Dispatch method routes to win32, a11y, or both (win32 first, a11y fallback)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* test: update setup handler tests to mock win32 foreground check
The focus check default changed from a11y to win32, so tests need to
mock run_powershell instead of requests.get for the /accessibility
endpoint.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>1 parent 06fe650 commit 81f89b0
3 files changed
Lines changed: 149 additions & 31 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
384 | 384 | | |
385 | 385 | | |
386 | 386 | | |
| 387 | + | |
387 | 388 | | |
388 | 389 | | |
389 | 390 | | |
| |||
1997 | 1998 | | |
1998 | 1999 | | |
1999 | 2000 | | |
2000 | | - | |
| 2001 | + | |
2001 | 2002 | | |
2002 | 2003 | | |
2003 | 2004 | | |
| |||
2022 | 2023 | | |
2023 | 2024 | | |
2024 | 2025 | | |
| 2026 | + | |
| 2027 | + | |
| 2028 | + | |
| 2029 | + | |
| 2030 | + | |
| 2031 | + | |
| 2032 | + | |
| 2033 | + | |
| 2034 | + | |
| 2035 | + | |
| 2036 | + | |
| 2037 | + | |
| 2038 | + | |
| 2039 | + | |
| 2040 | + | |
| 2041 | + | |
| 2042 | + | |
| 2043 | + | |
| 2044 | + | |
| 2045 | + | |
| 2046 | + | |
| 2047 | + | |
| 2048 | + | |
| 2049 | + | |
| 2050 | + | |
| 2051 | + | |
| 2052 | + | |
| 2053 | + | |
| 2054 | + | |
| 2055 | + | |
| 2056 | + | |
| 2057 | + | |
| 2058 | + | |
| 2059 | + | |
| 2060 | + | |
| 2061 | + | |
| 2062 | + | |
| 2063 | + | |
| 2064 | + | |
| 2065 | + | |
| 2066 | + | |
| 2067 | + | |
| 2068 | + | |
| 2069 | + | |
| 2070 | + | |
| 2071 | + | |
| 2072 | + | |
| 2073 | + | |
| 2074 | + | |
| 2075 | + | |
| 2076 | + | |
| 2077 | + | |
| 2078 | + | |
| 2079 | + | |
| 2080 | + | |
| 2081 | + | |
| 2082 | + | |
| 2083 | + | |
| 2084 | + | |
| 2085 | + | |
| 2086 | + | |
| 2087 | + | |
| 2088 | + | |
| 2089 | + | |
| 2090 | + | |
| 2091 | + | |
| 2092 | + | |
| 2093 | + | |
| 2094 | + | |
| 2095 | + | |
| 2096 | + | |
| 2097 | + | |
| 2098 | + | |
| 2099 | + | |
| 2100 | + | |
| 2101 | + | |
| 2102 | + | |
| 2103 | + | |
| 2104 | + | |
| 2105 | + | |
| 2106 | + | |
| 2107 | + | |
| 2108 | + | |
| 2109 | + | |
| 2110 | + | |
| 2111 | + | |
| 2112 | + | |
| 2113 | + | |
| 2114 | + | |
| 2115 | + | |
| 2116 | + | |
| 2117 | + | |
| 2118 | + | |
| 2119 | + | |
| 2120 | + | |
| 2121 | + | |
| 2122 | + | |
| 2123 | + | |
| 2124 | + | |
| 2125 | + | |
| 2126 | + | |
| 2127 | + | |
| 2128 | + | |
| 2129 | + | |
| 2130 | + | |
| 2131 | + | |
| 2132 | + | |
| 2133 | + | |
| 2134 | + | |
| 2135 | + | |
| 2136 | + | |
| 2137 | + | |
| 2138 | + | |
| 2139 | + | |
| 2140 | + | |
| 2141 | + | |
| 2142 | + | |
2025 | 2143 | | |
2026 | 2144 | | |
2027 | 2145 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
345 | 345 | | |
346 | 346 | | |
347 | 347 | | |
| 348 | + | |
348 | 349 | | |
349 | 350 | | |
350 | 351 | | |
| |||
551 | 552 | | |
552 | 553 | | |
553 | 554 | | |
| 555 | + | |
554 | 556 | | |
555 | 557 | | |
556 | 558 | | |
| |||
961 | 963 | | |
962 | 964 | | |
963 | 965 | | |
| 966 | + | |
964 | 967 | | |
965 | 968 | | |
966 | 969 | | |
| |||
2426 | 2429 | | |
2427 | 2430 | | |
2428 | 2431 | | |
| 2432 | + | |
| 2433 | + | |
| 2434 | + | |
2429 | 2435 | | |
2430 | 2436 | | |
2431 | 2437 | | |
| |||
2460 | 2466 | | |
2461 | 2467 | | |
2462 | 2468 | | |
| 2469 | + | |
| 2470 | + | |
| 2471 | + | |
2463 | 2472 | | |
2464 | 2473 | | |
2465 | 2474 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
597 | 597 | | |
598 | 598 | | |
599 | 599 | | |
600 | | - | |
| 600 | + | |
601 | 601 | | |
602 | | - | |
| 602 | + | |
603 | 603 | | |
604 | 604 | | |
605 | 605 | | |
| |||
609 | 609 | | |
610 | 610 | | |
611 | 611 | | |
612 | | - | |
613 | | - | |
614 | | - | |
615 | | - | |
616 | | - | |
617 | | - | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
618 | 615 | | |
619 | 616 | | |
620 | | - | |
| 617 | + | |
621 | 618 | | |
622 | 619 | | |
623 | 620 | | |
624 | 621 | | |
625 | 622 | | |
626 | | - | |
| 623 | + | |
627 | 624 | | |
628 | | - | |
| 625 | + | |
629 | 626 | | |
630 | 627 | | |
631 | 628 | | |
632 | 629 | | |
633 | 630 | | |
634 | 631 | | |
635 | | - | |
| 632 | + | |
636 | 633 | | |
637 | 634 | | |
638 | 635 | | |
| |||
642 | 639 | | |
643 | 640 | | |
644 | 641 | | |
645 | | - | |
646 | | - | |
647 | | - | |
648 | | - | |
| 642 | + | |
| 643 | + | |
649 | 644 | | |
650 | | - | |
651 | | - | |
| 645 | + | |
652 | 646 | | |
653 | 647 | | |
654 | | - | |
| 648 | + | |
655 | 649 | | |
656 | 650 | | |
657 | 651 | | |
658 | 652 | | |
659 | 653 | | |
660 | | - | |
| 654 | + | |
661 | 655 | | |
662 | | - | |
| 656 | + | |
663 | 657 | | |
664 | 658 | | |
665 | 659 | | |
| |||
674 | 668 | | |
675 | 669 | | |
676 | 670 | | |
677 | | - | |
| 671 | + | |
678 | 672 | | |
679 | | - | |
680 | | - | |
681 | 673 | | |
682 | | - | |
683 | | - | |
| 674 | + | |
| 675 | + | |
684 | 676 | | |
685 | | - | |
686 | | - | |
687 | | - | |
| 677 | + | |
| 678 | + | |
688 | 679 | | |
689 | 680 | | |
690 | | - | |
| 681 | + | |
691 | 682 | | |
692 | 683 | | |
693 | 684 | | |
| |||
0 commit comments