Commit Graph
5714 Commits
Author SHA1 Message Date
Vegard Stikbakke 9117326b4c fix(ai): forward Azure Responses tool choice 2026-08-18 07:56:51 +02:00
Armin Ronacher 209bc7b9a8 fix(ai): remove unused opentelemetry dependency 2026-08-17 23:45:51 +02:00
Armin Ronacher b82a374c7d fix(coding-agent): reduce redundant slow tests 2026-08-17 22:57:18 +02:00
Armin Ronacher 54d22b74b3 fix(coding-agent): reduce redundant git update tests 2026-08-17 22:22:35 +02:00
Cristina Poncela Cubeiro eb1f87fa9a fix(coding-agent/ai): anthropic refusal error and fallbacks (#8258) 2026-08-17 20:04:49 +02:00
Cristina Poncela Cubeiro 5e11f65865 fix(coding-agent): load nested markdown skills (#8255) 2026-08-17 19:59:55 +02:00
Cristina Poncela Cubeiro 1c28f3032e fix(ai): update cloudflare gateway sonnet test id (#8260) 2026-08-17 19:52:37 +02:00
David Brailovsky 6db110e6fa fix(ai): add Qwen Token Plan Individual DeepSeek V4 Pro 0813
Add deepseek-v4-pro-0813 to the Qwen Token Plan Individual allowlist and generated catalog. Fixes #8194.
2026-08-17 16:58:39 +02:00
David Brailovsky 87205484bf fix(ai): use Chinese ZAI Coding Plan catalog
Generate zai-coding-cn models from the matching zhipuai-coding-plan catalog and use available ZAI PAYG prices for usage estimates.

Fixes #8220
2026-08-17 16:24:31 +02:00
Vegard Stikbakke 0e4d495414 fix(ai,coding-agent): remove deprecated Xiaomi models
closes #8187
2026-08-17 14:43:48 +02:00
Cristina Poncela Cubeiro 10acee6045 fix(ai): bedrock response to include smithy headers (#8243) 2026-08-17 13:24:34 +02:00
Vegard Stikbakke af2c352238 fix(ai): honor Google thinking level maps
closes #8135
2026-08-17 13:10:55 +02:00
Cristina Poncela Cubeiro 1d08508ef6 fix(extension-examples): use agent_settled instead of end (#8242) 2026-08-17 13:10:23 +02:00
Cristina Poncela Cubeiro a6b1dbceb1 fix(extensions): emit compaction failed for extensions (#8241)
* fix(extensions): emit compaction failed

* changelog yeet
2026-08-17 13:10:08 +02:00
Armin Ronacher df018b6020 fix(coding-agent): retry hung model catalog requests
closes #8198
2026-08-17 12:55:56 +02:00
Cristina Poncela Cubeiro 080932e53c fix(package-manager): use semver.gt for version comparison (#8239) 2026-08-17 12:44:38 +02:00
Cristina Poncela Cubeiro d3e3bbc011 fix: llama.cpp allow network for model discovery (#8238) 2026-08-17 12:36:17 +02:00
Cristina Poncela Cubeiro a1bc0ec790 fix: llama.cpp guidance as no default (#8236) 2026-08-17 12:15:56 +02:00
Armin Ronacher 374e56e553 fix(tui): avoid duplicate VS Code right-click paste
closes #8186
2026-08-17 11:40:38 +02:00
Cristina Poncela Cubeiro 955a543b31 fix: expose sleeping llama.cpp models (#8235) 2026-08-17 11:40:11 +02:00
Vegard Stikbakke c7c763f5c4 fix(coding-agent): clarify truncated recovery failure
closes #8130
2026-08-17 11:03:07 +02:00
Poison 86d001d36b fix(ai): expose low thinking level for DeepSeek V4 Flash on opencode/opencode-go (#8181)
DEEPSEEK_V4_FLASH_THINKING_LEVEL_MAP (which enables the low effort level)
was only applied to deepseek/deepseek-v4-flash, so the same model served
through opencode and opencode-go only offered off/high/max. models.dev
reports reasoning_options effort values of low/high/max for these
providers, and the live opencode-go API accepts reasoning_effort=low
(verified against https://opencode.ai/zen/go/v1).

Apply the flash map to every deepseek-v4-flash variant on the deepseek,
opencode, and opencode-go providers. qwen-token-plan is left unchanged
since its gateway support for the low effort level is not verified.
2026-08-17 10:41:39 +02:00
Cristina Poncela Cubeiro f47faf459f fix: register flag type mismatch (#8123) 2026-08-17 09:42:51 +02:00
Cristina Poncela CubeiroandMario Zechner 8c2529daeb fix: dont load root mds as skills in settings (#8012)
* fix: dont load root mds as skills in settings

* changelogololol

---------

Co-authored-by: Mario Zechner <badlogicgames@gmail.com>
2026-08-17 09:37:37 +02:00
Cristina Poncela Cubeiro ca21c16861 fix: single edit input (#8011)
* fix: single edit input

* changelog go brrrr
2026-08-17 09:36:17 +02:00
Vegard Stikbakke 58302d34e7 feat(coding-agent): support compaction routing sessions 2026-08-17 07:34:52 +02:00
Vegard Stikbakke 47bf47f11f docs(coding-agent): clarify compaction paths 2026-08-17 07:10:50 +02:00
Cristina Poncela Cubeiro d3ab2af969 fix: track kimi cached tokens (#8119)
* fix: track kimi cached tokens

* changelog
2026-08-16 17:48:06 +02:00
Milosz JankiewiczandJaaneek 70e878d4cf feat(ai): route xAI models through Responses and default to Grok 4.6 (#8124)
* feat(ai): route xAI models through Responses and default to Grok 4.6

Send built-in xAI catalog models through the Responses API with
store: false and include reasoning.encrypted_content so encrypted
reasoning is requested and replayed, including future models.dev
additions. Thinking levels come from models.dev reasoning_options
(grok-4.6 exposes xhigh); models without verified options
(grok-build-0.1) keep reasoning always on and never send unsupported
"none"/"minimal" efforts. Narrow the xAI provider to the Responses API,
send pi's runtime User-Agent on xAI requests for provider-side
attribution, and make Grok 4.6 the default xAI model.

* fix(ai): drop duplicate xAI encrypted-reasoning tests

Azure already covers the shared replay path; keep the xAI-specific include-without-effort case next to the existing request tests.

---------

Co-authored-by: Jaaneek <Jaaneek@users.noreply.github.com>
2026-08-16 17:47:38 +02:00
Vegard Stikbakke 086c32e745 fix(ai): retry Copilot GET /models once on 429 during login
The login-time policy updates can drain the Copilot API rate-limit
bucket, in which case the follow-up GET /models is rejected with 429
(observed response: retry-after: 2, body 'too many requests') and login
aborts. Honor Retry-After and retry once instead of failing (#8121).
2026-08-15 07:33:05 +02:00
Vegard Stikbakke d5278eaac3 fix(ai): enable Copilot model policies sequentially during login
Batching policy POSTs at concurrency 4 still bursts 30 requests during
login, which trips the Copilot API rate limiter and makes the following
GET /models fail with 429, aborting login (#8121). Send the policy
updates one at a time instead.
2026-08-15 07:24:34 +02:00
github-actions[bot] b1efcf7d7c chore: approve contributors from issue #8124 2026-08-14 13:46:34 +00:00
Mario Zechner e429d90b80 fix(coding-agent): update Z.AI Coding Plan defaults
closes #8096
2026-08-14 13:07:48 +02:00
Armin Ronacher c36552212e agents: Adjust rules for changelog entries 2026-08-14 12:45:26 +02:00
David Brailovsky 0e0021fbbe Add [Unreleased] section for next cycle 2026-08-14 12:00:04 +02:00
David Brailovsky 914cf1472e Release v0.84.2 v0.84.2 2026-08-14 12:00:00 +02:00
David Brailovsky 9b4adc823f docs: audit changelogs since v0.84.1 2026-08-14 09:50:22 +00:00
David Brailovsky d10c974b94 docs: audit changelogs since v0.84.1 2026-08-14 11:47:05 +02:00
Panoplosand富永 誠 4caa3c440b fix(tui): route selection copy through the host clipboard (#8110)
TuiAltScreen.copySelectionToClipboard() wrote a bare OSC 52 sequence and
flashed "Copied!" unconditionally. Terminals that ignore OSC 52 clipboard
writes (macOS Terminal.app, VTE terminals, tmux without OSC 52 passthrough)
left the system clipboard untouched while the toast reported success.

Add an injectable copySelection option to TuiAltScreenOptions (an async
handler returning whether the copy succeeded) and use it when provided,
falling back to the existing OSC 52 write otherwise. The coding agent now
injects its native clipboard implementation (clipboard addon + pbcopy /
wl-copy / xclip / xsel), so selection copy reaches the real clipboard and
the toast only fires on verified success, with "Copy failed" otherwise.

Closes #7761

Co-authored-by: 富永 誠 <makoto@credify.one>
2026-08-14 11:46:46 +02:00
github-actions[bot] 48bd3f424d chore: approve contributors from issue #8092 2026-08-14 09:41:22 +00:00
Anders Bech Mellson ab0dc51fcf fix(coding-agent): use APP_NAME in user-facing messages (#8067)
APP_NAME is derived from piConfig.name so a rebranded distribution shows
its own name, and roughly 90 call sites already use it. Twelve
user-facing strings hardcoded "pi" instead, so those messages named the
upstream binary regardless of piConfig.name:

- the trust project folder prompt
- "Restart pi for this to take effect." after a saved trust decision
- the "Start without extensions" hint on an extension load failure
- the invalid session file error
- the executable location in the self-update-unavailable notice
- the three auth command usage strings and the unknown auth command
  error, which are printed next to `${APP_NAME} --help` in main.ts and
  so contradicted it
- "is configured outside pi." in the provider setup dialog
- the uncaughtException line

Output is unchanged for pi itself: piConfig has no name, so APP_NAME
falls back to "pi".
2026-08-14 11:26:20 +02:00
Mario Zechner 5093641a56 fix(ai): preserve Google length stops with tool calls
closes #8059
2026-08-14 11:25:40 +02:00
github-actions[bot] c5b7cd2a33 chore: approve contributors from issue #8063 2026-08-14 09:20:04 +00:00
github-actions[bot] f3c406a9b2 chore: approve contributors from issue #8018 2026-08-14 08:51:32 +00:00
github-actions[bot] 0589435e7d chore: approve contributors from issue #8007 2026-08-14 08:49:18 +00:00
Mario Zechner e14afc648e fix(coding-agent): collapse fallback tool output closes #7979 2026-08-14 10:22:36 +02:00
Mario Zechner 83aed2ba58 fix(tui): handle generic SGR mouse releases
closes #7963
2026-08-14 10:11:15 +02:00
Mario Zechner 6633618350 fix(coding-agent): update vulnerable nanoid dependency 2026-08-14 10:09:35 +02:00
github-actions[bot] 721e2768ee chore: approve contributors from issue #7973 2026-08-14 08:03:33 +00:00
alexsavio d268454e9c fix(examples): accept array-form tools in the subagent example (#7598)
`parseFrontmatter` runs a real YAML parser, so `tools: [read, bash]`
arrives as an array while `tools: read, bash` arrives as a string. The
loader only handled the string form and called `.split(",")`, which
throws on the array form.

The throw escapes `loadAgentsFromDir` -- only `readdirSync` and
`readFileSync` are guarded -- so one agent file using the array form
broke discovery for every agent in that scope, not just itself.

Normalize both spellings in one helper, and type the frontmatter fields
as `unknown` so the string assumptions are explicit. The previous
`parseFrontmatter<Record<string, string>>` annotation asserted a shape
the YAML parser never guarantees, which is what hid the mismatch from
tsc while `AgentConfig.tools` was already typed `string[]`.
2026-08-14 09:59:42 +02:00