mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 17:37:40 +00:00
* fix: report agent launch failures once with actionable recovery * fix: keep terminal launch controls shown but waiting while the host connects Replace per-row pending metadata with one derived terminal-readiness flag on the agent menu model, kept out of picker identity keys. Terminal buttons and rows stay mounted and disabled while SSH or a paired server is still connecting; chat and Configure stay usable, and the terminal default is not changed. Repo targets with no workspace yet read the repo host's facts. Invalid Source Control arguments keep their existing actionable message. * fix: keep launch readiness and failure ownership consistent across pickers and fallbacks A host that is still connecting now declines a terminal launch silently at the launcher, including shortcuts and fallbacks, instead of reporting a failure. A terminal fallback refused behind a visible chat reports through that chat's notice rather than a second toast. The agent picker stays usable while only a terminal waits; an armed terminal rechecks readiness on Enter; a configured chat option no longer inherits the terminal's waiting state; waiting terminal controls say why. Invalid CLI arguments name the actual problem for every caller, the no-agent shortcut message is restored, and prospective repo readiness no longer rescans repos on unrelated store writes. * fix: keep the handoff dialog open when a host-waiting launch opens nothing A session continuation launched through the host's admission now waits for that launch to settle before reporting the handoff. When the host declines the chat and its terminal fallback is declined while the host is still connecting, nothing opens, so the dialog stays open for a retry instead of closing with no session and no message. * fix: let the handoff dialog close while its session is starting Cancel, Escape and outside clicks now close the Hand Off dialog even while a start is in flight; Start stays disabled with its spinner. Closing aborts agent detection if it is still running, and a dialog closed during detection starts nothing. A launch already sent settles on its own and reports through its existing owners. The in-flight start belongs to the request it was made for, so a late finish never closes, completes or blocks a dialog reopened since. * test: replace type assertions in launch refusal tests with typed fixtures * refactor: name the setup panel's launch helper launchSurface * perf: resolve a picker's terminal host only when ownership changes The terminal readiness check rebuilt the target's ownership chain and ran the full OS resolver on every store write, for every mounted picker. Each picker now keeps its target host and re-resolves it only when an ownership slice changes; other writes read just that host's connection and contact facts. Local hosts read nothing. The launcher's own pending decline uses the same host pieces from execution-host-facts, so the rule has one copy. * perf: word a declined chat's fallback failure without re-saving launches Wording the failed chat's notice after its terminal fallback was refused re-saved every retained launch record, though the wording itself is never saved. Listeners now hear about it without a save; lifecycle changes still save. The refused-fallback test moves to its own file and counts saves at two sizes. * test: narrow refused launch outcomes where tests read the opened tab launchAgentInNewTab now returns a refusal instead of a tab when the launcher declines, so tests that read the opened tab's surface or completion narrow it first. Fixes the web typecheck. * fix: keep Configure usable and show one reason on a waiting agent row While the host connected, each New Chat agent row was marked aria-disabled, so its Configure button read as disabled to assistive tech and keyboard. The row now only blocks its launch and points to its "Connecting…" reason. A row shows one reason, the one that stops its launch now, and the agent name keeps its width so it is not cut to a single letter. * test: cover distinct repo targets and host freshness in the picker perf contract Pickers for workspaces not created yet now count repo reads cold and after another host's row is republished, at two scales with a repeated-target control, and assert no unaffected renders. Two freshness controls follow the cached host: an owner moving from local to a connecting SSH host and back, and a paired server that is still checking versus verified with its OS. * fix: mark a waiting agent launch unavailable while Configure and chat stay usable An agent row's launch item also held its Configure button (New Chat) or its start-in-chat button (the + menu). Disabling the row while the host connected disabled those too; leaving it enabled made the waiting launch read as available and then do nothing. The launch item and those controls are now siblings. While the host connects the launch item is marked unavailable, dimmed and described "Connecting…", and stays focusable so arrow keys still reach the controls beside it. Configure and chat keep their own state. A chat started from Configure or the chat button goes through the row's guarded launch and closes the menu, without choosing the waiting item. * fix: release the agent row button's press listeners when a press is cancelled Each press on the button beside an agent row added a window listener that only a pointerup removed, so cancelled touches and closed menus left them behind. A press now owns one handler that removes both listeners on release, cancel, the next press or the row closing; drag release onto the button still chooses it. * fix: give the agent launch row item its own menu item variant The launch item beside Configure or the chat button restyled the shared menu item (transparent focus, dimmed while unavailable), which the design system gate rejects. That treatment is now the menu item's launch-row variant; the rendered rows are unchanged. * fix: route the menu's terminal host by owner and repair the e2e and ja checks The menu's terminal readiness now reads workspace records through the workspace record selectors and picks a not-yet-created workspace's repo by the host it names, without the focused-host fallback; with no host named it settles only when the id has one row, which reads the same. Its cached host is re-checked when the settings slice changes instead of reading the focus setting. E2E unit tests narrow refused launch outcomes, and the two new ja strings write Agent as the rest of the catalog does. * test: count a launch as opened only when it returned a surface A refused launch now returns its refusal instead of null, so the parity check asks whether a surface opened. * perf: keep menu readiness on the workspace's owner and index the twin fallback Terminal readiness re-resolved every mounted menu's host on any settings write, and an unstamped worktree whose project is listed both here and by a paired server walked the whole repo catalog to resolve. Readiness now resolves an existing workspace's host from its resource owner only, never the focused default a row-less setup terminal is created on, so settings writes leave it alone. The shared-project check reads that project's rows from the existing per-snapshot repo index instead of the whole catalog. Setup terminals and every route keep their behavior. * test: assert which readiness pickers render on each detected-twin update The detected-twin perf contract now checks render deltas per update: a catalog republication renders no picker, and stamping the first workspace with a checking server, then that server reporting its OS, renders only that workspace's pickers. * test: give the structured chat fixture's owner stub the menu's resource host The fixture replaces the whole worktree owner module with a stub, so the menu readiness check's new resource-host export was missing and the picker path threw before launching. The stub now answers both exports with the scenario's owner host. * Keep launch failures with one action owner on current menus * Align Start work regression with its remote launch target * Narrow refused launch outcomes in current contract tests * Assert notified refusals in existing launch regressions * Assert the refused keyboard launch receipt * Narrow successful web runtime launches in tests * Keep agent menu labels left aligned * Keep merged launch reporting within existing checks * Keep direct launch argument reads within the file limit