@oh-my-pi/pi-ai
Changed
- Improved streaming performance for Cursor and Devin providers by optimizing mid-stream tool-call argument parsing to prevent UI stalls when handling large payloads.
Fixed
- Fixed issues with tool call streaming where tool call IDs, partial JSON payloads, or late-arriving IDs could be lost, filtered, or incorrectly initialized.
- Fixed an issue where stream healing for leaked thinking blocks could replace live tool-call blocks with empty-id placeholders, breaking streamed tool arguments on Anthropic-compatible streams.
- Fixed an issue where stalled auth-gateway SSE responses could hang indefinitely in pi-native streams by ensuring first-event and idle timeout watchdogs are properly honored.
- Fixed cross-turn tool-call loops going undetected by adding a guard for consecutive identical tool calls. (#3971)
@oh-my-pi/pi-catalog
Breaking Changes
- Removed runtime canonical-equivalence APIs from the identity module, including resolveCanonicalVariant, buildCanonicalModelOrder, CanonicalVariantPreferences, and getBundledCanonicalReferenceData. These utilities have been transitioned to a build-time generator script and are no longer exposed in the runtime bundle.
@oh-my-pi/pi-coding-agent
Breaking Changes
- Removed the canonical-alias grouping and resolution layer. The
equivalencekey (overrides/exclude) inmodels.yml/models.jsonis now inert, and canonical-related methods have been removed fromModelRegistry. - Removed the "CANONICAL" tab from the interactive model selector and the
omp models canonicalsubcommand.
Changed
- Simplified model selection and matching by resolving bare model IDs in
--model,modelRoles, andenabledModelsvia exact/flat-ID and provider-preference matching instead of cross-spelling canonical coalescing. - Improved cold start performance by removing the catalog-wide canonical index build from the startup path.
Fixed
- Fixed the write tool not streaming execution progress to the TUI while files are being written.
- Fixed live tool-call argument previews disappearing while arguments stream.
- Fixed the LSP tool ignoring timeouts and abort signals during cold-starts and notification writes.
- Fixed the browser tool leaking Chromium/Puppeteer processes when operations are aborted or when an agent session is disposed.
- Added a configurable 30-second timeout (
extensionHandlerTimeoutMs) to extension tool call handlers to prevent hung third-party extensions from blocking execution, and fixed a timer leak keeping the CLI alive. - Fixed the built-in
fdtool ignoring shell cancellation (such as Ctrl-C or timeouts) during directory walks. - Fixed MCP stdio requests hanging indefinitely past their configured timeouts when the child subprocess stops draining stdin.
- Fixed Python eval shell helpers buffering child-process output by streaming chunks and truncating oversized output.
- Fixed cached model edit variants failing to update when changing project directories.
- Fixed subagents with structured output schemas failing validation by correctly wrapping the schema in the system prompt.
- Fixed MCP Streamable HTTP request and notification timeouts staying unarmed during stalled response body reads.
- Fixed evaluation and task spawn defaults to respect restricted agent spawn lists.
- Fixed timed-out
browser.runcalls leaving evaluated JavaScript continuations running. - Fixed performance degradation in session context and branch path reconstruction on deep linear histories.
- Fixed agents repeating the same tool call across turns without corrective steering by wiring the cross-turn tool-call loop guard into sessions.
- Fixed OpenAI-compatible model discovery (including LM Studio) reporting flat default context windows when proxies omit context length metadata, by resolving discovered IDs against the bundled model reference catalog to inherit accurate context windows, output limits, display names, modalities, and reasoning support.
@oh-my-pi/pi-tui
Fixed
- Optimized streaming markdown rendering to reuse already-rendered prefix lines and only render new content deltas, improving performance and reducing redraw flicker.
What's Changed
- fix(extensions): bound tool_call handlers by extensionHandlerTimeoutMs by @roboomp in #3951
- fix(ai/providers): throttle Cursor and Devin tool-call arg parsing by @roboomp in #3952
- fix(pi-shell): wire fd directory walk to observe scope cancellation by @roboomp in #3954
- fix(ai): add pi-native stream timeouts by @roboomp in #3955
- fix(mcp): route stdio write/flush failures without parking request() by @roboomp in #3956
- fix(eval): bound Python shell helper output by @roboomp in #3957
- fix(coding-agent): stream write tool progress in TUI by @roboomp in #3965
- fix(session): linearize session path rebuilds by @roboomp in #3966
- fix(lsp): honor tool signal in cold-start initialize and notification writes by @roboomp in #3967
- fix(browser): reap Chromium/Puppeteer on aborted open and session dispose by @roboomp in #3968
- fix(browser): stop stale timed-out browser runs by @roboomp in #3970
- fix(mcp): keep HTTP timeout active through body reads by @roboomp in #3978
- fix(task): respect restricted spawn defaults by @roboomp in #3979
- fix(tui): cache streaming markdown prefix renders by @roboomp in #3980
- fix(agent): detect repeated tool-call turns by @roboomp in #3981
- fix(coding-agent): resolve bundled reference in discoverOpenAIModelsList by @roboomp in #3986
Full Changelog: v16.2.11...v16.2.12