github earendil-works/pi v0.84.3

3 hours ago

New Features

  • PowerShell tool — Use optional native PowerShell command execution on Windows. See PowerShell Tool.
  • Safer managed updates — Stage, verify, and atomically activate updates for installer-managed installations. See Install and Manage.
  • Model and thinking controls — Select thinking levels with /thinking, search defaults, keep selections session-scoped, and persist them explicitly with Ctrl+S. See Models and Thinking.

Breaking Changes

  • Renamed the inherited GoogleThinkingLevel type to GoogleApiThinkingLevel and added ResolvedGoogleThinkingLevel for normalized adapter levels.

Added

  • Added an optional powershell tool for Windows, configurable through defaultTools and the SDK. See PowerShell Tool.
  • Added a /thinking selector and searchable default choices to the model and thinking selectors; Ctrl+S saves the selected model as the global default. See Models and Thinking.
  • Added optional routing session IDs to exported compaction summary helpers so callers can preserve provider routing without enabling prompt cache writes.
  • Added transcript usage notices for compaction and branch summaries when cache miss notices are enabled.
  • Added session_compact_failed extension events so compaction failures and aborts expose their reason, retry state, source, and error message to handlers (#8175).
  • Added inherited provider-neutral toolChoice support to simple stream requests.
  • Added inherited automatic Anthropic server-side refusal fallback for supported first-party models, including returned-model usage pricing (#8017).
  • Added inherited configurable OpenAI-compatible thinking-token budget fields for vLLM, Qwen/SGLang, and llama.cpp servers. See OpenAI Compatibility (#8275 by @bnsd55).
  • Added inherited China-specific ZAI Coding Plan models, including GLM-4.6V vision support and API-equivalent usage cost estimates (#8220).
  • Added inherited deepseek-v4-pro-0813 support to the Qwen Token Plan Individual catalog (#8194).

Changed

  • Changed experimental installer-managed installations so pi update stages, verifies, and atomically activates the selected release in place. See Install and Manage.
  • Changed inherited built-in xAI models to use the Responses API with encrypted reasoning replay and made Grok 4.6 the default xAI model (#8124 by @Jaaneek).
  • Changed inherited Anthropic, Azure OpenAI, Google, Mistral, and OpenAI adapters to send Pi's default User-Agent unless overridden (#8305).
  • Changed Windows and WSL keybinding defaults to avoid terminal-reserved shortcuts for image paste, model cycling, editor undo, fullscreen transcript navigation and search, and message queueing (#8372).
  • Changed Bun release archives to ship the native clipboard binary only inside the wrapper package, removing a duplicate platform package from each archive.
  • Changed package resource glob expansion to use Node.js's built-in implementation with deterministic visible-path matching, reducing the installed runtime dependency tree.
  • Changed the bundled Node.js runtime to load jiti only when importing an extension and Babel only when uncached source needs transformation, reducing CLI startup time and bundle size.
  • Changed syntax highlighting to initialize only twenty common languages eagerly and defer the remaining grammars until after the initial TUI render, reducing CLI startup time.
  • Changed the Node.js CLI and RPC entrypoints to load a bundled runtime, reducing startup filesystem reads while keeping the public library and legacy module paths on the modular runtime for normal dependency identity.
  • Changed session sharing to render clickable terminal links, display only the canonical Radius artifact URL, and include the current system prompt and active tool definitions in Radius session shares.

Fixed

  • Fixed failed extension factories leaving event subscriptions, provider registrations, and default flag state active (#8424 by @acmerfight).
  • Fixed models.json typings omitting the documented OpenAI-compatible compat.supportsFinishReason provider and model override (#8487 by @petrroll).
  • Fixed /model and /thinking selections being persisted globally unless explicitly saved with Ctrl+S (#5263).
  • Fixed JSON and RPC toolcall_start events omitting the tool call id and name (#7953 by @christianklotz).
  • Fixed extensions failing to load when the Node.js CLI runs as a single-executable application (#8237).
  • Fixed nested Markdown skills inside .agents/skills/ grouping directories not being discovered.
  • Fixed compaction and branch summarization requests exposing tools to providers.
  • Fixed single-object edit tool inputs failing validation by accepting them as one-edit arrays in both coding-agent and harness edit tools (#7835).
  • Fixed root Markdown files such as README.md and AGENTS.md in skill directories being reported as broken skills unless they declare valid skill frontmatter (#7805).
  • Fixed the default Cerebras model referencing an unavailable Z.AI model.
  • Fixed inherited OpenAI-compatible Chat Completions reasoning replay to preserve and resend assistant-level reasoning_details verbatim and in order (#7994).
  • Fixed inherited Anthropic server-side fallback responses being priced with the requested model instead of the returned fallback model (#8285).
  • Fixed inherited GitHub Copilot login triggering model-policy rate limits by limiting policy updates, retrying model discovery once, and honoring server retry delays (#7850).
  • Fixed inherited Amazon Bedrock dropping and failing to replay opaque redacted reasoning from non-Anthropic models (#8314 by @seiji).
  • Fixed inherited Z.AI Coding Plan models deriving incomplete reasoning-effort metadata, including missing GLM-5.3 low, high, and max levels (#8336).
  • Fixed inherited DeepSeek V4 Flash on OpenCode and OpenCode Go omitting its supported low thinking level (#8181 by @tianshuang).
  • Fixed inherited Azure OpenAI Responses ignoring toolChoice in provider-specific stream requests.
  • Fixed inherited Amazon Bedrock response hooks receiving only a synthesized request id instead of the raw response headers (#8234).
  • Fixed inherited Kimi usage reporting so top-level cached_tokens count as cache reads instead of normal input tokens (#8075).
  • Fixed inherited Google custom models ignoring thinkingLevelMap, which dropped extended thinking controls (#8135).
  • Fixed writes to auth.json and models-store.json overriding administrator-managed file permissions and ACLs (#7779).
  • Fixed UTF-8 BOM markers preventing frontmatter and user configuration files from loading (#8337).
  • Fixed invalid settings files being easy to miss during interactive startup by rendering warnings with the file path inside the TUI (#7829).
  • Fixed the subagent example repeatedly prompting before running project-local agents in trusted repositories (#8261).
  • Fixed npm package update checks treating older registry versions as available updates, preventing pi update from downgrading already-newer installed packages (#8226).
  • Fixed built-in llama.cpp models disappearing from /model when /llama refreshed a configured server under PI_OFFLINE, and included idle-slept sleeping router models in the selectable catalog (#8167).
  • Fixed pi.registerFlag() accepting default values that do not match the declared flag type (#8064).
  • Fixed Z.AI Coding Plan defaults referencing the removed GLM-5.1 model (#8096).
  • Fixed repeated ambiguous truncated-response recovery being mislabeled as context overflow (#8130).
  • Fixed duplicate fullscreen right-click paste in VS Code-based terminals on Windows (#8186).
  • Fixed inherited padded text exceeding narrow terminal widths (#8252).
  • Fixed inherited wrapped Markdown table links leaking color into borders and neighboring cells, including tables inside blockquotes (#8335).
  • Fixed llama.cpp login guidance to direct users to /llama before /model when no local models are loaded (#8203).
  • Fixed hung pi.dev model catalog requests consuming the entire refresh deadline without retrying (#8198).
  • Fixed inherited Xiaomi model catalogs listing shut-down MiMo V2 models in /model and --list-models (#8187).
  • Fixed branch summary entries recording the navigation destination in fromId instead of the pre-navigation source leaf.
  • Fixed threshold auto-compaction being skipped when providers omit streaming usage data (#8328).
  • Fixed dash-prefixed prompts being parsed as options by supporting -- as an end-of-options delimiter (#7269).

Don't miss a new pi release

NewReleases is sending notifications on new releases.