Commit Graph
4521 Commits
Author SHA1 Message Date
Jinwoo HongandOrca f5efdd5945 Fix remote runtime terminal sharing with mobile (#4901)
Co-authored-by: Orca <help@stably.ai>
2026-06-08 14:26:07 -07:00
github-actions[bot] 90ac74d9b9 release: v1.4.52-rc.2 v1.4.52-rc.2 2026-06-08 21:15:28 +00:00
Neil 132e219b5d Restore auto GPU terminal rendering 2026-06-08 14:13:48 -07:00
JinjingandOrca 006a4ef3a5 Customizable Source Control AI action recipes with per-action agent and command templates (#4868)
* WIP: Changes before auto-review fixes

* Customize Source Control AI action recipes

- Add per-action CLI arguments for generation and launch flows so saved
  recipes can select model flags without putting prompts in argv.
- Share the text-generation dialog between commit messages and hosted-review
  details, with first-run defaults and repo/global recipe support.
- Launch fix-check agents directly from saved recipes and harden prompt/template
  handling for invalid args, blank prompts, and inherited variables.

* Allow custom commands for source control action recipes

- Let text action recipes save and resolve the custom-command sentinel
- Add settings UI for custom command recipes and preserve per-action defaults
- Split large source-control dialogs and direct launch helpers into focused modules
- Keep launch actions from treating custom text agents as runnable TUI agents

* Add per-repo Source Control AI enablement, custom command, and save-targ

- Repo overrides now support `enabled` and `customAgentCommand`, letting
  repositories opt in/out of Source Control AI independently and supply a
  repo-scoped custom command that takes precedence over the global one.
- Recipe-save dialogs gained a save-target selector ("Don't save / Save for
  this repo / Save as global default") replacing the old boolean checkbox,
  routing saves through the new `saveSourceControlActionRecipe` helper in
  `source-control-ai-recipe-save.ts`.
- `normalizeRepoSourceControlAiOverrides` now returns `undefined` for empty
  objects and passes the `null` sentinel through the IPC/RPC layer so the
  persistence layer can clear repo overrides cleanly.
- `resolveSourceControlLaunchPlatform` resolves the correct shell platform
  for SSH and WSL worktrees so agent launch commands are built correctly.
- Settings UI gained `RepositorySourceControlAiEnablement` and
  `RepositorySourceControlAiCustomCommand` rows; draft/label logic was
  extracted into focused modules to stay within lint line limits.

* Extract action recipe defaults into own component and use id-prefixed wo

- Move action recipe draft state and UI out of CommitMessageAiPane into SourceControlAiActionRecipeDefaults and source-control-ai-action-recipe-draft.ts to respect the max-lines lint rule
- Use toRuntimeWorktreeSelector() across all runtime git RPC calls so the runtime can resolve worktrees by ID rather than path
- Fix SSH launch platform resolution to use the repo's connection when the newly created worktree isn't hydrated yet
- Add edit and delete handlers for PR conversation comments with confirmation dialog
- Use text-status-success design token instead of hardcoded text-emerald-500

* add more search keyword

* Rename "Enable Source Control AI defaults" to "Show Source Control AI ac

* fix test

* Remove unused imports and variable assignment in launch-work-item-direct

* Fix test mocks to use `mocks.store` instead of `storeState.value` for di

* Extract Source Control AI logic into focused modules with fix-checks dia

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-08 14:08:35 -07:00
github-actions[bot] c16e7044aa release: v1.4.52-rc.1 v1.4.52-rc.1 2026-06-08 20:47:33 +00:00
Jinwoo HongandOrca b041ed4440 Pass Claude Agent Teams args through (#4897)
Co-authored-by: Orca <help@stably.ai>
2026-06-08 13:39:47 -07:00
Neil e5fe0f14d1 Use work item titles for create-from workspace names 2026-06-08 13:36:15 -07:00
Trevin ChowandNeil 5337e93cb4 feat: non-blocking worktree creation with in-tab progress (#4729)
* feat: non-blocking worktree creation with in-tab progress

The Create Worktree modal stayed open with a spinning button for the full
create IPC (base-ref git fetch + `git worktree add`, ~10-15s on heavy
repos) and only dismissed once it resolved, so the user stared at a frozen
modal with no way to work elsewhere.

Run creation in the background instead. On submit the modal closes
immediately and an in-tab "Creating worktree…" panel shows live setup
status, wiring the previously-unused `createWorktree:progress` main->renderer
event via a per-creation correlation id. A sidebar row tracks each
in-flight create, the user can navigate to other worktrees or cancel while
it runs, and on success it swaps to the real worktree + terminal in one
frame. Failure shows the error in the panel with retry; remote/runtime
targets (no progress events) show an indeterminate spinner.

Pending creations live in a separate store map rather than a faked Worktree
row, so git-status, the tab model, persistence, and PTY spawning are
untouched. Only the composer quick-create path changes; other createWorktree
callers keep their synchronous behavior.

* refactor: present in-flight worktree creates as inline tabs and rows

Rework the two surfaces that show an in-flight create so each reads like
the real thing it stands in for.

The in-tab panel is now a faux tab: a tab strip carrying the new
worktree's name (the title) over a quiet top-left status line, instead of
a centered card with a step checklist. An in-flight create reads as a real
workspace tab whose content is loading, the title and status never
duplicate each other, and the handoff to the terminal stays a same-frame
swap. Failure shows the error inline with retry.

In the sidebar, a pending create now renders as an inline row under its
target repo group — where the worktree will land — replacing the separate
strip that pinned every in-flight create to the top of the list.

* fix: keep pending worktree rows visible without repo metadata

---------

Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-06-08 13:30:13 -07:00
Brennan BensonandOrca 5424582b51 Suggest enabling local-main freshness when a new workspace finds it stale (#4888)
* Suggest enabling local-main freshness when a new workspace finds it stale

Adds a "Keep Local Main Up to Date" suggestion path: when the setting is
off and a new workspace's local base branch is behind its remote, Orca
surfaces a one-time, dismissible toast nudging the user to enable it. The
toast is sticky (no auto-expire) so it can't be missed, with explicit
Turn On / Dismiss actions; dismissing (button, close X, or swipe) persists
localBaseRefSuggestionDismissed so the nudge — and its backend probe —
never runs again.

Also refactors the refresh logic so the advisory and mutating paths share
one fast-forward-safety evaluator, adds an SSH relay RPC for the ref
mutation, and fixes remote-tracking base parsing for fully-qualified refs.

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

* fix: restore update-ref fast-forward for un-checked-out local base ref

The refactor that split refresh into evaluate + mutate dropped the
non-owner case: a local base branch checked out in no worktree was left
stale (return undefined) instead of fast-forwarded. Restore it across all
three layers — local evaluator/mutator, SSH evaluator, and relay handler
(which also removes the dead duplicated throw) — using the expected-old-OID
compare-and-swap form of update-ref so a concurrent ref move is a no-op.
The suggestion toast now also fires for this case.

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

* refactor: restore resultBase spread in local-base-ref mutators

The evaluate/mutate split spelled out { baseRef, localBranch, status }
literally in the mutating paths; main used a resultBase spread. Restore
that pattern in both the local and SSH mutators — behavior-preserving,
collapses two identical skipped_error returns.

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-08 13:19:45 -07:00
Jinwoo HongandOrca 7ea359bd60 Add Claude Agent Teams native pane launcher (#4892)
* Add Claude Agent Teams native pane launcher

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

* Fix Agent Teams CI coverage checks

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

* Fix Claude Agent Teams split direction mapping

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-08 16:11:32 -04:00
github-actions[bot] 9b819ce43f release: v1.4.52-rc.0 v1.4.52-rc.0 2026-06-08 20:07:15 +00:00
Jinjing 2bf1b9938c fix: refine floating terminal chrome (#4890)
* fix: refine floating terminal chrome

* fix: update tab indicator test mocks
2026-06-08 12:17:42 -07:00
Brennan BensonandOrca 32d53d552e Add empty-state usage CTA to status bar (#4854)
Co-authored-by: Orca <help@stably.ai>
2026-06-08 11:48:11 -07:00
Jinjing c10c2adcad fix: address review findings (#4891) 2026-06-08 11:45:13 -07:00
Brennan BensonandOrca 61cb7d692a Add a browser tour step for importing cookies to stay signed in (#4836)
Co-authored-by: Orca <help@stably.ai>
2026-06-08 11:44:49 -07:00
Neil 1856d6b585 Add terminal rendering golden e2e gate (#4878) 2026-06-08 11:21:50 -07:00
buf0-bot[bot]andorca-bug-scan-bot 6e970c8f94 fix: address pr-bug-scan validated finding from #4658 (#4741)
Gate the three unread-clear calls in onTerminalKeyDown so modifier-only/repeat/copy-chord keydowns no longer dismiss sibling-pane attention.

Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
2026-06-08 11:06:06 -07:00
Jinjing bcfd84d14c Make Smart New Tab launcher the default (remove experimental flag) (#4834) (#4889)
- Remove `experimentalUnifiedNewTabLauncher` flag and gate; the unified
  launcher is now always enabled
- Drop the settings toggle from ExperimentalPane and search index
- Update placeholder/aria text to "Open any file, URL, agent, ..."
- Restyle the input: borderless, flush with dropdown edge, no search icon
- Update test fixtures to include agent-detection state fields now
  unconditionally read by TabBarCreateEntry
2026-06-08 11:05:58 -07:00
Brennan BensonandOrca f70a4448ff Reorder Linear tab right after GitHub in Cmd+N composer (#4887)
Co-authored-by: Orca <help@stably.ai>
2026-06-08 10:58:52 -07:00
Jinjing 8526f02c77 Inline conflict count with snapshot timestamp in review panel (#4886) 2026-06-08 10:31:34 -07:00
Neil 3153356d87 Fix terminal table rendering after workspace restore (#4877)
* Stabilize terminal cursor rendering and typing checks

* Fix terminal table rendering after workspace restore

* Fix terminal table width underfit

* Tighten terminal renderer stabilization
2026-06-08 03:25:55 -07:00
github-actions[bot] c4dcd88440 release: v1.4.51 v1.4.51 2026-06-08 10:07:12 +00:00
Lesley Murfin 58b5472477 fix(packaging): include @parcel/watcher native addon in packaged runtime
Fix packaged runtime inclusion for @parcel/watcher and its platform native subpackages. Adds pruning/tests for packaged resources and a real watcher integration regression test.
2026-06-08 02:13:21 -07:00
github-actions[bot] d44962d295 release: v1.4.51-rc.10 v1.4.51-rc.10 2026-06-08 08:22:39 +00:00
Jinjing fb3567be48 fix: address review findings (#4874) 2026-06-08 01:10:54 -07:00
Jinjing f9a681fce7 Constrain create-workspace dialog height for long orca.yaml scripts (#4873)
- Limit command preview blocks to 12rem (max-h-48) with scroll
- Cap dialog body to viewport height minus 2rem
- Add sr-only accessible description to the dialog
2026-06-08 01:10:29 -07:00
Jinjing 009498f052 Add collapse and expand controls to markdown table of contents panel (#4875)
- Introduces per-heading disclosure toggles for nesting control
- Adds H1/H2/H3 level collapse buttons to quickly reduce heading depth
- Removes stale collapsed IDs when the TOC changes
2026-06-08 01:10:17 -07:00
Jinjing a1f693b3ff feat: improve orchestration settings pane with skill coverage and usage examples (#4869)
* feat: improve orchestration settings pane with skill coverage and usage

- Add per-agent skill coverage panel showing which detected agents have the orchestration skill installed, with Ready/Missing status chips
- Add five usage example cards (handoff, worktree handoff, phased workflow, parallel, worktree PRs) with copy-prompt dialogs
- Add "Copy install command" link that opens a dialog for users who prefer their own terminal
- Expose `skills` array from `useInstalledAgentSkill` so callers can inspect discovered paths
- Rename install button to "Update" when skill is already installed
- Add dev-only preview flags for testing the uninstalled and CLI-ready states

* feat: remove dev-only CLI preview scaffolding from OrchestrationPane

Dead code cleanup — the dev-preview flag helpers and mock CliInstallStatus
factories were never shipped to users and added noise around the real
skill-detection path. Props now flow directly from useInstalledAgentSkill
without the preview indirection layer.
2026-06-08 01:05:04 -07:00
Jinjing 27b2d1bc3e Remove auto-rename-branch hint from workspace composer (#4872)
- Deletes AutoRenameBranchHint component and its associated UI
- Removes the gear affordance, popover, toggle, and inline "Auto-named if left blank" indicator
- Simplifies the workspace name label area for git repos
2026-06-08 01:02:25 -07:00
Neil f15dcd928c Stabilize OpenCode terminal rendering before release (#4850) 2026-06-08 01:00:29 -07:00
github-actions[bot] 9867305465 release: v1.4.51-rc.9 v1.4.51-rc.9 2026-06-08 07:56:34 +00:00
Jinjing dab79cec86 Move TOC panel to left side and unify toolbar chrome row height (#4871)
* Move table of contents panel to the left side of the editor

* Compact toolbar height when TOC panel is visible

Align both the TOC header and markdown toolbar to a consistent 40px
height with a shared bottom border when the TOC panel is open, removing
redundant borders and reducing visual clutter.

* Unify RME toolbar and TOC header chrome row styling

- Merge toolbar and TOC header into a shared 40px chrome row with
  consistent padding, inset-shadow divider, and background
- Replace border-bottom with inset box-shadow for aligned dividers
  when TOC panel is visible
2026-06-08 00:40:49 -07:00
Jinjing 9bbf1bc62d Add Force Push as an explicit source-control action with dedicated dropd (#4870) 2026-06-08 00:38:12 -07:00
JinjingandOrca cbf5534803 Extract list chrome visibility into provider-aware selector (#4867)
* Hide list chrome in all detail/drill-down views, not only GitHub

The previous check only hid the list filter row for GitHub dialog
items. Extend it to cover GitLab, Jira, and Linear detail views so
vertical space isn't wasted by redundant breadcrumb chrome.

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

* Extract list chrome visibility into provider-aware selector

Fixes list chrome being hidden when a stale detail state from another
provider survives a source switch. Only the active task source's detail
context now controls visibility.

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-08 00:26:28 -07:00
Jinwoo HongandOrca 1b363b4d9c Add mobile emulator (#4754)
Co-authored-by: Orca <help@stably.ai>
2026-06-08 00:08:57 -07:00
Jinjing e9f1d644f8 Add browser import hint button to the browser toolbar (#4866)
* Add browser import hint button to the browser toolbar

- Adds a dismissible "Import" button in the browser address bar that opens a popover with browser detection and one-click cookie import
- Persists the hint's dismissed state via `browserImportHintHidden` in `PersistedUIState` so the hint stays hidden after the user clicks "Hide Hint"
- Extracts platform-aware import source labels into `browser-cookie-import-sources.ts` and hint visibility logic into `browser-import-hint-visibility.ts` for isolated testing

* fix the onblur for the import popover
2026-06-07 23:02:43 -07:00
Jinjing 263c4f9bd2 fix: address review findings (#4865) 2026-06-07 22:17:52 -07:00
Brennan BensonandOrca 0397afae63 Show project name in setup-script prompt card across all variants (#4864)
Co-authored-by: Orca <help@stably.ai>
2026-06-07 21:53:04 -07:00
Jinwoo HongandOrca bb21366a14 Fix managed Codex account switching on shared CODEX_HOME (#4862)
Co-authored-by: Orca <help@stably.ai>
2026-06-07 21:20:08 -07:00
Jinwoo HongandOrca cacd48da72 Fix browser webview permissions and wheel zoom (#4849)
Co-authored-by: Orca <help@stably.ai>
2026-06-07 21:18:47 -07:00
Brennan BensonandOrca 2756d6f28f Add command palette feature tip (#4718)
Co-authored-by: Orca <help@stably.ai>
2026-06-07 21:07:36 -07:00
Jinwoo HongandOrca bed394ca11 Send OpenCode source-control prompts over stdin (#4859)
Co-authored-by: Orca <help@stably.ai>
2026-06-07 21:00:20 -07:00
Jinjing 4a3db11e16 feat: show persistent underline on PR link buttons in review headers (#4861) 2026-06-07 20:51:04 -07:00
Jinjing 468244d6dc Improve markdown review card sizing, quoting, and note grouping (#4856)
* Improve markdown review card sizing, quoting, and note grouping

- Narrow the annotation rail and editor padding to reduce visual weight
- Replace webkit line-clamp quote truncation with single-line nowrap; shorten MAX_CARD_QUOTE_LENGTH to 60
- Remove FileText icon from the quote block
- Tone down active card border/background highlight opacity
- Always reserve quote height in stacked layout (cards show a fallback excerpt even without selected text)
- Group multiple markdown review notes per file under a single header in the formatted prompt

* fix test
2026-06-07 20:40:49 -07:00
Jinwoo HongandOrca 880fd964ac Fix issue workspace names with apostrophes (#4848)
Co-authored-by: Orca <help@stably.ai>
2026-06-07 19:57:52 -07:00
Jinwoo HongandOrca bed624573d Fix orchestration waits waking on heartbeats (#4858)
Co-authored-by: Orca <help@stably.ai>
2026-06-07 19:57:21 -07:00
KayleeandNeil 528a887ab5 Target the fork branch from fork-PR worktrees (#4394)
Creating a worktree from a cross-repository (fork) PR previously named the
local branch with the maintainer's branch prefix (e.g. `me/866`) and pushed to
origin instead of the contributor's fork, so maintainer edits never reached the
PR. Fork PRs now adopt the contributor's branch name (matching same-repo PRs)
and resolve a fork push target, with a non-blocking warning when the PR
disables maintainer edits and an indicator showing where a push will land.

- pr-start-point: return branchNameOverride/headSha/maintainerCanModify for
  cross-repo PRs (previously only same-repo PRs received these)
- github client: surface maintainer_can_modify alongside the fork push target
- composer: warn (but still allow) when "Allow edits from maintainers" is off
- source control: show the fork push target (owner:branch) before pushing
- extract fork-remote cleanup and setup into dedicated, unit-tested modules

Adds unit suites for the cleanup multi-fork matrix, fork-remote setup,
push-target resolution, the warning decision, and the push-target label.

Note: pre-commit react-doctor hook bypassed — its warnings in useComposerState
are pre-existing (identical count on base) and not enforced by CI.

Co-authored-by: Neil <4138956+nwparker@users.noreply.github.com>
2026-06-07 19:51:36 -07:00
Jinjing a67afb5a04 fix: address review findings (#4853) 2026-06-07 19:50:05 -07:00
Jinjing 93f9f86823 Slim terminal scrollbar with xterm option and rounded thumb (#4857)
Set xterm scrollbar width to 7px for a slimmer scrollbar, round the DOM thumb via CSS, and add default slider colors with better contrast. Hide the overview ruler border that enabling the scrollbar width activates.
2026-06-07 19:48:16 -07:00
Jinwoo HongandOrca 3ef63c972a Persist agent session metadata for workspace resume (#4706)
Co-authored-by: Orca <help@stably.ai>
2026-06-07 19:41:25 -07:00