Commit Graph

475 Commits

Author SHA1 Message Date
Mario Zechner
e3fee7a511 fix(keybindings): migrate to namespaced ids closes #2391 2026-03-20 01:55:30 +01:00
Mario Zechner
21ef72e9ce fix(coding-agent): protect rpc stdout fixes #2388 2026-03-20 01:55:30 +01:00
Sviatoslav Abakumov
970774ec3c fix(coding-agent): /model shows stale scoped models (#2408)
After updating models.json, the scoped model selector still shows the
old values when opened. Switching to the "all" scope, however, shows
updated model definitions.
2026-03-19 23:40:07 +01:00
Mario Zechner
a6337dc709 fix(coding-agent): show bash tool elapsed time at bottom closes #2406 2026-03-19 22:13:27 +01:00
Mario Zechner
3620adb3e2 fix(coding-agent): reload custom themes from disk watcher\n\ncloses #2417\ncloses #2003 2026-03-19 21:53:05 +01:00
Mario Zechner
ce15f40769 fix(coding-agent): use native clipboard text copy on desktop closes #2347 2026-03-18 22:42:02 +01:00
Helmut Januschka
fd385ecf06 feat(coding-agent): add JSONL export/import for sessions (#2356)
fixes #2274
2026-03-18 22:37:11 +01:00
Mario Zechner
f951d45000 fix(coding-agent): stop updating packages on startup closes #1963 2026-03-18 03:26:46 +01:00
Mario Zechner
7eb55b08cf fix(coding-agent): reload keybindings on /reload closes #2309 2026-03-17 23:59:45 +01:00
Gabriel Goller
9fc11921e4 fix(coding-agent): skip tmux extended-keys warning when tmux is unreachable (#2311)
When running inside a sandbox (e.g., bubblewrap) that blocks access
to the tmux socket, the tmux query hangs and times out, returning
undefined. Previously this was treated as "extended-keys is off",
showing a false warning. Now we skip the warning when the tmux server
can't be reached.
2026-03-17 22:15:25 +01:00
Aliou Diallo
18d90b5c48 fix(coding-agent): handle empty session titles and session info metadata (#2304)
* fix(coding-agent): handle empty session titles in tree

* fix(coding-agent): ignore session info in summaries

* docs: update changelog for PR #2304
2026-03-17 16:22:04 +01:00
Mario Zechner
42d6a5461f fix(coding-agent): emit OSC 133 command-executed marker closes #2242 2026-03-17 12:56:44 +01:00
Mario Zechner
b752a6e0a1 fix(coding-agent): handle slash-delimited /model refs closes #2174 2026-03-15 16:41:06 +01:00
Markus Ylisiurunen
c9a3d14aa5 feat(tui): make select list column sizing configurable (#2154)
* feat(tui): make select list layout configurable

* feat(tui): tune select list column sizing

* test(tui): fix select list alignment assertions
2026-03-14 15:50:00 +01:00
Mario Zechner
80ca61a1c4 fix(coding-agent): start UI before session_start closes #2035 2026-03-14 05:48:38 +01:00
Mario Zechner
b6181bed92 fix(coding-agent): expand paste markers in ctx.ui.getEditorText(), closes #2084 2026-03-14 04:08:24 +01:00
Mario Zechner
ad11058e37 fix(coding-agent): use shell for external editor on windows closes #1925 2026-03-08 00:48:42 +01:00
Mario Zechner
d48843ea55 Pr 1724 (#1939)
* feat(coding-agent): add fold/unfold to tree branch navigation

Remap left/right arrow keys in the session tree to jump between branch
segment starts (first child of each branching point). Left on a foldable
node (root or segment start) folds it, hiding its descendants. Right on
a folded node unfolds it. Nested fold state is preserved. Search and
filter changes reset all folds.

Folded branches show ⊞ in the connector (├⊞/└⊞) or as a prefix for
roots. Active path marker • appears after the fold indicator.

Add Page Up/Down support for paging through the tree list, consistent
with session selector and config selector.

* feat(coding-agent): improve tree branch folding closes #1724

---------

Co-authored-by: Sviatoslav Abakumov <dust.harvesting@gmail.com>
2026-03-08 00:15:47 +01:00
Mario Zechner
9a8bc61300 fix(tui,coding-agent): handle tmux xterm extended keys and warn on tmux setup fixes #1872 2026-03-07 23:01:48 +01:00
Mario Zechner
e3adaf1bd9 fix(coding-agent): use strict JSONL framing fixes #1911 2026-03-07 14:34:27 +01:00
Mario Zechner
15b36cbee1 feat(coding-agent): preserve custom editor onEscape/onCtrlD handlers
Only set app-level handlers on custom editors if they haven't defined
their own. This allows custom editors (e.g. vim mode) to implement
custom escape handling instead of being overwritten.

Closes #1838
2026-03-06 16:41:12 +01:00
Mario Zechner
b13e080113 fix(coding-agent): clear header on /new closes #1880 2026-03-06 12:52:02 +01:00
Mario Zechner
daaabbeac5 fix(coding-agent): normalize CRLF in write preview rendering (fixes #1854) 2026-03-05 22:35:26 +01:00
lajarre
1f39cc776a feat(coding-agent): add treeFilterMode setting for /tree default filter (#1852)
Add configurable initial filter mode for the session tree navigator.
Users who always switch to a specific filter (e.g. no-tools via Ctrl+T)
can now set it as default in settings.

Same pattern as doubleEscapeAction (#404). Filter infra from #747.
2026-03-05 22:25:58 +01:00
Mario Zechner
3de8c48692 fix(coding-agent): make footer truncation width-aware
Use visibleWidth/truncateToWidth for footer path and stats truncation so wide Unicode text cannot overflow terminal width.

Add regression tests for wide session/model/provider names and document the fix in changelog.

closes #1833
2026-03-05 20:45:04 +01:00
Mario Zechner
e0754fdbb3 fix(ai,coding-agent): make pi-ai browser-safe and move OAuth runtime exports
- add browser smoke bundling check to root check + pre-commit

- lazy-load Bedrock provider registration to avoid browser graph traversal

- remove top-level OAuth runtime exports from @mariozechner/pi-ai

- add @mariozechner/pi-ai/oauth subpath export and update coding-agent imports

- move proxy dispatcher init to coding-agent CLI (Node-only)

- document Bedrock/OAuth browser limitations

closes #1814
2026-03-04 20:21:25 +01:00
Mario Zechner
e64cd15c25 fix(coding-agent): preserve session thinking for scoped model cycling
closes #1789
2026-03-04 19:51:55 +01:00
Mario Zechner
4cb1a56b53 fix(tui,coding-agent): add OSC 133 user message markers support closes #1805 2026-03-04 18:33:22 +01:00
Cody Bontecou
f710c2705d feat: add branchSummary.skipPrompt setting to skip summarization prompt (#1792)
When enabled, /tree navigation skips the 'Summarize branch?' prompt and
defaults to no summary, reducing friction for users who never want branch
summaries.

Closes #1791
2026-03-04 17:54:36 +01:00
waldner
b4f9986d23 fix(coding-agent): detect GNU screen TERM values and downgrade to 256color (#1809)
GNU screen does not support truecolor escape sequences. When pi emits
truecolor SGR sequences (e.g. \x1b[38;2;102;102;102m for the dim color
#666666), screen misparses the semicolon-separated parameters as
individual SGR codes. The RGB value 102;102;102 maps directly to
SGR 102 (bright green background), which then bleeds into every
subsequent \x1b[2K line-erase, producing a bright green background
on most info/status messages.

detectColorMode() now returns '256color' for any TERM value that is
'screen', starts with 'screen-' (e.g. screen-256color), or starts
with 'screen.' (e.g. screen.xterm-256color). The existing COLORTERM
check at the top of the function already handles the opt-in case for
users who have configured screen's truecolor passthrough.
2026-03-04 17:50:39 +01:00
Zhou Rui
d4084a7ad6 fix(coding-agent): propagate focus in extension editor for cursor positioning (#1784) 2026-03-03 21:58:45 +01:00
Jozsef Lazar
be66fe65bc fix(coding-agent): strip all control characters from session display text (#1747) 2026-03-03 14:30:45 +01:00
Aljosa Asanovic
b97310474b fix(coding-agent): remove extra spacer before streaming tool blocks 2026-03-02 10:22:51 -05:00
Aljosa Asanovic
480d6bc62d fix(coding-agent): allow suppressing custom tool transcript blocks 2026-03-02 10:22:41 -05:00
Aliou Diallo
0b4dea466d fix(coding-agent): ignore SIGINT while process is suspended (#1668)
Add a no-op SIGINT handler before sending SIGTSTP in handleCtrlZ().
Remove it on SIGCONT. Prevents Ctrl+C from killing the backgrounded
process.
2026-02-27 13:51:45 +01:00
Matteo Collina
757d36a41b fix(coding-agent): add offline startup mode and network timeouts (#1631) 2026-02-25 19:44:49 +01:00
Mario Zechner
f0379384fe feat(coding-agent): prioritize project resources over global 2026-02-24 23:50:55 +01:00
Mario Zechner
0c61dd5873 fix(coding-agent): incremental highlight for streaming write tool calls 2026-02-23 01:52:30 +01:00
Fero
6137de9ce7 fix(coding-agent): sync extension theme changes to session settings (#1483) 2026-02-23 00:57:36 +01:00
Mario Zechner
a26a9cfabd feat: add configurable transport and codex websocket session caching 2026-02-13 23:41:49 +01:00
Mario Zechner
ce2ba29333 fix(coding-agent): clear extension terminal input listeners on reset
closes #1293
2026-02-12 20:45:33 +01:00
Sam Fold
30fd99bd82 feat: add terminal input hook for extensions 2026-02-12 20:45:33 +01:00
Mario Zechner
7eb969ddb1 fix(coding-agent): show unknown context usage after compaction, fix multi-compaction boundary
After compaction, context token count is unknown until the next LLM
response. Instead of showing stale pre-compaction values or heuristic
estimates, the footer now shows ?/200k.

ContextUsage.tokens and ContextUsage.percent are now number | null
(breaking change). Removed usageTokens, trailingTokens, lastUsageIndex
from ContextUsage (internal details).

Also fixed _checkCompaction() using .find() (first compaction) instead
of getLatestCompactionEntry() (latest), which caused incorrect overflow
detection with multiple compactions.

Closes #1382
2026-02-12 18:35:09 +01:00
Mario Zechner
a6cd254471 fix(coding-agent): ensure rg is downloaded at startup alongside fd
rg was only downloaded lazily when the grep tool was invoked, but the
LLM often uses rg directly via the bash tool. Ensure both fd and rg
are downloaded at startup so they are available in PATH for all tools.

fixes #1348
2026-02-08 22:56:28 +01:00
Mario Zechner
e1b56c1d28 feat(coding-agent): add ctx.reload and reload-runtime example closes #1371 2026-02-08 15:34:47 +01:00
Kao Félix
6a3d6fe944 feat(tui, coding-agent): add pasteToEditor to ExtensionUIContext (#1351)
Add pasteToEditor(text) method that pastes text into the editor via
bracketed paste sequences, triggering paste handling (including collapse
for large content). Unlike setEditorText which directly replaces content,
pasteToEditor routes through handleInput on the active editor component.

- Add pasteToEditor to ExtensionUIContext interface
- Add handleInput to EditorComponent interface (was missing, all
  concrete implementations already had it)
- Implement in interactive mode via bracketed paste sequence
- Add fallback in RPC mode (delegates to setEditorText)
- Document in extensions.md
2026-02-07 15:55:08 +01:00
Sviatoslav Abakumov
828c40cf68 Fix the issue of aborting retries when an extension customizes the editor (#1364)
* fix(coding-agent): update test model from opus-4-5 to opus-4-6

* fix(coding-agent): delegate onEscape/onCtrlD/onPasteImage to defaultEditor

When an extension provides a custom editor via setEditorComponent(),
onEscape, onCtrlD, and onPasteImage were copied by value from
defaultEditor. Later, when retry/compaction/branch-summary temporarily
swapped defaultEditor.onEscape to an abort handler, the custom editor
still held the stale reference, so pressing Escape during retry did
nothing.

Use closures that delegate to defaultEditor at call time, matching the
pattern from f1b1d54 which fixed the same issue for onExtensionShortcut.
2026-02-07 15:50:01 +01:00
Sviatoslav Abakumov
3cf5e23c0d fix(coding-agent): propagate autocomplete to custom editors (#1372)
setupAutocomplete only sets the provider on defaultEditor. When an
extension customizes the editor via setEditorComponent during
session_start, the custom editor is created before setupAutocomplete
runs, so it never receives the autocomplete provider. This breaks forced
file suggestions, slash commands, and all other completions.

Set the provider on the active editor too when it differs from the
default, covering initial load, reload, and settings changes.
2026-02-07 15:48:18 +01:00
Mario Zechner
92fdb53c10 fix(coding-agent): run extension shutdown via clean TUI shutdown path 2026-02-06 21:37:35 +01:00
Mario Zechner
fe6f4d3a9d fix(coding-agent): respect quietStartup on /reload while keeping diagnostics (fixes #1336) 2026-02-06 18:30:53 +01:00