Commit Graph
113 Commits
Author SHA1 Message Date
5c31930e0e perf: speed up desktop startup (#4618)
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
2026-06-09 12:15:04 -07:00
Jinwoo HongandOrca db47575d18 fix: RuntimeEnvironmentStoreError on orca cli file open (agent use case) (#4724)
Co-authored-by: Orca <help@stably.ai>
2026-06-05 15:03:10 -07:00
bae0a88567 Fix browser clipboard permission handling (#4689)
* fix(browser): set up session policies for default browser partition

The default browser partition (persist:orca-browser) was created in the
registry constructor but never got session policies — permission handlers,
download handlers, WebAuthn handlers, etc. — because:

1. hydrateFromPersisted() explicitly skips the default partition
2. createProfile() never targets the default partition
3. restorePersistedUserAgent() only restored the user agent, not policies

This meant sites in the default browser partition that requested
clipboard-sanitized-write (or any other permission) were denied by
Electron's default behavior, since no handler was registered.

Fix: call setupSessionPolicies(ORCA_BROWSER_PARTITION) in
restorePersistedUserAgent(), which is the startup path that runs after
app is ready. The configuredPartitions guard makes this idempotent.

Also adds a test verifying the default partition gets its session
policies on restore.

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

* fix(browser): preserve clipboard permissions for browser session

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

* Initialize browser sessions at app startup

- Move cookie replay and persisted session setup out of renderer IPC wiring
- Install default browser partition policies once per process before webviews load
- Cover startup ordering, retry behavior, permission denial, downloads, and WebAuthn policies

---------

Co-authored-by: Prethish-Complyance <prethish@complyance.io>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
2026-06-05 13:20:52 -07:00
Jinwoo HongandOrca 2f8246356f Fix owner-scoped file watch reloads (#4682)
Co-authored-by: Orca <help@stably.ai>
2026-06-04 22:29:42 -07: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
Neil 6b87b9a32c Add app icon switcher to appearance settings (#4600) 2026-06-03 17:14:50 -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
Brennan BensonandOrca 38f12e8df4 Track parallel work education telemetry (#4449)
Co-authored-by: Orca <help@stably.ai>
2026-06-01 23:29:28 -07:00
Jinwoo Hong 57bae089d7 Fix Windows second-instance window focus (#4403) 2026-06-01 16:42:03 -04:00
Neil ca92c0d201 fix: release main-window service closures on close (#4233) 2026-05-31 09:12:34 -07:00
Neil 372469b752 Add default tab templates from orca.yaml 2026-05-31 05:05:58 -07:00
Neil 5f3d6fc1b5 Add unbound workspace delete shortcut (#3875) 2026-05-30 12:54:54 -07:00
Neil bd37c9ccb5 Add tab index shortcuts (#3193) 2026-05-30 15:29:20 -04:00
Jinwoo Hong b1fefbeea7 test: make clipboard temp path expectation platform-aware (#3781) 2026-05-30 09:58:56 -07:00
Neil 54c5425af1 fix: clean up file drop relay listener (#3707) 2026-05-30 06:53:55 -07:00
Neil 7286a6553b Add sidebar folder drop for projects (#3207) 2026-05-30 00:40:21 -07:00
Jinwoo HongandOrca 7ca12ec252 feat: support image paste in web remote terminals (#3414)
Co-authored-by: Orca <help@stably.ai>
2026-05-29 21:57:08 -04:00
Jinwoo Hong 0d060e1d21 Make WSL first-class for local agents and provider accounts (#2649) 2026-05-29 16:06:33 -07:00
Neil 03e43ef165 fix: avoid stacking browser download handlers (#2879) 2026-05-26 20:14:38 -07:00
Brennan BensonandOrca 69986f2ff5 Add powerMonitor to electron mock in attach-main-window-services test (#2855)
Co-authored-by: Orca <help@stably.ai>
2026-05-26 15:13:15 -07:00
Neil 8c6d0c3239 Fix unified workspace options regression (#2619) 2026-05-22 01:12:58 -07:00
Neil 81fcfea965 Add terminal shortcut routing policy (#2610) 2026-05-21 23:57:53 -07:00
Neil 6408e49dbd Add customizable keyboard shortcuts (#2581)
* Add customizable keyboard shortcuts

- Add customizable keybindings
- Fix keybinding customization bypasses

* Keep shortcut UI labels dynamic

* Fix keybinding review gaps

* Improve shortcut recording UX

* Include settings section metadata in search

* Polish shortcut settings editor

* Tighten shortcut settings rows

* Clarify keybindings file card

* Clear settings search on section select

* Remove keybindings file helper copy
2026-05-21 19:10:16 -07:00
bc1ba6dc72 fix: pr-bug-scan validated finding from #2504 (#2548)
* fix: address pr-bug-scan validated finding from #2504

Narrowed App.tsx early return so it only suppresses chords the floating panel actually claims (Cmd+T/W, Cmd+Shift+B/M); B/L/Shift+E/F/G now reach app branches.

* Let floating terminals receive shell control chords

- Track floating xterm focus in the main process so Ctrl+B/Cmd+B and
  sidebar-adjacent chords can pass through to SSH and tmux
- Share renderer shortcut targeting logic for floating panel shortcuts
- Cover focus routing and shortcut ownership with tests

---------

Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
2026-05-21 17:16:52 -07:00
Neil 20099eb82e Revert agent hovercard (#2460) 2026-05-20 21:52:29 -07:00
Neil 3dcc9e69da Improve agent hovercard interactions (#2459) 2026-05-20 17:35:48 -07:00
Jinwoo HongandOrca 8b6f666de5 Suppress false crash reports during expected renderer reloads (#2342)
Co-authored-by: Orca <help@stably.ai>
2026-05-19 13:41:48 -07:00
Jinwoo HongandOrca f70802f31c Surface SSH relay loss in target state (#2265)
Co-authored-by: Orca <help@stably.ai>
2026-05-18 13:16:23 -07:00
Jinwoo HongandOrca fbf792c31c Fix remote session tab split parity (#2252)
Co-authored-by: Orca <help@stably.ai>
2026-05-18 13:13:40 -07:00
Jinjing cfe39bcd8e fix: address review findings (#2220) 2026-05-17 22:34:09 -07:00
Jinwoo HongandOrca 4b7c9b7213 Improve remote client runtime parity (#1975)
Co-authored-by: Orca <help@stably.ai>
2026-05-17 22:24:38 -07:00
Jinwoo HongandOrca 2f7da8109e Open mobile source control diffs in editor tabs (#2202)
Co-authored-by: Orca <help@stably.ai>
2026-05-17 20:24:46 -07:00
Jinjing c8e703663d Recover main window after renderer crashes (#2181)
* Recover the main window after renderer crashes

- Reload the app shell once after unexpected renderer process loss
- Skip recovery during clean exits, quits, and window close paths
- Cover renderer recovery behavior with focused window tests

* fix: harden renderer crash recovery
2026-05-17 16:36:44 -07:00
JinjingandOrca 77264240c8 Add crash report submission flow (#2012)
* feat: add crash report submission flow

* Capture crash-report breadcrumbs

- Add a memory-only crash breadcrumb ring buffer and persist snapshots only
  when a crash report is recorded
- Include sanitized recent activity in crash diagnostics and tests
- Prevent dismissing or closing the crash dialog while submission is in flight

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

* fix: address auto-review findings

* chore: remove crash report preview artifact

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-15 23:59:03 -07:00
Neil e7eb42659c Add primary selection middle-click paste
Closes #1898
2026-05-15 22:49:41 -07:00
Neil 2ead67c650 Label macOS dev Dock instances by branch (#2068)
* fix: label macOS dev Dock instances

* fix: keep dev badge visible in Dock labels

* chore: clean up dev identity plumbing

* feat: add stable-name dev command
2026-05-15 22:46:13 -07:00
Neil 1258e78aa9 Fix startup IPC registration race 2026-05-15 19:02:40 -07:00
Neil 5bcfa27581 Add Ctrl+Tab recent tab switcher (#1916) 2026-05-15 18:49:08 -07:00
Jinjing bdb9a36c5a Fix close after renderer crash 2026-05-15 18:15:57 -07:00
Brennan BensonandOrca f5cc8196f9 Clean up old workspaces (#1873)
Co-authored-by: Orca <help@stably.ai>
2026-05-15 14:00:23 -07:00
Jinwoo HongandOrca 6c4bcf7ea6 feat(ssh): make remote workspaces first-class (#1876)
Co-authored-by: Orca <help@stably.ai>
2026-05-15 12:32:07 -07:00
Brennan BensonandOrca 60fdd11114 Migrate agent pane identity to stable leaf ids (#1909)
Co-authored-by: Orca <help@stably.ai>
2026-05-15 12:10:06 -07:00
Jinwoo HongandOrca 151040f05f Add desktop-backed mobile voice dictation (#1869)
Co-authored-by: Orca <help@stably.ai>
2026-05-14 14:36:44 -07:00
Jinjing d08a1b9525 fix: route terminal file drops by tab (#1804) 2026-05-13 22:15:46 -07:00
Brennan BensonandOrca 6e482a00d7 fix(terminal): set paneKey env on CLI-spawned terminals so agent status surfaces (#1727)
Co-authored-by: Orca <help@stably.ai>
2026-05-13 16:20:59 -07:00
Jinwoo HongandOrca 406304c5e2 Add Floating Terminal (#1724)
* Add floating terminal surface

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

* Move floating terminal into native window

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

* Polish floating terminal native window

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

* Revert "Polish floating terminal native window"

This reverts commit c7e4bdf4d4.

* Revert "Move floating terminal into native window"

This reverts commit 0fa1f5c493.

* Adjust floating terminal default position

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

* Polish floating terminal hide and placement

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

* Fix floating terminal IPC test mocks

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-12 18:06:42 -07:00
Jinwoo HongandOrca 7944293815 Improve mobile terminal streaming performance (#1700)
* Improve mobile terminal streaming performance

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

* Add mobile clear terminal action

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

* Fix terminal connection test mock

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

* WIP: mobile markdown tabs before rebase

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

* Add mobile markdown editing

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

* Harden mobile tab and markdown sync

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

* Fix mobile terminal reconnect loading race

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

* Polish mobile terminal keyboard behavior

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

* Simplify mobile markdown editor chrome

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

* Move mobile markdown actions to top

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

* Use app modals for markdown discard

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

* Dismiss keyboard before markdown confirmations

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

* Add mobile file explorer

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

* Fix mobile file explorer type narrowing

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

* Fix mobile files navigation param

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

* Show mobile files connection wait state

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

* Preview text files on mobile

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

* Simplify mobile file previews

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

* Clarify unavailable mobile file types

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

* Fix mobile subscription and preview review issues

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

* Keep fallback terminals visible on mobile

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

* Keep mobile terminal tap active

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

* Preserve mobile terminal fallback order

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

* Fix mobile session tab authority

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

* Run mobile tests in mobile CI lane

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

* Bump mobile app version to 0.0.7

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

* Allow main window IPC wiring size

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-12 14:38:12 -07:00
Jinwoo HongandOrca 82090831f6 Create Orca CLI terminals without stealing focus (#1707)
Co-authored-by: Orca <help@stably.ai>
2026-05-11 23:14:30 -07:00
Brennan BensonandOrca 1f43346c5f fix(resource-usage): hydrate pty-registry at boot; render · remote only for SSH repos (#1667)
* WIP: Changes before auto-review fixes

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

* fix: address auto-review-fix-multi-agent findings

- Replace local ORCA_WORKTREE_ID_SEPARATOR with shared WORKTREE_ID_SEPARATOR
- Make hydrateLocalPtyRegistryAtBoot idempotent (one-shot per process,
  but stays retry-eligible until daemon provider is available)
- Strengthen daemon-pty-adapter strict-parser test to actually exercise
  the new short-circuit (test would have passed under the old loose
  parser too without the change)
- Add eslint-disable max-lines directive to oversized merge test file

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

* chore: archive auto-review context to .context/

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

* fix: address auto-review-fix findings

Drop the destructive reconcileOnStartup call from boot-time PTY registry
hydration: a transient listRepoWorktrees failure (returns [] and only
warns) would otherwise let the reconcile pass kill live local sessions.
The boot path is now read-only against the daemon — listSessions() only.

Also: tighten parsePtySessionId to reject degenerate `::` halves; replace
stale pty.ts:1005 references and a misleading local-unknown comment in
the hydrate module; narrow Store dependency to Pick<Store, 'getRepos'>;
log adapter listSessions failures instead of silently swallowing them;
re-anchor design-doc references on stable symbols and align §1b/§1c/§1d
with the implementation.

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

* docs(resource-usage): update remote badge spec

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

* test(resource-usage): cover boot hydration failure modes + warm-reattach e2e

Adds the regression coverage flagged in PR #1667's test plan that wasn't
already locked down.

vitest (`hydrate-local-pty-registry.test.ts`):
  - daemon offline at first call → no-op, hasHydrated stays false so a
    later macOS dock re-activation can retry.
  - listSessions rejection caught and logged, does not throw.
  - pid-write ordering: a pre-existing registry entry with pid=12345 is
    not clobbered by a stale `pid: null` from listSessions (§1d).
  - SSH-gate: a session whose repo has a non-null connectionId stays out
    of the registry, mirroring the spawn-time gate in pty.ts.
  - Happy-path: a local session is registered with the daemon's pid.

Playwright e2e (`resource-usage-warm-reattach.spec.ts`):
  Full quit→relaunch cycle against the same userDataDir; asserts that
  on the second launch the snapshot includes the warm-reattached PTY
  with a real pid before any pane mount, and that the seeded repo
  resolves as local (no connectionId). Mirrors the existing
  terminal-restart-persistence pattern.

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

* fix(test): satisfy Pick<Store, 'getRepos'> in hydrator vitest

CI typecheck failed because FakeStore's getRepos returned objects missing
Repo's required fields (path, displayName, badgeColor, addedAt). Fill with
placeholder values; the hydrator only reads id + connectionId, but the
type signature still has to line up.

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

* chore(resource-usage): drop bug-doc files; strip dead doc refs from comments

Remove docs/resource-usage-remote-mislabel.md (new in this PR) and revert
docs/resource-usage-merge-spec.md to the PR-base state. Strip the
matching `docs/...md §N` pointers from code/test comments, keeping the
surrounding "why" explanations intact so readers still get the
warm-reattach mislabel context.

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-10 17:17:52 -07:00