Commit Graph
6490 Commits
Author SHA1 Message Date
Armin Ronacher 082f7577c2 fix(coding-agent): make footer debounce tests deterministic 2026-09-05 13:40:16 +02:00
Armin Ronacher 6f11c31d11 fix(coding-agent): assert source-only experimental package exports 2026-09-05 13:32:44 +02:00
Armin Ronacher 1a46b923d7 docs: audit changelogs for v0.85.1 2026-09-05 13:32:44 +02:00
Alexey Zaytsev ab9e6f89b4 feat(tui): accelerate Alt-modified wheel scrolling (#9166) 2026-09-05 13:14:11 +02:00
Armin Ronacher 1382777ed8 fix(coding-agent): keep remote harness dependencies development-only
Separate stable and development entrypoints, exclude remote harness code from distributions, and verify isolated consumer installs before release. Fixes #9132.
2026-09-05 12:45:04 +02:00
Armin Ronacher 9841914c71 fix(tui): keep list selection unchanged on mouse hover 2026-09-05 00:46:34 +02:00
David Brailovsky 85186f823d fix(agent): expand fork conformance for Memory and JSONL
- Cover application list copying and branch-state exclusion
- Verify sequence preservation and next-write allocation
- Group WP08 cases separately until SQLite is ready
2026-09-04 22:45:31 +02:00
Armin Ronacher 17de82d7be feat(ai): add GPT-6 Astra support 2026-09-04 22:08:06 +02:00
Ramiz Wachtler 92d8e2d17d fix(coding-agent): selector save keybindings (#9149)
- fixes #8797
2026-09-04 18:06:21 +02:00
David Brailovsky 9908b2176a feat(agent): fork closed legacy JSONL through format 4
Normalize closed v3 sources into temporary format-4 files and reuse the two-pass fork path without modifying source files.

Remove obsolete JSONL snapshot creation and capture plumbing.
2026-09-04 17:40:30 +02:00
David Brailovsky e3c966b6ff fix(agent): reject open legacy JSONL forks
Require a non-empty commit to persist normalized format-4 IDs before forking an open v3 session.

Verify rejection leaves the source unchanged and that the same destination ID succeeds after upgrade.
2026-09-04 16:46:14 +02:00
David Brailovsky 89670bc4a6 fix(agent): reduce JSONL fork list index memory
Track only the first surviving append sequence per non-empty list instead of retaining every surviving element sequence.
2026-09-04 16:44:13 +02:00
David Brailovsky 420deedf81 docs(agent): record JSONL fork capture question
Contrast the original fixed-length source capture requirement with the prototype's next-sequence boundary and document the file-replacement tradeoff.
2026-09-04 16:11:41 +02:00
David Brailovsky 9ee703230f Merge remote-tracking branch 'origin/main' into dev-named-forks-streaming 2026-09-04 16:05:40 +02:00
David Brailovsky 04d17a1080 feat(agent): add two-pass JSONL fork prototype
Stream format-4 sources through current-state indexes, preserve source sequences and high-water marks, and publish destinations atomically.

Capture open-source fork boundaries through the commit queue while retaining snapshot-based legacy-v3 handling.
2026-09-04 16:05:22 +02:00
Manuel de la Peña 47236c8445 docs(coding-agent): document running pi in Docker Sandboxes (#9077) 2026-09-04 15:27:32 +02:00
Armin Ronacher dd7e816b57 Add [Unreleased] section for next cycle 2026-09-04 11:57:42 +02:00
Armin Ronacher 107d79f110 Release v0.85.0 v0.85.0 2026-09-04 11:57:38 +02:00
Armin Ronacher 1148f7958c docs: audit unreleased changelogs 2026-09-04 11:28:00 +02:00
David Brailovsky 744a94d7d4 fix(coding-agent): use current Copilot model in registry test 2026-09-04 11:19:20 +02:00
David Brailovsky ef41a24b39 fix(ai): keep Copilot tests aligned with current model catalog
Derive catalog-sensitive test IDs from generated models and update tool-call normalization coverage to GPT-5.5.
2026-09-04 11:15:20 +02:00
Armin Ronacher 2d41163332 fix(tui): make fullscreen transcript search scale linearly 2026-09-04 10:22:04 +02:00
Milosz JankiewiczandJaaneek 0dbf2b76fe fix(ai): remove Grok Build 0.1 from built-in xAI model catalog (#9093)
Add grok-build-0.1 to XAI_BUILTIN_EXCLUDED_MODEL_IDS so the generated xAI
catalog only lists grok-4.3, grok-4.5 and grok-4.6. Update the exclusion
test and drop the thinking-level assertion for the removed model.

Co-authored-by: Jaaneek <Jaaneek@users.noreply.github.com>
2026-09-04 10:18:26 +02:00
Stickman Charles 6aedd1066e fix(coding-agent): download statically linked musl builds of fd and ripgrep on Linux (#9070) 2026-09-04 00:17:51 +02:00
Qiaochu Hu c2d3dc55b0 fix(agent): map signal-killed processes to non-zero exit codes (#8994)
waitForChildProcess resolved null for the exit code when a child was killed by a signal (e.g. OOM killer), and exec mapped it with code ?? 0, so the bash tool treated killed commands as successful.

Track the termination signal and fall back to the shell convention of 128 + signal number (137 for SIGKILL) when no exit code is available.

fixes #8992

closes #8882
2026-09-04 00:06:16 +02:00
Cristina Poncela Cubeiro 457ae8c79c feat(tui): alt mode scrollbar but prettier (#8801) 2026-09-04 00:05:47 +02:00
Armin Ronacher 79680533c6 feat(tui): add clickable jump-to-end indicator to fullscreen transcript
Adds TuiAltScreenOptions.scrollToEndIndicator, composited onto the last
row of the follow-end primary scroll view while it is scrolled up. A left
press on the label resumes end-following. Minimal rebuild of #9080.
2026-09-03 22:54:59 +02:00
Cristina Poncela Cubeiro 1d9787c11f feat(tui): prettier Working... spinner (#8799) 2026-09-03 20:34:04 +02:00
David Brailovsky 2e2805d92f feat(agent): construct memory forks directly from live state
Stream current values and lists through shared fork policy while preserving sequences and the source high-water mark.
2026-09-03 16:31:29 +02:00
Vegard Stikbakke e44d75c20a fix(coding-agent): raise branch summary output cap
closes #8845
2026-09-03 15:14:51 +02:00
Cristina Poncela Cubeiro 7d399e7be8 feat(tui): search improvements (#8800) 2026-09-03 15:09:51 +02:00
Armin Ronacher 0fdec07ba3 fix(ai): preserve provider thinking level in frames 2026-09-03 14:26:49 +02:00
Armin Ronacher 8b5899dce2 fix(ai): restore stream compatibility 2026-09-03 13:53:57 +02:00
David Brailovsky 265a33393e fix(ai): add Qwen3.8 Flash to individual token plan
Derive Token Plan reasoning effort levels directly from models.dev metadata, retaining fallbacks for GLM-5 and GLM-5.1.

fixes #9021
2026-09-03 12:34:53 +02:00
Vegard Stikbakke 007c0be640 docs(tui): clarify standalone renderer configuration
Follow-up to c505f4c19.
2026-09-03 12:03:59 +02:00
Anton Geraschenko c505f4c198 fix(tui): remove coding-agent config reads from pi-tui
Fixes #8698
2026-09-03 11:59:14 +02:00
David Brailovsky 3316c4e35b fix: repair Baseten and coding-agent test checks
Drop the misleading Baseten default-model test and remove a duplicate coding-agent mock declaration rejected by Biome.
2026-09-03 11:40:37 +02:00
David Brailovsky 64eeb82a46 fix(ai): process unterminated Codex SSE terminal events
Flush the SSE decoder at EOF and treat the residual buffer as a complete frame.

fixes #9047
2026-09-03 11:26:39 +02:00
Maximo Guk 55adba4f24 Replace the AI Gateway binding shim with a plain binding fetch (#8287)
createGatewayBindingFetch (0.84.2) translated requests from a gateway
HTTPS prefix into the AI binding's universal endpoint, building the
[{provider, endpoint, headers, query}] envelope by splicing the request
body into a JSON string. The gateway now serves its provider-native
passthrough over the binding at
/ai-gateway/gateways/{gateway}/{provider}/..., the HTTPS path minus the
account id, so a model can simply name that route as its baseUrl and
there is nothing left to translate.
2026-09-03 11:11:19 +02:00
Panoplos 22940a62f5 fix(ai): keep Baseten GLM-5.2 text-only (#8293) 2026-09-03 11:10:33 +02:00
Alexey Zaytsev 1d6dbf9e3d fix(coding-agent): keep skills available with bash-only tools (#8552) 2026-09-03 11:08:26 +02:00
wutongyuonce 6f35de5b59 fix(coding-agent): isolate concurrent session shares (#8613) 2026-09-03 11:05:41 +02:00
wutongyuonce c6b00676b8 fix(coding-agent): scan past non-EXIF APP1 segments (#8616) 2026-09-03 11:02:39 +02:00
Terminator666666andTerminator666666 57e53b0d79 fix(coding-agent): resolve fd/rg release versions without the GitHub API (#8708)
The fd/ripgrep auto-download resolved the latest version through
api.github.com, which shares the anonymous API quota (60 requests/hour
per IP). Behind shared egress IPs (corporate proxies, CI runners, NAT)
that quota is permanently exhausted by unrelated traffic, so the
download failed with 'GitHub API error: 403' on every launch while the
actual release download endpoint would have worked fine.

Resolve the version from the /releases/latest web redirect instead: it
carries the tag in the Location header, is not subject to the API
quota, and lives on the same origin as the binary download itself. The
redirect body is discarded so the connection can be reused, and the
pinned fd version on darwin/x64 now skips the lookup entirely.

Also improve download failure diagnostics: status messages include the
error cause chain so transport errors surface their actionable detail
instead of a bare 'fetch failed', and HTTP download errors include the
failing URL.

Fixes #8594

Co-authored-by: Terminator666666 <Terminator666666@users.noreply.github.com>
2026-09-03 10:59:04 +02:00
Julien Barbay 2b768ba42c feat(coding-agent): ingest external entries in in-memory sessions (#8980)
* feat(coding-agent): ingest external entries in in-memory sessions

SessionManager.inMemory() takes the entries to start from, so a session
held outside the filesystem can be resumed as it was stored.

Replaying through appendMessage/appendCompaction cannot do this: ids are
minted fresh, so every stored firstKeptEntryId, targetId and fromId has to
be remapped, timestamps are rewritten, and parentId always comes from the
current leaf, so a branched tree needs the original branch() choreography
reproduced call by call.

The entry-adoption half of _setSessionFile becomes _loadEntries, which the
constructor also uses when there are entries but no file. Entries carrying
a session header keep it; without one, the header comes from the options
and the entries become its body.

* fix(coding-agent): carry the stored version through restored entries

inMemory() took SessionEntry[], which excludes SessionHeader, so an
external store could not pass the header it saved and the header branch of
_loadEntries was unreachable through the public API. A restore therefore
always synthesised a current-version header, and the migration that ran
next read that header and skipped: a v2 session kept its hookMessage roles
forever.

Widening to FileEntry[] lets the stored header through, version included.
Migration moves inside the header branch, where a version exists to compare
against; without a header the entries are adopted as current-version, which
is the only thing they can mean.
2026-09-03 10:49:41 +02:00
wutongyuonce 1a773c8e7a fix(coding-agent): avoid overwriting imported sessions (#8985) 2026-09-03 10:48:18 +02:00
yaogangqiang 2631b25c34 fix(coding-agent): preserve compaction boundary when forking (#8990)
Fixes #8989
2026-09-03 10:47:40 +02:00
xu0o0 f0592205f8 feat(tui): render relational algebra join symbols & fix(coding-agent): type error in test (#9050)
* feat(tui): render relational algebra join symbols

* fix(coding-agent): update interactive mode test fixture
2026-09-03 10:45:02 +02:00
github-actions[bot] d459ff0c4e chore: approve contributors from issue #9033 2026-09-03 08:32:29 +00:00
Armin Ronacher bf157122af fix(ai): remove unnecessary Chord dependency 2026-09-03 10:21:43 +02:00