Commit Graph
17480 Commits
Author SHA1 Message Date
Neil d3dfd7aff4 Merge pull request #414 from nwparker/cloud/ra11e-fallback-fix
fix(cloud): RA-11e resume backstop watches the relaunched terminal (25 s, ANSI-safe, logged)
2026-11-11 03:13:35 -08:00
Neil 779a0c0738 Merge pull request #415 from nwparker/cloud/pc3b-start-focus-2
fix(cloud): PC-3b Start Claude focuses the agent tab after the placeholder closes
2026-11-11 03:13:31 -08:00
Neil 8952fc654a fix(cloud): asleep header note is always the agreed "Read-only copy saved when it went to sleep."
design-squad: the copy kept on this computer said "Read-only copy kept on this
computer." while the cloud one said the agreed text; once asleep it is the agreed
text everywhere. Drops the now-unused locale key.
2026-11-11 03:03:12 -08:00
Neil ffd4a975b8 fix(cloud): PC-3b Start Claude focuses the agent's tab after the placeholder closes
integration-keeper (44b4c2072d, nk-pc3b/4-started): after Start the Claude tab opened but the plain
Terminal stayed active. The agent create did ask for focus, but the held placeholder is closed right
after, and closing the active tab selects its neighbour. When the person started it, the agent's tab
now takes focus once the placeholder is gone; a Renew auto-start still never steals focus.
2026-11-11 03:00:00 -08:00
Neil 3eaf8d64e7 fix(cloud): RA-11e the resume backstop watches the relaunched terminal for 25 s, strips ANSI, never fails to build its command
integration-keeper's smoke of Neil's cut (44b4c2072d): Restart on a turn-less pane ran
'claude --resume 53b983b5…', which printed 'No conversation found' and left a bare shell; the backstop
never relaunched fresh. The watch now keys off the pane's terminal handle (a relaunch may reuse the
host's PTY id), waits up to 25 s (Claude's start on a sandbox plus the pane's re-attach can exceed
10 s), strips ANSI before matching, falls back to the plain launch when the fresh command can't be
built from settings, and logs each step so a miss is diagnosable.
2026-11-11 02:57:09 -08:00
Neil 8a72dba6a3 fix(cloud): asleep terminal copy puts each boot's prompt on its own line, no blank rows above
From design-squad's review of the #410 shot: a respawned terminal's saved tail
had each boot's prompt glued onto one row (with a horizontal scrollbar) above
~300px of never-written rows. The read-only copy now splits a line where a new
'user@host:' prompt starts right after a '$'/'#' prompt, and trims leading and
trailing blank rows. Ordinary output (addresses, $ amounts, blank lines inside)
is untouched. Fixture: CloudWorkspaceOfflineView:terminalAfterWakes.
2026-11-11 02:56:43 -08:00
Neil fd52c450aa Merge pull request #410 from nwparker/cloud/w2-snapshot-one-terminal-per-tab
fix(cloud): the asleep copy keeps one terminal per tab, not one per boot
2026-11-11 02:51:46 -08:00
Neil 4f1af901ef Merge pull request #413 from nwparker/cloud/w6-stop-exact-stragglers
fix(terminal): exact stop reaps every process of the PTY, even ones that left its session (RA-ORPH, P1)
2026-11-11 02:50:41 -08:00
Neil 98914ef7b2 fix(terminal): no type assertion in the /proc listing 2026-11-11 02:45:43 -08:00
Neil 298d751a7f fix(br-3): bounded, sleep-aware re-try for a sandbox server that isn't running
Per design-squad: re-try only while the tab is visible and the sandbox is
awake (never while asleep, waking or going to sleep, so it can't wake it);
every 4 s for 2 minutes, then every 15 s, stopping at 10 minutes; re-armed
when the tab is shown again. The reload swaps the page in place.
2026-11-11 02:45:30 -08:00
Neil a4fb1f0cce fix(br-3): honest in-tab state when a cloud tab's sandbox can't reach a site
Cloud sandboxes have allowlist-only egress, so a desktop-hosted cloud tab
pointed at an unlisted host showed 'Can't reach example.com ·
ERR_SOCKS_CONNECTION_FAILED'. For Orca Cloud pages failing with a SOCKS/proxy
code: 'The sandbox can't reach <host>' with design-squad's copy and 'Open in
your browser'; for localhost, 'Nothing is running on <host> in the sandbox.'
with no button and a quiet auto-retry so a server that starts later appears.
The raw error stays as a muted details line.
2026-11-11 02:42:11 -08:00
Neil 0008bc13b6 fix(terminal): an exact stop reaps every process of the PTY, even ones that left its session (RA-ORPH)
Each PTY's processes inherit ORCA_PTY_SESSION_ID=<pty id> at spawn. After terminal.stopExact's normal stop, orcad scans /proc (Linux, async) for anything still carrying that exact id, SIGKILLs it by process group (only groups led by a marked process), and fails the stop with terminal_exact_stop_failed (reason agent_survived) if anything survives a short grace, instead of reporting it verified. Sibling panes carry their own id and are never touched.
2026-11-11 02:39:58 -08:00
Neil 44b4c2072d Merge pull request #401 from nwparker/cloud/pc3b-start-focus
fix(cloud): PC-3b Start Claude on the held strip brings the agent's tab forward
2026-11-11 02:37:28 -08:00
Neil 3f56d651aa chore(cloud): log one line per pruned stale cloud workspace, with its sandbox id and why (LC-2 follow-up) 2026-11-11 02:25:48 -08:00
Neil fd04472213 Merge pull request #408 from nwparker/cloud/w2-row-word-after-wake
fix(cloud): the row reads running, not Asleep, right after a wake goes live (W2 P3)
2026-11-11 02:23:55 -08:00
Neil 312fd917c7 Merge pull request #409 from nwparker/cloud/w3-br1
fix(br-1): honest in-tab state for agent-opened cloud pages, with Open on this computer
2026-11-11 02:21:16 -08:00
Neil e3813c5bae fix(cloud): the asleep copy keeps one terminal per tab, not one per boot
Seen on m4air: after two wake/sleep cycles the asleep read-only copy listed 3
terminals for a workspace with one tab. Each boot respawns the tab's terminal
under a new handle and the old handles' cached reads stayed. The copy now keeps
only the terminals the newest whole-workspace terminal.list names (plus any read
after it); a filtered listing never decides, and with no listing all are kept.
2026-11-11 02:20:34 -08:00
Neil ee488d2c8a fix(br-1): cloud never falls back to the stream path; final non-http and retry copy
Orca Cloud counts as no screencast until a probe proves otherwise, so a
sleeping or unreachable sandbox cannot surface 'Cannot reach…' stream notices
(BR-2 closes with this). Non-http pages: 'Orca can't show the sandbox's
browser here yet.' + 'This page can only be viewed in the sandbox.' A failed
open says 'Couldn't open the page. Try again.' (polite live region).
2026-11-11 02:17:35 -08:00
Neil ac6dc0463f Merge pull request #407 from nwparker/lc2/lc2-gone-cloud-records
fix(cloud): sandboxes deleted elsewhere leave no 'Orca Cloud · Couldn't start' row (LC-2)
2026-11-11 02:15:11 -08:00
Neil 452556f730 fix(br-1): honest state for agent-opened cloud pages, with Open on this computer
Orca Cloud's orcad hosts agent/CLI pages in a headless browser it cannot
stream (no browser.screencast.v1), so the tab showed a 'Remote browser'
placeholder and a 'does not support remote browser streaming' toast. On
runtimes without screencast, the viewport shows design-squad's state instead;
'Open on this computer' opens a new focused desktop-hosted tab beside it
(loopback tunnels through the sandbox), keeping the sandbox tab. file:,
about:, chrome: pages get no button. Other stream notices are unchanged.
2026-11-11 02:13:48 -08:00
Neil caf089751c fix(cloud): the row reads running, not Asleep, right after a wake goes live (W2 P3)
Seen on m4air: ~200ms after a wake went live the sidebar row read "Asleep",
because main's ready arrives before the status re-read and the last read still
said sleeping. A ready wake newer than the last status read now counts as
running; a read taken after it (or archived/failed) is the truth again.
2026-11-11 02:13:16 -08:00
Neil f378609aa0 Merge pull request #399 from nwparker/cloud/w2-p2-midsuspend-wake-cover
fix(cloud): Waking cover from the press when Wake lands while a sleep is suspending (W2 P2)
2026-11-11 02:11:16 -08:00
Neil e67b453d95 fix(cloud): a sandbox deleted from Home or elsewhere leaves no 'Couldn't start' row: own record retired on delete, gone-prune runs on list refresh and on a not-found status read (LC-2) 2026-11-11 02:09:33 -08:00
Neil 285382c0b2 Merge pull request #400 from nwparker/cloud/w2-p3-going-to-sleep-copy
fix(cloud): going-to-sleep copy says it's saving; row waits for the view (W2 P3)
2026-11-11 02:06:54 -08:00
Neil 55bde0d593 fix(cloud): no 'Reconnecting…' banner while a Wake waits on a suspending VM (W2 P2)
Seen on m4air: Wake to continue pressed mid-suspend showed the Waking pill from
the press, but as the VM went down the pane's recovery notice briefly read
'Reconnecting to w2slot…' (~1.5s) because only the store's wake counted as
waking. The pending wake now counts too.
2026-11-11 02:06:11 -08:00
Neil ee6aa8fa43 Merge pull request #397 from nwparker/lc2/p1-wake-during-suspend
fix(sleep): tabs survive a wake pressed while the suspend is still committing (LC2-P1)
2026-11-11 02:00:50 -08:00
Neil 2b335b9682 Merge pull request #390 from nwparker/cloud/pc3b-composer
Cloud: create with the agent behind the PC-3b hold; held first prompt copy (PC-3b composer, DS-e)
2026-11-11 01:46:10 -08:00
Neil ad688e30e9 test(sleep): a host snapshot after Sleep keeps slept tabs until their page is answered (LC2-P1) 2026-11-11 01:21:42 -08:00
Neil e259e276dd fix(cloud): PC-3b Start Claude on the held strip brings the agent's tab forward
composer-redo (pc3b-390-394/4-started.png): Start opened the Claude tab in the background (a create's
first agent asks for activate:false), so the person stayed on the plain Terminal and never saw the
queued prompt run. A hold released by the person's Start now creates the agent with activate:true;
a Renew-driven auto-start (possibly on a background tab) keeps the original args and never steals
focus.
2026-11-11 01:21:09 -08:00
Neil c88ae61482 Merge remote-tracking branch 'private/cloud/integration' into cloud/pc3b-composer 2026-11-11 01:20:50 -08:00
Neil 3acbf5de6c fix(sleep): host session snapshots can't drop a slept tab before its page reopens (LC2-P1 root cause on m4air) 2026-11-11 01:17:41 -08:00
Neil dc05b251cb Merge remote-tracking branch 'private/cloud/integration' into cloud/ra11b-source-read-retry 2026-11-11 01:17:28 -08:00
Neil b0541b4994 fix(cloud): PC-3b one hold for every Orca Cloud agent launch: the host terminal create choke point
composer-redo (W-93/W-94): with #390's draft-startup gate the host got no startup, but the same
startup went to the pane (windowStartupAfterCreate → createNewTerminalForStartup → web-host terminal
create) and Claude still started into /login. Port #395's choke point: createWebRuntimeSessionTerminalResult
holds an Orca Cloud Claude/Codex launch (not set up or expired, no key) before creating anything, so
every caller (new tab, create's pane startup, post-wake relaunch) is held once; the per-caller wrappers
are gone. The guard asserts only the choke point (plus the pane spawn gate and local-runtime paths)
call the host create RPCs; an exactly-once test: one create with a queued prompt → one strip → one
agent create after Start.
2026-11-11 00:57:40 -08:00
Neil 1ca4171c62 Merge remote-tracking branch 'private/cloud/integration' into cloud/pc3b-create-prompt-hold 2026-11-11 00:56:07 -08:00
Neil d31794be04 test(cloud): PC-3b raw host-tab launcher guard: the create path's site is #390's 2026-11-11 00:55:54 -08:00
Neil a750791494 Merge remote-tracking branch 'private/cloud/integration' into cloud/pc3b-create-prompt-hold 2026-11-11 00:54:00 -08:00
Neil 64427395af fix(cloud): PC-3b rescope: drop the held-file and create-path changes (create path goes to #390) 2026-11-11 00:53:59 -08:00
Neil 1c544862bd test(cloud): RA-11e strip render test uses a typed terminal leaf id 2026-11-11 00:51:46 -08:00
Neil 70f73ecdb6 fix(cloud): going-to-sleep header says the copy is saving; row waits for the view (W2 P3)
While going to sleep with an earlier copy on screen, the header note now reads
"Saving a read-only copy of chats, terminals and changes…" (design-squad's
wording) instead of "Read-only copy kept on this computer.". The sidebar row
keeps "Going to sleep…" until the sleep ends, from the same flag as the view,
instead of flipping to Asleep when the record does; a failure still names itself.
Fixture: CloudWorkspaceOfflineView:goingToSleepWithEarlierCopy.
2026-11-11 00:50:39 -08:00
Neil 89038920cd Merge remote-tracking branch 'private/cloud/integration' into HEAD
# Conflicts:
#	src/renderer/src/i18n/locales/en.json
2026-11-11 00:50:07 -08:00
Neil 4c783c07e9 test(cloud): RA-11e render test mounts the Orca Cloud running strip portal in expired, restarting and started-fresh states 2026-11-11 00:49:35 -08:00
Neil 5703014776 Merge remote-tracking branch 'private/cloud/integration' into cloud/read-snapshot-signed
# Conflicts:
#	src/renderer/src/i18n/locales/en.json
2026-11-11 00:47:26 -08:00
Neil ffc1f41a47 fix(cloud): RA-11e catalog keys only under agentSignInStrip (strays removed); runtime catalog synced; test without casts 2026-11-11 00:43:55 -08:00
Neil 2cb42da56d fix(cloud): re-opening a workspace from its row mid-suspend shows Waking too (W2 P2)
Left during the sleep, then clicked back: activation selects it, then (before its
panes mount) marks it asleep and holds the read-only view again, and records the
wake, so its panes wait for the wake instead of attaching to a VM going down.
2026-11-11 00:41:45 -08:00
Neil ada6999f9c test(sleep): type the wake-race test's store state 2026-11-11 00:40:35 -08:00
Neil 0b948f462d fix(cloud): RA-11e import cloudAgentRestartStartedFresh in the running strip portal 2026-11-11 00:39:57 -08:00
Neil 9a88709e0a fix(cloud): expired row tooltip reads 'Renew for Orca Cloud' (design-squad) 2026-11-11 00:39:32 -08:00
Neil 485370e071 fix(cloud): show Waking from the press when Wake lands while a sleep is suspending (W2 P2)
"Wake to continue" pressed after main committed the suspend used to re-open the
workspace at once: about 4s of dead panes with no cover while the VM went down,
then the wake. Now activation records the wake (held typing included) and keeps
the read-only view; the surface shows the Waking cover from the press; once the
sleep ends the follower wakes it the ordinary way, and main's reports count from
the press. A failed sleep releases held typing; one the user left is not woken.
2026-11-11 00:38:14 -08:00
Neil 37f2995d58 fix(cloud): agent-row sign-in tooltip names Orca Cloud, not Settings (it opens the JA-04 sheet)
'Set up once in Settings → Agent accounts' / 'Renew in Settings → Agent accounts' become
'Set up once for Orca Cloud' / 'Renew once for Orca Cloud', matching the strip.
2026-11-11 00:37:51 -08:00
Neil dcb7104905 fix(cloud): RA-11e neutral 'Restarting Claude…' while it runs; 'Started a new conversation.' when the resume had nothing
While a Restart runs the strip no longer promises 'Picking up where you left off.' (the recorded session
may have no conversation). When the backstop starts the agent fresh, the strip says 'Started a new
conversation.' for 3 s, then clears. An end-to-end test drives resume → 'No conversation found' → one
fresh relaunch → the line once; catalog synced (restartingResume removed).
2026-11-11 00:37:25 -08:00