Skip to content

fix(computer): keep the probe's fixture above an app's startup windows on X11 - #528

Merged
earakely-scale merged 2 commits into
mainfrom
fix/computer-probe-fixture-on-top
Nov 7, 2026
Merged

earakely-scale merged 2 commits into
mainfrom
fix/computer-probe-fixture-on-top

Conversation

@earakely-scale

@earakely-scale earakely-scale commented Nov 7, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The computer probe's fixture could lose to an app's startup window on X11, and the probe then failed with P4 a click in frame space hits its cell.

The fixture relied on full screen to be on top. xfwm4 won't put a full-screen window above a window an app has put above. One app keeps a licence dialog above for about two seconds at startup. If the fixture appeared within those two seconds:

  1. The dialog stayed over the middle of the fixture and took P4's first clicks.
  2. A later click raised the fixture, and the remaining checks passed.

This is a race, so it fails some boots and not others. A stacking capture during a natural failure shows the dialog ABOVE and taking the click. The same cause fits an app that opens maximized at boot.

On X11 the fixture is now:

  • maximized and -topmost;
  • raised again, with the focus, when its <Visibility> says another window covers it, at most once every 0.5 s, so it can't fight a window that raises itself.

macOS and Windows keep full screen. The probe aims at the boxes the fixture reports, so the smaller, maximized area changes nothing for the checks.

Test plan

  • New unit test, with Tk stood in for: on X11 the fixture is maximized and above, and takes the top back once covered. It fails on main and passes here. All 37 conformance tests pass.
  • New integration test, tst/integration/computer/covered_test.py: an app whose boot window stays on top over the middle of the screen, run with agent-env run --no-emulate. It must reach ready with no failed check.
    • On main it fails with P4's frame, norm, double and crop clicks.
    • Here it passes, both on an arm64 Linux host and on local Docker on macOS.
  • Real app on an arm64 Linux host:
    • Natural boots: 1 failure in 9 on main, 5 of 5 here.
    • With a window held on top: 2 of 2 failed on main, 3 of 3 pass here.
  • After review: the widget that last had the focus gets it back when the fixture takes the top back, so keys the probe types into a text box still reach it; a new unit test failed first. The integration test now also requires no unverified checks and at least one passed; it passes on local Docker on macOS (53 s).
  • Unit tier: the same 5 unrelated failures as main (cua driver, a GitHub clone test that needs credentials, a Windows disk recipe).

🤖 Generated with Claude Code

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge.

Summary

The PR keeps the X11 fixture above app windows and adds a covered-window regression test.

  • The X11 probe fixture retakes the top when an app window covers it.

Reviews (7) · Last reviewed commit: "fix(computer): give the focus back to th..." · Reviewed by Greptile

…s on X11

An app that keeps a window above others at startup, as Typora's licence dialog
does for about two seconds, stayed over the full-screen fixture on xfwm4, which
won't put a full-screen window above it, and took the probe's first clicks:
the probe then failed with "P4 a click in frame space hits its cell". On X11
the fixture is now maximized and kept on top, raising itself again, at most
twice a second, when another window covers it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@earakely-scale
earakely-scale requested a review from a team as a code owner November 7, 2026 17:00
… fixture takes the top back

Raising the fixture focused its root, so a window an app opened during a typing
check would leave the probe's keys with the root instead of the text box it had
just clicked. The widget that last had the focus now gets it back. The covered
integration test also requires every check to have run: a fixture that never
started leaves its checks unverified, not failed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@earakely-scale
earakely-scale merged commit 1ad4fb4 into main Nov 7, 2026
40 checks passed
@earakely-scale
earakely-scale deleted the fix/computer-probe-fixture-on-top branch November 7, 2026 23:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant