Commit Graph

1445 Commits

Author SHA1 Message Date
Carlos Florêncio ec2b4a294c fix: keep start-agent tasks scheduling (#1445) 2026-06-19 12:31:21 +01:00
Carlos Florêncio c30d187440 fix: constrain dialog text inputs (#1437) 2026-06-18 23:03:32 +01:00
Carlos Florêncio 3f0b391fd0 fix: restore debug flag in Vite shell (#1442) 2026-06-18 23:00:33 +01:00
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 773cd1a5a7 ci: harden opencode same-repo review helper (#1439) 2026-06-18 22:11:40 +01:00
Carlos Florêncio 323aae12df fix: restore SPA favicon assets (#1438) 2026-06-18 21:30:38 +01:00
Carlos Florêncio 2560f194ee ci: harden opencode pr review workflow (#1434) 2026-06-18 19:57:40 +01:00
João Salavisa 2c4887a3ee fix(web): suppress kanban spinner for TODO tasks (#1399)
* fix(web): suppress kanban spinner for TODO tasks

A task moved back into TODO can still carry an active primary session
state (CREATED/STARTING/RUNNING). The kanban card was painting the
blue running-spinner in that case, making queued tasks look like they
were executing.

Add an explicit TODO guard at the top of shouldShowTaskRunningSpinner
so the queued column never shows the spinner, regardless of the
session-state desync. Existing decoupling for IN_PROGRESS/REVIEW/etc.
is untouched.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* test: clarify spinner test description excludes TODO

Greptile flagged that "returns true when any task state has an actively
running primary session" overstates the invariant now that TODO
short-circuits to false. Reword to "non-TODO task states" so the
description matches behavior.

* ci: retrigger after artifact expiry

---------

Co-authored-by: Kandev Agent <agent@kandev.dev>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-18 19:15:59 +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
github-actions[bot] e1d14a0a13 release: 0.65.0 v0.65.0 2026-06-18 15:44:33 +00:00
Carlos Florêncio e148234e80 fix: backfill running chat turns without prompt frame (#1429) 2026-06-18 16:29:39 +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
José Almeida 8922a9a2ee fix(backend): prefer local copilot CLI over npx at launch (#1384)
* fix(backend): prefer local copilot CLI over npx at launch

IsInstalled probed the copilot binary for the UI badge but launch always
ran `npx -y @github/copilot`, paying an npm registry round-trip every
start — minutes behind a private registry. Reuse the env-correct binary
check (standalone LookPath, SSH preflight probe) so when copilot is on
PATH the lifecycle runs it directly; containerized runtimes keep npx.

* fix(backend): make SSH native-binary probe non-fatal on transport error

The native-binary probe is an optimisation, not a requirement. A transient
SSH transport error (MaxSessions, reset) made "Verifying agent binary"
abort the launch, blaming copilot before npx was tried. Treat probe
transport errors as a miss and fall through to the required default-command
probe, which reports failures with proper context. Also call
NativeBinaryName() once.

* fix(backend): clear stale native-binary metadata before SSH probe

A pre-existing or stale MetadataKeyNativeBinary in req.Metadata could make
the command builder prefer copilot --acp on an npx-only host even when this
probe misses. Clear it up front so only a positive probe re-sets it.

* refactor(backend): use resolved RuntimeName for native-binary check

buildExecutionFromInstance re-derived the runtime from req.ExecutorType
while promoteWorkspaceExecution read execution.RuntimeName. Use the already
resolved execution.RuntimeName (set from rt.Name()) in both, so the two call
sites are consistent.

* fix(backend): reflect local copilot CLI in profile command preview

The profile setup command preview always rendered `npx -y @github/copilot`
because PreviewAgentCommand built the command without the native-binary
probe. The preview is not bound to an executor, so assume the default
standalone host and probe PATH (mirroring the standalone launch path): show
`copilot --acp` when the CLI is installed, npx otherwise.
2026-06-18 13:07:40 +01:00
Carlos Florêncio 6a7bf92893 docs: refresh feature documentation (#1424) 2026-06-18 12:00:57 +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 4cf2829d77 fix: show quick chat session model options (#1422) 2026-06-18 09:56:29 +01:00
Carlos Florêncio 130ec19587 docs: record PR fixup harness learnings (#1416) 2026-06-17 23:38:37 +01:00
Carlos Florêncio 1f5a551579 ci: clarify opencode review completion (#1420) 2026-06-17 22:50:07 +01:00
github-actions[bot] b13606e86a release: 0.64.0 v0.64.0 2026-06-17 21:18:41 +00:00
Carlos Florêncio 9b2d47f713 ci: avoid unconditional playwright apt install (#1419) 2026-06-17 21:49:57 +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 67037fd936 ci: add opencode PR review workflow (#1405) 2026-06-17 20:27:16 +01:00
github-actions[bot] 7268c55783 release: 0.63.0 v0.63.0 2026-06-17 19:01:52 +00: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 bebb46a189 fix: support postgres initial agent setup (#1410) 2026-06-17 09:54:44 +01:00
github-actions[bot] 9ea30d5e3e release: 0.62.0 v0.62.0 2026-06-17 07:12:09 +00: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 f9608ba52d fix: expose kandev mcp tools to pi (#1401) 2026-06-16 23:30:25 +01:00
github-actions[bot] 6f4da4519e release: 0.61.0 v0.61.0 2026-06-16 21:59:24 +00:00
Carlos Florêncio b374b50c4c fix: open root-relative chat file links (#1400) 2026-06-16 22:55:24 +01:00
Carlos Florêncio 9702cffff5 ci: add postgres backend boot smoke test (#1398) 2026-06-16 22:50:14 +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 e4b39238fa docs: update spec-driven planning workflow (#1390) 2026-06-16 13:57:03 +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 19c17b1321 chore: improve agent harness skills (#1378) 2026-06-15 22:45:48 +01:00
github-actions[bot] 0bc91a62b3 release: 0.60.0 v0.60.0 2026-06-15 21:13:37 +00:00
Carlos Florêncio 1f4aecc7d5 feat: split general settings pages (#1383) 2026-06-15 21:13:04 +01:00