Commit Graph
5360 Commits
Author SHA1 Message Date
Jinwoo-HandOrca 05fa0db9aa Document remote repo identity evidence
Co-authored-by: Orca <help@stably.ai>
2026-06-24 14:17:38 -07:00
Jinwoo-HandOrca 99316dcf01 Fix repos update host-id test expectation
Co-authored-by: Orca <help@stably.ai>
2026-06-24 12:51:49 -07:00
Jinwoo-HandOrca d29c2575bf Fix host-qualified identity review gaps
Co-authored-by: Orca <help@stably.ai>
2026-06-24 12:14:10 -07:00
Jinwoo-HandOrca e814b3cf12 Fix host-scoped identity review regressions
Co-authored-by: Orca <help@stably.ai>
2026-06-23 23:50:29 -07:00
Jinwoo-HandOrca e9d3fea26e Fix host-qualified identity review gaps
Co-authored-by: Orca <help@stably.ai>
2026-06-23 23:50:29 -07:00
Jinwoo-HandOrca bab791c540 Guard disconnected SSH cleanup legacy metadata
Co-authored-by: Orca <help@stably.ai>
2026-06-23 23:50:29 -07:00
Jinwoo-HandOrca 45d9e03068 Fix same-id host CI regressions
Co-authored-by: Orca <help@stably.ai>
2026-06-23 23:50:29 -07:00
Jinwoo-HandOrca 1d244c9a69 Harden host-qualified worktree ambiguity handling
Co-authored-by: Orca <help@stably.ai>
2026-06-23 23:50:29 -07:00
Jinwoo-HandOrca 3a039f78bf Address host identity review feedback
Co-authored-by: Orca <help@stably.ai>
2026-06-23 23:49:29 -07:00
Jinwoo-HandOrca 8b37d052bd Fix canonical worktree identity CI failures
Co-authored-by: Orca <help@stably.ai>
2026-06-23 23:49:29 -07:00
Jinwoo-HandOrca 4a484e856b Harden worktree identity migration coverage
Co-authored-by: Orca <help@stably.ai>
2026-06-23 23:49:29 -07:00
Jinwoo-HandOrca 25801d2ef5 Add host-qualified worktree identities
Co-authored-by: Orca <help@stably.ai>
2026-06-23 23:49:29 -07:00
Jinwoo-HandOrca 2e9518e82b Fix host-scoped repo and worktree refresh
Co-authored-by: Orca <help@stably.ai>
2026-06-23 23:49:29 -07:00
Jinwoo-HandOrca b3e6fdf980 Fix host-scoped project setup mutations
Co-authored-by: Orca <help@stably.ai>
2026-06-23 23:49:29 -07:00
Prateek Rungta a0d1cc37da Preserve same-id repos across hosts 2026-06-23 23:49:29 -07:00
d993336f90 fix: pr-bug-scan validated finding from #6136 (#6227)
* fix: address pr-bug-scan validated finding from #6136

removeProject now also drops lastVisitedAtByWorktreeId entries by repo-id mapping when the repo id is fully removed (no sibling host), catching unhydrated worktree timestamps.

* test: cover unhydrated SSH timestamp cleanup

* Test dropping visit timestamps for removed runtime repos

Verify that removing an unhydrated runtime repository successfully drops
its associated worktree entries from the persisted visit history.

---------

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-23 23:46:26 -07:00
JinjingandOrca 5106e33947 fix(changes-tab): prevent freeze and stale highlights when staging/unstaging (#6229)
* fix(changes-tab): prevent freeze and stale highlights when staging/unstaging

When files are staged/unstaged while the Changes tab is open, the
diff viewer was re-rendering all sections, causing UI freezes and
highlight flickering.

- Add resolveCombinedUncommittedSnapshotEntries() to reconcile
  snapshot entries with live git status without destroying existing
  loaded diff content.
- Track retainedResolvedSnapshotEntries from current sections to
  preserve area state when live git status temporarily loses entries.
- Use Map-based O(snapshot + live) algorithm instead of nested loops.
- Add unit tests for the resolver logic.
- Add e2e test with performance measurement for stale unstaged diffs.

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

* Prevent duplicate entries in uncommitted snapshot resolution

Track resolved snapshot entries using composite area and path keys to
ensure staged and unstaged sections remain distinct and do not duplicate
when live Git status changes or disappears.

Additionally, switch the retained entries from a Map to a list to support
multiple areas per path, and update CombinedDiffViewer to avoid rebuilding
the snapshot list on row load state changes.

* test: add test coverage for duplicate-path snapshot remapping

- Add unit test verifying that duplicate-path snapshots do not remap
  to a retained fallback area.
- Robustify E2E large diff freeze repro test by ensuring interval
  timers are always cleared in a finally block.
- Standardize path utilities in large diff fixtures to ensure cross-platform
  compatibility.

---------

Co-authored-by: Orca <help@stably.ai>
2026-06-23 22:16:20 -07:00
Brennan BensonandOrca c3a089ff44 Align folder workspace rows with new card style (#6137)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 21:39:41 -07:00
Jinwoo Hong 1b6e65c4ef Fix terminal paste cancellation on transient blur (#6232)
Fix terminal paste cancellation on transient blur
2026-06-23 21:24:13 -07:00
Brennan Benson 7c9943959e Prevent accidental tab drags when clicking (#6210) 2026-06-23 21:05:06 -07:00
Trevin Chow 23d14aaa18 fix: reword folder grouping prompt away from "monorepo"
Reword the nested repository import dialog so it asks users whether to group discovered repositories rather than asserting they are a monorepo.

Also keeps locale catalogs aligned with live nested-import strings and updates Electron folder-import coverage for the new affirmative action label.
2026-06-23 21:03:13 -07:00
Jinjing b21f8cd230 Scope terminal handle links by runtime and focus mounted tasks directly (#6225)
* Match terminal handle links using their owning runtime environment ID to prevent false-positive activation when terminal handles collide across local and remote runtimes.
* Focus task-associated terminals directly in the renderer when they are already mounted to avoid redundant runtime RPC focus calls.
2026-06-23 21:00:42 -07:00
Brennan BensonandNeil 5fc1fb3c25 Coalesce renderer process-gone crash bursts (#6202)
Co-authored-by: Neil <neil@stably.ai>
2026-06-23 20:59:06 -07:00
Jinjing 93bf26296f Extract lifecycle message reconciliation to standalone module (#6226)
- Decouple heartbeat and worker_done logic from the main coordinator
  to allow re-use in the orchestration.check RPC method.
- Reconcile unread lifecycle messages during orchestration.check so that
  manual coordinators can authoritatively process completions and
  heartbeats even if they bypass the main coordinator loop.
- Add unit tests validating task completion, heartbeat recording, and
  safety checks against stale or unauthorized worker_done payloads.
2026-06-23 20:41:45 -07:00
Brennan Benson e03a1cf769 Prevent managed agent hooks from hanging (#6148) 2026-06-23 17:22:10 -07:00
Jinwoo HongandOrca 5d8617bc71 Fix mobile workspace parity (#6207)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 17:07:28 -07:00
Brennan Benson 4f6616ae6c Default session history to the current workspace (#6211) 2026-06-23 16:22:26 -07:00
Jinjing b053e1ac60 Fix diff view scrolling using virtualized scroll anchors (#6190)
* Restore combined diff scroll position using virtualized scroll anchors

Fixes scroll jumping and incorrect restoration in virtualized combined
diff views by tracking scroll position via a stable row anchor (key and
offset) rather than a fragile raw scrollTop.

- Track active row anchors across tab switches and component remounts
- Prevent programmatic scroll events from writing incorrect anchors
- Avoid redundant state updates and re-renders when focusing an
  already focused group

* fix: address review findings
2026-06-23 15:57:29 -07:00
d14498a111 feat(worktree): add a "create multiple" toggle to the worktree composer (#5813)
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-23 15:49:38 -07:00
Brennan BensonandOrca 9e88231434 Preserve remote host repo state (#6136)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 15:38:49 -07:00
Brennan Benson 4e63bb0e63 Keep pages usable after lazy chunk reload failures (#6206) 2026-06-23 15:36:48 -07:00
github-actions[bot] a5aee31f6e release: v1.4.95-rc.0 [rc-slot:2026-06-23-15] v1.4.95-rc.0 2026-06-23 22:32:05 +00:00
Jinwoo HongandOrca ce403c09d5 Add GitHub task close reason parity (#6141)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 15:18:46 -07:00
Brennan BensonandOrca a2fd8c11c2 Reduce source-control background load during refreshes (#6189)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 15:06:38 -07:00
Brennan BensonandOrca cf39bd7abe Find projects and repo groups from Cmd+J (#6193)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 14:55:59 -07:00
gatsby74 0880021665 feat(shortcuts): add assignable shortcut to toggle sleeping workspaces
Adds an unbound sidebar.sleepingWorkspaces.toggle keybinding action, wires it to the global shortcut dispatcher, and shows assigned shortcut labels in the workspace-board filter menu.

Also resolves the PR against current main and removes an unnecessary exhaustive-switch fallback that blocked current lint.
2026-06-23 14:26:01 -07:00
github-actions[bot] 30a1a52459 release: v1.4.94 v1.4.94 2026-06-23 20:51:54 +00:00
7c5e8a7f30 feat: floating workspace shortcuts and tab shortcut affordances (#6077)
* feat: add floating workspace shortcuts

* test: shim localStorage in happy-dom tests

* refactor: tighten floating shortcut tests and docs

- Drop unrelated localStorage test shim (local Node 25 only; CI runs Node 24)
- Add why-comments for minify/minimize macOS-only and unbound defaults
- Assert minify bounds via getMinifiedFloatingTerminalBounds() not magic numbers
- Cover out-of-range tab index and no-active-tab rename edge cases

* test: cover custom floating shortcut bindings on Linux/Windows

Proves user-assigned overrides for floatingWorkspace.maximize/minify fire
on platforms where the default bindings are intentionally empty.

* feat: show keybinding hints in floating panel control tooltips

Maximize/restore and minimize tooltips now surface their live shortcut as
"Label (shortcut)", matching the repo convention (e.g. ReviewPRViewAnimatedVisual).
Degrades to a bare label when the action is unbound (Win/Linux defaults,
and minimize on every platform).

* feat: rework floating panel resize shortcut to Cmd+Opt+Shift+A

- Move maximize/restore default from Cmd+Opt+Up to Cmd+Opt+Shift+A so it
  shares the Cmd+Opt+A toggle anchor and stays one-handed.
- Open-into-maximized: pressing the chord while the panel is closed opens
  it straight into the maximized state (one-shot intent bridges the
  closed->mounted gap), regardless of last saved size. While open it
  remains a maximize<->restore toggle returning to saved dimensions.
- Drop the minify action and its Cmd+Opt+Down default entirely; it was
  introduced earlier in this PR and is not in main, so this trims unshipped
  surface rather than removing an existing feature.

Maximize tooltip now surfaces the new chord. Adds panel tests for the
open-maximized intent and updates keybinding default tests.

* feat: surface tab shortcut affordances

* refactor: address 5.5 Pro review on tab shortcut affordances

- Add Darwin Option-composed (Cmd+Opt+Shift+A) maximize capture/round-trip regression
- Replace 'Unassigned' string-sentinel checks with useOptionalShortcutLabel (string | null)
- Add TTL guard + unit tests so a stale open-maximized intent cannot leak into a later open

* feat: show default agent shortcut in new tab menu

* fix: address PR review on tab tooltip a11y, i18n, and test guards

* Fix floating workspace shortcut edge cases

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-23 13:37:17 -07:00
Jinwoo HongandOrca eb650d6cb8 Make mobile pairing QR codes larger (#6192)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 13:22:51 -07:00
github-actions[bot] 02e5464d2a release: v1.4.94-rc.2 v1.4.94-rc.2 2026-06-23 20:13:45 +00:00
Jinwoo HongandOrca b4d2e9810d Restore pre-culprit workspace liveness boundary (#6196)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 13:12:47 -07:00
Ricardo Sawir ffa80eb5bb Fix Windows directory cwd prefixes (#6116) 2026-06-23 13:00:09 -07:00
0797966d39 Preserve unsaved diff-note draft on outside click (#6188)
* Preserve unsaved diff-note draft on outside click

Clicking outside the diff-note popover while it held unsaved text
discarded the draft. Dismiss-on-outside-click now only fires when the
draft is empty or whitespace-only; with content the popover stays open
so an accidental click can't lose an in-progress note. Escape and the
Cancel button still dismiss explicitly.

Mirror the draft into a ref so the document mousedown listener (empty
dependency array) reads the freshest body, matching the existing
onCancelRef/topRef pattern in the component.

* Preserve large diff-note drafts on outside click

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

---------

Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-23 12:50:00 -07:00
github-actions[bot] ab04b1b99b release: v1.4.94-rc.1 v1.4.94-rc.1 2026-06-23 19:20:18 +00:00
Jinwoo HongandOrca dd421a054b Fix Codex session history titles from injected context (#6151)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 12:19:15 -07:00
Jinwoo HongandOrca b8becaae39 Remove active-worktree gating from restored session visibility (#6185)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 12:08:19 -07:00
Brennan BensonandOrca 83f49818d3 Detect remote agents from shell PATH (#6157)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 11:31:41 -07:00
03fd869b92 feat(ai-vault): support OpenCode SQLite session storage (#5925)
Co-authored-by: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-06-23 11:18:17 -07:00
Brennan BensonandOrca 8c4f57e8ef Reduce repeated git probes during worktree refresh (#6153)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 11:07:49 -07:00
Brennan BensonandOrca fac7e0440c Prevent sidebar crashes from missing worktree titles (#6127)
Co-authored-by: Orca <help@stably.ai>
2026-06-23 11:07:09 -07:00