v0.84.2
Added 9
- Add fullscreen transcript search with Ctrl+Shift+F, incremental match highlighting, configurable search match theme colors, and next/previous navigation with Enter/Ctrl+G and Shift+Enter/Ctrl+Shift+G
- Add experimental strict JSON-schema constrained sampling for the default read, bash, edit, and write tools under PI_EXPERIMENTAL=1
- Add a fullscreen exit output setting to choose between printing the final transcript and only a session resume hint
- Add the defaultTools setting for configuring the initial built-in tool selection globally or per project
- Add --use-theme <name[/name]> to choose an initial per-run interactive theme without changing saved settings
- Add expandPromptTemplates to extension pi.sendUserMessage() options for explicitly dispatching commands and expanding skills and prompt templates
- Add inherited createGatewayBindingFetch() for routing Cloudflare AI Gateway requests through a Workers AI binding without an API token
- Add inherited AssistantMessage.endTurn to preserve OpenAI Codex's terminal end_turn signal for diagnostics
- Add inherited unbound single-line transcript scrolling actions for fullscreen mode
Changed 4
- Change inherited Kimi Coding requests to use pi's runtime User-Agent header
- Replace the inherited Mistral SDK transport with a native Chat Completions HTTP stream, eliminating its generated client and schema runtime overhead
- Change inherited OpenAI Responses deferred tool loading to prefer message-anchored additional_tools where supported while retaining tool-search and top-level fallbacks
- Reduce inherited fullscreen rendering allocation churn by painting full-width layout rows directly instead of recompositing them on every frame
Fixed 6
- Fix managed-tool downloads delaying TUI startup and hiding diagnostics in fullscreen mode by mounting the TUI first and showing download progress and warnings inside it
- Fix opening a model selector immediately after startup cancelling and restarting the in-progress model catalog refresh
- Fix inherited GitHub Copilot login triggering API rate limits while enabling model policies by limiting concurrent policy updates
- Fix fullscreen transcript search snapping back to the current match during manual scrolling and fragmented mouse input leaking into the search query
- Fix inherited required LaTeX arguments starting on a new line being parsed as empty
- Fix fallback rendering for extension tool results to collapse long output and honor tool expansion
Security 1
- Update the transitive nanoid development dependency to address a denial-of-service vulnerability
New Features
- Fullscreen transcript search — Search and navigate matches in fullscreen mode. See TUI Fullscreen Viewport.
- Configurable default tools — Choose startup built-in tools globally or per project. See Tools.
- Configurable fullscreen exit output — Print the transcript or only a resume hint on exit. See Interactive Mode.
Added
- Added fullscreen transcript search with
Ctrl+Shift+F, incremental match highlighting, configurable search match theme colors, and next/previous navigation withEnter/Ctrl+GandShift+Enter/Ctrl+Shift+G. - Added experimental strict JSON-schema constrained sampling for the default
read,bash,edit, andwritetools underPI_EXPERIMENTAL=1. - Added a fullscreen exit output setting to choose between printing the final transcript and only a session resume hint.
- Added the
defaultToolssetting for configuring the initial built-in tool selection globally or per project. - Added
--use-theme <name[/name]>to choose an initial per-run interactive theme without changing saved settings (#7722 by @rwachtler). - Added
expandPromptTemplatesto extensionpi.sendUserMessage()options for explicitly dispatching commands and expanding skills and prompt templates. Seepi.sendUserMessage()(#7857 by @mrexodia). - Added inherited
createGatewayBindingFetch()for routing Cloudflare AI Gateway requests through a Workers AI binding without an API token (#7901 by @Maximo-Guk). - Added inherited
AssistantMessage.endTurnto preserve OpenAI Codex's terminalend_turnsignal for diagnostics (#7766). - Added inherited unbound single-line transcript scrolling actions for fullscreen mode. See TUI Fullscreen Viewport (#7903 by @midastruth).
Changed
- Changed inherited Kimi Coding requests to use pi's runtime
User-Agentheader. - Replaced the inherited Mistral SDK transport with a native Chat Completions HTTP stream, eliminating its generated client and schema runtime overhead.
- Documented the generic
AI_AGENT=piprocess marker and how it differs fromPI_CODING_AGENT=true(#7747). - Changed inherited OpenAI Responses deferred tool loading to prefer message-anchored
additional_toolswhere supported while retaining tool-search and top-level fallbacks (#7709). - Reduced inherited fullscreen rendering allocation churn by painting full-width layout rows directly instead of recompositing them on every frame.
Fixed
- Fixed managed-tool downloads delaying TUI startup and hiding diagnostics in fullscreen mode by mounting the TUI first and showing download progress and warnings inside it.
- Fixed opening a model selector immediately after startup cancelling and restarting the in-progress model catalog refresh.
- Fixed inherited GitHub Copilot login triggering API rate limits while enabling model policies by limiting concurrent policy updates (#6187).
- Fixed fullscreen transcript search snapping back to the current match during manual scrolling and fragmented mouse input leaking into the search query.
- Fixed inherited required LaTeX arguments starting on a new line being parsed as empty (#7760).
- Updated the transitive
nanoiddevelopment dependency to address a denial-of-service vulnerability. - Fixed fallback rendering for extension tool results to collapse long output and honor tool expansion (#7979).
- Fixed JSON and RPC
message_updateevents dropping cumulative usage during streaming. See JSON Event Mode and RPCmessage_update(#7982 by @christianklotz). - Fixed
pi.sendMessage(..., { triggerTurn: false })steering an active run instead of only recording the custom message (#8022 by @cristinaponcela). - Fixed the
defaultToolssetting dropping extension and SDK custom tools when selecting built-in defaults. - Fixed the subagent example rejecting YAML array syntax for the
toolsfrontmatter field (#7598 by @alexsavio). - Fixed the subagent example dropping parent session model, thinking, and tool configuration (#7897 by @virtuald).
- Fixed custom system prompts concatenating the current working directory with later appended prompt content (#7887 by @distributedlock).
- Fixed inherited OpenAI Responses function and custom tool calls losing namespaces during streaming, proxying, and replay (#7709).
- Fixed inherited upstream request buffer failures not triggering automatic assistant retries.
- Fixed inherited built-in and custom DeepSeek API models sending output limits through an unsupported field.
- Fixed inherited Amazon Bedrock replay rejecting tool arguments that contain empty object keys while preserving all valid nested values (#7882 by @muyiyr).
- Fixed inherited DeepSeek compatibility detection for base URLs whose hostname contains uppercase letters (#7933 by @yearth).
- Fixed inherited Google Generative AI and Vertex AI responses with tool calls incorrectly treating output-limit or provider-error stops as normal tool use (#8059).
- Fixed inherited fullscreen mouse drag selection and OSC 8 link activation in terminals that report generic SGR mouse release button codes (#7963).
- Fixed inherited focused fullscreen overlays not receiving mouse wheel or viewport scroll keys such as PageUp and PageDown (#7894).
- Fixed inherited LaTeX control spaces split across line endings causing complete expressions to fall back to raw source.
- Fixed split
Alt+Enterinput over SSH being misread as Escape, addedPI_TUI_ESC_TIMEOUTfor high-latency terminals, and limited that timeout to lone Escape input (#7899 by @powerfooI). - Fixed inherited idle fullscreen sessions repainting and clearing text selection when the terminal loses focus (#7892 by @terrorobe).
- Fixed fullscreen selection copy to use the host clipboard and report failure instead of claiming success when OSC 52 is unsupported (#8110 by @Panoplos).