@oh-my-pi/pi-agent-core
Added
- Added support for Anthropic fallback content blocks in agent-loop assistant messages, ensuring they are preserved across session persistence and event fanout.
Fixed
- Fixed an issue where legacy steering messages were prematurely consumed and dropped during in-flight tool execution polls.
- Fixed an issue where skipped tool results in queued messages were incorrectly treated as completed, preventing necessary retries.
- Improved branch summaries to preserve informative tool results from abandoned branches while filtering out redundant output.
- Fixed interruptible tool waits to properly abort on host-provided IRC interrupts in addition to user steering.
- Fixed schema validation errors for closed union tools by correctly injecting intent tracing into each variant.
- Fixed token compaction reserve-budget logic to honor explicit reserveTokens values equal to the built-in default, and clamped the fallback reserve to at least one token for very small context windows.
@oh-my-pi/pi-ai
Added
- Added opt-in support for Anthropic's server-side fallback beta (server-side-fallback-2026-06-01) on the anthropic-messages provider, including support for AnthropicOptions.fallbacks and automatic filtering of fallback blocks during cross-provider message transformations.
Changed
- Improved stream healing for official first-party endpoints (Anthropic, OpenAI, and OpenAI Codex) by skipping leaked-thinking healing, preventing misfires on legitimate code blocks while maintaining healing for third-party gateways and custom base URLs.
- Updated CoreWeave Serverless Inference login instructions to clarify persisting COREWEAVE_PROJECT in shell startup files.
Fixed
- Fixed an issue where same-model Anthropic message replays incorrectly demoted unsigned thinking into textual content during API calls
- Fixed a performance issue where broker usage fetch failures were not cached, causing redundant network requests when the broker is offline.
- Fixed Xiaomi MiMo API key validation to use the supported mimo-v2.5 model.
- Fixed certificate verification errors for custom gateways behind private CA bundles by ensuring NODE_EXTRA_CA_CERTS is respected across all provider fetches.
- Fixed Claude Fable demoted-thinking replay to use markdown-italic assistant prose instead of tags, preventing context issues after model switches.
- Fixed OpenAI Responses replay errors (400 Bad Request) caused by missing reasoning items during history replay.
@oh-my-pi/pi-catalog
Breaking Changes
- Renamed the
requiresJuiceZeroHackcompatibility flag torequiresReasoningSuppressionPrompt(affectingOpenAICompatandResolvedOpenAIResponsesCompat) and removed the unused"juice-zero-developer-message"member fromOpenAIReasoningDisableMode.
Fixed
- Fixed stream markup healing pattern misfires by disabling the healer on the official OpenAI endpoint.
- Updated the Xiaomi provider's default model to the supported
mimo-v2.5model. - Fixed model discovery probes (including Ollama and metadata fetches) failing behind private-CA gateways by ensuring they honor the
NODE_EXTRA_CA_CERTSenvironment variable. - Fixed CoreWeave Serverless Inference project-header detection to ensure blank OpenAI-Project overrides do not block the
COREWEAVE_PROJECTfallback. - Fixed LiteLLM MiniMax M3 discovery to remove reseller-only display suffixes and invalidated the model cache to clear stale suffixes immediately.
- Fixed ZenMux's
anthropic-messagesproxy being misclassified as a non-signing reasoning endpoint (replayUnsignedThinking: true), matching the GitHub Copilot fix (#2851). ZenMux'szenmux.ai/api/anthropicroute forwards to signature-enforcing Anthropic, so replaying a stripped/unsigned historicalthinkingblock assignature: ""— most visibly an end_turn-bound checkpoint/branch-return turn whose signature the transform must strip — caused400 messages.1.content.0: Invalid signature in thinkingon Claude Sonnet 5 and other reasoning models. (#4192)
@oh-my-pi/pi-coding-agent
Added
- Added
providers.anthropic.serverSideFallbackconfiguration option to opt into Anthropic's server-side-fallback beta chain, allowing Claude requests to automatically retry on alternative models when blocked by classifiers. - Added
task.softRequestBudgetNoticeconfiguration option to enable subagent soft-budget wrap-up steering notices while keeping the graceful abort guard active.
Changed
- Significantly optimized session loading and rendering performance, including a 10x speedup for streaming reveals on large messages, 35% faster session resumes for large files using native streaming JSONL parsing, and reduced overhead for edit-patch fallbacks.
- Improved TUI responsiveness and reduced CPU usage during long-running tool sessions by throttling status-line redraws and optimizing subagent persistence checks.
- Updated the tester subagent prompt to allow skipping tests for trivial changes.
- Improved DuckDuckGo web search error clarity and documented datacenter/shared-egress limitations in provider settings.
Fixed
- Fixed session persistence corrupting Anthropic, OpenAI, and Google signed thinking blocks and reasoning payloads, ensuring cryptographic signatures and encrypted content are preserved verbatim to prevent API replay rejections (HTTP 400).
- Fixed several issues with the
apply_patchand edit tools, including preventing dirty buffers on early aborts, rejecting overwrites of pre-existing files, stopping at the first failing file in multi-file operations, and pruning extremely large file snapshots to prevent session inflation. - Fixed process termination (SIGTERM, SIGHUP, uncaught exceptions) to ensure editor drafts are saved, sessions shut down cleanly, and background jobs are cleaned up.
- Fixed
/quitand/exitcommands blocking session closure by introducing a shutdown budget and backgrounding remaining tasks. - Fixed git clone and fetch operations being killed prematurely by applying a separate 30-minute deadline for network transfers instead of the standard 5-minute local-command timeout.
- Fixed git index corruption issues in
mergeTaskBranchesandapplyNestedPatcheswhen post-merge stash pops conflicted with the cherry-picked HEAD. - Fixed collaboration (
/collab) issues, including preventing teardowns from cancelling active host dialogs, sanitizing host-delivered errors for guests, and ensuring guest UI requests are correctly routed and rendered. - Fixed RPC mode deferred shutdown (
pi.shutdown()) andabort_bashcommands from being blocked by active background bash processes. - Fixed model discovery ignoring
NODE_EXTRA_CA_CERTSand resolved a rare Bun garbage collection segfault during discovery. - Fixed
task.maxConcurrencyandtask.maxRecursionDepthlimits being bypassed by sub-spawn paths or when queued spawns were cancelled. - Fixed various TUI and rendering issues, including macOS Ghostty
Command+Vimage pasting, CJK history rendering across compactions, status-line redraw crashes with BigInt values, and overlapping rows in the subagent progress tree. - Fixed
/copy codeand/copy cmdcommands being treated as normal prompts instead of copying the requested blocks. - Fixed legacy tool compatibility issues for
createReadTool,createGrepTool, and extension validation failures foromp install pi-lean-ctx. - Improved robustness of MCP authentication error detection, Smithery command authorization failures, and streaming preview responsiveness for write, edit, and eval tools.
- Fixed llama.cpp router/preset mode reporting 128k context in the status bar for every preset picked from
/modelregardless of the preset's configured--ctx-size. - Fixed post-rewind context to tell the agent the checkpoint completed and to make repeat
rewindcalls recover with guidance instead of a bare no-checkpoint error. - Fixed grep/ast_grep search scopes rejecting
www.and collapsed-scheme (https:/host) URL spellings. - Fixed ctrl+p role-model cycling getting stuck on one transition and skipping every other role.
- Fixed interactive bash status line not updating after directory changes (cd).
- Fixed session title refreshes ignoring user
TITLE_SYSTEM.mdoverrides during replans, and prevented auto-generated titles from incorrectly preserving all-caps text from user messages. - Fixed the live todo HUD going stale during long tool-use loops by adding mid-run reminders for incomplete items.
- Fixed
/shakeand mid-stream chat rebuilds erasing active LLM output. - Fixed Tavily web search to retry without recency filters if no content is returned.
- Fixed user-configured LiteLLM discovery providers keeping stale reseller display-name suffixes for up to 24 hours after upgrade by invalidating the warm model cache.
@oh-my-pi/collab-web
Fixed
- Fixed missing response controls for "ask" questions in the mobile collaboration web UI.
- Fixed an issue where re-sending an editor "ask" request would clear a guest's in-progress draft response.
- Fixed infinite retry loops in the agent transcript drawer by ensuring terminal errors are displayed and polling stops.
- Fixed a delay in displaying pre-welcome connection errors (such as protocol version rejections), allowing the session to terminate immediately with the host's error reason.
@oh-my-pi/hashline
Changed
- Significantly improved performance on large files by optimizing stale-anchor remap validation.
Fixed
- Fixed an issue where snapshot tag collisions could cause line-anchored edits to be incorrectly applied to unrelated content, improving recovery and edit-preview safety.
- Fixed tracking of edit anchors when earlier in-session insertions or deletions shift unchanged target lines.
- Fixed hashline edit guidance and parsing errors for Markdown list rows.
@oh-my-pi/pi-natives
Added
- Added
workingDirtoShellRunResultto allow hosts to synchronize the session's current working directory without executing a hidden probe command.
Fixed
- Fixed an issue where panics in native worker tasks (such as grep, AST parsing, globbing, workspace listing, HTML-to-markdown conversion, fuzzy finding, and clipboard image reading) would abort the host process instead of properly rejecting the returned JavaScript Promise.
- Fixed a crash on Windows under low memory or commit charge conditions when spawning worker threads for token counting or sorting operations.
@oh-my-pi/pi-tui
Fixed
- Fixed a potential event loop hang when processing oversized, unterminated terminal escape sequences (OSC/DCS/APC).
- Fixed an issue where large Windows terminal session restores could get truncated mid-frame during ConPTY full-paint resume.
@oh-my-pi/pi-utils
Added
- Added
wrapFetchForExtraCaandwithExtraCaFetchutility functions to applyNODE_EXTRA_CA_CERTSto Bun'sRequestInit.tls.caconfiguration.
@oh-my-pi/pi-wire
Breaking Changes
- Upgraded the collaboration protocol to version 3. Guests using version 2 will now be rejected during the handshake with a protocol-mismatch error.
Added
- Added support for interactive UI request and response frames, enabling browser guests to respond to prompts initiated by the host.
What's Changed
- perf(tui): memoize fuzzy search index + prepare query once per filter by @oldschoola in #3828
- fix(web-search): clarify DuckDuckGo bot detection failures by @roboomp in #3865
- fix(coding-agent): handle BigInt tool-call fingerprints by @wolfiesch in #3884
- fix(coding-agent): replay scrollback on theme changes by @lederniermagicien in #3891
- fix(cli): restore /copy code and /copy cmd shortcuts by @roboomp in #3894
- fix(task): respect task.maxConcurrency + task.maxRecursionDepth across spawn paths by @roboomp in #3896
- fix(agent): reject stale yield labels for override schemas by @roboomp in #3927
- fix(collab): reject oversized remote transcript entries by @roboomp in #3938
- fix(coding-agent): sync status cwd after bash cd by @roboomp in #3959
- fix(eval): keep agent progress commit-unstable while partial by @metaphorics in #3987
- fix(collab): enable mobile ask responses by @roboomp in #4049
- fix(auth-broker): cache /v1/usage failures for documented 15s TTL by @roboomp in #4053
- docs(advisor): describe full-agent tool grants and WATCHDOG.yml roster by @roboomp in #4054
- fix(tui): smooth write streaming previews by @roboomp in #4056
- fix(providers): switch Xiaomi validation to mimo-v2.5 by @roboomp in #4066
- fix(agent): add retry path diagnostics by @roboomp in #4077
- fix(natives): catch task::blocking panics before FFI to reject JS Promise by @roboomp in #4110
- fix(edit): guard apply_patch against clobber and swallowed multi-file failures by @roboomp in #4111
- fix(agent): preserve tool results in branch summaries by @roboomp in #4112
- fix(hashline): guarded against 16-bit snapshot tag collisions by @roboomp in #4113
- fix(coding-agent): bound git subprocess execution by @roboomp in #4116
- fix(rpc): dispatch bash concurrently and reset abort controller on restart by @roboomp in #4117
- fix(coding-agent): route SIGTERM/SIGHUP/uncaughtException through session teardown by @roboomp in #4121
- fix(tui): bound terminal input parsing so malformed sequences and non-bracketed pastes do not block the event loop by @roboomp in #4122
- test(tui): pin committed-prefix resync earliest-mismatch contract by @roboomp in #4126
- fix(coding-agent): preserved explicit :auto suffix in modelRoles by @roboomp in #4129
- fix(agent): handle already-applied patch-mode merges by @roboomp in #4137
- fix(coding-agent): fall back for Kernel field when os.version returns "unknown" by @roboomp in #4143
- fix(tui): coalesce editor top-border rebuild to render tempo (#4145) by @roboomp in #4149
- fix(ai): reword GPT-5 Responses fallback prompt by @roboomp in #4153
- fix(coreweave): harden project header setup by @lance0 in #4154
- fix(coding-agent): paint selectedBg band on focused HookSelector row by @roboomp in #4158
- fix(agent): interrupt waits for IRC delivery by @roboomp in #4161
- fix(agent): preserve approved plan path by @roboomp in #4166
- fix(tui): cap subagent live progress output by @roboomp in #4167
- fix(session): record silent exit diagnostics by @roboomp in #2607
- fix(tool): require browser run code in schema by @roboomp in #3647
- fix(tools): materialize URL paths for search scopes by @roboomp in #3650
- fix(coding-agent): nudge todo reconciliation mid-run instead of only at stop by @roboomp in #3652
- fix(tui): keep ask Other context visible by @roboomp in #3662
- fix(setup): harden global omp symlink against bun pm -g bin failure by @roboomp in #3702
- fix(catalog): strip LiteLLM reseller usage suffixes by @roboomp in #3717
- fix(ai): honor NODE_EXTRA_CA_CERTS on every provider fetch by @roboomp in #3732
- fix(coding-agent): replan title refresh honors TITLE_SYSTEM.md override by @roboomp in #3736
- fix(session): compaction summary at chronological position in collapsed transcript by @DarkPhilosophy in #3759
- fix(natives): cap rayon pool on Windows by @roboomp in #3774
- Fix hidden thinking glyph-only status rows by @jeffscottward in #3776
- fix(hashline): recover stale edit anchors after line shifts by @roboomp in #3778
- fix(plugins): restore legacy tool factory shim by @roboomp in #3809
- perf(coding-agent): memoize incremental grapheme slicing in streaming reveal by @oldschoola in #3848
- perf(coding-agent): speed up large-session resume with Bun.JSONL by @oldschoola in #3849
- fix(coding-agent): log Esc/Ctrl+C abort failures instead of swallowing them by @oldschoola in #3851
- fix(agent): clarify queued skipped tool results by @wolfiesch in #3855
- perf: cut edit-pipeline and session-branch hot-path complexity by @oldschoola in #3862
- fix(coding-agent): identify user-invoked skills and expose skill directory by @metaphorics in #3903
- fix(coding-agent/task): keep .git/index clean when stash pop conflicts after task merge by @roboomp in #4176
- fix(tui): support command-v image paste in ghostty by @roboomp in #4180
- fix(edit): teach markdown bullet escaping by @roboomp in #4181
- fix(ai): handle Anthropic Fable fallback responses by @roboomp in #4182
- feat/make token info nicer by @DeprecatedLuke in #4185
- fix(model-discovery): honor --ctx-size for llama.cpp router presets by @roboomp in #4191
- fix(agent): frame completed rewind context by @roboomp in #4188
- fix(catalog): treated zenmux anthropic proxy as a signing endpoint by @roboomp in #4193
New Contributors
- @jeffscottward made their first contribution in #3776
Full Changelog: v16.2.13...v16.3.0