probe runs: off-screen window + isolated user dir (kill flicker, enable concurrent sessions) nf-ob7z ← Beads

closed priority 2 task unassigned

Twinned from https://github.com/cfsh/ninefold/issues/358 by tools/beads/import_github.py's reconcile pass.

From chat with Aedan (2026-08-01). Two related probe-infra fixes:

1. Stop the popup/flicker. Probe runs pop a visible game window that grabs OS foreground focus — annoying during normal work, and it can steal focus from a game instance Aedan is actively play-testing (bad, given focus behavior is the thing under test). Fix: when running under the probe harness (env flag, e.g. NINEFOLD_PROBE=1, or a --probe arg the runner already passes), position the window far off-screen (e.g. -3000,-3000) and avoid focus-grab. Off-screen windows still render and viewport screenshots still capture; nothing flickers.

2. Isolate user:// per clone. Godot keys user:// by project name, so multiple repo clones on one machine (coder sandbox clone + a second build session's clone + the ninefold-f5 test clone) share one app_userdata/Ninefold/. Probe scratch-saves (#129) protect songs, but options/config writes are unscoped — a probe exercising the options page in one clone rewrites the text-scale/palette the F5 instance in another clone is using, and concurrent probe runs can interleave writes. Fix: the probe runner passes Godot's custom user-data-dir flag pointing at a per-clone scratch dir (e.g. <clone>/probe_out/userdata), making probe runs fully hermetic. Optionally f5.sh could do the same for the play instance later, but the probe side is the urgent half.

Together these make N concurrent sessions on one box safe and invisible: no window fights, no shared-state crosstalk.

Dependencies

None.

Comments

No comments.

Add a comment