Commit Graph

724 Commits

Author SHA1 Message Date
Carlos Florêncio ffda4638e9 fix(web): constrain ci checks popover height (#1441) 2026-06-18 22:28:56 +01:00
Carlos Florêncio f100fc97a5 fix: focus changes panel on git updates (#1436) 2026-06-18 22:16:49 +01:00
Carlos Florêncio aee1846cd5 feat: remove nextjs production runtime (#1389) 2026-06-18 18:36:48 +01:00
José Almeida 2781556ead perf: tame browser-grinding cumulative diffs during large rebases (#1430)
* perf(backend): cap cumulative diff bytes and file count during large rebases

* perf(web): coalesce cumulative-diff refetches and skip redundant status compares

* feat(web): warn when the changes panel hides files from a capped diff

* fix(backend): enforce cumulative diff total byte budget strictly

* fix(web): keep coalesced refetch timer shared across envKey subscribers

* fix(web): drop unsound git-status SHA fast-path that staled live diffs

* fix(web): cancel coalesced timer on mid-flight drain to avoid duplicate refetch

* refactor(web): move changes-panel banner and helper to a sibling file

* docs(backend): clarify cumulative diff truncated-files-count semantics

* fix(web): tighten useSelectedFileKey mode param to the all|file union
2026-06-18 17:28:21 +01:00
Clément Fiere fce3b421ea fix: split multi-file agent read links and strip line-range selectors (#1426) 2026-06-18 16:28:06 +01:00
José Almeida 74b756f04a fix(web): stop session-tab flicker when same-task sessions have diverged env ids (#1428)
* fix(web): stop session-tab flicker when same-task sessions have diverged env ids

* test(web): fail fast on missing dockview bridge and clear diverged-env interval
2026-06-18 13:49:13 +01:00
José Almeida 3b2e1396fa perf: fix board lag, memory growth, and rebase-driven CPU spikes (#1427)
* perf(kanban): memoize derived board data to stop re-render storms

The board rebuilt the `tasks` array (and `stepOptions`/`sharedProps`) on every
store change, producing fresh object identities that defeated downstream memos
and re-rendered every card on each WebSocket message. Wrap them in useMemo so
the board only re-renders when its inputs actually change.

* perf(session-runtime): bound runtime memory and dedupe git-status compare

Three runtime-store fixes for the crash a heavy rebase triggered:

- Cap shell + terminal output buffers at 2MB (matching the existing process
  buffer) so a chatty shell can't grow the store without limit.
- Purge per-session runtime state (messages, turns, shell/process buffers, and
  the bySessionId maps) when a session is removed; env-scoped maps are dropped
  only once no other session shares the environment.
- Run setGitStatus's deep per-file diff comparison once per update and return
  whether anything changed, instead of recomputing it 2-3x. Under a massive
  rebase (thousands of files, frequent updates) that comparison was the
  dominant CPU cost and drove the render storm.

* refactor(session-runtime): drop now-unused gitStatusWouldMutate

The git-status handler no longer pre-checks for changes (setGitStatus now
returns whether it changed), leaving gitStatusWouldMutate with no callers.

* fix(session-runtime): enforce terminal cap on first and oversized chunks

appendTerminalChunk only evicted when more than one chunk was buffered, so a
single chunk larger than the 2MB cap slipped through untrimmed; the new-terminal
branch also pushed the first chunk without going through the cap at all. Clamp
each chunk to the tail of the cap and route the new-terminal path through
appendTerminalChunk. Addresses CodeRabbit review.
2026-06-18 13:30:41 +01:00
Carlos Florêncio 2bb239b843 fix: render er diagrams in task plans (#1425) 2026-06-18 12:00:18 +01:00
José Almeida 77f7924004 fix(web): restore diff expansion for committed-source review rows (#1423)
* fix(web): restore diff expansion for committed-source review rows

#1097 narrowed the expansion gate to `source === "uncommitted"` to dodge a
trailing-context crash, which silently dropped expand controls for committed
files — the bulk of a review. The crash is now caught by the reparse guard in
useExpandableDiff, so re-enable expansion for committed rows, fetching the old
side from the repo's base branch (not HEAD, which already has the commits).

Extracts the decision into a pure `resolveDiffExpansion` helper and adds a
multi-repo guard so a committed file never borrows another repo's base branch.

* fix(web): guard diff-expansion base fallback to single-repo tasks

Resolve baseBranchByRepo once in ReviewDiffList (not per row) and only expose a
fallback base branch when the task has exactly one repo, so a committed file
with no repository_name in a multi-repo task no longer borrows an arbitrary
repo's base branch. Addresses Greptile/cubic review feedback.
2026-06-18 11:58:04 +01:00
Carlos Florêncio cfb0041f29 fix: cover agent file link review fixes (#1415) 2026-06-17 21:46:23 +01:00
Clément Fiere a71ee2e2c1 fix: open agent file links that carry line-range selectors (#1412) 2026-06-17 20:32:40 +01:00
Carlos Florêncio d8436dfd8f feat: improve passthrough composer and session recovery (#1411) 2026-06-17 19:01:42 +01:00
Carlos Florêncio 1d61727df3 fix: restore missing settings sidebar links (#1413) 2026-06-17 15:26:30 +01:00
Carlos Florêncio d9d4aafb51 fix: preserve office sidebar workspace toggles (#1403) 2026-06-17 08:09:54 +01:00
Carlos Florêncio fcd2cc00e9 fix: open markdown file links with line suffixes (#1404) 2026-06-17 08:08:44 +01:00
Carlos Florêncio b374b50c4c fix: open root-relative chat file links (#1400) 2026-06-16 22:55:24 +01:00
Carlos Florêncio 327f7d4ec0 fix: persist agent error dismissal (#1397) 2026-06-16 22:27:28 +01:00
Carlos Florêncio e930061fe4 fix(web): chat badge, dockview preview routing, and agent-error icon cleanup (#1395) 2026-06-16 20:29:35 +01:00
Carlos Florêncio d3575e2683 fix: restore office sidebar navigation (#1396) 2026-06-16 20:19:13 +01:00
Carlos Florêncio 3bac35b574 feat(web): surface ensure-session errors and persist preset layout changes (#1394) 2026-06-16 15:21:20 +01:00
Carlos Florêncio 179ba51ccb fix: stabilize postgres startup and model dropdown scroll (#1393) 2026-06-16 13:59:15 +01:00
Carlos Florêncio e8f7a654a6 fix: preserve chat session during workflow advances (#1392) 2026-06-16 13:58:48 +01:00
Carlos Florêncio aa5b8be353 fix: open markdown file links in editor (#1388) 2026-06-15 23:27:41 +01:00
Carlos Florêncio 1f4aecc7d5 feat: split general settings pages (#1383) 2026-06-15 21:13:04 +01:00
Carlos Florêncio 92ed76b438 feat: auggie subagent detection and single-repo review diff (#1385) 2026-06-15 20:50:11 +01:00
Carlos Florêncio e29290fea7 fix: use muted color for scheduling/starting spinner (#1386) 2026-06-15 20:40:15 +01:00
Carlos Florêncio 61acc82b74 feat: add reset action for integration watches (#1381) 2026-06-15 18:54:16 +01:00
José Almeida 214a8f5cce fix: scope multi-repo file editor open/save to the right repo (#1382)
* fix: scope multi-repo file editor open/save to the right repo

The editor open/save/sync/delete chain dropped the repository_name in
multi-repo task workspaces, so the backend resolved paths against the
bare task root and failed with "file not found". Thread the repo
subpath through openFile, save, sync, and delete, and store it on
FileEditorState.

* fix: pass repo from diff Edit button to multi-repo file editor

The diff/changes "Edit" button opened files without their repository
scope, so multi-repo files resolved against the bare task root and
failed with "file not found". Thread repository_name through the diff
and review toolbars into onOpenFile.

* fix: preserve repo across tab restore and stale syncs

Address review feedback: persisted file tabs dropped the repo subpath,
so a multi-repo file reopened against the bare task root after a browser
refresh. Persist and restore `repo` on StoredFileTab. Also guard the
workspace sync against a tab being swapped to a different repo mid-fetch,
and widen the remaining onOpenFile type declarations to carry repo.

* fix: thread repo into editor panel fallback fetch

Address review feedback: FileEditorPanel's useFileLoader fallback fetch
(triggered when the open-files map is transiently empty, e.g. after a
session switch) called requestFileContent without the repo subpath,
re-introducing the multi-repo "file not found" failure. Record repo on
the panel params and forward it through useFileLoader. Also assert the
full restored-tab shape in the local-storage round-trip test.

* fix: guard editor fetches against stale session/repo races

Address review feedback: file open and the panel fallback fetch could
apply a late response after the user navigated away. openFile now drops
the result if the active session changed mid-fetch (via fetchFileEditorState),
and the panel loader keys its in-flight guard by session+path+repo so a
changed target re-fetches and stale responses are discarded.
2026-06-15 17:59:05 +01:00
Carlos Florêncio fd421848fb feat: add feature toggles settings (#1372) 2026-06-15 13:33:45 +01:00
Carlos Florêncio 3a3fca7f0e feat: add resource metrics topbar (#1373) 2026-06-14 22:33:34 +01:00
Carlos Florêncio 828385be2a feat: add tooltip explaining reset environment behavior (#1374) 2026-06-14 22:05:19 +01:00
Carlos Florêncio a140c5817b fix: preserve recoverable agent errors (#1368) 2026-06-14 21:40:52 +01:00
Carlos Florêncio 010948767a feat: add file-backed prompt attachments (#1367) 2026-06-14 21:40:02 +01:00
Carlos Florêncio 35a12fdb2c fix: distinguish sidebar workspace types (#1364) 2026-06-14 18:27:40 +01:00
Carlos Florêncio 0c0dab26d6 fix: show preparing task spinner (#1369) 2026-06-14 18:13:56 +01:00
Carlos Florêncio 1038d1d5ea fix: show spinner for running review sessions (#1363) 2026-06-14 17:58:52 +01:00
Carlos Florêncio 45dd77ae17 fix: improve diff undo and wrapping defaults (#1366) 2026-06-14 17:58:18 +01:00
Carlos Florêncio 2dd03b5431 feat: expose ACP session debug metadata (#1359) 2026-06-13 23:38:07 +01:00
Carlos Florêncio 201ebe14d6 fix: keep agent tab before PR tab (#1360) 2026-06-13 23:37:43 +01:00
Carlos Florêncio e983cb1be1 feat: show session config in message metadata (#1354) 2026-06-13 22:32:12 +01:00
Carlos Florêncio f444fba455 perf(chat): eliminate redundant re-renders and markdown re-parsing (#1357) 2026-06-13 19:26:54 +01:00
José Almeida 42556971ef feat(web): tabbed multi-PR CI popover for topbar button and chat status chip (#1356)
* feat(web): tabbed multi-PR CI popover for topbar button and chat status chip

* test(e2e): cover multi-PR CI popover tabs, chip aggregate, and dropdown

* fix(web): address multi-PR popover review feedback

- suppress hover popover while the PR dropdown is open (no stacked overlays)
- repo-scope tab testids so same-number PRs on different repos stay unique
- guard non-array taskPRs store value in PRStatusChip (same as PRTaskIcon)
- add tablist/tab/aria-selected semantics to the popover tabs

* fix(web): warm default PR only, skip terminal PRs, add tabpanel ARIA

- chip background-sync warms pickDefaultPR (the tab the popover opens), not list head
- PRFeedbackWarmer skips merged/closed PRs (no wasted fetches in topbar path)
- tabpanel role + aria-controls/labelledby wire tabs to the panel

* fix(web): complete ARIA tabs keyboard model in multi-PR popover

- roving tabindex: only the active tab in the page tab order
- ArrowLeft/ArrowRight move selection + focus within the tablist (wrapping)
- stable useId-scoped tabpanel id so every tab's aria-controls resolves
- document topbar-only scoping of prCheckGroup e2e helpers

* refactor(web): skip duplicate rank call for first PR in pickDefaultPR
2026-06-12 19:34:27 +01:00
José Almeida d145874e3b perf(web): eliminate sidebar close lag with many tasks (#1355)
* perf(web): eliminate sidebar close lag with many tasks

Closing the app sidebar unmounted the entire task list in the same frame
the width animation started, so close lag scaled with task count.

- Keep the Tasks grow-section mounted but CSS-hidden in rail mode:
  collapse is now O(1) and reopening is instant (no remount).
- Memoize onToggleGroup so TaskSwitcher's memo() holds; an inline arrow
  re-rendered every task row on each sidebar render.
- Animate only width (transition-[width]) instead of transition-all.
- content-visibility:auto on task blocks skips layout/paint for rows
  outside the sidebar scrollport in long lists.

* test(web): add round-trip collapse/expand assertion to sidebar section test
2026-06-12 14:49:23 +01:00
Carlos Florêncio 7eec66836b fix: hide sidebar footer urls on hover (#1348) 2026-06-12 09:50:35 +01:00
Nicolas Lenepveu ede3e20300 fix(web): restore Sentry entry in settings integrations nav (#1350) 2026-06-12 08:56:46 +01:00
Carlos Florêncio 418beaf11b fix: move changes stage action to file icon slot (#1349) 2026-06-12 08:54:50 +01:00
Carlos Florêncio 7c336e6567 feat(terminal): indicate pending close state (#1334) 2026-06-11 22:28:07 +01:00
Carlos Florêncio 1ba3f086d6 fix(web): update session tab title on model changes (#1335) 2026-06-11 22:27:06 +01:00
Carlos Florêncio 83b112a388 fix(web): restore default layout during session preparation (#1343) 2026-06-11 22:23:48 +01:00
Carlos Florêncio 0a4ba464a7 fix(web): suppress archive success toast (#1345) 2026-06-11 22:23:38 +01:00