ci(windows-smoke): deep links while hidden/minimised, global hotkeys (#8, #2) #43

Merged
jared merged 4 commits from ci/smoke-deeplink into main 2026-10-22 21:20:08 -04:00
Owner

Refs #8, #2 and #19. More of the #19 plan, run on the real windows runner (run 2812: 11 passed, 0 failed).

New checks in scripts/windows-smoke.mjs

  • Deep link while hidden to the tray, and while minimised (#8): the test opens matrix:r/lotus-smoke-*:example.org through Windows (start), so it goes the real route: protocol handler → a second cinny.exe → single-instance → the running app. Passes: the URL reaches the page as lotus-deeplink, and a minimised window is restored.
  • Global voice hotkeys (#2): PTT on F9 through set_global_hotkeys, then F9 pressed via keybd_event. It expects pressed and released lotus-global-hotkey events, and nothing after the bindings are cleared.
  • Interactive-desktop check (first): hide, then show(), then is_visible.

Finding: this runner has no interactive desktop. Even a direct show() leaves the window hidden, and injected keys never reach GetAsyncKeyState. That usually means act_runner runs as a Windows service (session 0). On such a runner, window visibility and the hotkey round trip are reported n/a instead of failing. Run the runner in a logged-in desktop session and both get checked automatically.

🤖 Generated with Claude Code

https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5

Refs #8, #2 and #19. More of the #19 plan, run on the real `windows` runner (run 2812: 11 passed, 0 failed). **New checks in `scripts/windows-smoke.mjs`** - **Deep link while hidden to the tray, and while minimised (#8):** the test opens `matrix:r/lotus-smoke-*:example.org` through Windows (`start`), so it goes the real route: protocol handler → a second `cinny.exe` → single-instance → the running app. **Passes:** the URL reaches the page as `lotus-deeplink`, and a minimised window is restored. - **Global voice hotkeys (#2):** PTT on F9 through `set_global_hotkeys`, then F9 pressed via `keybd_event`. It expects pressed and released `lotus-global-hotkey` events, and nothing after the bindings are cleared. - **Interactive-desktop check (first):** hide, then `show()`, then `is_visible`. **Finding: this runner has no interactive desktop.** Even a direct `show()` leaves the window hidden, and injected keys never reach `GetAsyncKeyState`. That usually means act_runner runs as a Windows service (session 0). On such a runner, window **visibility** and the **hotkey round trip** are reported `n/a` instead of failing. Run the runner in a logged-in desktop session and both get checked automatically. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared added 4 commits 2026-10-22 21:20:08 -04:00
Hide the window (then minimise it), open matrix:r/lotus-smoke-*:example.org
through Windows (protocol handler -> second cinny.exe -> single-instance),
and require the window to come back and the URL to reach the page as
lotus-deeplink.

Refs #8, #19

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
Register PTT on F9 through set_global_hotkeys, press and release F9 via
keybd_event, expect pressed and released lotus-global-hotkey events, and
none after clearing the bindings.

Refs #2, #19

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
The windows runner can't show a hidden window or inject keys (no
interactive desktop: even a direct show() leaves it hidden). Check that
first; the deep link must still reach the page and un-minimise, but window
visibility and the global-hotkey round trip are n/a on such a runner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
jared merged commit 8fe5d29be3 into main 2026-10-22 21:20:08 -04:00
Sign in to join this conversation.