Commit Graph
66 Commits
Author SHA1 Message Date
Jinwoo Hong 62600ef808 Fix orchestration payloads on Windows (#4608) 2026-06-03 21:50:16 -04:00
Trevin Chow 2c2ac2edbf fix: handle detached launch spawn errors (#3957) 2026-06-03 18:46:00 -04:00
Jinwoo HongandOrca d10d01919a Improve Orca CLI worktree agent startup (#4492)
Co-authored-by: Orca <help@stably.ai>
2026-06-02 18:15:31 -07:00
Neil 9325b0cbb0 Fix stale mobile terminal input locks (#4506)
* Fix stale mobile terminal input locks

* Label desktop terminal RPC sends
2026-06-02 15:08:21 -07:00
Neil f7fb6ef686 Expose memory diagnostics through CLI (#4408) 2026-06-01 15:14:15 -07:00
BorjaandClaude Opus 4.8 0cf4f6010e Add --workspace-status flag to worktree set CLI (#3332)
The `worktree.set` RPC already accepts `workspaceStatus`, but the CLI
handler never forwarded it, so the board status could not be changed
from the command line. Pass the flag through, document it in the spec
and root help, and add a CLI test mirroring the existing --comment case.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 10:41:10 -07:00
Neil 00b6844d13 perf: avoid sorting CLI worktree selectors (#4107) 2026-05-31 04:28:55 -07:00
Neil a796d7952a Add automation precheck gating 2026-05-31 04:21:57 -07:00
Neil f3c8f7fbbe perf: throttle CLI screenshot cleanup (#4089) 2026-05-31 03:57:27 -07:00
Jinjing 2812c79011 Improve computer-use action follow-up commands 2026-05-30 13:21:56 -07:00
Jinjing ffbc4c3cfb fix: tighten CLI contract validation (#3874) 2026-05-30 12:55:47 -07:00
Jinjing 5dc6947fc6 fix: address review findings (#3866) 2026-05-30 12:45:49 -07:00
Jinwoo HongandOrca 30a09f3bd9 Add mobile terminal shortcut bar customization (#3012)
Co-authored-by: Orca <help@stably.ai>
2026-05-29 16:39:52 -07:00
Brennan BensonandOrca 39e6f85fdc Add Orca CLI feature tip (#3279)
Co-authored-by: Orca <help@stably.ai>
2026-05-29 16:20:13 -07:00
Trevin Chow 7d409005bc fix(cli): reject RPC promptly when runtime closes socket without responding (#2891)
sendRequest handled the socket's 'error', 'data', and 'connect' events but
never 'close'. A clean peer close (FIN, no error) before a terminal frame —
e.g. the runtime crashing or closing the connection mid-request — left the
promise unsettled until the full timeout fired: 60s by default, up to 10min
once keepalive frames had refreshed the client-side timer.

Add a socket.once('close', ...) that rejects with runtime_unavailable when
the socket closes before a terminal frame settles the request. finish()
already guards against double-settle, so this no-ops on the normal
success/error paths that call socket.end().
2026-05-28 19:48:08 -04:00
Trevin Chow f3b452fff5 Clarify orchestration reset scope flags
Clarify the CLI reset usage string and add focused handler coverage for reset flag mapping.
2026-05-28 16:40:06 -04:00
Jinwoo HongandOrca 3984291978 Validate orchestration reset scope (#2960)
* Validate orchestration reset scope

Require orchestration.reset callers to provide exactly one reset scope, while keeping the CLI no-flag shortcut explicit.

Design doc: docs/orchestration-reset-scope-validation.md

Co-authored-by: Orca <help@stably.ai>

* Add reset CLI subprocess e2e

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-27 21:40:33 -04:00
Trevin Chow 563d4ff64b fix(cli): allow flag values that start with -- via --flag=value (#2892) 2026-05-27 00:19:43 -07:00
Jinwoo HongandOrca c134b1c31d Fix hidden browser automation paintability (#2851)
Co-authored-by: Orca <help@stably.ai>
2026-05-26 16:27:23 -07:00
Jinwoo HongandOrca 523aa685bc Add file-opening commands to Orca CLI (#2782)
Co-authored-by: Orca <help@stably.ai>
2026-05-25 17:12:03 -07:00
Neil d4703bd1ab Restore agent hook opt-out controls (#2778) 2026-05-25 10:37:22 -07:00
Neil 28ba9151a5 Revert "Add agent hook opt-out controls" (#2739) 2026-05-23 23:04:57 -07:00
Neil 4f81953d10 feat: add agent hook opt-out controls (#2714) 2026-05-23 21:16:49 -07:00
Jinwoo HongandOrca a75a822339 Fix CLI-launched agent terminal viewport (#2561)
Co-authored-by: Orca <help@stably.ai>
2026-05-21 15:35:48 -07:00
Jinwoo HongandOrca 8da3a8c751 Fix terminal read review edge cases (#2560)
Co-authored-by: Orca <help@stably.ai>
2026-05-21 17:51:55 -04:00
Jinwoo HongandOrca f36d9a58fe Improve Orca CLI terminal read pagination (#2553)
Co-authored-by: Orca <help@stably.ai>
2026-05-21 13:58:45 -07:00
Jinjing d756614fc3 fix: harden Codex terminal readiness detection (#2462) 2026-05-20 17:50:59 -07:00
Jinwoo HongandOrca 2fee04a05b Fix tui-idle waits for background PTY agents (#2449)
Co-authored-by: Orca <help@stably.ai>
2026-05-20 15:14:24 -07:00
Jinwoo HongandOrca 3299635013 Add automation session reuse (#2329)
Co-authored-by: Orca <help@stably.ai>
2026-05-19 20:03:06 -07:00
Brennan BensonandOrca 79eaea4399 Clarify Orca CLI worktree lineage guidance (#2363)
Co-authored-by: Orca <help@stably.ai>
2026-05-19 17:37:24 -07:00
Jinjing 87c16a99c9 Improve lineage parent chip UI (#2364)
* fix: address review findings

* fix: unblock PR CI checks
2026-05-19 16:31:56 -07:00
Jinwoo HongandOrca 140ceb7fda Add automation CLI commands (#2315)
Co-authored-by: Orca <help@stably.ai>
2026-05-19 00:41:49 -07:00
Jinjing e0a5aa24d4 fix: address review findings (#2256) 2026-05-18 11:59:43 -07:00
Jinjing b609aa2bec Fix Codex terminal orchestration (#2039) 2026-05-15 20:31:28 -07:00
Jinjing 78fc047646 Fix terminal wait RPC idle timeouts 2026-05-15 19:11:19 -07:00
Brennan BensonandOrca bf85d51bc1 Add workspace lineage grouping (#1885)
Co-authored-by: Orca <help@stably.ai>
2026-05-15 17:21:00 -07:00
buf0-bot[bot]andorca-bug-scan-bot 08c2463b6f fix: pr-bug-scan validated finding from #1878 (#1962)
Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
2026-05-15 17:00:20 -07:00
Jinjing 82214e86ee Revert "Add project notes (#1861)" (#1945)
This reverts commit c73fd2c90b.
2026-05-15 11:46:06 -07:00
Jinwoo Hong 618f39d179 Add web runtime client support 2026-05-15 05:44:25 -04:00
Jinwoo HongandOrca a22717bb35 Refactor runtime app architecture (#1878)
Co-authored-by: Orca <help@stably.ai>
2026-05-14 23:13:37 -07:00
Jinwoo HongandOrca c73fd2c90b Add project notes (#1861)
Co-authored-by: Orca <help@stably.ai>
2026-05-14 13:33:24 -07:00
Jinwoo Hong abcd2d5836 fix: harden Windows computer use runtime (#1757) 2026-05-13 12:37:47 -07:00
Jinwoo HongandOrca 82090831f6 Create Orca CLI terminals without stealing focus (#1707)
Co-authored-by: Orca <help@stably.ai>
2026-05-11 23:14:30 -07:00
Jinwoo HongandOrca 0f54103dda Add native computer-use automation (#1683)
Co-authored-by: Orca <help@stably.ai>
2026-05-11 14:20:08 -07:00
Brennan BensonandOrca 1f43346c5f fix(resource-usage): hydrate pty-registry at boot; render · remote only for SSH repos (#1667)
* WIP: Changes before auto-review fixes

Co-authored-by: Orca <help@stably.ai>

* fix: address auto-review-fix-multi-agent findings

- Replace local ORCA_WORKTREE_ID_SEPARATOR with shared WORKTREE_ID_SEPARATOR
- Make hydrateLocalPtyRegistryAtBoot idempotent (one-shot per process,
  but stays retry-eligible until daemon provider is available)
- Strengthen daemon-pty-adapter strict-parser test to actually exercise
  the new short-circuit (test would have passed under the old loose
  parser too without the change)
- Add eslint-disable max-lines directive to oversized merge test file

Co-authored-by: Orca <help@stably.ai>

* chore: archive auto-review context to .context/

Co-authored-by: Orca <help@stably.ai>

* fix: address auto-review-fix findings

Drop the destructive reconcileOnStartup call from boot-time PTY registry
hydration: a transient listRepoWorktrees failure (returns [] and only
warns) would otherwise let the reconcile pass kill live local sessions.
The boot path is now read-only against the daemon — listSessions() only.

Also: tighten parsePtySessionId to reject degenerate `::` halves; replace
stale pty.ts:1005 references and a misleading local-unknown comment in
the hydrate module; narrow Store dependency to Pick<Store, 'getRepos'>;
log adapter listSessions failures instead of silently swallowing them;
re-anchor design-doc references on stable symbols and align §1b/§1c/§1d
with the implementation.

Co-authored-by: Orca <help@stably.ai>

* docs(resource-usage): update remote badge spec

Co-authored-by: Orca <help@stably.ai>

* test(resource-usage): cover boot hydration failure modes + warm-reattach e2e

Adds the regression coverage flagged in PR #1667's test plan that wasn't
already locked down.

vitest (`hydrate-local-pty-registry.test.ts`):
  - daemon offline at first call → no-op, hasHydrated stays false so a
    later macOS dock re-activation can retry.
  - listSessions rejection caught and logged, does not throw.
  - pid-write ordering: a pre-existing registry entry with pid=12345 is
    not clobbered by a stale `pid: null` from listSessions (§1d).
  - SSH-gate: a session whose repo has a non-null connectionId stays out
    of the registry, mirroring the spawn-time gate in pty.ts.
  - Happy-path: a local session is registered with the daemon's pid.

Playwright e2e (`resource-usage-warm-reattach.spec.ts`):
  Full quit→relaunch cycle against the same userDataDir; asserts that
  on the second launch the snapshot includes the warm-reattached PTY
  with a real pid before any pane mount, and that the seeded repo
  resolves as local (no connectionId). Mirrors the existing
  terminal-restart-persistence pattern.

Co-authored-by: Orca <help@stably.ai>

* fix(test): satisfy Pick<Store, 'getRepos'> in hydrator vitest

CI typecheck failed because FakeStore's getRepos returned objects missing
Repo's required fields (path, displayName, badgeColor, addedAt). Fill with
placeholder values; the hydrator only reads id + connectionId, but the
type signature still has to line up.

Co-authored-by: Orca <help@stably.ai>

* chore(resource-usage): drop bug-doc files; strip dead doc refs from comments

Remove docs/resource-usage-remote-mislabel.md (new in this PR) and revert
docs/resource-usage-merge-spec.md to the PR-base state. Strip the
matching `docs/...md §N` pointers from code/test comments, keeping the
surrounding "why" explanations intact so readers still get the
warm-reattach mislabel context.

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-10 17:17:52 -07:00
7fb5363296 feat(cli): tab switch --focus surfaces the browser pane (#1498)
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: Maciej Kobuszewski <maciej.kobuszewski@pergam.in>
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
2026-05-07 01:48:39 -07:00
NeilandHermes Agent b933333500 fix(cli): exclude tab profile list/create/delete from --page flag (pr-bug-scan #1397) (#1512)
Adds 'tab profile list', 'tab profile create', 'tab profile delete' to the
supportsBrowserPageFlag exclusion list. These commands operate on profile
identifiers, not browser pages, so accepting --page silently was misleading.

Supersedes #1458 (which was branched off stale main pre-#1396 and would
have reverted 'tab current' out of the exclusion list).

Co-authored-by: Hermes Agent <hermes@orca>
2026-05-06 14:38:58 -07:00
Brennan BensonandOrca 6f2e31afad feat(telemetry): PR 4 — wire 7 core events to call sites (#1433)
Co-authored-by: Orca <help@stably.ai>
2026-05-05 11:57:51 -07:00
e623372cdb feat(cli): add tab profile controls and automation primitives (#1396)
* feat(cli): add browser tab profile controls

* feat(cli): add tab profile automation primitives

* refactor(cli): narrow tab profile automation scope

* chore: retrigger PR checks

* review: harden tab profile automation CLI

- Wait for tab re-registration after browser.tabSetProfile so a follow-up tab list --show-profile reads the new sessionProfileId from BrowserManager instead of the stale one from the previous webview
- Wait for tab registration after browser.tabProfileClone, matching browser.tabCreate, so the cloned browserPageId is operable when the CLI returns
- Short-circuit browser.tabSetProfile when the tab is already on the requested profile so we do not tear down and remount the webview for a no-op switch
- Switch TabShow.worktree from OptionalPlainString to OptionalString to match every other tab schema; empty --worktree should fall back to the active worktree, not pass through as the empty string
- Add max-lines disable to browser.test.ts (file grew past 300 lines after adding the new tab-profile and tab-show tests)

* review: fix useIpcEvents test setup for tab profile API

CI failure: useIpcEvents.test.ts threw at module load with TypeError: window.addEventListener is not a function. The chain: the rebased useIpcEvents.ts imports destroyPersistentWebview from webview-registry, which calls window.addEventListener at module load. The test stubs window via vi.stubGlobal as a plain object without addEventListener, so the typeof window check passes but the call throws.

- webview-registry.ts: tighten the module-load guard to also check that window.addEventListener is callable, so importing this module from a non-DOM-ish test env (vitest node env with stubbed window) does not throw at module load
- useIpcEvents.test.ts: add the new onRequestTabSetProfile and replyTabSetProfile stubs to all 8 window.api.ui mocks so the new IPC subscription registered by useIpcEvents resolves

* review: restore profile CRUD lost during rebase onto 1397-merged main

The rebase brought commit 3242aa27 (refactor: narrow tab profile automation scope) onto a main that already had the lifecycle CRUD from 1397. The refactor commit removes BrowserProfileList/Create/Delete types, runtime methods, RPC registrations and schemas, plus the help/specs entries, because those were the precursor versions in commit 1 of this branch. Post-rebase those removals land on the hardened versions inherited from main, breaking 1397.

Restore:
- runtime-types.ts: BrowserSessionProfile import; ProfileList/Create/Delete result types
- orca-runtime.ts: ProfileList/Create/Delete result type imports; browserProfileList/Create/Delete methods
- browser-core.ts: ProfileCreate, ProfileDelete schema imports; browser.profileList/profileCreate/profileDelete RPC registrations
- browser-schemas.ts: ProfileCreate, ProfileDelete zod schemas
- help.ts: list/create/delete subcommand lines under Browser Automation
- specs/browser-basic.ts: list/create/delete spec entries

---------

Co-authored-by: Nikolatesla-lj <Nikolatesla-lj@users.noreply.github.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
2026-05-04 23:46:23 -07:00
9bf339eeb9 feat(cli): add tab profile lifecycle commands (#1397)
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: Nikolatesla-lj <Nikolatesla-lj@users.noreply.github.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
2026-05-04 23:01:15 -07:00