Each Orca Cloud create logs `[orca-cloud] create <creationId> <phase> +<ms>`
(ms since its provision started) to the main app log, so a slow create shows
which phase took the time. The provision's own `[orca-cloud] <stage>` progress
lines are unchanged.
Also folds the two identical post-start cleanup-and-fail blocks in the
provision handler into one helper (ephemeral-vm.ts was at the 300-line cap).
Quitting and reopening the app restored a running cloud terminal's saved
scrollback, then its reattach replayed the host's subscribe snapshot with a
clear - capped at the phone-sized 1000 rows - so everything above was gone.
Local panes survive the same clear because their daemon snapshot carries the
full 5000 rows.
Host side (runs in the VM; needs the dev golden rotation):
- the initial subscribe snapshot for a non-mobile stream tries 5000 rows
(DESKTOP_TERMINAL_SCROLLBACK_ROWS_DEFAULT) under a 2 MB raw budget (the same
a requested desktop snapshot already gets; snapshots are chunked), stepping
down 5000 -> 2000 -> 1000 -> ... when over; phones keep 1000 rows / 512 KB;
- ack-recovery snapshots after dropped output: desktop depth for non-mobile.
Renderer: a gap resync asks for desktop depth (the host caps by bytes).
The slot-holding python parent now traps INT/TERM (forwarding to a running child) and, in a finally, removes the temp
worktree (git worktree remove --force, rm -rf) and prunes it from the main repo. The pre-exec stage has its own
EXIT/INT/TERM trap for the window between worktree add and the hand-over. Tested: 3 runs, limit 2, run 3 killed with
TERM while queued -> exit 143, 'stopped by signal 15; removed …'; all three temp worktrees gone from disk and from
git worktree list.
The shared Mac hit load 60 from parallel premerges and vitest runs, starving the e2e harness. In the merged copy
every branch re-runs (#447), after the merge and before install/typecheck/lint/tests, the script now takes one of
PREMERGE_MAX_CONCURRENT (default 2) flock'd slot files under PREMERGE_LOCK_DIR (default /tmp/vdrv), held by a python
parent for the run (a killed run frees its slot). Queued runs print 'premerge: queued for one of 2 slots …, waited Ns'
every 30 s and 'got slot i/2 after Ns'. Tested: 3 concurrent runs with a limit of 2, the third queued 10 s.
journey-audit v2: the 'Claude isn't set up' toast followed the user through other workspaces and the sleep view. design-squad (PC-3 reversed on purpose): in the workspace the pane's Set up once strip asks; away, the sidebar row shows a key mark with the tooltip and aria-label 'Claude isn't set up for Orca Cloud' (or 'sign-in expired'). The away toast and its modules are removed. Toast-stack scoping (push notice) is env-check-ux's half.
Past 5 s the running Start sandbox row says what it is waiting on: 'Getting your project ready…'
(the desktop is still preparing, before the create is sent), 'Checking your plan…', 'Starting the
sandbox…', or 'Connecting to the sandbox…' (after the server answered). A normal start stays quiet.
Replaces the immediate phase detail (latestOrcaCloudPhaseLabel).