Commit Graph
4288 Commits
Author SHA1 Message Date
github-actions[bot] 964dbbc4e6 release: v1.4.42-rc.7 v1.4.42-rc.7 2026-06-03 22:45:18 +00:00
Neil f62bf927cd Fix Electron stats JSON crash (#4595)
Avoid Electron 42.3.x's broken bulk UTF-8 conversion when persisting stats JSON. The crash loop reproduced when sparse non-ASCII strings in orca-stats.json were rewritten after restored terminal activity triggered a debounced stats save.

Add regression coverage for the sparse non-ASCII payload and surrogate-pair boundary handling.
2026-06-03 15:38:36 -07:00
github-actions[bot] ad38cf455e release: v1.4.42-rc.6 v1.4.42-rc.6 2026-06-03 22:09:04 +00: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
Jinwoo HongandOrca 0a679e992c Fix agent completion sidebar bell (#4590)
Co-authored-by: Orca <help@stably.ai>
2026-06-03 17:35:30 -04: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 9b3eace37b Fix Linear issue list response compatibility
Fixes #4588
2026-06-03 14:23:26 -07: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
Jinwoo HongandOrca f958228739 Fix remote runtime worktree selectors (#4582)
* Fix remote runtime worktree selectors

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

* Harden remote worktree selector call sites

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-03 16:19:08 -04:00
Neil 6dc779c4f4 Address react doctor warnings 2026-06-03 12:48:00 -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
Jinwoo HongandOrca c5d3d595a4 Fix remote server switch reachability probe (#4578)
Co-authored-by: Orca <help@stably.ai>
2026-06-03 14:59:33 -04:00
Jinwoo HongandOrca aa8451b3e9 Fix mobile Linear issue list parsing (#4576)
Co-authored-by: Orca <help@stably.ai>
2026-06-03 11:06:43 -07:00
Jinjing 82104c4a0c fix: delete untracked files without confirmation (#4572) 2026-06-03 10:44:22 -07:00
github-actions[bot] d0a10fabb0 release: v1.4.44 v1.4.44 2026-06-03 16:59:37 +00:00
Jinjing 2d42e77309 Revert "Preserve explicit slept workspace state (#4536)"
This reverts commit 0d2abc5cb7.
2026-06-03 09:48:03 -07:00
Jinjing 7c701c9319 Revert "Fix hide sleeping lineage restoration (#4543)"
This reverts commit 195f3e94f9.
2026-06-03 09:48:03 -07:00
github-actions[bot] afd92f2dcc release: v1.4.43 2026-06-03 09:27:16 +00:00
Neil dd53a46b95 Revert "Improve new worktree startup timing" (#4564) 2026-06-03 02:22:17 -07:00
github-actions[bot] 3dadba37f4 release: v1.4.42 2026-06-03 09:14:04 +00:00
Neil 8eee59c084 revert: remove terminal retention changes (#4562) 2026-06-03 02:12:47 -07:00
Neil 3079e4690a Improve new worktree startup timing 2026-06-03 01:42:14 -07:00
Neil c9c0418612 perf: cache floating tab count selector (#4550) 2026-06-03 00:07:45 -07:00
NeilandOrca 7834d3d297 Redesign shortcuts settings UX (#4554)
- Remove the Groups nav rail; filter shortcuts by search + status only
- Fold keybindings.json path into the subsection subtitle and move the
  Edit File in Orca action into the header
- Replace the floating hover-card action popover with an inline recorder:
  keycaps (or an Add shortcut placeholder) click to record in place, and
  Reset/Disable reveal on row hover/focus
- Fix a grid align-content stretch bug that opened a large gap between
  shortcut groups in the scroll area

Co-authored-by: Orca <help@stably.ai>
2026-06-02 23:54:10 -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
Neil 9bfceb934f test: stabilize e2e expectations (#4544) 2026-06-02 22:31:57 -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
Jinwoo HongandOrca 195f3e94f9 Fix hide sleeping lineage restoration (#4543)
Co-authored-by: Orca <help@stably.ai>
2026-06-02 22:09:36 -07:00
Jinjing 192fcde21d Revert "Use icon button for check run details" (#4541) 2026-06-02 22:00:30 -07:00
github-actions[bot] e21e12ca07 release: v1.4.42-rc.5 v1.4.42-rc.5 2026-06-03 04:51:06 +00:00
Neil cc96aec459 fix: restore parked terminals from main snapshots (#4539) 2026-06-02 21:43:56 -07:00
github-actions[bot] bbc6e20548 release: v1.4.42-rc.4 v1.4.42-rc.4 2026-06-03 04:34:38 +00:00
Jinjing f6ce5a3f8c test: cover web GitHub repo upstream route (#4538) 2026-06-02 21:29:50 -07:00
Jinjing 60e2dbb4ab Use icon button for check run details (#4537) 2026-06-02 21:24:30 -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
github-actions[bot] a67c8af2b6 release: v1.4.42-rc.3 v1.4.42-rc.3 2026-06-03 04:15:55 +00:00
Neil af23e708f3 Update Electron for macOS launch diagnostics
Update Electron to 42.3.2 for the macOS 26 pre-main launch path and fix the macOS diagnostic harness unified-log capture.
2026-06-02 21:15:00 -07:00
Jinjing b960275db2 Remove toolbox menu from sidebar toolbar (#4535) 2026-06-02 21:13:52 -07:00
Trevin Chow d617a08a8a fix: follow a worktree in the sidebar when you pin or unpin it 2026-06-02 20:56:34 -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
Trevin Chow da3c359a74 Show repo icon on pinned worktree cards (#4517)
The Pinned section mixes worktrees from every repo, yet cards identified
their repo only by a color dot — and showed no repo cue at all when the
sidebar was grouped by repo (hideRepoBadge). Render each repo's configured
icon (lucide/emoji/image) as a leading glyph on pinned cards regardless of
grouping, so a mixed-repo pinned list is scannable at a glance.

Extract a shared RepoIdentityChip so the pinned icon and the compact inline
badge use one chip + tooltip shell.
2026-06-02 20:48:38 -07:00
Jinjing fef6e042f5 fix: address agent status display (#4533) 2026-06-02 20:45:11 -07:00
Neil 256ae1ef0b Clean up long renderer JSX files 2026-06-02 20:31:40 -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 HongandOrca def3374e76 Show delete progress for lineage child workspaces (#4532)
Co-authored-by: Orca <help@stably.ai>
2026-06-02 18:42:46 -07:00
Neil 1ab6b87c7f Add bounded terminal renderer retention (#4523) 2026-06-02 18:40:45 -07:00