mirror of
https://github.com/stablyai/orca.git
synced 2026-09-22 08:02:28 +00:00
* perf(terminal): defer cold worktree activation tab mounts until first reveal Activating a worktree mounted a TerminalPane for every saved terminal tab in one render pass. Each mount replays scrollback through xterm, attaches a WebGL renderer, and issues a sync-IPC snapshot read, so a worktree with many agent-session tabs froze the renderer for tens of seconds (field trace: 200+ replay-guard stall releases inside one activation window, plus restore-marker feedback loops re-fetching snapshots at ~4/sec). Cold activations now mount only the tabs the user can see (active tab, each split group's active tab, activity-portal tabs, pending spawns) plus tabs that are already live or that parked byte watchers cannot cover. Every other tab defers like a cold-parked tab from birth: no view until first reveal, with the parked byte watchers owning bell/title/completion side effects meanwhile. The restriction reuses the targeted background mount mechanism and lifts once every tab has been revealed. Deferral only engages when more than four tabs would mount cold, and only while hidden-view parking is enabled, so small worktrees and the parking kill switch keep today's behavior. * test(terminal): prove cold-activation deferral end-to-end; unblock it past hydration's blanket spawn flag The new e2e (child worktree, 8 tabs, renderer reload against live daemon sessions) caught the deferral never engaging: session hydration marks every persisted tab pendingActivationSpawn, and treating that flag as must-mount-now put all tabs in the immediate set. Only explicit queued startups (pendingStartupByTabId) mount eagerly; a deferred tab's reveal consumes the hydration flag exactly like an activation mount would. Sleep/wake respawn flows go through targeted background mounts and are unaffected (terminal-sleep-wake-restore passes). The spec asserts the visible tab mounts, deferred tabs stay unmounted with parked byte-watcher coverage, and a revealed tab mounts on demand. * fix(terminal): harden deferred activation lifecycle * docs(reliability): correct SSH startup assertion evidence