On a timeout or a setup error the request now stops the scheduled task and
waits for it to end before releasing the mutex, so a stalled helper can't
act later inside another request.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Windows releases the mutex when the request's process ends, so there's no
stale lock to recover and no window where two requests can take each
other's. Requests sent together now run one after another.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
input.txt is now created with CreateNew, so only one request can hold it; a
lock older than 15 s is treated as left by a dead run. The outer PowerShell
stops on any error, says why in one line, releases the lock and exits 1.
docs/testing.md names both keys Set Up Connection can add to the headset.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- frame-key remove deletes only the exact line add wrote, through a private
temporary file, and leaves authorized_keys alone if it can't read or
rewrite it. add checks the VM's key is a plain ed25519 key, keeps a last
line without a newline intact, and doesn't duplicate a key the headset
already trusts.
- The input helper stops on any error before acknowledging, refuses a
second click while one is in flight, and coordinates are bounded.
- Host, container and user names are checked before they reach a remote
shell; PowerShell errors come back as plain text.
- docs/testing.md says what frame-key does and doesn't undo.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
scripts/windows-vm.sh drives a dockur/windows Windows 11 VM from the Mac over
ssh -J: start/stop, PowerShell, copy files in, screenshots via QEMU's
screendump, clicks and scrolls replayed by a scheduled task in the signed-in
session, QEMU key names, and a tagged, removable headset key for tests
against a real Frame. docs/testing.md explains setting it up (Windows from
Microsoft, loopback-only ports) and the pitfalls found reproducing the
Windows "RDP not working" report. docs/streaming.md records what Remote
Desktop from Windows does against the Frame's xrdp (verified 2026-09-30).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>