Commit Graph
10019 Commits
Author SHA1 Message Date
Ricardo Sawir ffa80eb5bb Fix Windows directory cwd prefixes (#6116) 2026-06-23 13:00:09 -07:00
0797966d39 Preserve unsaved diff-note draft on outside click (#6188)
* Preserve unsaved diff-note draft on outside click

Clicking outside the diff-note popover while it held unsaved text
discarded the draft. Dismiss-on-outside-click now only fires when the
draft is empty or whitespace-only; with content the popover stays open
so an accidental click can't lose an in-progress note. Escape and the
Cancel button still dismiss explicitly.

Mirror the draft into a ref so the document mousedown listener (empty
dependency array) reads the freshest body, matching the existing
onCancelRef/topRef pattern in the component.

* Preserve large diff-note drafts on outside click

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-23 12:50:00 -07:00
github-actions[bot] ab04b1b99b release: v1.4.94-rc.1 v1.4.94-rc.1 2026-06-23 19:20:18 +00:00
Jinwoo HongandOrca dd421a054b Fix Codex session history titles from injected context (#6151)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 12:19:15 -07:00
Jinwoo HongandOrca b8becaae39 Remove active-worktree gating from restored session visibility (#6185)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 12:08:19 -07:00
Brennan BensonandOrca 83f49818d3 Detect remote agents from shell PATH (#6157)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 11:31:41 -07:00
03fd869b92 feat(ai-vault): support OpenCode SQLite session storage (#5925)
Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-23 11:18:17 -07:00
Brennan BensonandOrca 8c4f57e8ef Reduce repeated git probes during worktree refresh (#6153)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 11:07:49 -07:00
Brennan BensonandOrca fac7e0440c Prevent sidebar crashes from missing worktree titles (#6127)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 11:07:09 -07:00
Jinjing 0c8c248199 fix: address review findings (#6182) 2026-06-23 10:58:38 -07:00
Jinjing 0e6ecc3fc1 Prevent restored inactive terminal tabs from being flagged as orphans (#6179)
Consolidate session binding resolution into a dedicated helper that scans
active PTY states, restored tab PTY IDs, and split-pane layout wake
hints. This ensures that deferred-reattach terminal sessions are not
falsely classified as orphaned before their UI panes mount.
2026-06-23 10:43:44 -07:00
Jinjing 953b325180 Scope Claude Keychain lookup and disable PTY fallback for system auth (#6180)
* Scope Claude Keychain lookup and disable PTY fallback for system auth

* Scope macOS Keychain credential lookups to the config directory first to support Claude Code 2.1+, falling back to the legacy system default.
* Disable Claude CLI PTY execution fallback for system-default accounts during usage refreshes to avoid launching unexpected browser auth flows.

* Disable Claude PTY fallback when auth preparation is unavailable

Treat missing Claude auth preparation as system-default. This aligns
the PTY fallback gate to prevent background refreshes from triggering
interactive authentication flows when no auth is configured.
2026-06-23 10:38:37 -07:00
Jinjing 9bd439ccb4 Remove textContentType none from iOS terminal input (#6176)
- iOS `textContentType` overrides `autoComplete` and restricts keyboard
  layouts, preventing switching to non-Latin input methods (IMEs).
- Use `autoComplete="off"` instead to ensure the keyboard remains
  default and IME switching stays available.
- Update tests to assert these changes.
2026-06-23 10:34:32 -07:00
Jinjing aec7bb6aa0 Scope GitHub Project rows to selected repos (#6174)
* Scope GitHub Project rows to selected repos

Adds the selected-repo Project scoping implementation and documents the UI behavior in docs/github-project-selected-repo-popup.md.

* rm design doc

* fix: address review findings
2026-06-23 10:22:54 -07:00
Jinjing 3e955c0377 Support clicking orchestration task links to focus assigned terminals (#6178)
Introduce support for detecting and activating 'task_' prefixed links
in terminal panes.

Because orchestration tasks are stable records but can be retried
onto new dispatches, clicking a task link queries the runtime database
via 'orchestration.dispatchShow' to retrieve the latest assigned
terminal handle, then navigates to that terminal.
2026-06-23 10:18:44 -07:00
github-actions[bot] 86a2b4cb8a release: v1.4.94-rc.0 v1.4.94-rc.0 2026-06-23 17:16:17 +00:00
Jinjing 999fbd4217 Prevent redundant SIGWINCH signals on terminal tab restoration (#6177)
Avoid triggering unnecessary terminal PTY resizes and SIGWINCH signals
when restoring terminal tabs or replaying hidden snapshot backlogs. This
prevents alternate-screen TUIs from resetting their viewports or
scrolling to the top when switching tabs.

- Track hidden startup measurement as state and clear it after first visibility
- Suppress forwarding terminal resizes while a pane is hidden
- Avoid resizing or sending SIGWINCH on snapshot replay when dimensions are unchanged
2026-06-23 10:15:06 -07:00
Jinjing bc0ad79820 Keep repos visible when project group metadata is missing (#6113)
* Keep repos visible with missing project groups

* Preserve shared project metadata on host refresh

* Prune stale source repos in projects and fix sidebar group rendering

- Filter sourceRepoIds against currently known repo IDs to prevent
  removed or stale remote repos from lingering in shared project metadata.
- Prevent project-group assigned repos from rendering as missing metadata
  fallback rows if the group exists.

* Preserve multi-host project metadata and source repos on refresh

- Keep source repos owned by other hosts during a single-host refresh
- Ensure client-local Windows runtime preferences are not overwritten
  by remote refreshes, while allowing local refreshes to clear them
- Prevent sidebar key errors when repo groups have not yet loaded
2026-06-23 08:49:53 -07:00
github-actions[bot] 73cc134722 Update README downloads badge 2026-06-23 13:17:51 +00:00
github-actions[bot] f8b3d9db88 release: v1.4.93 v1.4.93 2026-06-23 08:15:17 +00:00
Jinjing 9607b30fde Align experimental worktree cards with status lane pullback (#6158)
- Apply extra left-padding pullback to experimental cards when the status lane is shown, keeping title text aligned to tree steps.
- Use negative left margin on shallow rows when the minimum content inset clamps the padding adjustment.
- Resolve experimental card style setting dynamically in the folder workspace panel instead of hardcoding it.
2026-06-23 01:14:16 -07:00
Jinjing b43b4356db Remove deferred sidebar worktree activation (#6155)
Remove the logic that defers activation of slept worktrees behind the
input-quiet scheduler when clicked in the sidebar.

Since the underlying state transition and terminal preparation are
already properly deferred where needed, sidebar clicks can update the
active workspace immediately. This simplifies the activation flow and
eliminates complex cancellation race conditions.
2026-06-23 01:06:17 -07:00
Jinjing b99983e913 Speed up Markdown preview local images (#6124)
* Speed up Markdown preview local images

Implement fast local image prewarming for Markdown preview as described in docs/markdown-preview-fast-local-images.md.

* Encode markdown image paths to support spaces on insertion

Unescaped spaces and delimiters in markdown image destinations can make
screenshot filenames with spaces render as literal text or broken partial
paths.

- Encode the image basename using encodeURIComponent when inserting.
- Preserve encoded local image paths during markdown round trips.
- Remove outdated markdown-preview-fast-local-images design doc.
2026-06-23 00:48:57 -07:00
Jinjing a7a22d5e18 Display draft PR status under tasks (#6119)
* fix: address review findings

* Improve accessibility and refactor GitHub work item status helpers

- Add aria-label and aria-hidden attributes to the task ID pill and icons to make them screen-reader friendly.
- Refactor getTaskPageGitHubPRIconTone to use an exhaustive switch statement with explicit type-safety fallbacks.
- Add comprehensive test coverage for draft checks, state labels, and icon tone edge cases.
2026-06-23 00:38:17 -07:00
Brennan BensonandOrca 5311ab3867 Group agent session history by project (#5432)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 00:27:21 -07:00
Jinwoo HongandOrca edf98f6578 Add copy link action for linked work items (#6140)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 00:25:56 -07:00
Brennan BensonandOrca 17dee0861f Fix terminal tab switch resume rendering (#6041)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 00:23:34 -07:00
Jinwoo HongandOrca 20a3999968 Fix source control base branch truncation (#6146)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 00:10:55 -07:00
b6271bd9f6 feat(activity): focus filter with Cmd/Ctrl+F in Agents view (#6046)
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-22 23:20:33 -07:00
Brennan BensonandOrca 23db6a7110 Preserve linked work drafts during workspace startup (#6107)
Co-authored-by: Orca <help@stably.ai>
2026-06-22 23:18:04 -07:00
ChaDongWunandJinwoo-H 814363c45f fix: preserve source control commit drafts across remounts (#6120)
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
2026-06-22 22:45:00 -07:00
Ricardo Sawir 6090c671c4 Show project icon colors for provider-backed headers (#6118) 2026-06-22 22:28:11 -07:00
Jinwoo HongandOrca d34c7fd589 fix: restore Linux chrome-sandbox postinstall (#6133)
* fix: restore linux chrome sandbox postinstall

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

* fix: check unprivileged user namespaces for sandbox

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

* fix: always repair linux chrome sandbox permissions

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-22 21:55:08 -07:00
github-actions[bot] 1bbac5c1da release: v1.4.92-rc.1 v1.4.92-rc.1 2026-06-23 04:41:17 +00:00
Jinwoo Hong fe8eb45ca2 Add relay upstream negative cache (#6105) 2026-06-23 00:33:52 -04:00
Jinwoo HongandOrca f3e379d6dc fix: cache macos computer-use snapshot ax reads (#6130)
Co-authored-by: Orca <help@stably.ai>
2026-06-22 20:57:13 -07:00
Jinwoo HongandOrca 5d7368dcd2 Fix Fira Code ligature repaint in terminals (#6123)
* Fix terminal ligature repaint after addon attach

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

* Fix terminal preview test mock types

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-22 20:55:05 -07:00
Jinwoo Hong c36109ee80 fix: normalize MSYS cwd for Windows terminals (#6126) 2026-06-22 20:54:41 -07:00
Jinwoo HongandOrca 092fd6cde3 Prune stale worktree virtual row cache (#6117)
Co-authored-by: Orca <help@stably.ai>
2026-06-22 20:48:47 -07:00
bf2a6c1040 Don't enqueue local PR refresh for remote-host repos (fix renderer OOM crash) (#6094)
* Don't enqueue local PR refresh for remote-host repos (fix renderer OOM)

The renderer enqueues GitHub PR refreshes for worktrees. Remote/SSH/runtime
worktrees are meant to refresh through the runtime route (getRuntimeRepoTarget),
but when that route is unavailable — host not the active environment, or
disconnected — the call falls through to the local `gh:enqueuePRRefresh` IPC.
The local handler only resolves repos registered in the local store, so it
rejects every such call with "Access denied: unknown repository path".

With a remote worktree active (e.g. a runtime "Project server" workspace), this
fires on a loop (worktree activation + SWR polling), flooding the renderer with
failed invokes and unhandled rejections. Observed hundreds of these per session;
the renderer JS heap climbs to the V8 ceiling (~3.5GB) and V8 aborts the process
(crash-reports.json: renderer crash, exitCode 5, usedHeapMB == heapLimitMB).

Add isLocalHostPRRefreshCandidate and gate all four enqueue sites on it, so the
local handler only ever receives local-host candidates. Remote candidates with
no available runtime route are skipped (their PR status refreshes once the host
is active/reconnected) instead of spamming a handler that can't serve them.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* test: cover local executionHostId in PR-refresh host guard

Address CodeRabbit nitpick on #6094: add a positive case where a local repo
carries an explicit executionHostId === LOCAL_EXECUTION_HOST_ID, completing
predicate coverage for isLocalHostPRRefreshCandidate.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: route PR refreshes by repo host

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

* fix: skip disconnected SSH PR refreshes

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

---------

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-22 20:47:18 -07:00
Neil f5b50b6091 Document Orca CLI card status (#6122) 2026-06-22 20:43:57 -07:00
ac3ab72b52 fix(jira): surface issue-search failures instead of a misleading empty list (#5958)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-22 20:27:38 -07:00
Neil 59a9b44e2f Fix terminal font chooser filtering (#6121) 2026-06-22 20:24:11 -07:00
1f164daf71 Reduce git trace and branch compare polling churn (#6002)
* fix: bound git trace volume

* fix: reduce branch compare polling churn

* test: add benchmark artifact comparison tooling

* fix: address benchmark and polling review comments

* fix: keep branch compare fresh and harden benchmark reports

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

* Tighten benchmark annotations and polling cleanup

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

* Handle missing git status heads in Source Control tests

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

---------

Co-authored-by: Wolfgang Schoenberger <221313372+wolfiesch@users.noreply.github.com>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
2026-06-22 19:13:32 -07:00
Ricardo Sawir cea8d97aec Stop directory pickers creating typed prefixes (#6114) 2026-06-22 19:09:45 -07:00
Jinjing 9de696a357 Defer workspace directory path edits until blur or enter (#6059)
* defer committing workspace directory path changes until blur or enter

Introduce draft state for the workspace directory path input, only
committing the changes on blur, Enter, or Browse completion. This
prevents the backend from creating incomplete directory path prefixes on
disk with `mkdir` during intermediate typing states.

* Fix agent-hooks test mock and clean up unused imports

* Update the RuntimeClient mock in agent-hooks test to return a fully
  typed instance with the correct schema, eliminating type assertions.
* Remove an unused React import in WorkspaceDirectorySetting test.
2026-06-22 18:53:31 -07:00
0b52d593b8 Detect agents in the serve user's package-manager bins; don't pin empty remote-detect results (#6029)
* Detect agents in the serve user's package-manager bins; don't pin empty remote-detect results

Two defects prevent the desktop client from detecting agents installed on a
remote `orca serve`:

D1 (src/relay/relay-command-env.ts): the relay probes agents with a login shell
(`/bin/sh -lc`), which sources ~/.profile but not the interactive ~/.bashrc that
real PTY sessions source. Per-user package-manager bins added to PATH only in
~/.bashrc are therefore invisible to detection. Resolve the serve user's
package-manager bins from $HOME (.local/bin, .npm-global/bin, .cargo/bin,
.bun/bin, go/bin, .deno/bin, .local/share/pnpm), honor npm_config_prefix, append
to the POSIX fallback set, dedupe against inherited PATH; win32 unchanged.

D2 (src/renderer/src/store/slices/detected-agents.ts): an empty detection result
([], truthy in JS) was pinned by the `if (existing)` short-circuit, so detection
never retried after the server env was fixed. Changed to `if (existing?.length)`;
in-flight dedup still prevents re-detect storms; failures stay uncached.

No new transport, no PowerShell/bash bridge. D1 and D2 are independent.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Also patch the runtime (orca serve) detection path against the empty-pin bug

The D2 fix guarded only ensureRemoteDetectedAgents (the SSH path). The
desktop client's headline scenario — pairing to a remote `orca serve` —
routes through ensureRuntimeDetectedAgents (kind: 'runtime'), which had
the identical bug: an empty detection result ([], truthy in JS) was pinned
by the `if (existing)` short-circuit, so a later install / PATH fix was
never picked up without a reconnect.

Change the runtime guard to `if (existing?.length)`, mirroring the remote
path. In-flight dedup still collapses concurrent re-detects; failed
requests stay uncached. Add a runtime regression test proving detection
re-runs after an empty result (fails on the pre-fix guard).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Honor package-manager relocation env vars in relay PATH detection

Extend the existing npm_config_prefix precedence to cargo, bun, deno, go,
and pnpm so relocated installs (CARGO_HOME, BUN_INSTALL, DENO_INSTALL,
GOBIN/GOPATH, PNPM_HOME/XDG_DATA_HOME) are detected, falling back to the
$HOME defaults. Mirrors the remote-node probe's NVM_DIR handling (#6037).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Tighten remote agent detection retries

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

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: LesleyMurfin <260182349+LesleyMurfin@users.noreply.github.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-22 18:49:21 -07:00
Ricardo Sawir 4df2b800b6 Support SSH file copy to OS clipboard (#6110)
* Support SSH file copy to OS clipboard

* Address SSH clipboard staging feedback
2026-06-22 18:36:37 -07:00
Neil d992062cf9 fix: publish linux release matrix artifacts (#6111) 2026-06-22 18:28:01 -07:00
Jinjing 889ac6094a Improve highlight contrast for selected file explorer rows (#6104)
Apply styling via data attributes and custom CSS in main.css instead
of basic utility classes. This provides a more distinct background color
for selected files in both light and dark modes, and adds a subtle border
to ensure legibility against panel backgrounds.
2026-06-22 18:09:08 -07:00