Commit Graph
1070 Commits
Author SHA1 Message Date
Jinwoo HongandOrca 5b24ae4198 Fix Claude scoped Keychain auth (#1735)
Co-authored-by: Orca <help@stably.ai>
2026-05-14 10:48:46 -07:00
Jinjing 133c8788a5 fix: separate workspace filter reset action (#1849) 2026-05-14 10:01:21 -07:00
Neil bae5fba3a5 fix: harden mermaid rendering (#1838) 2026-05-14 02:02:38 -07:00
Neilandhermes 11bd7dfe37 fix: pr-bug-scan findings from #1415 (re-applied on current main) (#1516)
Re-applies the four ResourceUsageStatusSegment fixes from #1464 on top of
current main. Original PR was branched off the #1415 merge commit and
would have silently reverted #1451 (focus right pane after clicking an
agent), which reworks navigateToTab to thread paneKey through and call
activateTabAndFocusPane.

Findings:
- Orphan kill race re-adds the killed row (await kill before refresh).
- Duplicate sessions interval inside open-gated effect (removed).
- Kill-confirm Dialog mounted inside PopoverContent (hoisted to sibling).
- daemonUnreachable required at least one snapshot failure (also treat
  null snapshot + sessions error as unreachable).

Co-authored-by: hermes <bot@hermes>
2026-05-14 01:50:25 -07:00
Neil f0705af998 perf(git): fold upstream status into git poll (#1828)
* perf(git): fold upstream status into git poll

* fix: keep git status polling lint-clean
2026-05-14 01:37:36 -07:00
Neil 5d6992d7f0 Gate editor autosave store subscriber (#1826)
* Gate editor autosave store subscriber

* fix: keep autosave controller lint-clean
2026-05-14 01:34:39 -07:00
Neil 2762fdb38c perf(tasks): narrow task page cache subscriptions (#1824)
* perf(tasks): narrow task page cache subscriptions

Avoid re-rendering the full Tasks page for unrelated GitHub and Linear cache writes by selecting only the cache entries the page can render, and by returning null from dialog/drawer selectors while those surfaces are closed.

* fix: satisfy task selector lint
2026-05-14 01:32:00 -07:00
Neil 133f57da3d perf(renderer): gate mobile pairing polling (#1820) 2026-05-14 01:22:53 -07:00
Neil b0e7fe94ab Cap persisted browser history payloads (#1822) 2026-05-14 01:22:46 -07:00
Neil dbeb89436a Reduce serial startup waits before first window (#1823)
* Avoid local scrollback serialization on shutdown

* Reduce serial startup waits before first window
2026-05-14 01:22:42 -07:00
Neil ee2b8b861c perf(explorer): avoid full refresh after replayed events (#1827)
Skip the expensive expanded-tree refresh after deferred file explorer watcher payloads when the replayed events can be reconciled with targeted directory refreshes. Keep the fallback for unreplayable rename payloads.
2026-05-14 01:22:38 -07:00
Neil c53eec6b53 perf(metadata): dedupe metadata cache requests (#1833)
Dedupes in-flight GitHub and Linear metadata lookups behind the existing short TTL caches, and prevents cleared caches from being repopulated by stale in-flight responses.
2026-05-14 01:22:31 -07:00
Neil 41d642bd29 Coalesce pane divider drag updates (#1816)
Batch terminal pane splitter flex writes behind requestAnimationFrame so high-rate drag pointermove bursts do at most one layout write per frame, while flushing the latest size before final refit.
2026-05-14 01:18:56 -07:00
Neil 2908367186 fix(terminal): repaint after WebGL attach (#1817)
Centralize the xterm refresh after successful WebGL attachment so resumed, reparented, or setting-toggled panes do not show a stale empty WebGL canvas until the next output or resize.
2026-05-14 01:18:53 -07:00
Neil e2e6f43b2a perf(browser): scope webview drag listeners (#1834) 2026-05-14 01:18:50 -07:00
Neil bfb62e2bcf perf(editor): debounce markdown doc link decorations (#1830)
Debounce Monaco markdown doc-link decoration refreshes so rapid content changes coalesce into one full-model scan, while preserving immediate initial render and cleanup behavior.
2026-05-14 01:18:46 -07:00
Neil dca8206c32 perf(renderer): remove agent command draft reset effect (#1825) 2026-05-14 01:18:43 -07:00
Neil 7bc3ba1054 fix: preserve terminal panes across split groups (#1837) 2026-05-14 01:06:54 -07:00
Jinjing 4889daf1c0 feat: group activity agent threads (#1815) 2026-05-14 00:51:00 -07:00
Jinjing f9f7c2ff6b fix: address review findings (#1819) 2026-05-14 00:48:28 -07:00
Neil 812831a18e fix: remember worktree creation agent (#1814) 2026-05-14 00:42:07 -07:00
Neil de04b7497f perf(renderer): cut hidden polling and repeated sync scans (#1813)
* perf(renderer): cut hidden polling and repeated sync scans

* fix(renderer): keep mobile file lookup worktree scoped
2026-05-14 00:30:48 -07:00
Jinwoo HongandOrca 1948458fb0 Add local automations workflow (#1806)
* Add local automations

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

* Add local automations workflow

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-14 02:31:52 -04:00
Jinjing d08a1b9525 fix: route terminal file drops by tab (#1804) 2026-05-13 22:15:46 -07:00
Jinjing c003a88777 feat: group activity threads by status (#1803) 2026-05-13 22:12:28 -07:00
Brennan BensonandOrca ba0a5b47ed feat(ssh): agent-status over SSH (#1702)
Co-authored-by: Orca <help@stably.ai>
2026-05-13 22:09:32 -07:00
Jinjing e7bdd18e2f fix: address review findings (#1800) 2026-05-13 22:06:03 -07:00
buf0-bot[bot]andorca-bug-scan-bot 3c21e08781 fix: pr-bug-scan validated finding from #1751 (#1790)
Co-authored-by: orca-bug-scan-bot <orca-bug-scan-bot@stably.ai>
2026-05-13 22:02:57 -07:00
Jinjing bfd365afa5 fix: stop file explorer drag edge scroll (#1798) 2026-05-13 21:53:14 -07:00
Brennan BensonandOrca 70ec7c0603 Activity agent response previews (#1795)
Co-authored-by: Orca <help@stably.ai>
2026-05-13 21:37:39 -07:00
ac7ac81137 feat(main): Add droid to AgentHooks and sidebar agents status (#1695)
Co-authored-by: Orca <help@stably.ai>
Co-authored-by: brennanb2025 <brennankbenson@gmail.com>
2026-05-13 21:30:13 -07:00
Jinwoo HongandOrca 3d07c2a28a Add floating terminal orchestration setup (#1763)
Co-authored-by: Orca <help@stably.ai>
2026-05-13 20:10:53 -07:00
Neil 75d5a65633 Add notebook preview support (#1725)
* Add notebook preview support

* Fix notebook reopen and browser routing

* Add editable runnable notebooks

* Restore notebook highlighting and defer source serialization

* Mark notebook editor beta

* Fix notebook Python syntax highlighting

* Improve notebook cell controls and dark editing

* Fix notebook focus and save shortcuts

* Fix restored notebook file loads

* Harden notebook perf and output rendering

* Fix notebook source toggle shutdown noise

* Harden notebook execution trust prompt
2026-05-13 19:28:19 -07:00
NeilandJinjing 638b7e07bb Rename Activity tab to Agent View (#1773)
* rename Activity tab label to Agent View

Renames the user-visible tab label from 'Activity' to 'Agent View' in
the sidebar nav and the activity-page titlebar (plus matching tooltip
and aria-label). Internal view ID, store slice names, and component
filenames remain 'activity' to avoid behavioral risk — this is a pure
copy change.

* rename activity view labels to agents

---------

Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
2026-05-13 18:35:18 -07:00
Neil f3d8f59567 Focus floating terminal on hotkey toggle (#1775) 2026-05-13 17:52:10 -07:00
Neil a04964630e Fix relative Codex file links in terminal (#1779) 2026-05-13 17:36:25 -07:00
Brennan BensonandOrca 29e8eae70e perf(session): prune local terminal scrollback from persisted sessions (#1753)
Co-authored-by: Orca <help@stably.ai>
2026-05-13 16:34:44 -07:00
Brennan BensonandOrca 6e482a00d7 fix(terminal): set paneKey env on CLI-spawned terminals so agent status surfaces (#1727)
Co-authored-by: Orca <help@stably.ai>
2026-05-13 16:20:59 -07:00
Neil 07210ae24c Fix floating terminal default migration (#1767)
* Fix floating terminal default migration

* Add floating terminal icon context menu
2026-05-13 16:18:22 -07:00
Jinjing 5a6b2994ea fix: address review findings (#1770) 2026-05-13 16:14:50 -07:00
Brennan BensonandOrca 575b1d42ed Fix live Activity thread metadata (#1760)
Co-authored-by: Orca <help@stably.ai>
2026-05-13 16:02:32 -07:00
Brennan BensonandOrca be7825adb9 Make Activity default-on (#1765)
Co-authored-by: Orca <help@stably.ai>
2026-05-13 15:39:45 -07:00
Jinwoo HongandOrca a076656ff8 Update Orca Mobile Android release link (#1759)
Co-authored-by: Orca <help@stably.ai>
2026-05-13 13:59:05 -07:00
Prateek RungtaandJinjing 74373c2deb Drop the per-workspace AGENTS toggle in the sidebar (#1738)
* Drop the per-workspace AGENTS toggle in the sidebar

The chevron header above each card's inline agent list re-litigated a
decision the global "inline-agents" view option already controls, and
sat one row above the agent it labelled — so aiming for the agent and
hitting the chevron collapsed the section the user wanted to interact
with. Collapsed state was session-only, so there was no payoff for the
misclick.

Always render the inline agent list when the global toggle is on; never
render it when it's off. The wrapper keeps a stopPropagation handler so
clicks on the empty row gutter don't reach WorktreeCard's outer
activate/edit-meta handlers, plus role="group" + aria-label="Agents" so
screen-reader users still get a labeled region.

Also drops the leading pl-1 on DashboardAgentRow so the freed row gets
a touch more horizontal room. DashboardAgentRow's only call site is
this inline list, so there's no asymmetry to fix elsewhere.

* Added more tests

---------

Co-authored-by: Jinjing <6427696+AmethystLiang@users.noreply.github.com>
2026-05-13 13:34:28 -07:00
Jinjing 0273e38240 Fix start-from-PR display refresh (#1751) 2026-05-13 13:08:45 -07:00
Jinwoo HongandOrca e0b5a544a8 Improve Orca Mobile discoverability (#1758)
Co-authored-by: Orca <help@stably.ai>
2026-05-13 12:41:10 -07:00
Brennan BensonandOrca 2d5fb175d7 Show running agents in Activity threads (#1754)
* fix: show running agents in activity threads

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

* polish activity thread prompt alignment

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

* polish activity thread controls

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

* match activity thread agent state icons

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

* polish activity thread state icon size

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-13 12:33:41 -07:00
Brennan BensonandOrca f4009fdaa9 fix(activity): polish thread-row hover and widen list (#1750)
* fix(activity): polish thread-row hover, restore stable layout, widen list

The activity thread list had several hover regressions: the cursor wasn't
indicating clickability, hovering shifted the row contents because the
bell-toggle replaced the timestamp under the cursor, and the timestamp
tooltip could get stuck open after the trigger faded out (Radix didn't
dismiss because opacity:0 left it interactable). The Jump-to-workspace
button in the right pane header also read as easy-to-miss chrome.

Surface per-card actions on hover (Open + Mark-unread) in a reserved
slot so the worktree-name's flex width doesn't reflow when the buttons
appear. Drop the redundant header button. Bump the default thread list
width 340 → 480px (range 320–720) and let prompts wrap to 3 lines so
the cards work as the primary surface — the terminal is supplementary.

Mark-unread only appears for already-read threads (selecting an unread
thread auto-marks it read, so a "mark read" button would be redundant).
The remove-events-count badge change was already staged locally and is
included to keep the row chrome consistent with the new layout.

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

* fix(activity): replace 'Open' label with ExternalLink icon-only button

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

* fix(activity): move Mark-unread into the bell slot on hover

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

* fix(activity): match WorktreeCard bell pattern in thread rows

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

* fix(activity): drop AGENTS heading, add overflow menu with Mark all read

The 'AGENTS' uppercase header was redundant — the activity titlebar
already names the surface. The 'Mark all read' button was also stuck in
the titlebar far from the threads it acts on.

Drop the heading and surface 'Mark all read' as a per-list overflow menu
(MoreVertical) next to the Filter input + unread-only toggle. The action
disables when there's nothing unread to mark.

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-13 12:13:18 -07:00
Brennan BensonandOrca d0f4246807 fix(tasks): remove duplicate top band on Tasks page (#1749)
* fix(tasks): remove duplicate top band on Tasks page

The Activity-page work in #1703 tightened App.tsx's `workspaceActive` to
require `activeView === 'terminal'`, so App.tsx now keeps its full-width
titlebar on the Tasks page. TaskPage's own `workspaceActive` was still
just `activeWorktreeId !== null`, so it kept rendering its own 36px
placeholder strip below the App titlebar — producing the doubled band.

TaskPage only mounts when `activeView === 'tasks'`, where App.tsx never
hides its titlebar, so the placeholder strip is always redundant. Drop
it along with the now-unused `sidebarOpen` / `activeWorktreeId` reads.

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

* fix(tasks): remove stale titlebar comment

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-13 11:31:09 -07:00
Brennan BensonandOrca 77871a06c1 feat(activity): isolate the agent's pane in the activity view (#1740)
* feat(activity): isolate the agent's pane in the activity terminal view

When the activity page hosts a tab that has split panes, only the agent's
specific pane should be visible — not the whole tab. Implemented as a
transient layout override using the existing applyExpandedLayoutTo helper
with a separate snapshot ref, so it never touches the user-facing
expanded-pane state or the persisted layout snapshot. Closing the
activity page restores the original split layout untouched.

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

* fix(activity): pass isolatedPaneId from the live tab-group render path

TabGroupPanel renders the actual TerminalPane in tab-group mode (the
default modern path); Terminal.tsx is the legacy single-group fallback.
Without this, isolatedPaneId never reached TerminalPane, so the activity
view kept showing all split panes side-by-side.

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

* fix(activity): refit terminals when isolation override is removed

The activity-isolation useLayoutEffect only called safeFit on the apply
path, so removing isolation (or hitting the early-return when
applyExpandedLayoutTo returned false) left xterm sized for the
single-pane geometry until an unrelated event triggered another fit.
Extract scheduleRefit() and run it from all three branches.

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

---------

Co-authored-by: Orca <help@stably.ai>
2026-05-13 00:50:52 -07:00