Commit Graph
1400 Commits
Author SHA1 Message Date
Jinwoo HongandOrca 1cd6df9137 Improve Open In apps settings (#4668)
Co-authored-by: Orca <help@stably.ai>
2026-06-04 17:02:00 -07:00
Jinwoo Hong 1bdefc7a2a Improve WSL agent CLI detection (#4662) 2026-06-04 15:17:49 -07:00
Jinjing 4eb78d22e8 fix: update persistence session default assertion (#4663) 2026-06-04 15:05:05 -07:00
Brennan Benson 90378d4304 Add hide controls for sidebar shortcuts (#4648) 2026-06-04 14:14:28 -07:00
Jinwoo Hong 8654a41ea8 Persist orca serve terminal sessions
Squashed merge of PR #4656.
2026-06-04 16:37:57 -04:00
Jinwoo HongandOrca 20c4ee7895 Suppress macOS renderer teardown crash reports (#4655)
Co-authored-by: Orca <help@stably.ai>
2026-06-04 13:02:51 -07:00
Jinwoo HongandOrca 8b66785e66 Allow browser pages to zoom independently (#4646)
Co-authored-by: Orca <help@stably.ai>
2026-06-04 11:00:10 -07:00
Jinwoo HongandOrca c4df8628b8 Add Droid orchestration routing (#4624)
Co-authored-by: Orca <help@stably.ai>
2026-06-04 10:00:11 -07:00
Neil b4188b4861 Persist terminal scrollback outside session JSON 2026-06-04 01:31:38 -07:00
Jinwoo HongandOrca c23ab4323c Prepare mobile 0.0.12 (#4627)
Co-authored-by: Orca <help@stably.ai>
2026-06-04 01:06:45 -07:00
Brennan BensonandOrca 7b6e8e0ced Remove final code onboarding step (#4524)
Co-authored-by: Orca <help@stably.ai>
2026-06-03 23:57:53 -07:00
Jinwoo Hong 62600ef808 Fix orchestration payloads on Windows (#4608) 2026-06-03 21:50:16 -04:00
Neil eb89a72fa0 fix: avoid renderer launch-failed reload loop (#4599) 2026-06-03 20:37:15 -04:00
Jinwoo HongandOrca e6e59967c7 Fix Claude managed auth refresh read-back (#4601)
Co-authored-by: Orca <help@stably.ai>
2026-06-03 17:21:39 -07:00
Neil 6b87b9a32c Add app icon switcher to appearance settings (#4600) 2026-06-03 17:14:50 -07:00
Benny Jiang 6ba4bf4fd4 fix: don't spawn Codex in the background when signed out (#4593)
The rate-limit quota poller fetches Codex usage on app start, window
focus, and every poll. Unlike the Claude and Gemini fetchers (which read
credentials from files/keychain and hit an HTTP endpoint), the Codex
fetcher always spawns the real codex binary — 'codex app-server' over
RPC, and on RPC failure an interactive codex PTY running /status.

For users who have Codex installed but never signed in, this surfaces as
an unexpected Codex process starting in the background even though they
never launched Codex. The spawn can only fail without auth.

Gate the fetch on the presence of Codex auth (auth.json under the
resolved CODEX_HOME / managed-account home). When absent, return
status 'unavailable' without spawning anything, mirroring how the other
providers stay quiet until configured. Signed-in users are unaffected.
2026-06-03 20:10:51 -04:00
Brennan BensonandOrca 1ebbab575c fix: hide setup checklist sidebar for existing users (#4584)
Co-authored-by: Orca <help@stably.ai>
2026-06-03 16:53:31 -07:00
Neil 6e77c02fc6 fix: update Electron and revert UTF-8 write mitigations (#4598) 2026-06-03 16:45:01 -07:00
Neil 0bbd103f5f Add process-gone diagnostics to crash reports (#4596) 2026-06-03 16:20:03 -07:00
885f3c3b25 Fix macOS provider launch failures (#3958)
* fix: handle macos provider launch failures

* fix macos provider launch failure race

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

* fix repeated missing upstream probes

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-03 18:57:44 -04:00
Neilandthiagomsoares 996b69dce0 Harden large app state UTF-8 writes (#4587)
* fix: write stats file in chunks to avoid Electron UTF-8 abort

orca-stats.json gains an event on every agent start/stop. After about a
month of use mine had grown to ~3.6k events / ~608 KB, and the app started
hard-crashing a few seconds after every launch (SIGTRAP, no catchable JS
stack):

    Assertion failed: (length + 1) <= (capacity())
    node::MaybeStackBuffer<char>::SetLengthAndZeroTerminate <- node::Utf8Value

The crash is in StatsCollector.writeToDiskSync(), which saves the whole
file in one writeFileSync(JSON.stringify(data)). Electron 42.3.2's bundled
Node aborts when encoding a string that large to UTF-8 in a single write;
stock Node 24 handles the same file fine and the data is well-formed, so
it's an Electron/Node encoding limit, not bad data. The save runs on a
debounce after agent_start, which restored agents fire on launch -- so it
crashed right after opening.

Write the JSON in 64 KB slices through one fd instead (never splitting a
surrogate pair), and lower MAX_EVENTS 10k -> 1k so the file can't grow back
this large. Lifetime aggregates are unaffected.

Verified by reproducing the abort standalone with the real 608 KB file
under ELECTRON_RUN_AS_NODE, confirming the chunked writer round-trips it
byte-for-byte with no crash, and running a patched build that loads the
file without crashing. The underlying encode abort is an Electron/Node bug
to report upstream.

* fix: harden stats JSON writes

* fix: chunk app state UTF-8 writes

* fix: stabilize status and terminal polling

---------

Co-authored-by: thiagomsoares <5190162+thiagomsoares@users.noreply.github.com>
2026-06-03 14:58:28 -07:00
40d8eeb8a5 fix: write stats file in chunks to avoid Electron UTF-8 abort (#4571)
* fix: write stats file in chunks to avoid Electron UTF-8 abort

orca-stats.json gains an event on every agent start/stop. After about a
month of use mine had grown to ~3.6k events / ~608 KB, and the app started
hard-crashing a few seconds after every launch (SIGTRAP, no catchable JS
stack):

    Assertion failed: (length + 1) <= (capacity())
    node::MaybeStackBuffer<char>::SetLengthAndZeroTerminate <- node::Utf8Value

The crash is in StatsCollector.writeToDiskSync(), which saves the whole
file in one writeFileSync(JSON.stringify(data)). Electron 42.3.2's bundled
Node aborts when encoding a string that large to UTF-8 in a single write;
stock Node 24 handles the same file fine and the data is well-formed, so
it's an Electron/Node encoding limit, not bad data. The save runs on a
debounce after agent_start, which restored agents fire on launch -- so it
crashed right after opening.

Write the JSON in 64 KB slices through one fd instead (never splitting a
surrogate pair), and lower MAX_EVENTS 10k -> 1k so the file can't grow back
this large. Lifetime aggregates are unaffected.

Verified by reproducing the abort standalone with the real 608 KB file
under ELECTRON_RUN_AS_NODE, confirming the chunked writer round-trips it
byte-for-byte with no crash, and running a patched build that loads the
file without crashing. The underlying encode abort is an Electron/Node bug
to report upstream.

* fix: harden stats JSON writes

---------

Co-authored-by: thiagomsoares <5190162+thiagomsoares@users.noreply.github.com>
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-06-03 14:48:41 -07:00
843d969c7d fix(tabs): make the active tab clearly stand out (#4545)
* fix(tabs): make the active tab clearly stand out

The active tab was marked only by a 1px dark-navy line on its top edge,
which read as just another border and was easy to lose in a long, busy
tab strip.

Replace it with a 2px `primary` bar on the bottom edge (bridging the tab
into the panel it controls), a subtle theme-uniform background lift, and
brighter text. The bar leads in both light and dark; the lift uses a
color-mix wash instead of `accent`, whose contrast against `card` is
near-zero in light mode but heavy in dark, so the two themes no longer
lead with different cues. Applies across terminal, browser, and editor
file tabs via the shared indicator constant and wrapper styling.

* fix(tabs): centralize active tab styling

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

* fix(git): cache missing upstream status probes

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

* fix(terminal): defer sustained ANSI redraw bursts

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-03 17:27:20 -04:00
Neil 280234a73e fix: stop OpenTUI redraw and git polling freezes (#4585)
* fix: budget foreground terminal redraw writes

* fix: cache stable no-upstream git probes
2026-06-03 14:13:02 -07:00
Trevin Chow be594b8652 Fix macOS helper path and token cleanup (#3961)
## Summary
- stop the macOS helper from unlinking caller-supplied socket and token paths
- keep parent-owned token cleanup tied to the helper startup that created it
- fail closed for non-socket socket-path collisions and cover helper cleanup races with regression tests

## Verification
- swift test --package-path native/computer-use-macos
- pnpm exec vitest run --config config/vitest.config.ts src/main/computer/macos-native-provider-client.test.ts
- pnpm run typecheck:node
- pnpm lint
- pnpm run build:computer-macos
- Electron/helper startup smoke validation
2026-06-03 16:59:02 -04:00
Neil 9061330ab5 test: reproduce terminal TUI and git polling regressions (#4581)
* test: reproduce terminal and git polling freezes

* test: document regression repro triggers
2026-06-03 13:34:27 -07:00
Neil 7bf33ea224 Fix new workspace shortcut terminal focus (#4565) 2026-06-03 12:25:54 -07:00
Jinwoo HongandOrca 9190a3391f Fix stale sidebar agent status spinner (#4577)
Co-authored-by: Orca <help@stably.ai>
2026-06-03 12:21:39 -07:00
Jinjing 2d42e77309 Revert "Preserve explicit slept workspace state (#4536)"
This reverts commit 0d2abc5cb7.
2026-06-03 09:48:03 -07:00
Neil dd53a46b95 Revert "Improve new worktree startup timing" (#4564) 2026-06-03 02:22:17 -07:00
Neil 3079e4690a Improve new worktree startup timing 2026-06-03 01:42:14 -07:00
Jinwoo HongandOrca 0f2b918773 Avoid Claude CLI fallback during rate-limit refresh (#4553)
Co-authored-by: Orca <help@stably.ai>
2026-06-02 23:44:46 -07:00
Jinwoo HongandOrca 205494b7ba Fix file search match parsing (#4542)
Co-authored-by: Orca <help@stably.ai>
2026-06-02 22:11:37 -07:00
Jinjing 0d2abc5cb7 Preserve explicit slept workspace state (#4536)
* Track explicitly slept worktrees in session state

- Persist user sleep intent separately from inactive terminal/browser state
- Use slept markers for sidebar, jump palette, kanban, and activation deferral
- Preserve slept markers across local, web, and remote workspace sessions

* Preserve slept worktree state across remote sync

- Merge remote sleep/default-terminal markers by target workspace so remote
  hydration does not discard local markers
- Let Sleep run for selected worktrees even when they only have preserved
  wake hints, while avoiding reconnects for explicitly slept legacy sessions

* Allow session snapshots without slept worktree ids
2026-06-02 21:21:51 -07:00
Trevin ChowandNeil abfe9bd329 Default repo avatars to the GitHub upstream owner and flag forks (#4522)
* Default repo avatars to the GitHub upstream owner and flag forks

Make the GitHub owner avatar the default repo icon and surface it as the
primary choice in the icon picker (the "Image" tab becomes "Avatar",
moves first, and opens by default). For forks, resolve the upstream/
parent owner so the avatar reflects the source repo instead of the
personal fork, and show a fork indicator (GitFork glyph + "Fork of
owner/repo" tooltip) next to the repo in the sidebar and settings.

Fork detection prefers the offline `upstream` remote, falling back to a
`gh repo view --json isFork,parent` lookup; the resolved upstream is
stored on the repo. Existing repos self-correct via a one-time startup
backfill (local repos) and a lazy backfill when their icon settings open
(SSH repos); new repos resolve at add-time. Reset now restores the
default (re-detecting the upstream) instead of clearing to the Folder
icon.

* Harden repo upstream avatar handling

---------

Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-06-02 20:55:35 -07:00
Jinwoo HongandOrca c0b573abda Persist editor drafts for hot exit (#4499)
Co-authored-by: Orca <help@stably.ai>
2026-06-02 18:49:13 -07:00
Jinwoo Hong 92d8946209 Avoid OpenCode config cleanup freezes on Windows (#4526) 2026-06-02 21:20:13 -04:00
Jinwoo HongandOrca 4f18c7e79d Allow Linear context issue lists to load more (#4512)
* Allow Linear context issue lists to load more

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

* Simplify Linear load more footer copy

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

* Page Linear issue reads past backend cap

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

* Align Linear load more footer with GitHub pager

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

* Use pager for Linear issue lists

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

* Avoid phantom Linear issue pages

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

* Fix local Linear issue pagination cap

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

* Fix Linear pagination review issues

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-02 21:17:20 -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
Jinwoo HongandOrca 530bfe6c39 Speed up cached usage analytics loads (#4528)
Co-authored-by: Orca <help@stably.ai>
2026-06-02 18:10:31 -07:00
Jinwoo HongandOrca 8959535f1b Auto-dismiss agent notifications on acknowledgement (#4518)
Co-authored-by: Orca <help@stably.ai>
2026-06-02 18:01:23 -07:00
Neil d879cfde37 Add HTTP/1.1 compatibility mode (#4509) 2026-06-02 16:54:11 -07:00
Neil 92c431d499 Keep browser tabs mounted while switching
Keep open browser webviews mounted while hidden so switching tabs preserves in-page state. Remove the parked-webview lifecycle for open tabs and keep the automation session hardening from the original PR.
2026-06-02 15:28:34 -07:00
Neil 81a8ef2f42 Enable WebAuthn in browser sessions 2026-06-02 15:18:59 -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
Jinjing 231088b099 fix: address review findings (#4513) 2026-06-02 14:58:33 -07:00
Jinjing a49e74d134 Guard worktree cards against stale review cache (#4497)
- Only show cached GitHub PR or GitLab MR details when they match linked metadata
- Preserve branch-discovered reviews for providers without stored worktree metadata
- Update tests for PR/MR fallback display and related button variants
2026-06-02 13:15:47 -07:00
Jinwoo HongandOrca 5a48af49f3 Skip first-run education in dev launches (#4489)
Co-authored-by: Orca <help@stably.ai>
2026-06-02 11:49:00 -07:00
Jinjing 705f24a174 Preserve Linear mobile task source coverage
Restore Linear as the baseline mobile task source update coverage while keeping Jira covered as an added assertion.
2026-06-02 11:21:38 -07:00
Jinjing a2af42774f Allow Jira in persisted mobile task source settings
Allow mobile runtime settings updates to persist Jira as a task provider and visible task provider setting.
2026-06-02 11:15:36 -07:00