Commit Graph
305 Commits
Author SHA1 Message Date
Jinwoo HongandOrca 153fd863c6 Refresh GitHub issues after creation (#3018)
Implements the no-cache GitHub issue list refresh path described in docs/refresh-github-issues-after-create.md.

Co-authored-by: Orca <help@stably.ai>
2026-05-28 21:14:58 -04:00
Jinjing 47dffe5308 fix: address review findings (#3014) 2026-05-28 16:13:45 -07:00
Brennan BensonandOrca 4b32afeff2 Track feature interactions (#2959)
Co-authored-by: Orca <help@stably.ai>
2026-05-28 14:44:35 -07:00
Neil 286a92ff23 Add hidden admin restart action (#2970) 2026-05-27 22:12:10 -07:00
Brennan BensonandOrca 76ae675a01 Add nested repo group imports (#2866)
Co-authored-by: Orca <help@stably.ai>
2026-05-27 16:22:03 -07:00
Brennan BensonandOrca a15b13b02d Customize Source Control AI prompts (#2916)
Co-authored-by: Orca <help@stably.ai>
2026-05-27 16:03:36 -07:00
659fe79226 feat: add source control action to abort merge (#2092)
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-05-27 14:59:23 -07:00
Jinjing 5783c4192b Improve Linear issue editing flow (#2901)
* fix: address review findings

* fix: update Linear RPC test
2026-05-26 23:15:33 -07:00
Jinwoo HongandOrca c134b1c31d Fix hidden browser automation paintability (#2851)
Co-authored-by: Orca <help@stably.ai>
2026-05-26 16:27:23 -07:00
Neil e896dd3eb7 Recover hidden terminal output from main-owned state (#2848)
* fix: avoid renderer stalls on terminal backlogs

* Recover hidden terminal output from main state
2026-05-26 16:01:56 -07:00
Neil a6f9a5826e Add Command Code agent status tracking
Adds Command Code hook installation, status normalization, launch seeding, and terminal-output fallback detection for working/done sidebar status. Includes review hardening for long-running tool repaint cadence and prompt sanitization across split ANSI chunks.
2026-05-26 14:45:34 -07:00
Jinwoo HongandOrca 3a40c62169 Improve Computer Use permission setup (#2758)
Co-authored-by: Orca <help@stably.ai>
2026-05-25 14:54:47 -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
Jinjing 3f6940a746 fix: address review findings (#2703) 2026-05-23 13:11:08 -07:00
Brennan BensonandOrca 669ade2313 Update onboarding feature wall experience (#2652)
Co-authored-by: Orca <help@stably.ai>
2026-05-23 12:21:13 -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 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
Jinwoo HongandOrca 02a0aad987 Refresh ports when advertised URLs change (#2638)
Co-authored-by: Orca <help@stably.ai>
2026-05-22 12:17:21 -07:00
Neil 8c6d0c3239 Fix unified workspace options regression (#2619) 2026-05-22 01:12:58 -07:00
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 41a2d7ba90 Target source-control actions to publish branches (#2612) 2026-05-22 00:35:30 -07:00
Neil 81fcfea965 Add terminal shortcut routing policy (#2610) 2026-05-21 23:57:53 -07:00
Jinwoo HongandOrca b1973657ea Add mobile Tasks parity (#2452)
Co-authored-by: Orca <help@stably.ai>
2026-05-21 20:26:07 -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
Jinjing 79137885c0 Remove package manager cache cleanup (#2550) 2026-05-21 13:22:37 -07:00
Jinjing fca5f498db Keep PR refreshes anchored to cached review numbers (#2541)
- Use fallback PR numbers after branch lookup misses, including detached HEAD
- Preserve review cards for forked or deleted-head PRs across manual refreshes
- Clear stale GitHub PR cache entries when unlinking worktree review metadata
2026-05-21 12:12:10 -07:00
Brennan BensonandOrca a140313d4a Add local diagnostics error tracking (#2351)
Co-authored-by: Orca <help@stably.ai>
2026-05-21 11:15:01 -07:00
Pablo LozanoandNeil 7cf154592c Add GitLab Issues tab and workspace creation for issues/MRs (#2431)
* feat: add GitLab Issues tab and workspace creation for issues/MRs

- Extend TaskPage GitLab section with Issues | MRs tabs (outside card)
  plus a repo selector via RepoMultiCombobox, matching the GitHub UX.
- Add separate IPC paths: listIssues (with "Assigned to me" filter)
  and listMRs (with Open/Closed/Merged/All filters).
- Add "Start workspace" (→) button to every GitLab row and
  "Create workspace" action inside GitLabItemDialog for both issues
  and MRs.
- Extend CreateWorktreeArgs / worktree.create RPC to accept
  linkedGitLabMR and linkedGitLabIssue, and wire them through
  the runtime, IPC, preload, and renderer store slices.
- Fix self-hosted GitLab support by falling back to glab CLI
  (issue view / mr view / issue list / mr list) when the remote
  host is not in getGlabKnownHosts().
- Update useComposerState to initialise GitLab-linked context
  from initialLinkedWorkItem.

* Remove logs

* fix: address GitLab issues review findings

---------

Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-05-21 00:37:30 -07:00
Jinwoo HongandOrca 4a9facd5e8 Use home cwd for floating terminals (#2498)
Co-authored-by: Orca <help@stably.ai>
2026-05-21 02:49:16 -04:00
Jinjing e0104372da Squashed commits (#2485)
- Fix workspace space cache and git status cleanup checks

- Treat browser tabs as workspace delete blockers

- Move deletion readiness into shared presentation logic so tests cover it
- Preserve explicit empty git status entries for clean worktrees

- Add package manager cache cleanup to space manager

- Detect npm, pnpm, Yarn, and Bun caches from lockfiles during scans
- Add explicit cleanup IPC for safe and aggressive cache actions
- Support local, SSH, and Windows command execution paths safely
- Tighten workspace deletion decisions with git, editor, agent, and terminal state
2026-05-20 22:09:35 -07:00
JinjingandOrca aeaf0dece4 Create PRs from Source Control (#2478)
* Create PRs directly from Source Control

- Replace the modal flow with an inline PR composer in the sidebar
- Keep PR creation state and validation scoped per worktree
- Rename the recovery action to clarify it only pushes before creating PRs

* Clean up fork PR remotes after worktree deletion

- Track Orca-created push target remotes in worktree metadata
- Reuse ownership markers when later worktrees share the same fork remote
- Fetch only the selected PR base instead of every remote before drafting PRs
- Mirror local branch cleanup for SSH worktree deletion

* Stabilize pull request creation flow

- Keep PR actions and composer fields locked while generation or creation is in flight
- Refresh git status, branch comparison, and history after remote actions settle
- Disable push-only actions on diverged branches so users sync first

* Make PR context generation read-only

- Stop rebasing or probing HEAD before collecting PR draft context
- Allow git operations on known repo roots without refreshing worktree cache

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

* fix: address review findings

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-20 20:11:38 -07:00
Jinwoo HongandOrca c86cf8a308 Improve Floating Workspace notes (#2450)
Co-authored-by: Orca <help@stably.ai>
2026-05-20 17:20:16 -07:00
Brennan BensonandOrca cf3116bc4a Improve setup script discoverability (#2402)
Co-authored-by: Orca <help@stably.ai>
2026-05-20 17:15:29 -07:00
Jinwoo Hong 6abf031d66 Fix WSL terminal settings parity (#2446) 2026-05-20 17:33:07 -04:00
cbf2a52e5d feat: add notification sound volume slider (#2391)
* feat: add notification sound volume slider

Custom audio files vary widely in loudness; the new 0-100% slider in
Settings → Notifications lets the user lower an over-amplified sound
without re-encoding the file.

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

* fix: harden notification sound volume setting

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-05-19 21:02:44 -07:00
Neil 8afdbea256 Add Antigravity agent support (#2389) 2026-05-19 20:24:06 -07:00
Jinjing a4c4837a56 Fix terminal scroll restore behavior (#2368)
* Fix terminal scroll restore behavior

* Fix terminal pane global effects test args
2026-05-19 17:44:18 -07:00
Jinwoo HongandOrca fb4069be52 Improve GitHub PR status refresh freshness (#1716)
Co-authored-by: Orca <help@stably.ai>
2026-05-19 15:39:44 -07:00
Brennan BensonandOrca 7d71131bb4 Infer interrupted agent status from terminal input (#2263)
Co-authored-by: Orca <help@stably.ai>
2026-05-19 15:19:38 -07:00
Jinjing e97b109aac Focus terminal pane when notification is clicked (#2356)
* fix: address review findings

* increase highlight brightness
2026-05-19 15:09:39 -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
Jinjing 9bbfb04a09 fix: address review findings (#2339) 2026-05-19 13:03:47 -07:00
63b11f11a4 Add PR automation CLI and mobile browser streaming (#2328)
* Squashed commits

- WIP: uncommitted changes before rebase

- ci

- Show inline PR check details in task drawer

- Add a Checks tab that opens from the PR checks cell and expands runs inline
- Fetch check output, annotations, and workflow job steps through IPC/RPC
- Improve markdown/comment wrapping so long PR content stays within the drawer

* Use app-styled confirmations for PR actions (#2324)

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

* fix: pr-bug-scan validated finding from #2274 (#2296)

Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>

---------

Co-authored-by: Jinwoo Hong <73622457+Jinwoo-H@users.noreply.github.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: buf0-bot[bot] <252831055+buf0-bot[bot]@users.noreply.github.com>
Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
2026-05-19 11:36:24 -07:00
Jinwoo HongandOrca 062725da76 Add workspace port management (#2316)
Co-authored-by: Orca <help@stably.ai>
2026-05-19 10:23:40 -07:00
03b889512b feat: expand ai commit agent support (#1928)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-05-19 02:32:53 -07:00
Jinwoo HongandOrca 71a3bba90d Improve voice dictation startup reliability (#2267)
Co-authored-by: Orca <help@stably.ai>
2026-05-18 15:45:20 -07:00
Jinwoo HongandOrca c3bfc796af Fix SSH relay persistence and reset controls (#2274)
Co-authored-by: Orca <help@stably.ai>
2026-05-18 18:19:22 -04: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
Jinwoo HongandOrca 8b5b5a8e00 Add revocable runtime share access (#2236)
Co-authored-by: Orca <help@stably.ai>
2026-05-18 00:41:54 -07:00