Commit Graph

1938 Commits

Author SHA1 Message Date
Brennan Benson b9c55bb071
Add onboarding tour retention telemetry (#2713)
Co-authored-by: Orca <help@stably.ai>
2026-05-23 14:15:11 -07:00
Neil 51618f1e92
Finish terminal perf rollback for OpenCode TUIs (#2716)
* revert: terminal mounted worktree slicing

* fix: restore non-terminal rollback scope
2026-05-23 14:10:15 -07:00
Neil 14fa257394
Revert terminal hidden-output perf series (#2715)
Reverts the hidden terminal pressure changes from #2661 to restore the prior terminal rendering path while the fullscreen TUI regression is handled separately.
2026-05-23 13:53:11 -07:00
Neil 1ea9aeb362
fix: harden perf cleanup edge cases (#2712) 2026-05-23 13:38:05 -07:00
Neil f286702c62
fix: hold pty batches during reveal snapshots (#2707) 2026-05-23 13:19:38 -07:00
Jinjing 3f6940a746
fix: address review findings (#2703) 2026-05-23 13:11:08 -07:00
Jinjing ace241c43f
feat: allow hiding workspace card metadata (#2701) 2026-05-23 13:02:50 -07:00
Neil 21b30bc513
fix: avoid stale headless reveal snapshots (#2702) 2026-05-23 13:02:30 -07:00
Jinjing cfd758ef73
fix: remove sleep hover quick actions (#2697) 2026-05-23 12:47:10 -07:00
Neil 7b0a1faac1
fix: gate hidden hydration by pty id (#2698) 2026-05-23 12:47:08 -07:00
Jinjing a8d4e2ab48
Squashed commits (#2696)
- fix: harden agent ready wait test

- fix: address worktree visibility copy
2026-05-23 12:42:03 -07:00
Neil 610111b6c4
fix: preserve hidden terminal output state (#2694) 2026-05-23 12:36:18 -07:00
Jinjing c93dd901a3
fix: address review findings (#2695) 2026-05-23 12:33:49 -07:00
Brennan Benson 669ade2313
Update onboarding feature wall experience (#2652)
Co-authored-by: Orca <help@stably.ai>
2026-05-23 12:21:13 -07:00
Neil 8831019937
fix: avoid duplicate reveal hydration output (#2693) 2026-05-23 12:16:54 -07:00
Neil 82000b5405
fix: stabilize e2e fixture worktrees (#2692) 2026-05-23 12:10:11 -07:00
Jinjing 6a74dddd43
fix: address review findings (#2689) 2026-05-23 11:51:26 -07:00
Jinjing f03ed7ec25
Improve mobile onboarding intro button layout (#2688) 2026-05-23 11:42:08 -07:00
Jinwoo Hong 132dd85b9d
Add Cmd+J create action (#2680)
Co-authored-by: Orca <help@stably.ai>
2026-05-23 04:04:49 -07:00
Neil b2df6eff74
fix: guard hidden hydration against transport replacement (#2686) 2026-05-23 02:44:36 -07:00
Neil 7a9b0465dc
fix: preserve hidden output across pty rebinding (#2685) 2026-05-23 02:34:56 -07:00
Neil 48147680ae
Add settings notification sound selector (#2684) 2026-05-23 02:24:56 -07:00
Neil a0cdbfdf57
test: fix hidden terminal CI fallout (#2683) 2026-05-23 02:21:15 -07:00
Neil 3adad22eca
perf: hydrate hidden terminal output on reveal (#2682)
* perf: hydrate hidden terminal output on reveal

* test: fix hidden terminal hydration typecheck
2026-05-23 02:07:26 -07:00
Jinjing ffec74c7ba
Fix SSH agent and identity file auth ordering (#2681)
* fix: address review findings

* fix: address CI failures
2026-05-23 01:56:15 -07:00
Jinwoo Hong 007b7cc283
Fix Claude permission status across subagents (#2674)
Co-authored-by: Orca <help@stably.ai>
2026-05-23 04:28:45 -04:00
Jinjing b8257433d2
Teach PR conflict AI prompts to recreate local merges (#2679)
- Use a PR-specific conflict prompt when host mergeability reports conflicts
- Include safe base-ref fetch/merge guidance and test coverage for option-like refs
2026-05-23 01:20:41 -07:00
Jinjing a50a97670f
Refine settings panel layout and controls (#2676) 2026-05-23 01:16:46 -07:00
Jinjing 102cc09622
Improve worktree import handling (#2677)
* feat: improve worktree import handling

* chore: remove PR docs assets

* rm html
2026-05-23 01:13:33 -07:00
Go1c 45a573e4f0
P0 BLOCKER: Stop Windows PowerShell Chinese output from corrupting the top viewport while scrolling (#2669)
* fix(terminal): eliminate P0 Windows PowerShell CJK top-scroll duplication

* fix(terminal): address Windows PTY review findings

---------

Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-05-23 00:40:54 -07:00
Neil 9b9d1b7e15
Fix onboarding light theme persistence (#2673) 2026-05-23 00:36:16 -07:00
Phil Denhoff 2dcaa78960
Support OpenSSH Include expansion for SSH config imports
Closes #2647
2026-05-23 00:27:20 -07:00
Neil 59ac13dc53
Improve onboarding step indicator contrast (#2671) 2026-05-23 00:25:02 -07:00
Jinwoo Hong d2d181b753
Update mobile 0.0.9 release links
Point Android download links at the published mobile-v0.0.9 release.
2026-05-23 03:24:23 -04:00
Jinwoo Hong 1ea43c2d06
fix: use play icon for quick commands menu (#2668)
Co-authored-by: Orca <help@stably.ai>
2026-05-23 02:47:55 -04:00
Neil 58accdf8a8
Revamp onboarding notification setup (#2670) 2026-05-22 23:47:31 -07:00
Jinjing de96ac5678
fix: address review findings (#2667) 2026-05-22 23:42:40 -07:00
Neil 79b18f6fed
Fix Orca Mobile layout and sidebar controls (#2663)
* Fix Orca Mobile layout and sidebar controls

* Use brand icons for mobile platform badges

* Add readable card for mobile pairing steps

* Align mobile flow primary actions

* Fix mobile sidebar toggle defaults
2026-05-22 23:32:17 -07:00
Jinjing 7def1c7f00
fix: run SSH archive hook before worktree removal (#2665) 2026-05-22 23:02:39 -07:00
Jinjing 002cab9d82
fix: address review findings (#2664) 2026-05-22 22:49:31 -07:00
Brennan Benson 8ad76f7b37
Stop auto-populating create PR fields (#2660)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 22:48:30 -07:00
Neil 69728c9904
Reduce hidden terminal pressure during Codex typing (#2661)
* Reduce hidden terminal pressure during Codex typing

* Make terminal lag stress test tunable

* Add real Codex terminal stress mode
2026-05-22 22:06:47 -07:00
Brennan Benson e8837275fe
Default workspace list to repo grouping (#2657)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 20:14:45 -07:00
Neil 43439f5a5a
Fix Antigravity Windows hook quoting (#2645) 2026-05-22 16:17:01 -07:00
Jinwoo Hong 114619c8c8
Add Quick Commands surface with tab-bar split-button and settings pane (#2650)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 16:14:39 -07:00
Brennan Benson d3d63c888b
Fix agent quick-launch watchdog (#2643)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 15:54:47 -07:00
Jinwoo Hong 1ee2adae70
Add web GitLab runtime parity (#2614)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 15:25:45 -07:00
Brennan Benson c825467a4f
Make worktree force delete idempotent (#2642)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 14:35:39 -07:00
Brennan Benson 845622b1ef
Detect installed agent skills in settings (#2613)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 13:37:05 -07:00
Brennan Benson 0d78e807dd
fix: support SSH hosted review PR creation (#2628)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 13:27:06 -07:00
Borja 3b74b8b1d7
Allow removing an unreachable SSH target (#2640)
* Allow removing an unreachable SSH target

handleRemove tried to reconnect-then-terminate before deleting the
target. When the remote host is dead, the reconnect handshake times
out and the user is stuck with a stale entry. Reroute removal through
a best-effort cleanup helper so the local entry can always be deleted.

Fixes #2626

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

* review: harden SSH target removal tests

- cover removeTarget when disconnect fails in main IPC
- cover retry termination failure after reconnect in renderer removal helper
- verified unreachable-target removal in Electron with IPC and Settings UI signals

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

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-22 16:23:39 -04:00
Brennan Benson 8096f236aa
Fix delete workspace dialog overflow (#2634)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 13:08:11 -07:00
Jinwoo Hong 368abf2e25
Add Orca Mobile marketing + pairing flow (#2631)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 13:01:43 -07:00
Jinwoo Hong 2695c6b336
Fix advertised URL settle races (#2639)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 15:34:36 -04:00
Jinwoo Hong 02a0aad987
Refresh ports when advertised URLs change (#2638)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 12:17:21 -07:00
Yusuke Hata ff469bfd5b
fix: resolve JIS keyboard bracket and backslash shortcut mapping (#2624)
Fix JIS bracket/backslash shortcut intent matching across tab and terminal-pane shortcuts.\n\nReview follow-up:\n- centralize semantic punctuation matching for bracket/backslash keys\n- preserve physical-code fallback when key text is inconclusive\n- avoid stealing AltGr bracket input on Windows/Linux\n- add regression coverage for JIS, AltGr, and fallback behavior
2026-05-22 14:54:19 -04:00
Jinjing 810302f892
feat: allow moving floating terminal trigger (#2636) 2026-05-22 11:49:00 -07:00
Jinjing d121f911f9
Lower contrast for idle shortcut binding controls (#2635) 2026-05-22 11:38:54 -07:00
Neil 448542af0c
perf: Slice terminal rendering to mounted worktrees (#2617) 2026-05-22 11:36:32 -07:00
Jinjing e08fdc7c6d
fix: address review findings (#2633) 2026-05-22 11:22:41 -07:00
Jinjing e2987dcc33
fix: address review findings (#2632) 2026-05-22 11:02:40 -07:00
Jinjing a37f299977
Remove create PR success toast
Removes the newly-created pull request success toast from create PR flows while preserving existing-review and error feedback.
2026-05-22 10:55:10 -07:00
Jinjing 6a8bacae4c
Hide branch column on GitHub PR task page (#2629) 2026-05-22 10:50:22 -07:00
Brennan Benson 9cb9a9d5e3
Respect GitHub username branch prefix (#2599)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 02:20:32 -07:00
Jinwoo Hong b22550fa8b
Quiet workspace port background refresh (#2621)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 04:43:28 -04:00
Jinjing 596baf55a2
Keep git history graph sticky
Squashed commit from make-git-graph-sticky-current-change.
2026-05-22 01:38:09 -07:00
Pablo Lozano 395e98f015
fix(gitlab): restore cwd fallback in listMergeRequests
Restore the glab mr list cwd fallback when listMergeRequests cannot resolve a project ref locally. Preserve the existing error envelope behavior and guard SSH-backed repos from running cwd-less fallback commands that could resolve an unrelated local project.
2026-05-22 01:28:16 -07:00
Neil 8c6d0c3239
Fix unified workspace options regression (#2619) 2026-05-22 01:12:58 -07:00
Neil 1da5da2fd8
Add interrupted agent row tooltip (#2618) 2026-05-22 01:08:08 -07:00
Jonathan Avila 5ca6828371
feat: surface dev-server URLs in the ports panel (#2534)
* Surface dev-server URLs in workspace ports panel

Why: the OS scanner only sees `127.0.0.1:3001`, so clicking a Vite
port in the panel opens the wrong host/protocol when the dev server
binds with a custom hostname or HTTPS (e.g. `https://local.getmontecarlo.com:3001/`).
We now watch PTY output for advertised origins and prefer them at
display, copy, and open time. Falls back to the OS-derived address.

The watcher taps the central `runtime.onPtyData` path so it sees local,
daemon-backed, and SSH PTYs uniformly. URL candidates are validated with
`new URL()`, sanitized to origin only (no path/query/fragment/userinfo),
and gated by listener-PID validation so stale entries get evicted when
a different process reuses the port.

SSH `DetectedPort` enrichment is out of scope here — that panel uses
separate data shapes and port-forwarding may rewrite the local port,
making naive URL reuse incorrect. Tracked as a follow-up.

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

* Extend advertised-URL enrichment to SSH ports

Why: the first cut only enriched the local workspace ports panel. SSH
worktrees use a separate panel with `DetectedPort` and `PortForwardEntry`
shapes scanned by the remote relay, so the same dev-server banners that
flow through Orca's SSH PTYs were captured by the watcher but never
surfaced.

The renderer-side SSH scanner doesn't know which worktreeId the watcher
keyed an entry under, so a small helper walks the store to find every
worktree attached to a given connection and asks the watcher for the
best match per port (custom DNS host > loopback > LAN IP, https and
recency as tie-breakers). Enrichment runs at every broadcast and list
site in src/main/ipc/ssh.ts.

For a forwarded SSH port, the open action now uses
`advertisedProtocol://customHost:localPort`. We deliberately reuse the
local forward port — the remote port number is not reachable from the
local machine — and we only reuse the host when it's a custom DNS name
(IP literals and the remote's `localhost` get ignored, falling back to
127.0.0.1 like before). Loopback advertisements from the remote box are
a no-op because they don't translate to the local browser.

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

* Address Codex review of advertised-URL enrichment

Four findings from the post-implementation review:

- Watcher rejects wildcard advertised hosts (`0.0.0.0`, `::`, `*`). The
  OS scanner already normalizes wildcards to localhost for the connect
  host; if a dev server prints `http://0.0.0.0:3000/` verbatim we keep
  that sensible default instead of letting the watcher overwrite it
  with a host the browser can't open.

- Pre-bind pending buffer is now capped at 32 distinct PTY IDs with
  LRU eviction. Spawn-failure paths could otherwise leave never-bound
  entries forever — per-PTY 16 KiB bound was the only guard.

- `clearProviderPtyState` now calls `advertisedUrlWatcher.unbindPty`.
  SSH reattach failures, `clearPtyOwnershipForConnection`, and daemon
  spawn-failure cleanup bypass `runtime.onPtyExit`; routing through the
  central provider teardown plugs those holes (and is idempotent with
  the existing `onPtyExit` hook for natural exits).

- `lookupBest` accepts an optional current listener PID and runs the
  same pin-then-evict logic as `lookup`. `enrichSshDetectedPorts`
  threads `DetectedPort.pid` through so a stale advertised URL gets
  evicted on remote port reuse. Forward enrichment stays best-effort
  (forwards are persisted config, not observed listeners — detected
  enrichment is the eviction path).

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

* fix: refresh SSH ports when advertised URLs change

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

* fix: show advertised URLs in port rows

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

* fix: address advertised URL review issues

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

* fix: tighten advertised URL cache handling

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

* fix: align advertised URL edge cases

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

* fix: handle advertised URL cache invalidation

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

* fix: show status port action tooltips

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

* fix: keep port action tooltips above popover

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

* fix: clear port action focus after click

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

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-05-22 03:52:51 -04:00
Jinjing 191c5b239c
Dock git history at the bottom of source control (#2608)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 00:35:59 -07:00
Jinjing 41a2d7ba90
Target source-control actions to publish branches (#2612) 2026-05-22 00:35:30 -07:00
Neil 8d90dd4e4b
Fix screen-local submit shortcut regression (#2616) 2026-05-22 00:34:49 -07:00
Borja 8ae292e2b7
Cancel native middle-click paste on tab mouseup (#2518)
On Linux with primary-selection paste enabled, middle-clicking a tab to
close it triggered an unwanted primary-selection paste into whichever
terminal became active after the close. The existing onMouseDown
preventDefault on each tab blocks Chromium's middle-button auto-scroll
but does not block the native paste pipeline, which is gated on
mouseup. After the tab unmounts via onAuxClick → onClose, focus moves
to xterm's hidden textarea on the newly active terminal, and the
primary selection lands there.

Add a small named helper preventMiddleButtonDefault and wire it as
onMouseUp on SortableTab, BrowserTab, and EditorFileTab. Mirrors the
preventDefault that usePrimarySelectionPaste's enabled=false branch
already performs for non-tab surfaces. No platform branching: the
mouseup cancel is a no-op on macOS and Windows because there is no
native primary-selection paste pipeline to cancel.

Fixes #2346
2026-05-22 00:13:53 -07:00
AIEPhoenix bd6139878c
fix(daemon): strip Electron node flag from PTYs
Strip ELECTRON_RUN_AS_NODE from daemon-spawned PTY environments so user shells do not inherit Electron's internal Node-mode flag. Adds regression coverage for the daemon PTY env boundary.

Fixes #2414.
2026-05-22 00:12:54 -07:00
Neil 426272e94c
perf: Stabilize worktree sidebar activity inputs
Squashed from PR #2611.
2026-05-22 00:07:45 -07:00
Maciej Kobuszewski 4c9a2ed28d
fix(linux): resolve symlink and probe orca-ide in CLI wrapper
Fixes #2539
2026-05-22 00:04:22 -07:00
Neil 81fcfea965
Add terminal shortcut routing policy (#2610) 2026-05-21 23:57:53 -07:00
Neil 31859d47fa
perf: gate runtime sync key builds by inputs (#2609) 2026-05-21 23:47:29 -07:00
Neil a509e6e1a6
perf: pause checks polling while hidden (#2607) 2026-05-21 23:15:25 -07:00
Neil 9a41f5bc9b
perf: coalesce source control branch compare (#2606) 2026-05-21 23:04:45 -07:00
Jinjing 550a3a5717
Use solid card surfaces on pull request panels (#2605) 2026-05-21 22:58:38 -07:00
Neil 2a3175b2ab
perf: keep git status polling visible-only (#2604) 2026-05-21 22:55:16 -07:00
Neil fb863590cd
Keep Kanban open for toast actions (#2602) 2026-05-21 22:53:12 -07:00
Neil fdf293e4a3
perf: pause hidden sidebar decoration refreshes (#2603) 2026-05-21 22:46:01 -07:00
Neil e5f15a98c5
perf: pause low-priority polls while hidden (#2601) 2026-05-21 22:31:44 -07:00
Neil e5c4b628a5
perf: index sidebar agent rows by worktree (#2600) 2026-05-21 22:21:34 -07:00
Neil f050fa364b
perf: cache editor external watch targets (#2598) 2026-05-21 22:04:18 -07:00
Neil c1dcdb41e1
perf: share synthetic title spinner timer (#2596) 2026-05-21 21:52:26 -07:00
Neil cef5570188
perf: flush daemon stream data per session (#2595) 2026-05-21 21:40:37 -07:00
Neil 8aa4d3df19
perf: checkpoint daemon PTYs only when dirty (#2593) 2026-05-21 21:27:53 -07:00
Neil 82793067a0
perf: narrow Codex restart stale input checks (#2592) 2026-05-21 21:18:21 -07:00
Neil 0fa566e883
perf: reduce browser page update churn (#2591) 2026-05-21 21:06:38 -07:00
Neil a0ca64b0f8
Reduce tab update churn
Narrows tab-bar subscriptions and avoids no-op terminal/unified-tab map churn without changing polling freshness.
2026-05-21 20:45:02 -07:00
Neil a97191d4aa
Gate resource popover store slices
Avoids subscribing the closed resource status segment to popover-only high-churn store maps.
2026-05-21 20:35:46 -07:00
Neil 98822fdf7e
Share macOS Option-key tracking
Replaces per-card macOS Option-key listeners with one shared external store while preserving quick-action behavior.
2026-05-21 20:29:50 -07:00
Jinwoo Hong b1973657ea
Add mobile Tasks parity (#2452)
Co-authored-by: Orca <help@stably.ai>
2026-05-21 20:26:07 -07:00
Neil edbcc333f1
fix: harden droid notification routing (#2585) 2026-05-21 20:23:09 -07:00
Neil e61c4cc415
Share dashboard relative-time clock
Replaces per-row relative-time intervals with a shared cadence clock and verifies remount freshness.
2026-05-21 20:10:23 -07:00
Brennan Benson 12720cbe22
Fix inactive workspace scan loading copy (#2577)
Co-authored-by: Orca <help@stably.ai>
2026-05-21 19:44:26 -07:00