Commit graph

688 commits

Author SHA1 Message Date
Armin Ronacher
25080b9d4c fix(tui): reduce switchable renderer complexity 2026-08-02 14:09:36 +02:00
Armin Ronacher
c2b8f5c050 feat(tui): add switchable terminal renderers
Allow coding-agent UI modes to switch at runtime while preserving terminal, focus, input, and renderer state.
2026-08-01 20:38:26 +02:00
a-yeyang
8f9e769742 fix(coding-agent): recover stalled availability refreshes
Start forced availability rebuilds independently and discard stale snapshot and error publication. This fixes #7301 and reuses the implementation from #7421 by @a-yeyang with expanded race coverage.
2026-08-01 20:17:00 +02:00
Armin Ronacher
583f153d50 fix(tui): normalize source filenames 2026-08-01 14:38:13 +02:00
Christian Klotz
a3ec51d2a1
feat: add remote session client coordination 2026-08-01 02:05:49 +03:00
Armin Ronacher
b3ed27b3fe feat(coding-agent): add scrollbar thumb theme color 2026-07-31 17:41:40 +02:00
Christian Klotz
7724472eab
Merge pull request #7387 from earendil-works/issue/7248
fix(coding-agent): read clipboard text on Wayland
2026-07-31 18:18:23 +03:00
Armin Ronacher
6129a353b1 feat(tui): add configurable fullscreen scrollbars 2026-07-31 17:17:02 +02:00
Christian Klotz
bfc679d5e4
fix(coding-agent): read clipboard text on Wayland
Prefer wl-paste on Wayland while preserving the native clipboard fallback when the command is unavailable.

Fixes #7248

Co-authored-by: Ston Jia <ston.jia@outlook.com>
2026-07-31 18:10:28 +03:00
Vegard Stikbakke
f074efd921 feat(coding-agent): add ui mode setting 2026-07-31 15:33:52 +02:00
Armin Ronacher
d2be68dbeb fix(coding-agent): avoid auth read lock contention
closes #7319
2026-07-31 13:23:08 +02:00
Christian Klotz
8ee2207824
fix(coding-agent): decouple auth lock error tests 2026-07-31 12:09:16 +03:00
Cristina Poncela Cubeiro
ab366ebe94
fix: custom-compaction through provider via new model runtime complete (#7325)
* fix: custom-compaction through provider via new model runtime complete

* Update CHANGELOG.md
2026-07-31 10:54:26 +02:00
Mario Zechner
ea1e77e2db feat(tui): add alternate-screen viewport layouts 2026-07-31 09:22:10 +02:00
Mario Zechner
74caa2649f fix(coding-agent): validate package manifests
closes #7187
2026-07-30 22:43:22 +02:00
Alexey Zaytsev
714978bf51
Markdown api (#7231)
* feat(tui): export bundled Marked parser

* feat(coding-agent): add width-aware Markdown transformers

---------

Co-authored-by: Mario Zechner <badlogicgames@gmail.com>
2026-07-30 22:39:04 +02:00
Mario Zechner
c13ffe1877 feat(tui): add alternate-screen renderer
Closes #7304
2026-07-30 12:59:48 +02:00
David Brailovsky
bff5ab7174
fix(coding-agent): show system prompt files in startup context (#7266)
Shows file-backed SYSTEM.md and APPEND_SYSTEM.md entries in the interactive startup [Context] section.

fixes #7096
2026-07-29 17:05:22 +02:00
Arunprasad Rajkumar
cced6a21da
fix(coding-agent): stop loading AGENTS.md twice in nested git worktrees (#7221)
Running from a linked worktree nested under its main repo loaded the
project's AGENTS.md/CLAUDE.md twice. The ancestor walk climbs from cwd to
the filesystem root, so it picked up the worktree's copy and then the main
repo's copy above it, even though both are the same tracked file.

The walk now drops that one duplicate: the main repo root's copy is skipped
when the worktree root has a context file of the same name. Nothing else
changes. The worktree still inherits the main repo's copy when it has none,
directories above the main repo keep loading, and ordinary repos, sibling
worktrees, submodules and bare layouts are untouched.
2026-07-29 10:31:50 +02:00
David Brailovsky
47ca25fcd8 Revert "fix(coding-agent): build-check-test (#7206)"
This reverts commit f145195516.
2026-07-28 15:09:46 +02:00
David Brailovsky
0d008b7468 fix(coding-agent): show tool expansion status
fixes #7180
2026-07-28 15:07:19 +02:00
xu0o0
f145195516
fix(coding-agent): build-check-test (#7206) 2026-07-28 14:46:56 +02:00
Thomas Mustier
cefa40ed8f
***WIP it's a PoC *** fix(coding-agent): guard tree navigation during responses (#7022)
* fix(coding-agent): guard tree navigation during responses

* fix(coding-agent): simplify tree navigation regression

* fix(coding-agent): abort active run on session replacement and tree navigation

Session replacement (resume, new, fork, import) now settles the active
response in teardownCurrent before disposing the outgoing session, so the
aborted turn and its tool results persist instead of leaving a dangling
tool call. Tree navigation aborts the active response directly once the
user commits, without a confirmation gate.
2026-07-28 14:46:30 +02:00
xu0o0
0563a7c017
fix(coding-agent): clean up failed git installs (#7210) 2026-07-28 14:43:22 +02:00
Christian Basch
f1ea6c0d05
fix(coding-agent): reset model selector selection to top row when filtering (#7211)
Typing a model name in the /model selector only clamped selectedIndex to
the filtered list length, leaving the highlight wherever it happened to
be instead of moving to the best match. Reset selectedIndex to 0 when a
non-empty query is present so the top row is highlighted in both the All
and Scoped tabs. Keep the clamp behavior when the query is cleared.

fixes #7209
2026-07-28 14:42:42 +02:00
David Brailovsky
66eead6524
fix(coding-agent): preserve resource metadata after extension resource reloads (#7218)
fixes #6968
2026-07-28 14:39:23 +02:00
Cristina Poncela Cubeiro
b6fb91e5b3
fix(coding-agent): include scoped models in TUI extension context (#7215) 2026-07-28 13:20:11 +02:00
Thomas Mustier
063fb963c5
fix(coding-agent): isolate autoload-disabled package test from real home directory (#7167)
* fix(coding-agent): isolate autoload-disabled package test from real home directory

The test asserted result.skills is exactly empty, but resolve() also
scans ~/.agents/skills via getHomeDir(). On machines where that
directory is populated the test failed; CI runners have no
~/.agents/skills, so it always passed there. Stub HOME to the temp
dir with the same save/restore pattern used by neighbouring tests.

* fix(coding-agent): use vi.stubEnv for home directory isolation

Replaces the manual try/finally save/restore with vi.stubEnv plus
vi.unstubAllEnvs in afterEach, shrinking the fix to two added lines.

* fix(coding-agent): plant decoy user skill so the empty-skills assertion cannot pass vacuously

With an empty sandbox, result.skills equal to [] could not distinguish
the package skill being correctly excluded from skill resolution being
broken entirely. A decoy skill in the stubbed HOME's .agents/skills
proves scanning still works while the package skill stays excluded.

* fix(coding-agent): simplify home isolation test
2026-07-28 08:40:26 +02:00
pungggi
04b15259b2
feat(extensions): expose ctx.scopedModels to extensions (#7191)
Extensions have no way to read the session's scoped model set (the models
resolved from --models / enabledModels against the available catalogue --
the same list /scoped-models shows). The only model surfaces on
ExtensionContext are ctx.model (active) and ctx.modelRegistry.getAvailable()
(the whole catalogue, unfiltered), so an extension that wants a scoped
model picker must either enumerate everything or re-implement pi's scope
resolution (minimatch on provider/modelId / bare modelId + enabledModels +
--models) from disk -- duplicating core logic.

Add ctx.scopedModels: readonly ScopedModel[] to ExtensionContext, mirroring
how ctx.model is exposed (field -> bindCore -> lazy getter in createContext()).
Empty when no scoping is configured (all available models usable). Each entry
is { model, thinkingLevel? }.

- types.ts: ExtensionContext.scopedModels + ExtensionContextActions.getScopedModels
- runner.ts: field, bindCore wiring, lazy scopedModels getter
- agent-session.ts: provide getScopedModels: () => this._scopedModels
- test: assert ctx.scopedModels reflects the action (default [] + live ref)
- docs/extensions.md: document the new field

Co-authored-by: ngSoftware <alessandro@pungitore.ch>
2026-07-28 08:31:01 +02:00
Cristina Poncela Cubeiro
99e34013d1
feat: auth print (#7168)
Some checks are pending
CI / build-check-test (push) Waiting to run
2026-07-27 16:13:06 +02:00
Michael Yu
2efa728d2e
fix(coding-agent): support concurrent user bash cancellation (#7103) 2026-07-27 12:00:24 +02:00
Michael Yu
c2275d6703
fix(coding-agent): prevent duplicate messages on startup session switch (#7110) 2026-07-27 11:59:27 +02:00
Lucas Meijer
f9a49869c2
feat(ai): expose pending stop reason while streaming (#7151)
* feat(ai): expose pending streaming stop reason

Closes #7142

* manual tidy up of human facing copy
2026-07-27 11:56:15 +02:00
Thomas Mustier
f08f58f5f9
fix(coding-agent): run coding-agent tests offline by default (#7031) 2026-07-27 11:27:43 +02:00
Duncan Ogilvie
58c0bc2fba
fix(coding-agent): exclude directories from resource loader (#7106)
This fixes the following warning:

Warning: Could not read /Users/duncan/Projects/AGENTS.md: Error: EISDIR: illegal operation on a directory, read
2026-07-25 14:05:16 +02:00
Armin Ronacher
b1c444d956 feat(coding-agent): revalidate remote model catalogs with ETag 2026-07-25 12:26:19 +02:00
Alexey Zaytsev
518855dd50
feat(coding-agent): expose output padding to custom renderers (#7045)
Co-authored-by: Mario Zechner <badlogicgames@gmail.com>
2026-07-25 08:29:34 +02:00
David Brailovsky
2a2b0a39f0
fix(coding-agent): cache llama.cpp model catalog (#7072) 2026-07-25 08:27:05 +02:00
Christian Klotz
a3ee1d286e
fix(coding-agent): expose unavailable scoped models (#7032)
* fix(coding-agent): expose unavailable scoped models

Keep missing configured models editable in the scoped-model selector. This fixes #6949.

* fix(coding-agent): reuse model scope diagnostics

* fix(coding-agent): classify model scope diagnostics
2026-07-25 07:19:56 +02:00
Armin Ronacher
24e5cc04f4
fix(ai): support Anthropic bearer token env (#6148)
Fixes #5871
2026-07-24 15:13:22 +02:00
Armin Ronacher
f87468131f
fix(coding-agent): reload model config in picker (#7036) 2026-07-24 07:52:49 +02:00
Christian Klotz
6abb4b0640
fix(coding-agent): use llama context for output limit (#7034)
Fixes #6994.
2026-07-23 23:06:03 +02:00
David Brailovsky
ab55c15fbd
Merge pull request #7016 from earendil-works/fix/bundled-models-generated-time
fix bundled models generation time
2026-07-23 15:42:22 +02:00
David Brailovsky
bc3d364742 fix bundled models generation time
Fresh package installs could give bundled model catalog
files newer filesystem mtimes than the remote catalog’s Last-Modified timestamp,
causing Pi to ignore newer remote models.
Use the catalog’s recorded generation time instead of installation-dependent file metadata.
2026-07-23 13:34:51 +00:00
Anantha Kumaran
fc85bdd88b
feat(coding-agent): emit bash_execution_update events (#6971) 2026-07-23 12:28:12 +02:00
Petr Houška
7af8533c6f
fix(ai): make provider retries abortable (#6980)
Replace OpenAI and Anthropic SDK retries with local request retries that
preserve configured retry counts, enforce maxRetryDelayMs, and make retry
backoff interruptible through AbortSignal.

Alternatives considered: Racing SDK requests against AbortSignal would make
cancellation observable but would not let Pi enforce maxRetryDelayMs before
the SDK enters its retry sleep. Patching private SDK internals would be brittle,
while disabling provider retries entirely would ignore explicitly configured
maxRetries.

Also, align the custom OpenAI Codex retry loop with the documented
maxRetryDelayMs behavior. Oversized server-requested delays now fail immediately
instead of being clamped, allowing the visible, abortable agent-level retry
policy to handle the failure.

Fixes #6911
2026-07-23 12:25:37 +02:00
David Brailovsky
da8dd87260 fix(coding-agent): resolve bracketed scoped model ids as literals
fixes #6210
2026-07-23 08:23:24 +00:00
Armin Ronacher
9b3a205917 fix(coding-agent): isolate summarization requests 2026-07-22 23:54:57 +02:00
Armin Ronacher
ecb9410c5c fix(coding-agent): let manual updates bypass skip check
closes #6977
2026-07-22 20:53:35 +02:00
Armin Ronacher
bb3d7d399c
feat(coding-agent): expose session metadata to bash tools (#6967) 2026-07-22 20:15:02 +02:00