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>
* 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
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.
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.
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.
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.
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.
* 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>
* 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>
* 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>
* 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>