Commit Graph

1532 Commits

Author SHA1 Message Date
Jinwoo Hong 6837cca9f3
Fix Tasks PR detail drawer and GitHub attachment videos (#5288)
Co-authored-by: Orca <help@stably.ai>
2026-06-12 16:02:09 -07:00
Brennan Benson 5f0a4fc5f3
Add left sidebar appearance setting (#5280)
Co-authored-by: Orca <help@stably.ai>
2026-06-12 15:00:28 -07:00
Brennan Benson abb2477efb
Fix tab agent identity detection (#5283)
Co-authored-by: Orca <help@stably.ai>
2026-06-12 14:15:27 -07:00
Jinwoo Hong 5f3b61aa65
Fix WSL agent setup to use the distro login shell (#5285) 2026-06-12 17:01:34 -04:00
Jinwoo Hong ebeb12fedc
fix: distinguish remote project paths by SSH connection (#5279)
Co-authored-by: Orca <help@stably.ai>
2026-06-12 13:40:51 -07:00
Brennan Benson 74c961b09f
Add Linear write commands for agents (#5165)
Co-authored-by: Orca <help@stably.ai>
2026-06-12 13:29:13 -07:00
Jinjing d2a3f12baa
fix: address review findings (#5275) 2026-06-12 11:43:39 -07:00
Lesley Murfin 0021d95796
fix(serve): persist active serve session tab so PTY output doesn't snap focus to the last tab (#5131)
* fix(serve): persist active mobile-session tab so PTY output doesn't snap focus

In `orca serve` (headless host + remote/web client), running a command in a
terminal snapped the active tab back to the last-created tab. The renderer
reconcile forces the client's active tab to the host's reported active
(activeTabId / activeTabType / per-tab isActive), but `activateMobileSessionTab`
only called `focusTerminal` — a no-op for serve tabs no renderer has adopted —
and never persisted the chosen tab into the host's in-memory snapshot. So every
`onPtyData` -> `touchMobileSessionSnapshotsForPty` republish re-emitted the stale
"active = last tab" and the client snapped back on each command.

Persist the activation into the headless snapshot (activeTabId, activeTabType,
exclusive per-tab isActive, rebuilt tabGroups) after the focus dispatch, gated on
`!getAvailableAuthoritativeWindow() && isHeadlessMobileSessionPublication(...)` —
the same guard the hydrate path uses, so renderer-owned snapshots (including
`:headless-merge:`) stay authoritative. No-op when the tab is already active;
adds nothing to the `onPtyData` hot path.

Adds 3 regression tests covering: chosen tab survives a PTY republish, no version
bump on redundant activation, and no server-side persist when a renderer is
authoritative.

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

* fix(serve): exclude :headless-merge: snapshots from headless active-tab persist

After a renderer detaches there is no authoritative window, so the
!getAvailableAuthoritativeWindow() guard alone let merged (:headless-merge:)
snapshots through this path. A merged snapshot still carries renderer-owned
tabs/groups, so a server-side active-tab rewrite could collapse that mixed
group state. Exclude merged epochs from the persist gate; only pure
`headless:` / `headless-hydrated:` publications are persisted server-side.

Adds a regression test: renderer-detach + `:headless-merge:` snapshot ->
the headless persist is suppressed (no snapshot mutation / event).

Addresses the CodeRabbit review on #5131.

* review: clarify headless active-tab persistence guard

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

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-12 10:47:55 -07:00
Brennan Benson d93de0935f
Add effectiveness telemetry for in-app GitHub stars (#5245)
Co-authored-by: Orca <help@stably.ai>
2026-06-12 10:14:49 -07:00
Neil f31c40cb18
Add Grok sessions to AI Vault (#5258) 2026-06-12 01:38:56 -07:00
Jinjing 4d0c449378
Support project reordering with groups and add manual-default notice (#5237)
* Support project reordering with groups and add manual-default notice

Refactors the project header drag-and-drop implementation to work correctly
with project groups by tracking ordering within buckets and updating project
group assignments on drop. Also introduces a dismissible sidebar education
card notifying upgraded profiles that manual project ordering is now the default.

* Split oversized translated UI modules

* Fix localized option test regressions
2026-06-11 20:39:39 -07:00
Jinjing f72c22532a
Support GitLab MR unlinking and AI generation in ChecksPanel (#5204)
* feat: support GitLab MR unlinking and AI generation in ChecksPanel

Integrate GitLab merge request actions alongside GitHub pull requests in
the sidebar checks panel. This includes unlinking GitLab MRs, enabling
AI-driven title and body generation for GitLab, and dynamically adapting
menu labels (e.g. "More MR actions" vs "More PR actions") depending on
the active provider.

* fix: handle null base ref in hosted review creation and add tests

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

* Extract sub-components and hooks from renderer components

To improve component focus and maintainability, extract large inline
sub-components, custom hooks, and logic helpers into dedicated files:

- Extract `HeroPaired` from `MobileHero` to `MobileHeroPairedDevices`.
- Move `ChromePreview` from `ThemeStep` to `theme-chrome-preview`.
- Refactor `HostedReviewActions` to use `useHostedReviewActions` hook.
- Move MCP config loading from `McpConfigSection` to helper file.

* Refactor usage panes to extract shared formatters and tables

Extract duplicated formatting utilities to a shared helper module. Move
the large, inline recent sessions tables into dedicated sub-components to
reduce duplication and simplify the parent pane components.

* Support self-hosted GitLab instances for MR creation eligibility

* Extract and check the remote host against `glab auth status` to
  dynamically recognize and authenticate self-hosted GitLab instances
  without requiring them to be in a hardcoded list.
* Refactor stats usage panes by extracting reusable breakdown sections
  and sessions tables to eliminate duplication.
* Suggest Linear prompts only if the launcher can resolve the CLI.

* Extract GitLab project ref tests and update usage stats translations

- Move GitLab project ref parsing tests into a dedicated test file to
  keep modules focused and add tests for candidate parsing.
- Add missing translations for the usage sessions table and breakdown
  section across multiple locales.

* Optimize GitLab ref parsing, deduplicate formatters, and add locales

- Clean up GitLab ref parsing by extracting normalized known hosts.
- Fix an escaped newline sequence in the self-hosted GitLab mock test.
- Deduplicate stats helper functions into a single shared file.
- Translate path status message strings across ES, JA, KO, and ZH.

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-11 20:18:28 -07:00
Jinwoo Hong 4df412f18e
Keep restored terminals on daemon PTYs when startup is slow (#5234)
The 12s first-window timeout used to abort daemon init and open the PTY
spawn gate, so a slow (but succeeding) daemon start flipped restored
panes onto LocalPtyProvider fallback terminals. Those are killed on app
quit and their numeric ids overwrite the persisted daemon session ids,
permanently orphaning the live daemon sessions (#5232, Bug 1).

The window still fails open at 12s, but the PTY gate now waits for the
service attempts themselves and only fails open (aborting the services)
at a 60s deadlock backstop. Failure fallback is unchanged: a daemon init
that errors still resolves the gate onto the local provider.

Co-authored-by: Orca <help@stably.ai>
2026-06-11 20:17:15 -07:00
Jinjing 36e439907a
Implement GitHub issue close reasons and tabbed comment composer (#5235)
- Support closing GitHub issues with specific reasons ('completed', 'not planned', or duplicate) via main-process mutations and gh CLI wrappers.
- Replace the legacy comment composer with a tabbed layout supporting a real-time markdown preview, image/attachment inputs, and state transition buttons.
- Refactor assignee and label popovers into dedicated reusable components to clean up the item dialog.
2026-06-11 19:49:41 -07:00
Jinwoo Hong 0b19195fd9
Remove startup PTY spawn health probe and guard daemon replacement with live-session check (#5230)
Co-authored-by: Orca <help@stably.ai>
2026-06-11 19:00:44 -07:00
Jinjing 1f6bfe0503
Improve error messaging for git submodule push failures (#5226)
Detect when git push operations fail due to un-pushed or out-of-sync
submodules, and extract the specific submodule name to provide clear,
actionable guidance to the user.

Additionally, update the Source Control error UI to allow better text
wrapping and word-breaking for detailed error alerts.
2026-06-11 17:32:49 -07:00
Jinwoo Hong e2b2bede91
Fix speech model downloads behind proxies (#5210)
Co-authored-by: Orca <help@stably.ai>
2026-06-11 15:23:35 -07:00
Jinwoo Hong bf41b13cb6
Allow Claude account switches with unverified live auth (#5217) 2026-06-11 14:28:29 -07:00
Brennan Benson 5d6254d769
Clarify nested import group copy (#5202) 2026-06-11 11:22:00 -07:00
Brennan Benson 91e354ccb1
Add multi-repo folder workspaces (v1) (#5172)
Co-authored-by: Orca <help@stably.ai>
2026-06-11 02:34:01 -07:00
Jinjing ba0d2fec16
Combine file search and file explorer right sidebar tabs (#5182)
Unifies file discovery and tree navigation under a single Explorer domain, simplifying the right sidebar activity bar and reducing tab clutter.

* Replaces the standalone 'search' activity bar tab with a nested 'search' subview inside the File Explorer tab
* Introduces 'rightSidebarExplorerView' ('files' | 'search') state to manage the active subview inside the Explorer
* Adds a search button to the File Explorer toolbar and a back button to the search subview for seamless transition
* Exposes 'showRightSidebarFiles' and 'showRightSidebarSearch' store actions to route and seed search queries/include patterns
* Adapts file explorer keybindings, git status polling, and external workspace watchers to respect the active subview
* Maps legacy persisted search tab state to the new explorer search view for backward compatibility
2026-06-11 02:13:16 -07:00
Neil 260d2263d0
fix: remove unsupported agent launch defaults (#5185) 2026-06-11 01:50:18 -07:00
Jinjing a6e7b32e39
Improve source control action dialog layout and recipe saving UX (#5153)
* Improve source control agent action dialog layout and recipe UX

- Constrain dialog and scroll area heights to prevent viewport overflow.
- Add variable chips to easily insert the base prompt with tooltip previews.
- Keep the recipe save controls visible when a recipe is already saved, showing informational status text instead of hiding them.
- Update localized copy across multiple languages and reduce textarea rows.
- Add unit tests for the variable chip preview and save target visibility.

* Fix recipe-saved check in source control action dialog

* Evaluate only the selected save target instead of checking all available targets, as the action only writes to the selected target.
* Update daemon PTY adapter test fake PID to prevent collision with real host OS processes during runtime directory lookups.
2026-06-11 01:46:41 -07:00
Brennan Benson 1ae8ebdc3f
Fix Claude agents management status detection (#5179)
Co-authored-by: Orca <help@stably.ai>
2026-06-11 01:43:38 -07:00
Jinjing ac216d5727
Route task PR queries by upstream source (#5176)
* Route task PR queries by upstream source

Implements the routing described in docs/tasks-pr-upstream-source.md so task PR and issue queries stay scoped to the selected source.

* rm design doc
2026-06-11 00:58:26 -07:00
Neil bf8a985812
Hide internal context from AI Vault titles (#5175) 2026-06-11 00:28:34 -07:00
Jinjing fcc0afa8cd
fix: enable claude agent teams by default (#5168) 2026-06-11 00:08:43 -07:00
buf0-bot[bot] 146da04af2
fix: address pr-bug-scan validated finding from #4683 (#5151)
Isolated CredentialDecryptionError per-item in Linear getClients (client.ts:518) and Jira getClients (client.ts:373) on the 'all' selection so one bad credential no longer collapses healthy workspaces

Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
2026-06-10 23:56:17 -07:00
Trevin Chow 3184d0e475
Fix floating workspace needing two clicks after app switch (macOS) (#5128) 2026-06-10 23:05:41 -07:00
Parker Rex c2b68cac74
Fix Ctrl+Tab switcher selection on release (#5116) 2026-06-10 22:11:17 -07:00
Neil 9ceabb43b6
Default agent launches to yolo permissions mode (#5145)
* Default agent launches to yolo mode

* test: update launch default validations
2026-06-10 21:14:53 -07:00
Neil 1f5d31a2b5
Add AI Vault session history
## Summary
- add AI Vault session scanning and resume command construction
- add the Agents sidebar panel with filtering, grouping, copy/open actions, and local resume launch
- support dragging saved sessions onto terminal split panes

## Validation
- pnpm run lint
- pnpm run typecheck
- pnpm exec vitest run --config config/vitest.config.ts src/main/ipc/register-core-handlers.test.ts src/main/ai-vault/session-scanner.test.ts src/renderer/src/components/right-sidebar/ai-vault-session-filters.test.ts src/renderer/src/lib/ai-vault-session-drag.test.ts src/renderer/src/lib/launch-ai-vault-session.test.ts
2026-06-10 21:10:10 -07:00
Brennan Benson cdc0ca5e53
Add read-only `orca linear` CLI with trusted launch-prompt pointer (V1) (#5126)
Co-authored-by: Orca <help@stably.ai>
2026-06-10 20:20:50 -07:00
Jinwoo Hong 1ef273c018
fix: make windows ssh relay deploy survive session teardown (#5136) 2026-06-10 23:12:26 -04:00
Neil 1a22e2d05c
UX/copy tweaks (#5142)
* UX/copy tweaks

* UX/copy tweaks
2026-06-10 19:53:03 -07:00
Jinwoo Hong 4daf409776
perf(windows): avoid blocking daemon pid checks (#5137) 2026-06-10 21:32:41 -04:00
Jinjing 26aa473bca
File search match counts (#5085)
* Add matchCount to SearchFileResult for accurate per-file hit counts

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

* Add file search match count design

* rm design doc

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-10 17:42:49 -07:00
Brennan Benson 6d6ad8b3ec
Default-driven create-project flow: name-first form with sensible defaults (#5115)
Co-authored-by: Orca <help@stably.ai>
2026-06-10 16:18:52 -07:00
Jinwoo Hong 24f8eaa55a
Fix source control compare base ambiguity (#5127)
Co-authored-by: Orca <help@stably.ai>
2026-06-10 14:12:12 -07:00
Jinwoo Hong 6d7d25f784
Fix packaged shell PATH order (#5125)
Co-authored-by: Orca <help@stably.ai>
2026-06-10 14:03:55 -07:00
Jinwoo Hong 5f6b454c3a
perf(windows): fix 60s startup ACL walk and OpenCode streaming freeze, with benchmark harnesses (#5124) 2026-06-10 16:41:22 -04:00
Brennan Benson 47927d019e
Add feature interaction usage bucket telemetry (#5119)
Co-authored-by: Orca <help@stably.ai>
2026-06-10 13:38:51 -07:00
Brennan Benson 2fa2cc8cb1
Fix git repo telemetry for repo adds (#5121)
Co-authored-by: Orca <help@stably.ai>
2026-06-10 13:24:49 -07:00
Brennan Benson ceae167427
Handle integration credential decrypt failures (#4683)
Co-authored-by: Orca <help@stably.ai>
2026-06-10 13:08:09 -07:00
Brennan Benson 738ccc5518
Add Warp terminal theme import (#4714)
Co-authored-by: Orca <help@stably.ai>
2026-06-10 11:16:36 -07:00
Jinjing 8bc15e1439
fix: address review findings (#5088) 2026-06-10 01:22:11 -07:00
Jinjing 256e0ef81a
Handle buffer overflows gracefully and truncate diffs fairly (#5083)
- Gracefully fall back to file-name summaries when staged diffs exceed
  node/ssh execution maxBuffer limits, preventing generation failures.
- Split oversized diffs by file and allocate budget via water-filling,
  ensuring single huge files do not starve smaller human changes.
- Clip truncated diff sections on line boundaries to avoid half-lines.
2026-06-09 23:56:36 -07:00
Jinwoo Hong e98febcdbc
Fix stale terminal daemon spawn health (#5064)
Co-authored-by: Orca <help@stably.ai>
2026-06-09 20:22:39 -07:00
Jinwoo Hong de743891fe
Allow Claude account changes with live sessions (#5054)
Co-authored-by: Orca <help@stably.ai>
2026-06-09 16:02:52 -07:00
Jinwoo Hong d09a7fa28b
Add Simplified Chinese, Korean, and Japanese UI localization (#5046) 2026-06-09 15:59:17 -07:00