You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 31a911d
Browse filesBrowse the repository at this point in the historyBrowse files
improvement(desktop): ship the background executor without a flag, close its QA gaps (#8782)
* improvement(desktop): ship the background executor without a flag
* fix(desktop): wait on the shell's own startup signal before refusing a run
A background terminal run on a fresh shell waited a flat 8 s for the first
prompt and then failed with NO_SHELL_INTEGRATION. A startup file that stops
at a question (oh-my-zsh's update prompt) holds the prompt indefinitely, so
the run failed with a message blaming the shell's integration.
The generated startup files now send a SimStartup marker before any of the
user's files run. A shell that never sends it within 8 s of spawning is not
instrumented and is refused as before (an unsupported shell at once). One
that did gets 30 s to reach its prompt, which tolerates slow startup files
on a busy machine; past that the run is refused with the screen it is stuck
on, so the agent can ask the user to answer it. Stop now ends the wait, and
a shell that exits mid-wait reports SESSION_CLOSED.
* test(desktop): durable E2E reports, hermetic shells, and a real network cut
- background-executor and terminal-cancel record each check through one
shared helper as it finishes. The background-executor report was written
from module state in afterAll, so a worker restart after a failure wiped
it and the report could read green. Reports from an earlier run are
replaced, not appended to. check-report.spec.ts forces a worker restart in
a nested Playwright run and asserts the failure stays.
- The executor fixture launches the app with zsh and an empty ZDOTDIR, so a
developer's .zshrc (an unanswered oh-my-zsh update prompt) cannot hold the
first prompt and fail unrelated scenarios.
- Scenario B now cuts the network at the socket level: every open
connection, the doorbell stream included, drops and new ones are reset.
It asserts the result lands exactly once, the doorbell reopens, and new
work is picked up after reconnecting.
* test(desktop): a call declined in a background chat is never claimed or run
The fixture Sim can now decline a held call the way Sim settles it, and the
executor suite checks the device never claims it and its command never runs
after the approval notification.
* test(desktop): run the live desktop suite with the background executor on
The live suite's Sim has Redis, so with the executor shipped always-on every
turn now binds to the app and runs in the background. The proxy answers the
app's registration as an install without Redis would, so the chat-view tests
keep covering that path, and the round trip asserts the app stays dormant.
Two tests let Sim's own answer through: a call issued after the user switched
chats runs on the desktop, and a result reported across a network cut (every
connection dropped, the first report landing late) reaches the agent exactly
once.
* fix(desktop): measure a shell's startup bound from when its startup files began
The 30 s bound ran from spawn, so a shell whose startup marker arrived late
on a busy machine got less than the promised time for its startup files.
The deadline now starts at the marker.
* test(desktop): drop the outer runner's variables with the shared omit helper
0 commit comments