Commit Graph
4017 Commits
Author SHA1 Message Date
Brennan Benson 20a51978e5 Polish setup guide integration layout (#5856) 2026-06-22 15:15:03 -07:00
b98fd2ff8b feat: copy a file from the explorer to the OS clipboard (#5990)
* feat: copy a file from the explorer to the OS clipboard

Add a "Copy" action to the file explorer context menu that puts the
actual file on the system clipboard, so pasting in Finder/Explorer/a
file manager drops the file itself instead of its path as text.

- macOS: write a public.file-url buffer; Finder synthesizes the legacy
  file types it needs for paste.
- Windows: Set-Clipboard -LiteralPath populates the CF_HDROP file drop
  list that Explorer pastes as a file.
- Linux: best-effort, picked by desktop — text/uri-list on KDE,
  x-special/gnome-copied-files on GNOME-family — via wl-copy or xclip.
- Local files only; the action is hidden for remote/SSH files and the
  web client, where no OS clipboard reference is possible.

The platform logic never throws: failures resolve to a structured
result and the renderer surfaces an error toast.

* Review copy-file clipboard safety

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-22 15:02:38 -07:00
41add74a08 fix: improve terminal contrast in light themes (Tango Light + xterm minimumContrastRatio) (#5986)
* fix: darken Builtin Tango Light ANSI colors for readability

Nine ANSI colors had contrast ratios below 3:1 against the white
background, making CLI output unreadable in light mode. Darkened
to readable Tango shades while keeping the warm palette identity.

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

* fix: enable xterm minimumContrastRatio and add light theme tests

xterm.js minimumContrastRatio (4.5) auto-adjusts low-contrast ANSI
foreground colors at render time — a safety net for all themes,
including custom imports. Added test coverage for this option and
for the Tango Light ANSI color contrast assertions.

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

* chore: trigger CI re-run

---------

Co-authored-by: zhangqinzhong <vhudsongit@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2026-06-22 14:53:34 -07:00
1b62f6511e fix(terminal): attach dropped image files via bracketed paste (#6013)
* fix(terminal): attach dropped image files via bracketed paste

Dragging an image file into a terminal pane wrote the shell-escaped path
as raw PTY input. Terminal TUIs (Claude Code, Codex, etc.) only turn a
path into an image attachment when it arrives as a *bracketed paste*, so
dropped images showed up as a literal path instead of an `[Image]`
placeholder — unlike iTerm2/Warp, which wrap dropped paths in bracketed
paste, and unlike Orca's own clipboard screenshot flow (#2842).

Route dropped image files (by extension, mirroring IMAGE_MIME_TYPES)
through `wrapTerminalBracketedPasteText` with the raw, un-escaped path so
the file-existence check those tools run on the pasted path succeeds.
Non-image drops keep the original shell-escaped, space-separated
behaviour for use in shell commands.

* fix(terminal): separate image paste from following non-image path

A mixed drop where an image precedes a non-image path concatenated the
two: the image bracketed-paste payload has no trailing space, so the
next shell-escaped path was appended directly after it. Add a single
separating space after an image payload only when the next path is a
non-image — back-to-back image pastes are self-delimiting and a stray
space between them would land in the TUI input.

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

* Review terminal image drop path handling

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

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-22 14:53:03 -07:00
b58478eae0 fix: close mirrored editor tabs on the host so they stop reopening (#5975)
* fix: close mirrored editor tabs on the host so they stop reopening

On web and mobile companions, editor file tabs are mirrored from the
host's runtime-session snapshot, which the host derives from its
authoritative `openFiles`. Closing a mirrored tab only removed it
locally, so the next snapshot re-mirrored the still-open host file and
the tab immediately reopened.

Route the close to the host from the single chokepoint every editor
close funnels through (`store.closeFile`): when the file is mirrored and
a web runtime session is active, send `session.tabs.close` for the host
tab id. The RPC's recorded close-intent suppresses re-mirroring until the
host snapshot catches up, so the local removal is not undone. No-op for
the host's own (non-mirrored) files.

Also fix the desktop `ui:closeSessionTab` handler so a companion-driven
editor close goes through `closeFile` (clears `openFiles`) instead of
`closeUnifiedTab` (tab strip only), which had the same re-mirror bug for
mobile-originated closes.

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

* Fix mirrored editor close import cycle

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

---------

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 14:51:43 -07:00
10789669ec fix(file-explorer): allow filtered folder toggles (#5977)
* fix(file-explorer): allow filtered folder toggles

* fix(file-explorer): keep filtered collapse while typing

* fix filtered explorer drag expansion

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-22 14:04:51 -07:00
Jinwoo HongandOrca 5549ed9c87 Fix open-in launcher path classification (#6098)
Co-authored-by: Orca <help@stably.ai>
2026-06-22 13:49:08 -07:00
buf0-bot[bot] c6146f8cd0 fix: localize terminal ID context menu label
Fix Spanish and Chinese locale values for the terminal context menu Copy Terminal ID item.
2026-06-22 13:48:54 -07:00
bbc5951958 Reduce idle remote runtime workspace work (#5895)
* Fix idle remote runtime session work

* fix: stamp remote/SSH worktrees with their repo execution host

Remote-runtime and SSH worktrees are fetched/created/reparented through the
owning host, which reports them from its own perspective (hostId defaults to
"local"). After the per-worktree hostId override in #2, that bogus "local"
overrode the repo's runtime owner, so terminals/sessions for a remote worktree
resolved to the local machine instead of the remote (clicking an omarchy-office
worktree opened a shell on the local omarchy-thinkpad).

Re-stamp every runtime worktree payload with the repo's execution host via a
shared withRepoHostId helper, applied at all worktreesByRepo ingress points:
toVisibleWorktrees (fetch), createWorktree, and applyWorktreeLineageUpdate.
Local-owned repos are left untouched, so an explicit local worktree still
overrides a runtime repo owner. Mirrors how repos already get repoWithFetchedOwner.

* fix: auto-discover remote runtime projects on connect

PR #2 gated the global session-tab sync to web clients only, removing the
desktop path that eagerly populated remote projects. With no on-connect repo
fetch left, remote projects only appeared after the user opened the
Add-Project dropdown (which calls fetchRuntimeEnvironmentRepos directly).

Seed an initial repo/worktree/lineage refresh for every runtime environment
that is already connected when useIpcEvents mounts, and for each one that
becomes connected afterward. Reuses the debounced/throttled refresh scheduler,
and works regardless of whether the remote server emits client events.

* fix: tighten idle runtime refresh behavior

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-22 13:44:25 -07:00
Brennan Benson 3cc610bcc3 Keep closed tab agents from reappearing (#6095) 2026-06-22 13:36:05 -07:00
28824cda78 Don't show local Windows shells for serve-runtime worktrees (#5947)
* Don't show local Windows shells for serve-runtime worktrees

The Windows shell menu (PowerShell/CMD/Git Bash) was offered for a
serve/remote-runtime worktree whose host is not Windows (e.g. a Linux
orca serve), where those local shell choices are meaningless and the
plain New Terminal already opens the runtime's default shell. AND a new
runtimeHostIsNonWindows exclusion into the existing shouldShowWindowsShellMenu
gate, keyed on the probed runtime host platform so a LOCAL Windows-WSL
project runtime (hostPlatform === win32) keeps its shell menu. Adds
regression tests.

Rebased onto current main (was 75 commits stale); net delta unchanged.

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

* Hide runtime Windows shells until host is known

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

---------

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 13:35:32 -07:00
65e2bd0557 Fix floating workspace terminal selector_not_found on a remote runtime (#5946)
* Fix floating workspace terminal selector_not_found on a remote runtime

resolveWorktreeSelector threw selector_not_found for the floating-terminal
sentinel id (global-floating-terminal) because it is a repo-less synthetic
session with no entry in the worktree catalog. A remote client paired to this
serve sends that sentinel, so the normal id: lookup failed and the floating
pane rendered black. Resolve the sentinel (bare and id:-prefixed) to a virtual
ResolvedWorktree rooted at the serve user's home so the PTY spawns in a real
existing dir; unknown id selectors still throw selector_not_found. Adds two
regression tests.

Rebased onto current main (was 75 commits stale); net delta unchanged.

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

* Scope floating terminal selector to terminal launches

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

---------

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 13:33:37 -07:00
JinHyeok Jeong e253d46e72 Harden mobile session tab sync
Harden mobile session-tab snapshot reconciliation and terminal creation. Rejects stale mobile snapshots, tombstones locally closed tabs until the publisher catches up, rolls back half-created terminal tabs when their surface never appears, and scopes terminal-create idempotency by worktree.
2026-06-22 13:31:10 -07:00
Jinwoo HongandOrca 338540bf73 fix: refit after single terminal restore (#6089)
Co-authored-by: Orca <help@stably.ai>
2026-06-22 12:29:18 -07:00
Jinjing 36f8056446 Resolve and clear push targets for linked hosted reviews (#6092)
* Resolve push targets for linked hosted reviews

Automatically resolve and persist push targets for linked GitHub PRs
and GitLab MRs to align source control actions with the review branch.

- Add `ensureHostedReviewPushTarget` to hydrate missing push targets
- Implement GitLab MR push target resolution alongside GitHub PRs
- Block actions from fallback to unrelated upstreams while resolving
- Prevent duplicate concurrent API lookups with in-flight tracking

* Clear stale review push targets when unlinking or replacing reviews

- Ensure unlinking a hosted review or replacing it with another provider
  properly clears the previously associated push target, preventing pushes
  from being steered to outdated review heads.
- Encode explicit push target clears as null over JSON-RPC to bypass the
  automatic omission of undefined properties during transit, then map them
  back to undefined in the main runtime database.
- Add stricter validation to ensure pull request and merge request IDs are
  positive integers, ignoring invalid or dummy numbers like zero.
2026-06-22 11:15:09 -07:00
Jinwoo Hong c6ff9751fa Hide Codex worker sessions from history (#6062) 2026-06-22 05:22:06 -04:00
Jinwoo HongandOrca a99be09ada Remove mobile settings enable toggle (#6070)
Co-authored-by: Orca <help@stably.ai>
2026-06-22 01:19:23 -07:00
Jinwoo HongandOrca 24000561b4 Classify Claude CLI usage shell failures (#6065)
Co-authored-by: Orca <help@stably.ai>
2026-06-22 00:58:32 -07:00
Jinjing b7a2488b8a Prevent truncation of long workspace and branch names in sidebar (#6058)
Long branch names and workspace titles were getting truncated, hiding
important identity context from developers.

* Add a dynamic `TruncatedSidebarLabel` component that measures text
  overflow and renders a tooltip only when the text is actually truncated.
* Use the new label for branch names in `WorktreeCard`, disabling its
  nested tooltip when parent hover details are active to prevent conflict.
* Update `WorktreeCardDetailsHover` to use `break-words` instead of
  truncating, ensuring full branch and workspace identities wrap and remain
  fully readable in the details panel.
2026-06-22 00:44:06 -07:00
Jinjing e2b87dd864 Fix hold-to-talk dictation release matching on keyup (#6056)
Track the specific key and modifier identities from the initial keydown
to construct a robust release matcher. This ensures hold dictation stops
reliably on keyup, even if modifier state flags have already dropped
or if keys are released in a different order.
2026-06-22 00:31:51 -07:00
JinjingandOrca bed2c00df8 fix(i18n): translate new worktree branch deletion messages for v1.4.91 (#6061)
Co-authored-by: Orca <help@stably.ai>
2026-06-22 00:31:29 -07:00
Lesley Murfin a24c91de0d fix(terminal): don't apply native-Windows ConPTY cursor stripping to remote serve PTYs
Closes #6008
2026-06-22 00:00:44 -07:00
Jinjing c139c704af Add visible PR comment queue action (#6057) 2026-06-21 23:59:29 -07:00
Jinjing bbfaee424b Rank Settings search results by relevance (#6050)
* Rank settings search results by relevance

* Keep Settings search content matching ranked entries

* rm design doc
2026-06-21 23:54:06 -07:00
c6d11efbf2 Make PR comments sidebar easier to triage and read (#5996)
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-21 23:49:43 -07:00
Jinwoo Hong a2e0bbc5f6 Fix early PTY startup output races (#6015) 2026-06-22 02:48:45 -04:00
Jinwoo Hong 52f45b3559 Handle literal Codex hook trust keys (#5872) 2026-06-21 23:33:57 -07:00
bfb778570a feat(tabs): redesign tab splits and terminal pane discoverability (#5927)
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-21 23:09:01 -07:00
Jinjing 0aedaf2d69 Fix agent hooks CLI runtime client test
Exercise the agent hooks CLI test through main() with a mocked RuntimeClient class so typecheck no longer relies on a partial object cast.
2026-06-21 22:51:44 -07:00
Brennan BensonandOrca 88da1808f7 Prevent stale sleeping agents from resuming (#6018)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 22:39:09 -07:00
Jinjing fc254deef5 Default new worktree card style on for fresh profiles (#6047)
Enable `experimentalNewWorktreeCardStyle` by default on new profiles where
onboarding is open, or when creating a brand-new config file.

- Avoids visual disruption for existing users who already completed
  onboarding by keeping the old style active for them.
- Preserves explicit user opt-outs during migrations and CLI updates.
- Ensures the offline CLI handler mirrors this logic when creating the
  initial configuration file before the desktop client loads.
2026-06-21 22:35:48 -07:00
OrcaWinandNeil c1e071870b Dispose worktree change refresh queues (#6040)
Co-authored-by: Neil <neil@stably.ai>
2026-06-21 21:58:15 -07:00
Maplumeandbrennanb2025 2e03b14cc3 fix(i18n): correct Chinese MT errors and translate Settings panel strings (#5915)
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-21 21:23:36 -07:00
Brennan BensonandOrca 6c93d311cf Keep workspace board above the status bar (#6035)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 21:22:22 -07:00
Jinwoo Hong a8feafe92a Fix mobile file tab close sync
Close mobile session file tabs through the underlying editor file so desktop stops republishing closed docs/files.
2026-06-21 19:41:48 -07:00
Jinwoo Hong d9b2d89406 Fix Windows NeoVim open-in launcher (#6026) 2026-06-21 21:57:33 -04:00
Brennan BensonandOrca 36bdd06aa8 Prevent duplicate startup command echoes (#6023)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 18:51:44 -07:00
Brennan BensonandOrca 8228155e4d Improve preserved branch cleanup after squash merges (#6014)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 18:48:59 -07:00
OrcaWinandNeil 2ed4346c2d Coalesce renderer worktree change refreshes (#6020)
Co-authored-by: Neil <neil@stably.ai>
2026-06-21 18:41:12 -07:00
Brennan BensonandOrca 1b5c4738d2 Prevent duplicate agent resume tabs after wake (#5882)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 18:38:41 -07:00
Brennan BensonandOrca 8c2a34c39d Align folder workspace sidebar indentation (#6019)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 18:34:48 -07:00
Jinwoo Hong 551b370085 Fix WSL agent session history (#6010) 2026-06-21 17:23:42 -07:00
Trevin Chowandbrennanb2025 4afcc24819 Tighten sidebar card vertical padding for denser layout (#4762)
Reduce WorktreeCard top padding 6px→5px and bottom 8px→6px so more
cards fit on screen. Uses Tailwind v4 dynamic spacing (pt-1.25).

Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-21 17:03:09 -07:00
Brennan BensonandOrca fe8fe16c83 Preserve agent settings when sleeping sessions resume (#5916)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 16:44:58 -07:00
Brennan BensonandOrca a856c7d6b6 Rename Orca Linear agent skill (#5855)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 16:16:37 -07:00
Brennan BensonandOrca d517bb7250 Restore agent history after worktree renames (#6000)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 15:48:33 -07:00
Jinwoo HongandOrca 32e6ab7655 Fix mobile workspace list parity (#6001)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 15:11:55 -07:00
Jinwoo HongandOrca 56688d8e20 fix: stop hold dictation on shortcut release (#6003)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 14:51:05 -07:00
Jinwoo HongandOrca 67fe4bd780 Fix manual project ordering for identity headers (#5933)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 13:23:21 -07:00
Jinwoo HongandOrca c01c0462ae Refresh workspace PR badges after external PR creation (#5997)
Co-authored-by: Orca <help@stably.ai>
2026-06-21 13:19:24 -07:00