Commit Graph
5494 Commits
Author SHA1 Message Date
Jinjing cee5775f41 Fix create PR visibility when upstream status is unknown 2026-06-27 02:40:29 -07:00
Jinjing 464c4562f9 Prevent review lookup failures from blocking PR preparation
Catch errors during hosted review lookup if local blockers are present.
This ensures that network or API failures do not completely hide the
Create PR preparation UI if we can still guide the user to resolve local
issues first.
2026-06-27 02:10:12 -07:00
Jinjing 0cd46ad21e Dim and transition the Create More label on hover (#6479)
Change the "Create more" switch label to use muted foreground by default
and transition to foreground on group hover.
2026-06-27 00:39:44 -07:00
78519d8dce fix: pr-bug-scan validated finding from #6315 (#6471)
* fix: address pr-bug-scan validated finding from #6315

Protect fenced/inline code spans from the HTML stripTags pass in normalizeMobileMarkdownPreviewHtml; blocks stripTags(next) at mobile-markdown-preview-html.ts:95 from deleting <...> inside code.

* Preserve non-tag angle brackets in markdown preview HTML parser

Only strip standard/known HTML tags instead of matching any `<...>`
pattern. This prevents false-positive stripping of generic types
(e.g., `Array<string>`) or math comparisons (e.g., `1 < 2`) in prose.

Additionally, robustify markdown code block preservation by using a
Private Use Area prefix (`\uE000`) and dynamically padding it to avoid
collisions with literal input content.

* Protect code spans when stripping HTML tags in mobile preview

Ensure HTML-like content within code spans is not erroneously removed
by the tag stripping logic. We now protect markdown code blocks and
restore them after stripping tags and decoding HTML entities.

---------

Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
2026-06-26 23:57:17 -07:00
360ce673e7 Fix wobbling session-history loading spinner (#6464)
The "Scanning sessions" loader sat in a `flex items-center gap-2` row
next to a plain text span with no flex-1/min-w-0 sibling to absorb
slack. Both items default to flex-shrink: 1, so the SVG could be
compressed below its 14px width while keeping 14px height — a
non-square box shifts the rotation pivot off center, making the icon
drift instead of spinning in place.

Add `shrink-0`, matching every other text-adjacent spinner in the app.

Co-authored-by: Neil <neil@stably.ai>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 20:19:42 -07:00
Brennan BensonandOrca bf4ed350ae Materialize mobile-only pending session terminals (#6465)
Co-authored-by: Orca <help@stably.ai>
2026-06-26 20:16:52 -07:00
1f968b92c9 Fix browser pane stuck in HTML fullscreen (#6442) (#6451)
* Fix browser pane stuck in HTML fullscreen (#6442)

Guest content in a browser pane could enter HTML fullscreen but not
exit it: requestFullscreen() resized the host BrowserWindow into native
fullscreen, and exitFullscreen() had nothing to restore, leaving the
pane stuck.

Set the webview's disableHtmlFullscreenWindowResize preference so HTML
fullscreen is contained to the <webview> element. Exit then works and
fullscreenchange fires as guests expect.

* Apply browser guest fullscreen policy consistently

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

---------

Co-authored-by: Wolfgang Schoenberger <221313372+wolfiesch@users.noreply.github.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-26 20:05:47 -07:00
66b54c4f49 fix(pet): shrink overlay drag area to hug the pet content (#6437)
* fix(pet): shrink overlay drag area to hug the pet content

The pet overlay's `pointer-events-auto` handle used `size-full`, so the
entire `size × size` box (default 180px) was draggable even where the pet
was transparent. Non-square pets left a large dead-zone: the bundled
Claudino (320×180) renders 180×101 in the box, leaving a ~79px empty but
draggable band; OpenCode/Gremlin (252×320) render 142×180, leaving ~38px
on the left.

Restructure the overlay into three layers: the outer box and a new
centering layer stay `pointer-events-none`; only an innermost
`w-fit`/`h-fit` wrapper opts back into pointer events and carries the drag
handlers, cursor, bob animation, and `touch-action`. A `min-w`/`min-h`
floor keeps it grabbable during the image-load window when the wrapper
would otherwise collapse to 0×0.

Also size the `DetectedSpriteFrame` canvas to one fixed footprint bounding
the largest scaled frame (instead of the full box) so detected sprites
tighten too, with frames re-centered within that footprint.

Drag math, viewport clamping, and persisted position are unchanged — they
remain keyed to the outer box, so dragging, edge-clamping, and saved
positions behave exactly as before.

* fix(pet): cap the img fallback at the pet size

The w-fit/h-fit drag wrapper is fit-content, so the img's max-w/h-full had
no fixed box to resolve against and rendered at intrinsic size, overflowing
the persisted size box that clamping still assumes. Cap explicitly with
maxWidth/maxHeight: size. Addresses CodeRabbit review on #6437.

* test(pet): cover overlay hit area render branches

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-26 19:55:02 -07:00
Brennan BensonandOrca 5fd9f0c62c Prevent mobile worktree selection from focusing desktop (#6461)
Co-authored-by: Orca <help@stably.ai>
2026-06-26 19:34:33 -07:00
github-actions[bot] ba88e27cdc release: v1.4.103-rc.1 v1.4.103-rc.1 2026-06-27 01:55:20 +00:00
Brennan Benson d03e99c89a Show accurate PR status for local worktrees (#6460) 2026-06-26 18:51:51 -07:00
github-actions[bot] b899aef1f9 release: v1.4.103-rc.0 v1.4.103-rc.0 2026-06-27 00:55:18 +00:00
Brennan BensonandOrca d18cdc693f Reset agent sleep after terminal visits (#6450)
Co-authored-by: Orca <help@stably.ai>
2026-06-26 17:41:12 -07:00
Brennan BensonandOrca e1f93238d1 Align mobile review actions with desktop (#6444)
Co-authored-by: Orca <help@stably.ai>
2026-06-26 17:35:32 -07:00
Brennan Benson 8c81c30f6a Keep merged PRs visible after refreshes (#6456) 2026-06-26 17:15:14 -07:00
github-actions[bot] e2bf3e4466 release: v1.4.102 v1.4.102 2026-06-27 00:12:32 +00:00
Jinjing e6dc4d4d52 Update Android APK README link
Show the verified mobile-android-v0.0.16 APK version in the README download links.
2026-06-26 17:06:36 -07:00
Brennan Benson 5578ffe318 Show the correct agent icon for terminal helpers (#6455) 2026-06-26 15:51:50 -07:00
github-actions[bot] c6bd599ce1 release: v1.4.102-rc.1 v1.4.102-rc.1 2026-06-26 22:07:50 +00:00
Brennan Benson 949b30ea1f Prevent stale terminal redraw fragments (#6449) 2026-06-26 15:03:41 -07:00
Brennan Benson ccb09db440 Keep interrupted Claude turns from appearing active (#6452) 2026-06-26 15:01:55 -07:00
Brennan BensonandNeil 85d626b998 Fix fork PR detection for same-name upstreams (#6446)
Co-authored-by: Neil <neil@stably.ai>
2026-06-26 14:49:19 -07:00
Brennan Benson cdda9fd16d Restore automatic usage tracking for default accounts (#6240) 2026-06-26 14:37:16 -07:00
Jinwoo HongandOrca 4904ffda9a Fix Remote Host downloads and agent status parity (#6436)
* Fix remote host downloads and agent status parity

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

* Address remote download review comments

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

* Avoid inefficient SSH chunk fallback

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-26 14:28:16 -07:00
Brennan Benson d5b1ca7fcd Keep restored terminal panes typeable after sleep (#6447) 2026-06-26 14:12:32 -07:00
Jinwoo Hong 59def7474a Revert Windows terminal clear repaint fix
Manual Windows testing still reproduces displaced input after Ctrl+K.
2026-06-26 14:05:09 -07:00
Jinwoo Hong daab519c5c Fix Windows terminal clear repaint (#6382) 2026-06-26 16:59:00 -04:00
Brennan BensonandNeil d188e7d2f6 Recover Windows worktree deletes from long paths (#6433)
Co-authored-by: Neil <neil@stably.ai>
2026-06-26 13:28:10 -07:00
Brennan BensonandOrca 4a98b11e77 Import linked worktrees under one project (#6441)
Co-authored-by: Orca <help@stably.ai>
2026-06-26 13:26:58 -07:00
Brennan Benson 996ab4a224 Preserve terminal output after hidden recovery fallback (#6435) 2026-06-26 12:39:28 -07:00
Jinwoo HongandOrca a3ce2692dd Disambiguate sidebar project setup groups (#6430)
Co-authored-by: Orca <help@stably.ai>
2026-06-26 12:24:27 -07:00
Neil 0f26a1bb5e Fix p10k wizard blocking terminal startup 2026-06-26 12:22:42 -07:00
Brennan BensonandOrca 55c0c74951 Fix mobile file previews (#6315)
Co-authored-by: Orca <help@stably.ai>
2026-06-26 12:10:58 -07:00
Brennan Benson af52e418ea Keep sleeping agent panes resumable in place (#6411) 2026-06-26 12:10:08 -07:00
Brennan BensonandNeil 1293ed0f78 Reduce push target upstream polling churn (#6413)
* Reduce push target upstream polling churn

* Fix push target upstream cache recovery

---------

Co-authored-by: Neil <neil@stably.ai>
2026-06-26 11:45:12 -07:00
github-actions[bot] 14a742eeed release: v1.4.102-rc.0 v1.4.102-rc.0 2026-06-26 10:48:51 +00:00
Jinjing 479cbee98b Avoid IME punctuation listeners off macOS (#6421) 2026-06-26 03:46:48 -07:00
lvfenandJinjing 3cd7193446 Fix macOS Chinese IME full-width punctuation and window-switch input (#6417)
* Fix macOS Chinese IME full-width punctuation and window-switch input

Two macOS IME regressions in the terminal:

- Full-width punctuation (,。?!) was sent as half-width ASCII. With
  kitty keyboard on, xterm encodes+sends the ASCII symbol on keydown and
  preventDefaults it, dropping the IME's committed glyph from the input
  event. Bypass those punctuation keydowns/keypress/keyup so the native
  input pipeline runs, then forward the committed glyph to the PTY.

- After switching windows, the IME stayed stuck in ASCII with no way back
  to CJK. macOS+Chromium leaves a stale NSTextInputContext on the still
  focused helper textarea after reactivation (electron#32307/#34952).
  Force a blur -> next-frame refocus on window focus to rebuild it.

Both paths are macOS-scoped where relevant and covered by unit tests.

* Tighten macOS IME punctuation handling

---------

Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
2026-06-26 03:43:39 -07:00
github-actions[bot] 7f82ecdb75 Update README downloads badge 2026-06-26 10:23:33 +00:00
github-actions[bot] cdb45d1af8 release: v1.4.101 v1.4.101 2026-06-26 09:33:43 +00:00
Neil fa00464df9 Fix noisy Grok tool notifications (#6306) 2026-06-26 02:19:25 -07:00
19ab395a26 fix(browser): keep webview guests alive across worktree switches (#6408)
* fix(browser): keep webview guests alive across worktree switches

Electron <webview> guests are destroyed when their DOM parent is removed.
When switching worktrees, BrowserPane chrome unmounts and previously tore
down the webview, forcing a reload on return.

Introduce persistent page viewports inside overlay slots so webviews stay
in a stable parent without keeping the full React chrome mounted. On
worktree switch, park hidden viewports instead of destroying guests;
explicit close paths still call destroyPersistentWebview.

Fixes stablyai/orca#6385

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(browser): harden persistent webview viewports

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
2026-06-26 00:55:09 -07:00
github-actions[bot] 74a012c27d release: v1.4.100 v1.4.100 2026-06-26 06:10:56 +00:00
github-actions[bot] dad24f67cd release: v1.4.98-rc.10 v1.4.98-rc.10 2026-06-26 05:44:30 +00:00
Brennan BensonandNeil b6ac7b9c92 Harden Windows hook command resolution (#6409)
* Keep spaced Windows Codex hook paths fast

* Harden Windows hook command resolution

---------

Co-authored-by: Neil <neil@stably.ai>
2026-06-25 22:43:25 -07:00
Jinjing dd0fa77882 Enhance PR auto-merge controls and switch to GraphQL mutation (#6405)
- Centralize and align auto-merge eligibility logic across web and
  mobile clients.
- Use the `enablePullRequestAutoMerge` GraphQL mutation instead of
  `gh pr merge --auto` to prevent immediate merges on clean branches.
- Fall back to `gh pr merge --auto` when a merge queue is required on
  the base branch.
- Hide the auto-merge control when only optional checks are pending.
2026-06-25 22:00:34 -07:00
github-actions[bot] ec8799562c release: v1.4.98-rc.9 v1.4.98-rc.9 2026-06-26 05:00:18 +00:00
Brennan BensonandNeil 6a23099594 Fix Windows agent hook regressions (#6407)
Co-authored-by: Neil <neil@stably.ai>
2026-06-25 21:59:19 -07:00
Jinjing 32c0b47afe Restrict AI Vault resume actions to local execution hosts (#6406)
Previously, the AI Vault only blocked resume actions for workspaces with
an active SSH connection (checking `connectionId`). This allowed resume
actions to run on runtime-owned workspaces, which are non-local but do
not use SSH.

To resolve this:
- Introduce `getAiVaultResumeWorkspaceTargetStatus` to classify targets
  based on both `connectionId` and `executionHostId`.
- Restrict AI Vault panel actions, session resume checks, and drop layers
  to local workspaces.
- Preserve the `executionHostId` on project groups during normalization to
  ensure runtime-owned groups retain their execution host status across
  persistence reloads.
2026-06-25 21:58:08 -07:00
Jinjing 1f85822b34 Prevent background worktree creation from stealing focus (#6403)
Avoid forcing the active view back to the creation panel when background
worktree preflight completes after the user has already navigated away.

- Add a `revealCreationSurface` option to `continueBackgroundWorktreeCreation` to skip switching views.
- Check both `activeView` and `activePendingCreationId` to determine if the creation UI is actually visible.
- Use this option when kicking off background creation for GitHub work items.
2026-06-25 21:45:54 -07:00