Commit Graph
2938 Commits
Author SHA1 Message Date
Neil 2ba3f6f6b4 fix(mac): give the terminal host its own executable UUID so Local Network access works in terminals (#42245)
Orca terminals run under the signed helper, whose executable was stock Node,
sharing its LC_UUID with every install of that Node build. macOS Local Network
privacy maps a responsible process to an app by that UUID, so terminals could be
attributed to another program and blocked from the LAN while Orca showed allowed.

Rewrite the helper executable's UUID during assembly (same scheme as #41676),
and fail packaging and the release check if it drifts.

Fixes #21988
2026-11-13 19:03:23 -08:00
Kelvin Amoaba a406364654 fix(computer): click, set and scroll Windows buttons, text boxes, combo boxes and lists without bringing the window forward (#42237)
* fix(computer): press, set and scroll Windows native controls without activating the window

Measured on Windows CI: UI Automation's Invoke, Toggle, ValuePattern and
ScrollPattern focus a background WinForms control first, which activates its
window. Native controls now go through their own messages instead, each
owner-checked: BM_CLICK for buttons, check boxes and radio buttons, select-all
plus EM_REPLACESEL for set-value on edits, CB_SETCURSEL with CBN_SELCHANGE for
combo boxes (exact-text match, read back after the app's handler runs) and
LB_SETTOPINDEX for list box pages.

* fix(computer): refuse read-only Windows documents before typing keys, document the caret fallback

* fix(computer): keep Windows native routes to measured controls and refuse partial writes

BM_CLICK only for WinForms buttons, multi-column lists stay on ScrollPattern, a
list already at its end reports success, edits refuse text past their limit,
the combo's owner is checked right before the selection, a cleared selection
reads as a mismatch and a disabled control is element_not_enabled.

* fix(computer): hold Windows edit limits without a readback, require a complete combo search

* fix(computer): read a long Windows edit's length from the field for its limit check

* test(computer): share the Windows fixture action helpers
2026-11-14 02:45:10 +00:00
Jinjing a8f6e79631 Improve workspace sidebar cards and activity status (#41894)
* wip

* wip

* wip

* wip

* Improve experimental worktree cards with compact agent summaries

- Add an optional details row for workspace metadata and indicators
- Roll up descendant activity timestamps to parent cards

* Reduce worktree card metadata indentation

* wip

* Expand sidebar agent lines with subagents and remote host status

- Show subagent activity, send targets, and unread signals in slot cards
- Identify remote hosts and provide SSH reconnection controls

* Show child workspace status counts in sidebar cards

Distinguish monitoring agents and refine lineage alignment so workspace
activity is easier to scan.

* Enable navigation from worktree sidebar activity indicators

- Open the matching agent or workspace directly, or choose among multiple sources
- Use host-qualified identities for nested workspace activity
- Show pull requests in 2.0 card details and refine compact card layout

* Show every status in the sidebar card corner and let cards open and close

The title-row corner now shows one glyph per status the card speaks for
(needs, failed, unread, working), most urgent first, followed by the time,
instead of only the most urgent one. Each glyph opens its own sources.
Collapsed child workspaces report all their statuses through a flat,
shallow-comparable record.

Experimental 2.0 cards can also be opened and closed; a closed card's
title slot speaks for its hidden agents and children.

* final worktree design

* wip

* rm

* wip

* wip

* fix style

* fix commit

* Improve worktree card interactions and spacing

- Let users toggle cards by clicking their headers.
- Delay details until the pointer rests to avoid accidental popups.
- Add breathing room around card content.

* wip

* fix issues

* wip

* Improve workspace sidebar icons and navigation

- Batch AI icon generation and add settings to customize and regenerate icons.
- Fix agent navigation and unread handling across execution hosts.
- Keep linked reviews visible while loading and reduce unnecessary refresh work.

* Fix sidebar agent ownership and targeted title updates

Resolve unstamped agent sessions to their workspace runtime so sidebar
summaries and unread state follow the correct host. Limit title-change
invalidation to affected workspaces.

* fix build

* Simplify worktree sidebar icons and agent rows

- Generate monochrome icons that match the sidebar foreground
- Move agent model names into row tooltips to reduce clutter

* Keep agent timestamps visible alongside dismiss controls

* Fix worktree icon regeneration and bound the cache

Cancel stale requests when clearing icons so older results cannot
restore the previous cache. Evict unused renderer entries to limit
memory growth.

* Unify experimental workspace cards around title status

- Surface hidden agent and child workspace activity in the card title.
- Retire the second experimental layout and AI-generated icons.
- Preserve existing experimental card selections and add a details row option.

* wip

* wip

* wip

* fix bugs

* improve perf

* Fix sidebar lineage rollup: unread dot on children, running status on collapsed parent

- A card's unread dot and bold title now include its own visible agent rows'
  unread results, so expanding a parent reveals which child the unread came from.
- A collapsed parent's status lane shows the most urgent descendant state
  (needs you > failed > working) when it beats the parent's own status.
- Host-scoped workspace unread markers and related attention fixes.

* Improve sidebar activity rollup performance

- Refresh only stale descendant slots and scope unread updates to their workspace.
- Share agent row projections and index unread markers to reduce repeated work.
- Preserve host-specific agent activation and show the latest activity time.

* wip

* Fix sidebar attention state and optimize slot invalidation

- Preserve unread flags raised by users or earlier sessions when markers clear.
- Scope agent list expansion to each host.
- Track displayed panes and freshness deadlines to limit slot updates.

* wip

* Fix sidebar workspace status and host ownership

- Keep agent navigation and unread state scoped to the correct host,
  including paired SSH workspaces and runtimes.
- Correct collapsed lineage status, stale review display, and settings
  synchronization while reducing unnecessary sidebar refreshes.

* Show unread agent completions and scope workspace reads by host

* fix compile issue

* wip fix static checks

* wip

* Fix workspace sidebar agent ownership and PR display

- Update agent rows when terminal host bindings arrive and preserve
  local ownership for unstamped retained completions.
- Keep newer hosted PRs visible when an older merged PR is cached.
2026-11-14 02:41:25 +00:00
Kelvin Amoaba e2fb873c0a fix(computer): type into Windows text boxes without bringing the window forward (#42165)
* fix(computer): type into Windows text fields without raising the window

Adds type-text --element-index on Windows through EM_REPLACESEL for user32,
RichEdit and WinForms edits (owner-checked, read back with WM_GETTEXT), or a
ValuePattern write merged with the TextPattern selection. Keyboard verbs on a
background window now refuse with background_unavailable before sending
anything and point at type-text --element-index. Foreground typing uses one
SendInput KEYEVENTF_UNICODE batch instead of WM_CHAR posted to the top-level
window, and get-app-state shows multiline edit text again.

* fix(computer): refuse typing into Windows list items, keep the caret on a confirmed prefix
2026-11-14 01:28:30 +00:00
Brennan Benson f28d4ab797 Reuse executable paths for Mac process launches (#42155)
* Reuse resolved executable paths for Mac process launches

* Keep synchronous launch wrappers covered by the ratchet

* Explain executable launch type assertions

* Remove resolved Git imports from the direct-launch baseline

* Keep native spawn cancellation on the native lookup path
2026-11-13 15:35:33 -08:00
OrcaWinandOrcaWin cb381e0ac4 test: remove redundant browser recovery coverage (#42178)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 15:21:00 -08:00
Brennan Benson 42d9f4e042 Name terminal agent hosts separately from Orca (#41848)
* Name terminal agent hosts separately from Orca

* Account for one startup process naming write

* Use the Node runtime for the Linux naming contract
2026-11-13 13:46:07 -08:00
Neil 54590ba35e refactor: organize terminal store modules by lifecycle owner (#42124)
* refactor: organize terminal store modules by lifecycle owner

* fix: align retirement validation with moved owners
2026-11-13 13:19:21 -08:00
Jinjing 5e07432139 fix(dev): omit search opt-in when seeding profiles (#42137) 2026-11-13 13:09:55 -08:00
Neil 17a1dc373b refactor: group shared worktree modules by feature (#42093)
* refactor: group shared worktree modules by feature

* refactor: retarget new worktree admission test to moved owner
2026-11-13 10:59:36 -08:00
OrcaWinandOrcaWin 65055509d6 test: remove low-value mobile suites and redundant native input coverage (#42098)
* test: remove low-value mobile and native input cases

* test: prune redundant mobile suites and verify native receiver contents

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 10:48:53 -08:00
OrcaWinandOrcaWin d3a79e606f test: remove low-value image, runtime and cleanup tests (#42086)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 09:45:09 -08:00
Neil 2db7499ae2 refactor: group runtime-environment IPC by ownership (#42081) 2026-11-13 09:35:54 -08:00
OrcaWinandOrcaWin ea92ef7ea0 test: remove low-value runtime and static-analysis cases (#42082)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 09:24:03 -08:00
OrcaWinandOrcaWin 6a6b23c910 test: remove low-value packaging and release test cases (#42078)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 09:12:30 -08:00
OrcaWinandOrcaWin 0a04286445 test: remove low-value mobile and native-build cases (#42076)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 08:58:51 -08:00
Neil dc67a6435f refactor(mobile): organize source control by feature owner (#42073) 2026-11-13 08:49:09 -08:00
OrcaWinandOrcaWin 309f6ca8db test: remove low-value localization and mobile test coverage (#42070)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 08:43:31 -08:00
OrcaWinandOrcaWin 5480f48d5b test: remove low-value runtime packaging and diagnostic suites (#42064)
* test: remove low-value runtime packaging and diagnostic suites

* test: clear scan-progress listeners after AI Vault IPC cases

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 08:34:41 -08:00
Neil 075d6b3b50 refactor(rpc): group request contracts by feature owner (#42063) 2026-11-13 08:21:31 -08:00
OrcaWinandOrcaWin d896198ad6 test: remove low-value workflow and packaging suites (#42062)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 08:09:43 -08:00
OrcaWinandOrcaWin 8025a52e5b test: remove low-value build and CI test suites (#42056)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 07:51:57 -08:00
Neil 6775615ce4 refactor(preload): organize API modules by feature owner (#42051) 2026-11-13 07:37:49 -08:00
OrcaWinandOrcaWin a850101549 test: remove low-value relay and contract test coverage (#42053)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 07:32:26 -08:00
Neil e956498414 refactor(mobile): organize terminal modules by responsibility (#42040) 2026-11-13 06:37:45 -08:00
Neil c2deee70df refactor(mobile): organize platform adapters by capability (#42030) 2026-11-13 05:54:19 -08:00
Neil e81a89c5ff refactor: group Jira and Linear task-page modules by domain (#42009)
* refactor: group Jira and Linear task-page modules by domain

* refactor: remove orphaned Linear refresh test entry
2026-11-13 04:31:03 -08:00
OrcaWinandOrcaWin a3be49edd4 test: remove Calculator smoke and redundant coverage (#42000)
* test: remove weak native smoke and repeated writer coverage

* test: focus packaged PTY coverage on output and exit delivery

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 04:04:33 -08:00
Neil 59b88a1176 refactor: group GitHub task-page modules by domain (#41995) 2026-11-13 03:52:49 -08:00
OrcaWinandOrcaWin 8c9aff20a3 test: remove filesystem scale and telemetry schema replays (#41988)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 03:43:34 -08:00
Neil 4245b59765 refactor: group agent hook providers by domain (#41968)
* refactor: group agent hook providers by domain

* chore: shrink retired hook test ratchet allowances
2026-11-13 03:27:33 -08:00
OrcaWinandOrcaWin 7658aebc4d test: remove repeated readiness and telemetry schema cases (#41983)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 03:24:50 -08:00
OrcaWinandOrcaWin 404ab9fccf test: remove upstream projections and duplicate submodule guard (#41974)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 02:50:19 -08:00
OrcaWinandOrcaWin 85873ef846 test: remove Git staging and status replays (#41966)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 02:32:58 -08:00
OrcaWinandOrcaWin ee8ad02860 test: remove hook and generation replays and cache assertions (#41951)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 02:20:31 -08:00
Neil 7e10540b93 refactor: group preload modules by domain (#41940)
* refactor: group preload modules by domain

* fix: include preload entry dependencies in web typecheck
2026-11-13 02:06:33 -08:00
Jinwoo Hong fde1ae70da fix(mac): give Orca's main executable its own UUID so Local Network access works (#41676)
* fix(mac): give Orca's main executable its own Mach-O UUID

macOS Local Network privacy identifies an app by its main executable's
UUID. The packaged executable is stock Electron's, so it shares that UUID
with every other app on the same Electron version and macOS can apply
another app's Local Network decision to Orca. Rewrite LC_UUID in every
slice to a value derived from the app id, executable name and CPU type,
before signing.

* fix(mac): re-sign rewritten executables ad hoc, cover the terminal host, assert UUIDs at release

Rewriting LC_UUID breaks Electron's linker ad hoc signature, and arm64
kills unsigned code, so identity-less local builds (where app signing is
skipped) produced an Orca.app that died at launch. Re-sign the rewritten
executable ad hoc, outside the bundle so codesign does not treat it as
the bundle; real signing replaces it later.

The terminal host's executable is a stock Node binary whose UUID is
shared by every copy of that Node release, so give it its own stable
UUID the same way. Packaging and release verification now fail when a
shipped executable does not carry its expected UUID.

* fix(mac): scope the executable UUID rewrite to the main app

The terminal host gets a separate design; leave it unchanged here.
2026-11-13 04:53:48 -05:00
OrcaWinandOrcaWin d1d338cd02 test: remove generation replays and cache counter cases (#41944)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 01:52:46 -08:00
OrcaWinandOrcaWin 37f8222979 test: remove low-value cleanup suites and generation replays (#41941)
* test: remove cleanup wrappers and redundant settlement coverage

* test: remove ineffective preview and generation failure replays

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 01:43:44 -08:00
Kelvin Amoaba d1bc6605c1 fix(speech): correct near-miss spellings of dictionary terms, like Superbase to Supabase (#41703)
* fix(speech): spell near misses of dictionary terms the term's way

* fix(speech): ship the common-word list as a 2% Bloom filter to fit the phone page budget
2026-11-13 09:39:16 +00:00
OrcaWinandOrcaWin e4eecd847c test: remove low-value workspace wrapper and notice cases (#41938)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 01:31:41 -08:00
OrcaWinandOrcaWin 2850c00006 test: remove low-value smoke, wrapper, and copy assertions (#41925)
* test: remove prebuilt declarative demo smoke suite

* test: remove static Box summary copy assertion

* test: remove redundant wrapper cases and copied assertions

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 01:17:39 -08:00
OrcaWinandOrcaWin 4a81270d6f test: remove duplicate language wrapper and orphan host teardown (#41909)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 00:47:44 -08:00
Neil e7288d7ea5 refactor: group new-workspace modules by domain (#41905) 2026-11-13 00:46:08 -08:00
Neil ad0dfec9d4 fix(ime): keep plain-committed Hangul so macOS 2-Set can rebuild it in place (#41884)
* fix(ime): keep plain-committed Hangul so macOS 2-Set can rebuild it in place

Right after an input-source switch, macOS 2-Set can commit a lone jamo as
plain text and then rebuild it (ㅇ + ㅏ → 아) by replacing that committed
range. The native text forwarder emptied the field after every commit, so
the replacement had nothing to land on and the vowel was dropped (#9738).

Keep Hangul commits in the field (Latin commits still clear for #11504),
and erase replaced text from the PTY before the replacement is sent.

* fix(ime): only erase retained Hangul when the replacement is forwarded and still at the PTY cursor

Drop retention on blur, on any composition start, and on chord/named keydowns
the pane handles before the forwarder (macOS Ctrl+C, non-Latin control chords).
Erase only for insertText/composition replacements that end at the field tail.

* ci(e2e): route terminal IME changes to IME specs again after the input/ owner move

#39113 moved IME and keyboard policy files under terminal-pane/input/, but the
native IBus and synthetic IME routes still matched the old paths, so IME changes
selected neither lane.
2026-11-13 00:41:53 -08:00
OrcaWinandOrcaWin 6734880408 test: remove synthetic portal loop and static WSL move suites (#41895)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-13 00:08:35 -08:00
Neil bd3d62d3d5 refactor: organize workspace cleanup by concrete owners (#41887) 2026-11-12 23:54:23 -08:00
OrcaWinandOrcaWin b114149bd5 test: remove mocked automation projection and retry suites (#41890)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 23:49:42 -08:00
OrcaWinandOrcaWin 1c78f83d88 test: remove terminal close and import setter projection suites (#41883)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-11-12 23:23:36 -08:00
Neil 9c7800d140 refactor: organize feature wall by concrete owners (#41875) 2026-11-12 23:21:03 -08:00