Commit Graph
15935 Commits
Author SHA1 Message Date
Jinjing 385548e9aa Improve contrast of mobile Markdown copy buttons (#32844) 2026-10-23 11:54:35 -07:00
OrcaWinandOrcaWin 7241fd70cf [comment audit] Shorten persistence and PTY root comments (#32303)
* chore: shorten process-host comments

* chore: audit CLI parsing and host-routing comments

* chore: remove stale host-selector restriction comment

* chore: shorten remaining CLI root comments

* Shorten CLI handler comments

* Shorten CLI runtime and command specification comments

* Shorten top-level main process A–G comments

* [comment audit] Shorten main process H–K comments

* [comment audit] Shorten main process L–O comments

* [comment audit] Shorten persistence and PTY root comments

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 11:42:22 -07:00
Jinjing 965d6d153e Revert child workspace status summary toggle (#32842)
* Revert "Show child workspace statuses in the children toggle (#32224)"

This reverts commit b4ee652bcf.

* Fix revert button styling and retire stale child-toggle translations
2026-10-23 11:29:29 -07:00
Jinjing 7eec4ffae0 Revert "fix(workspace): show launch actions in empty tab groups" (#32838)
* Revert "fix(workspace): show launch actions in empty tab groups (#32182)"

This reverts commit afe62effd3.

* Retire empty-workspace translations removed by revert
2026-10-23 11:29:19 -07:00
OrcaWinandOrcaWin 89e93cfa38 [comment audit] Shorten top-level main process L–O comments (#32295)
* chore: shorten process-host comments

* chore: audit CLI parsing and host-routing comments

* chore: remove stale host-selector restriction comment

* chore: shorten remaining CLI root comments

* Shorten CLI handler comments

* Shorten CLI runtime and command specification comments

* Shorten top-level main process A–G comments

* [comment audit] Shorten main process H–K comments

* [comment audit] Shorten main process L–O comments

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 11:06:55 -07:00
OrcaWinandOrcaWin d91a3d5804 test: strengthen CLI, lifecycle, bundle and build coverage (audit 8) (#32777)
* test: audit repository visibility and session-search CLI coverage

* test: verify service identities and public skill-sharing output

* test: verify terminal retry commands and unsuccessful navigation attempts

* test: exercise bulk-close refusal and printed legacy prompt receipts

* test: audit host discovery and agent launch recovery identities

* test: audit ACP replay, lifecycle, and hook delivery coverage

* test: audit automation errors and build artifact guards

* test: audit mobile bridge and bundle lifecycle coverage

* docs: reconcile audit tracker with input-ownership changes

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 11:06:37 -07:00
Jinjing 409bd9ea7e fix(i18n): clarify reviewed Japanese, Korean, and French copy 2026-10-23 11:03:00 -07:00
Lucas Souza 43bf14aec4 fix(i18n): include community Brazilian Portuguese translations
Rolls in the 69 missing translations from #32017 by @lucasrbsouza, preserving the current catalog and his original translated values. Adapted from commits a103b8d7e1 and 81befb581a.
2026-10-23 11:03:00 -07:00
Jinjing b9d9dacb00 fix(i18n): fill missing locale entries and replace English fallback copy 2026-10-23 11:03:00 -07:00
Leo(오영택)andJaeyoung22 b9835f34e6 fix(i18n): describe Korean descendant sleep as closing panels (#31503)
Co-authored-by: Jaeyoung22 <89302528+Jaeyoung22@users.noreply.github.com>
2026-10-23 10:55:21 -07:00
Neil 81079d881c ci: move the SSH mobile producer to the Blacksmith pool (#32784) 2026-10-23 10:55:04 -07:00
Kelvin Amoaba a9d242d16b fix(ime): submit on the Enter that commits Korean in every text field (#32756) 2026-10-23 17:30:46 +00:00
Jinjing ffd3d33500 Add Copy path beside Copy in mobile Markdown footer (#32748) 2026-10-23 10:20:25 -07:00
최주연andKelvin Amoaba a4a0e605ee fix(native-chat): send on the Enter that commits a Hangul composition (#30159) (#30192)
Co-authored-by: Kelvin Amoaba <97001695+AmoabaKelvin@users.noreply.github.com>
2026-10-23 16:57:28 +00:00
Neil 0aed494e48 ci: check indirect unit input ownership in shadow selection (#32685) 2026-10-23 09:55:18 -07:00
OrcaWinandOrcaWin 4935d75e1c [comment audit] Shorten top-level main process H–K comments (#32290)
* chore: shorten process-host comments

* chore: audit CLI parsing and host-routing comments

* chore: remove stale host-selector restriction comment

* chore: shorten remaining CLI root comments

* Shorten CLI handler comments

* Shorten CLI runtime and command specification comments

* Shorten top-level main process A–G comments

* [comment audit] Shorten main process H–K comments

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 09:50:47 -07:00
Kelvin Amoaba 4c7991509f feat(browser): say why a page failed to load and reload it when it can (#31847) 2026-10-23 16:40:20 +00:00
OrcaWinandOrcaWin 9b6a2e8ff1 test: strengthen CLI, ACP, mobile web and CI coverage (audit 7) (#32681)
* test: exercise fresh orchestration output and identity fixtures

* test: check brief task values at the current output boundary

* test: observe worker CLI receipts through actual output

* test: reach sender lookup and print real worker wait states

* test: verify retry deadlines and headless recovery admission

* test: audit ACP lifecycle and recorded response boundaries

* test: exercise mobile and CI admission contracts

* test: check cache producers and exact capped output

* test: reconcile upstream audit coverage and cache admission

* docs: align integrated audit record hashes

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 09:26:55 -07:00
OrcaWinandOrcaWin 0cc073fa66 [comment audit] Shorten top-level main process A–G comments (#32288)
* chore: shorten process-host comments

* chore: audit CLI parsing and host-routing comments

* chore: remove stale host-selector restriction comment

* chore: shorten remaining CLI root comments

* Shorten CLI handler comments

* Shorten CLI runtime and command specification comments

* Shorten top-level main process A–G comments

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 09:24:17 -07:00
Neil adf5d548f1 ci: move WSL Linux producers to the Blacksmith pool (#32634) 2026-10-23 09:20:12 -07:00
OrcaWinandOrcaWin 88b47bc7d8 [comment audit] Shorten CLI runtime and command-spec comments (#32283)
* chore: shorten process-host comments

* chore: audit CLI parsing and host-routing comments

* chore: remove stale host-selector restriction comment

* chore: shorten remaining CLI root comments

* Shorten CLI handler comments

* Shorten CLI runtime and command specification comments

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 08:54:49 -07:00
Kelvin Amoaba 2570d8fa5c fix(markdown): render CJK bold that ends in punctuation in desktop and phone chats (#32020) 2026-10-23 15:25:16 +00:00
OrcaWinandOrcaWin 6d1aaa4e26 [comment audit] Shorten CLI handler comments (#32282)
* chore: shorten process-host comments

* chore: audit CLI parsing and host-routing comments

* chore: remove stale host-selector restriction comment

* chore: shorten remaining CLI root comments

* Shorten CLI handler comments

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 08:23:48 -07:00
Kelvin Amoaba 846851237c feat(browser): per-repo or per-workspace browser profile for new tabs (#32039) 2026-10-23 15:20:11 +00:00
Neil 0b6c6e2e43 ci: warm the Windows 2025 native cache used by WSL (#32628) 2026-10-23 08:18:00 -07:00
Neil db46593f55 ci: record durable WSL lifecycle operations (#32603) 2026-10-23 08:09:13 -07:00
OrcaWinandOrcaWin 9aa208a4ab [comment audit] Shorten remaining CLI root comments (#32273)
* chore: shorten process-host comments

* chore: audit CLI parsing and host-routing comments

* chore: remove stale host-selector restriction comment

* chore: shorten remaining CLI root comments

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 08:07:03 -07:00
OrcaWinandOrcaWin 120f01331c [comment audit] Shorten CLI parsing and host-routing comments (#32265)
* chore: shorten process-host comments

* chore: audit CLI parsing and host-routing comments

* chore: remove stale host-selector restriction comment

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 07:49:36 -07:00
OrcaWinandOrcaWin 633da07af5 test: audit CLI dispatch and mobile host boundaries (#32576)
* test: verify independent CLI quoting and screenshot bytes

* test: audit CLI registration and offline hook boundaries

* test: record CLI automation fence review

* test: audit computer CLI dispatch and exported files

* test: record CLI enrollment and emulator contract review

* test: audit file command path and navigation contracts

* test: bracket login shutdown grace and fallback deadlines

* test: keep managed server timeout expectations independent

* test: record Linear CLI input and dispatch review

* test: verify legacy completion dispatch boundary

* test: replace copied config and browser controls

* test: isolate gate refusal from inherited caller identity

* test: exercise real mobile host admission and teardown boundaries

* docs: reconcile audit entrypoints and refresh completed reviews

* test: fix mobile audit React Doctor findings

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 07:34:51 -07:00
OrcaWinandOrcaWin 8d313ea579 chore: shorten process-host comments (#32262)
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 07:33:54 -07:00
Neil 4ed7fb08af ci: run full unit shards on eight-core workers (#32567) 2026-10-23 07:13:51 -07:00
Neil 0805f1cd70 fix(process): keep Windows tree termination at normal priority (#32559) 2026-10-23 07:08:12 -07:00
OrcaWinandOrcaWin 5d32f372e7 test: audit CLI output and deferred delivery boundaries (#32498)
* test: audit CLI output and deferred delivery boundaries

* docs: reconcile fifth test audit with main

* test: build process-host for Cloud-only relay validation

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 06:36:47 -07:00
Neil 315b7c1546 ci: move Linux package and relay jobs to the Blacksmith pool (#32442)
* ci: run relay integration on the Blacksmith x86 pool

* ci: use the validated Blacksmith pool for Linux packaging

* test: allow shared Linux download caches across validated runner pools
2026-10-23 06:30:37 -07:00
Neil 3ec7bd866d fix(ci): retain TypeScript project input consumers (#32522) 2026-10-23 06:27:05 -07:00
Neil 41402a5811 refactor(jira): colocate status error parsing with Jira owners (#32430) 2026-10-23 05:59:58 -07:00
OrcaWinandOrcaWin 89b3d38284 test: audit delayed replies and database boundaries (#32426)
* test: audit delayed replies and database boundaries

* docs: reconcile the fourth test audit batch

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 05:33:18 -07:00
NeilandClaude d10626876e Watch only the files Orca needs in its settings folder and .git, instead of the whole folders (#32410)
* perf(watch): stop watching all of userData and .git for a handful of files

On macOS a directory fs.watch is a recursive FSEvents stream. Two watches used
that to notice a few files:

- The Active Server preference watched the whole userData directory for
  orca-environments.json, so Orca's own writes there (agent-hooks status,
  terminal history, browser caches; ~10 events/s measured) were routed back
  to it.
- The shallow git metadata watch ran fs.watch on each repo's whole common
  .git dir (and .git/logs), receiving objects/, refs/, lfs/ and every linked
  worktree's churn to see six files.

Both now watch the individual files (kqueue on macOS, no fseventsd) through a
new rebinding file watch: events and a 30s sweep re-stat the path, rebind when
a rename-replace or deletion moved it, and pick up files created later. Events
are confirmed by a stat (size/mtime/ctime/inode) because macOS raises an
attribute event for every mmap read of the index and packed-refs; the watch is
one-shot with a backing-off window so a file every git process maps costs about
one rebind a second instead of a wakeup per read. The registry path is
unchanged, so CLI/serve readers and older peers are unaffected. Linux and
Windows keep the non-recursive directory watch for shallow subscriptions.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(watch): don't hang unsubscribing an errored watcher; find late metadata files sooner

- Node closes an errored fs.watch handle without emitting 'close', and a later
  close() is a no-op, so awaiting 'close' could hang a watcher-child unsubscribe
  and every subscribe queued behind it. Errored watchers are now dropped without
  a close, and closeFileSystemWatcher also settles on 'error' or after 1s.
  Applies to both the macOS file watch and the Linux/Windows directory watch.
- Missing metadata files (packed-refs from pack-refs/gc) are re-statted every
  2s instead of waiting for the 30s rebind sweep.
- On macOS the delivery probe watches a file, matching the kqueue path the
  shallow subscriptions now use.

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-23 05:29:47 -07:00
NeilandClaude 816fcee742 Every view of a shared file stays current after undo or discard, and non-UTF-8 files ask before converting (#32413)
* fix(editor): keep every view of a shared record on its text; ask before a lossy UTF-8 save

- A clean record's draft may reach a view's live model. Views of a record share one draft, so a
  commit that reads clean (a rich-mode undo that differs from disk only in trailing whitespace)
  is the record's text; refusing it left the source view showing undone text, and typing there
  resurrected it.
- A rich view applies another view's text (or a reload) without an undo step, so its Cmd+Z no
  longer reverts the source view's typing or re-applies text undone there.
- An outside change to a path (Source Control discard, watcher) now reaches views of the same
  record in other workspaces' panels, not only the named workspace's, so their cached copy of the
  discarded text is dropped and reloaded.
- Explicit saves send the lossless-UTF-8 precondition. A non-UTF-8 file asks for confirmation
  (Save as UTF-8, destructive) before replacing characters that aren't valid UTF-8; declining
  leaves the bytes alone. The autosave-paused notice no longer promises a lossless conversion.
- Dev builds resolve worker-thread entries from the main output folder when the caller was bundled
  into a shared chunk (packaged builds resolve from resources and are unchanged).

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(editor): say why save-and-close refused a non-UTF-8 file

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-23 05:23:52 -07:00
NeilandClaude a233040067 File watching rides out a slow system instead of restarting, and turns itself back on after a cooldown (#32397)
* fix(watcher): back off on system event stalls and let the crash fuse recover

The watcher child's canary treated any missed delivery as a native deadlock
and exited. When the OS event source itself is stalled (an overloaded macOS
file-event daemon), each restart recreated every stream, adding load, and
after three restarts in two minutes the crash fuse disabled native watching
until the app restarted.

- Before exiting on a starved canary, probe the same dir with an independent
  fs.watch. If fs.watch delivers, it is a child deadlock: restart as before.
  If both stay silent (and fs.watch was proven to work on this host), it is a
  system stall: keep the child and its streams and back off the canary
  (30 s doubling to 5 min) until delivery resumes.
- The crash fuse now half-opens after an exponential cooldown (5 min doubling
  to 60 min) so native watching is retried; callers keep their polling
  fallback while it is open. A trial crash reopens it immediately; a trial
  that stays healthy for 10 min resets the escalation.
- Arm the canary while a native subscribe is pending: always on macOS (its
  subscribe does not crawl), and after a 10 min grace on crawling backends,
  so a subscribe stuck behind a deadlock no longer disables the check.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(watcher): bound stalls, keep callers fresh, and let the fuse reopen reach callers

Review follow-ups for the watcher stall/backoff change:

- fs.watch proof is no longer a cached startup probe. Any delivery in the
  process (including the canary's own fs.watch) proves it; a failed shallow
  probe is re-measured after 30 s instead of failing shallow subscribes forever.
- The canary keeps one long-lived fs.watch on its dir and checks whether it
  delivered since the probe started, instead of opening one per probe (which
  makes macOS rebuild the shared event stream).
- Any native callback in the child during the probe window counts as proof the
  child is not deadlocked. A stall that lasts 15 min forces a restart, still
  rate-limited by the crash fuse.
- The child reports delivery health (healthy/stalled) to the host. A stall that
  outlasts one backoff period makes the host send an overflow (rescan) to every
  subscription on that cadence, and once more on recovery.
- Roots that fail while the crash fuse is open are no longer cached as
  unwatchable until shutdown, and the git-common narrow watch's polling
  fallback retries native events every 5 min. Log wording no longer claims
  every caller polls.
- Linux/Windows keep the canary disarmed during a pending crawl (huge or
  network trees); macOS stays armed.
- Fuse escalation resets only after the trial child's canary has confirmed
  delivery for 10 min, not merely after it survived 10 min.

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(watcher): back off stall rescans and end stalls when the canary disarms

- Host rescans during a stall now back off with the canary (30 s doubling to
  5 min) instead of every 30 s for the whole stall, and stop once no
  subscription is live.
- A canary that disarms after a stall (no live roots, or a crawl on
  Linux/Windows) reports 'unknown', which ends the host's stall mode with one
  rescan; the stall is re-detected once the canary re-arms. The crash fuse
  ignores 'unknown'.
- Health reports are ignored after supervisor disposal (they were already
  limited to the current child).

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-10-23 05:20:42 -07:00
Neil 4d026ac042 fix(ci): retain full coverage for shared unit runtime inputs (#32417) 2026-10-23 05:09:33 -07:00
OrcaWinandOrcaWin 8f6283b32b test: exercise real boundaries and trim redundant cases (#32353)
* test: replace redundant checks with observed behavior

* docs: reconcile completed audit batches and upstream review

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-10-23 04:32:31 -07:00
Neil 09b4648282 fix(ci): retain ambiguous unit-test import consumers (#32366) 2026-10-23 04:25:23 -07:00
92dfb4fda6 test: trim redundant coverage and fix vacuous assertions (#32305)
* test: remove redundant cases and repair behavioral assertions

* docs: reconcile audit records with current main

* fix(deps): apply security updates from #32101

Apply the six-file DOMPurify 3.4.17 and Next.js 16.4.1 patch from PR #32101 to resolve the dependency security gate for this test audit. Original patch by Brennan Benson.

* test: satisfy changed-line quality gates

Add required braces and replace filter indexing with find. Rerun both CI quality gates and the 27 affected relay tests; refresh audit hashes and record the corrections.

---------

Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
Co-authored-by: Brennan Benson <79079362+brennanb2025@users.noreply.github.com>
2026-10-23 03:52:51 -07:00
NeilandBrennan Benson d9dc87b2fb Use incremental tsrs locally and update Bun to 1.4.4 (#32276)
* Use incremental tsrs for local typechecks

* Update pinned Bun to 1.4.4

* fix(deps): bump dompurify to 3.4.17 and docs next to 16.4.1 for security advisories

dompurify 3.4.17 patches GHSA-cg2g-xh64-v4q7, GHSA-mrv2-3pqr-j5jr and
GHSA-c6gr-qvv4-5v3f in the root and mobile lockfiles. next 16.4.1 patches
GHSA-2464-fhr4-w9xw, GHSA-673q-mjm6-r5xr and GHSA-p3m5-59mp-jv5r in the
docs site.

* Prepare mobile bundle for smoke benchmarks

* Give native compiler benchmarks a larger ARM runner

---------

Co-authored-by: Brennan Benson <79079362+brennanb2025@users.noreply.github.com>
2026-10-23 03:28:11 -07:00
Neil 8d94ed0657 perf(test): bundle Zod once per isolated Vitest invocation (#32298) 2026-10-23 03:16:09 -07:00
Neil 5b73c37d11 refactor(renderer): colocate task page pagination rules (#32297) 2026-10-23 03:13:58 -07:00
NeilandYEONGUK LEE 13ab5239f5 fix(terminal): never present a half-built synchronized-output frame on reveal or recovery (#32281)
Settled reveal and every other atlas recovery forced the current xterm buffer
onto the screen even while a TUI held DEC 2026 synchronized output. Codex
erases rows inside each held redraw, so a reveal mid-redraw showed a blank
pane for a frame (#32198).

Viewport presents now have one mode: they keep the last coherent canvas and
let xterm present when the TUI closes the frame, bounded by xterm's 1s
synchronized-output safety timeout. Structural replay keeps its retained frame
up until an open synchronized frame closes, bounded by its existing hold cap.

Co-authored-by: YEONGUK LEE <contact@abruption.dev>
2026-10-23 03:07:30 -07:00
Neil 81ca8a7aaf fix(mobile): keep a terminal tab's chat identity while its handle is unchanged (#32251)
* fix(mobile): keep a terminal tab's chat identity while its handle is unchanged

A status frame that omits agentType or providerSession flipped chat back to the
terminal for tabs with no launchAgent (#31977), and left a launched tab with no
session to read (#32134). Mobile now remembers the last resolved agent and
session per tab and handle, so a missing field is treated as missing evidence.

* fix(mobile): keep remembered chat read-only and drop it on relaunch

A chat resolved only from this phone's memory may sit on a bare shell, so its
writes stay locked until live status confirms the agent. A live agent frame
without a session no longer inherits the previous conversation, and the
latest remembered agent outranks an older launch hint.

* fix(mobile): gate native-chat image sends on a confirmed live agent

An image send from a chat only this phone remembers could paste into a bare
shell; it now shares the confirmed-agent gate with text sends.

* fix(mobile): type remembered chat identity structurally

Importing MobileSessionTab into the eligibility module pulled React Native
globals into the e2e program through nested-agent-idle-session-owner.spec.ts,
retyping setTimeout as number there.
2026-10-23 03:02:07 -07:00
Neil 551108aea8 test: finish fixture work before unit-test cleanup (#32285) 2026-10-23 02:56:38 -07:00