Skip to content

chore(deps): update dependency @earendil-works/pi-coding-agent to v0.99.2 - #14

Merged
furedea-agent[bot] merged 3 commits into
mainfrom
renovate/earendil-works-pi-coding-agent-0.x
Oct 17, 2026
Merged

furedea-agent[bot] merged 3 commits into
mainfrom
renovate/earendil-works-pi-coding-agent-0.x

Conversation

@renovate

@renovate renovate Bot commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@earendil-works/pi-coding-agent (source) 0.83.0 → 0.99.2 age confidence

Release Notes

earendil-works/pi (@​earendil-works/pi-coding-agent)

v0.99.2

Compare Source

New Features
  • MCP servers stay out of the way: servers with the default codemode exposure are no longer listed in the codemode description and no longer block the first prompt. They appear in a short system prompt section, and scripts find their tools with searchTools() and describeNamespace(). See Control tool exposure.
  • More MCP authentication options: oauth.clientName for servers that only accept known OAuth clients, and "auth": { "provider": "<provider>" } to authenticate HTTP servers with a provider's /login token. See Authenticate with OAuth.
  • Anthropic workload identity federation from the Anthropic SDK environment variables. See Use an API key from the environment.
  • /reload enables tools newly added to the defaultTools setting. See Tools.
Added
  • Added a description field for MCP servers (pi mcp add --description), shown with the server in the system prompt and used to rank its tools in tool search, and a describeNamespace(name) codemode helper that returns a namespace's instructions and tool names. describeNamespace() and searchTools() accept a namespace as mcp__dev-radius, mcp__dev_radius, dev-radius, or dev_radius.
  • Added an oauth.clientName setting for MCP servers (pi mcp add --oauth-client-name) to change the client name sent during OAuth client registration, for servers that only accept known clients (#​10226).
  • Added "auth": { "provider": "<provider>" } for HTTP MCP servers to send a provider's current /login token as the bearer token instead of using MCP OAuth. The token is read on every request, so provider refreshes apply. Only allowed in the global mcp.json and from extensions, and requires https except on loopback hosts.
  • Added Anthropic workload identity federation from the ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, and ANTHROPIC_IDENTITY_TOKEN_FILE environment variables (see Providers) (#​10177, #​10242 by @​philfreo).
  • /reload now enables tools newly added to the defaultTools setting. Tools removed from it stay enabled, tools turned off during the session stay off unless newly added, and --tools, --no-tools, and --no-builtin-tools still override the setting (#​10245).
Changed
  • MCP servers with the default codemode exposure no longer appear in the codemode description; scripts find them with searchTools(). codemode-deferred is now an alias for codemode. Use direct exposure for tools the model should see without searching (#​10212).
  • The codemode description no longer includes deferred tools, tool counts, or MCP server instructions, so it no longer changes when MCP servers connect or change their tools. The tool_search description no longer lists the servers whose tools it can load, for the same reason. Servers are listed instead in an mcp_servers system prompt section with a one-line summary, updated at the start of each prompt; a changed section is appended to the conversation. Scripts read server instructions with describeNamespace() (#​10212).
  • The first prompt no longer waits for MCP servers without direct tools. They connect in the background and are waited for when a codemode script names them, a script searches tools, or tool_search runs (#​10212).
Fixed
  • Fixed new sessions intermittently ignoring the saved default model, or warning that no models are available, when it belongs to an extension-registered native provider with a stored credential (#​9962, #​10190 by @​davidbrai).
  • Fixed the /mcp sign-in URL not being clickable when it wraps across lines, by emitting it as a terminal hyperlink with a Cmd/Ctrl+click to open line like /login (#​10186).
  • Fixed codemode image() accepting malformed base64 data or unsupported image types, which persisted an invalid image block that made every later provider request fail with HTTP 400 (#​10215).
  • Fixed codemode failing to start its script worker from the standalone Windows executable (#​10204).
  • Fixed prompt submission slowing down with session length, because resolving the session's model selection looked up the model catalog once per assistant message (#​10198).
  • Fixed model lookups slowing down for providers with a refreshed pi.dev catalog, because merging remote catalog models took quadratic time.
  • Fixed the built-in-tool-renderer.ts and minimal-mode.ts extension examples removing the built-in tools' summaries and guidelines from the system prompt (#​10072, #​10193 by @​christianklotz).
  • Fixed context overflow detection for Z.AI CN endpoint Prompt exceeds max length errors (#​10208).
  • Fixed Anthropic requests failing when a tool schema uses keywords Anthropic strict tool use rejects, such as minimum/maximum; such tools are now sent non-strict (#​9953).
  • Fixed provider retries firing immediately when a Retry-After header contains an unparseable date; they now use exponential backoff (#​9571).
  • Fixed extension commands registered without a string name or handler crashing pi when typing /; the extension now fails to load with an error instead (#​10054).
  • Fixed collapsed codemode and MCP tool results filling the screen when the output is one long line, such as minified JSON. Like bash output, the preview is now limited to wrapped lines instead of logical lines.
  • Fixed codemode.mode: "only" listing read, bash, edit, and write in the system prompt's tool list although requests only declare codemode (#​10192).
  • Fixed codemode scripts calling the wrong MCP tool when two tool names differ only in - and _, such as read-file and read_file. Like in Codex, MCP tool and namespace names now replace - with _ (mcp__my-server__x is now mcp__my_server__x), colliding tools of a server all get a hash suffix, and server names that differ only in - and _ are rejected (#​10239).

v0.99.1

Compare Source

New Features
  • GPT-6.1 Sol — Available on OpenAI, Azure OpenAI, and OpenAI Codex, and now the default OpenAI Codex model. See Select a model.
Added
  • Added GPT-6.1 Sol (gpt-6.1-sol) to the OpenAI, Azure OpenAI Responses, and OpenAI Codex providers.
Changed
  • Changed the default OpenAI Codex model to GPT-6.1 Sol (gpt-6.1-sol).
Fixed
  • Fixed /login with OpenAI failing in the bundled release with a missing openai-chatgpt.js module error.

v0.99.0

Compare Source

New Features
  • Codemode and MCP — Connect MCP servers and let models run JavaScript that calls tools in parallel. See MCP Servers and Enable codemode.
  • System theme — Pi's colors now come from your terminal's own palette by default. See Use your terminal's colors.
  • Sign in with ChatGPT — Use a ChatGPT subscription with the OpenAI provider through /login openai. See Authenticate interactively.
  • Virtual models — Extensions can route each request to a different physical model. See Virtual Models.
  • Classifier models — Run Jev classifiers from codemode scripts, or use any llama.cpp model as a classifier. See How codemode works and Classification.
Added
  • Added codemode, tool search, and MCP support as built-in extensions. The codemode tool runs model-written JavaScript in a QuickJS sandbox that calls pi's tools; enable it with defaultTools or --tools and configure it with codemode.mode and codemode.inlineBudget. tool_search finds tools that are not declared to the model and declares them. MCP servers over stdio or streamable HTTP, with OAuth, come from mcp.json (global, or per project once trusted) or pi.registerMcpServer() and are managed with /mcp and pi mcp add|remove|list|login|logout. See MCP Servers and Enable codemode (#​10040).
  • Added extension tool APIs for orchestrating tools: exposure (direct, model-only, codemode, deferred, or hidden), namespace, annotations, outputSchema with structuredContent, isError results, prepareLoadout(), and ctx.executeTool() for nested tool calls, which emit events with parentToolCallId and are recorded as bounded nestedCalls on the calling tool's result. See Tool exposure.
  • Added a warning when an extension that registers the same tool, command, or flag replaces a built-in extension (#​10174 by @​cristinaponcela).
  • Added experimental virtual models: extensions register them with pi.registerVirtualModel() and pick a physical model and thinking level for each request. The footer shows the routed model, /session lists cost per physical model, and examples/extensions/jev-router.ts routes with the Jev classifier. See Virtual Models.
  • Added Sign in with ChatGPT to the OpenAI provider in /login, which uses a ChatGPT subscription with the OpenAI API. Pi stores a stable deviceId in the global settings for this login and omits it from bug reports.
  • Added the system theme, now the default, which derives pi's colors from the terminal's reported foreground, background, and ANSI palette and rebuilds them when the terminal switches between light and dark. See Use your terminal's colors.
  • Added #rgb, oklch(), and okhsl() colors and an optional appearance field to theme files, and theme.style(), theme.colors, and theme.appearance for extensions. See Themes and TUI.
  • Added a classifier model for every llama.cpp chat model, answered from next-token label probabilities. See Classification.
  • Added inherited Jev classifier models on OpenRouter, Cloudflare Workers AI, Vercel AI Gateway, and OpenCode Zen.
  • Added the fullscreenWheelScrollLines setting and /settings entry for fullscreen mouse-wheel scrolling. The default "auto" accelerates fast wheel spins outside local macOS terminals (#​9758).
  • Added per-input disposition to successful RPC prompt, steer, and follow_up responses, AgentSession.steer()/followUp(), and RpcClient.prompt()/steer()/followUp(); RpcClient.prompt() also accepts streamingBehavior (#​9098, #​9803).
  • Added image generation to ModelRuntime: generateImages() with runtime-resolved auth (stored credentials, OAuth, runtime API keys, models.json headers), plus getModelsOfType(), getModelOfType(), getAvailableOfType(), getAllModels(), and getAllAvailable(). OpenRouter image models are listed under the openrouter provider and share its credential; an upstream ID can have separate chat and image entries. models.json providers and extension registrations without a model list keep built-in image generation. Extension model lists can include discriminated chat, image, and classifier entries with operation implementations; when supplied, they replace the provider catalog across every operation. Chat-facing reads (getModels(), getAvailableSnapshot(), the model picker) are unchanged.
  • Added classifier support to ModelRuntime, including classify(), classifier model accessors, runtime-resolved authentication, and the built-in TypeSafe jev-latest model.
  • Added types=chat,image,classifier to pi.dev model catalog requests so remote refreshes overlay every supported model type; entries of unknown model types are ignored.
  • Added the provider_stream_event extension event for observing parsed provider events before normalization, with an opt-in /debug-provider example viewer (#​9784, #​9901 by @​davidbrai).
  • Added a show/hide toggle (H) in HTML exports for custom messages marked display: false. Messages remain hidden by default and can also be revealed from the sidebar (#​8896, #​10020 by @​rwachtler).
  • Added inherited Claude Sonnet 5.5 support for Anthropic with adaptive thinking and a 1M context window.
  • Added a Built-in section in pi config to disable the built-in mcp, llama.cpp, codemode, and tool-search extensions globally or per project, stored as -builtin:<name> in the extensions setting. SDK inline extensions opt in with builtin: true.
  • Added +name and -name entries to the defaultTools setting to add or remove tools without repeating the defaults, for example "defaultTools": ["+codemode"]. Project entries of this form apply on top of the user setting. Documented how to enable codemode without MCP and how to use classifier models such as Jev from codemode scripts.
  • Added the token usage and cost of codemode models.classify() calls to the codemode tool result, so they count toward the session cost; the codemode result shows each call's cost.
Changed
  • Switched the build from the TypeScript native preview to TypeScript 7.0 with an ES2024 target, and replaced tsx with Node's built-in type stripping for running from source (#​9965).
  • Removed the [Themes] section from the startup banner. Custom themes remain available in /settings, and theme conflicts are still reported.
  • Changed the startup header to show the pi logo with the version instead of the app name.
  • Changed the built-in dark and light themes to the revised pi colors, written in OKHSL.
  • Changed light/dark terminal detection to use the reported background color first, then the terminal's light/dark report, then COLORFGBG. The first-time setup no longer shows the detected appearance.
  • Renamed the inherited OpenAI Codex provider to "OpenAI Codex (legacy)"; Sign in with ChatGPT on the OpenAI provider supersedes it.
  • Changed inherited terminal detection to treat TERM=*-direct as truecolor.
  • Built-in extensions and tools are named builtin:<name> (for example builtin:mcp and builtin:read) in errors, diagnostics, RPC source info, and bug reports, instead of <inline:name> and <builtin:name>. Their slash commands no longer carry a [t] autocomplete tag.
  • --no-extensions also disables the built-in extensions, including the llama.cpp provider. Load one explicitly with -e builtin:<name>, for example pi -ne -e builtin:mcp.
  • Tool calls without a custom call renderer, including direct MCP tool calls, now show their arguments: as key=value pairs on the title line when collapsed and one key: value line per argument when expanded. MCP calls are titled server/tool and their results collapse to 5 lines.
  • bash and powershell structured results, which codemode scripts receive, now hold up to 1 MiB of output instead of the model-facing 2000 lines or 50KB, and add truncated and full_output_path. Longer output keeps its first and last 512 KiB. Empty output is "" instead of (no output).
Fixed
  • Fixed X11 clipboard text being misidentified as an image when the clipboard owner accepts unadvertised image targets (#​9786).
  • Prevented managed git packages from automatically installing Pi peer dependencies and added warnings for extension packages that list host-provided modules in dependencies (#​9863).
  • Fixed pinned git extensions loaded with -e continuing to use the first downloaded commit after the ref changes (#​9982).
  • Fixed RpcClient skipping the next event listener when a listener unsubscribes while handling an event, which could make waitForIdle() time out after collectEvents() (#​9990).
  • Fixed full-file read calls rendering as :1 when models send null for omitted offset and limit (#​9996).
  • Fixed new sessions being lost when pi exits before the first assistant response. The session file is now created when the first user message is sent (#​10000).
  • Fixed unloaded llama.cpp autoload presets overwriting a cached runtime context window with the GGUF training context (#​10077, #​10158 by @​cristinaponcela).
  • Fixed custom themes ignoring terminal.trueColor and other terminal capability overrides and rendering with 256 colors (#​9973, #​10039 by @​christianklotz).
  • Fixed pasting files copied in Finder inserting the file icon image instead of the file paths; paths are quoted in bash mode (#​9999, #​10136 by @​christianklotz).
  • Fixed the startup header, loaded resources, and chat notices keeping their old colors after a theme change.
  • Fixed the Fireworks default model pointing at the removed Kimi K2.6 model; it now defaults to Kimi K3.
  • Fixed the OpenCode Go default model pointing at the removed Kimi K2.6 model; it now defaults to Kimi K3.
  • Fixed the Together default model pointing at the removed Kimi K2.6 model; it now defaults to Kimi K3.
  • Reduced CPU use while streaming in long sessions and when previewing themes: the footer caches session usage totals, collapsed bash results cache their preview, and sanitizeBinaryOutput() no longer splits output into per-character arrays.
  • Fixed the usage of tools called through ctx.executeTool(), for example from codemode scripts, being dropped from the session cost; it is now added to the calling tool's result usage.
  • Fixed inherited /skill autocomplete appearing empty when loaded skill names did not contain the letters in skill (#​9944).
  • Fixed inherited path and @ autocomplete not working after opening wrappers such as (, [, {, <, or a backtick.
  • Fixed inherited image stretching in terminals that use the Kitty graphics protocol (#​8938, #​9957 by @​rwachtler).
  • Fixed inherited shell cursor staying hidden after exit when an extension closed an overlay during shutdown (#​10026).
  • Fixed inherited keyboard input being lost after a mouse click in a /settings submenu closed it.
  • Fixed inherited 1-hour Anthropic cache writes through Vercel AI Gateway being priced at the 5-minute rate (#​9210).
  • Fixed inherited model-level samplingParams being dropped by direct stream()/complete() calls on OpenAI-compatible APIs (#​9506).
  • Fixed inherited Mistral GLM requests failing with "Expected at most one leading ThinkChunk" after empty content deltas (#​9674).
  • Fixed inherited OpenAI Fast mode requests being priced at the standard rate (#​10034).
  • Fixed inherited Mistral reasoning models ignoring the requested thinking level (#​9678).
  • Fixed inherited OpenCode Zen and OpenCode Go qwen3.8-flash thinking being replayed as plain text on later turns (#​10047).
  • Fixed inherited OpenAI Responses streams from servers that omit output_index, such as llama.cpp, running mixed-up tool calls; such streams now end with an error (#​9974).
  • Fixed inherited Anthropic and OpenAI Codex browser sign-in waiting indefinitely after the provider redirected with an authorization error, and Anthropic sign-in failing when its callback port is in use.
  • Fixed inherited GitHub Copilot Claude Opus 5.5 offering unsupported thinking levels when upstream model metadata is incomplete.

v0.87.1

Compare Source

New Features
  • Latest frontier models — Use Claude Opus 5.5, GPT-6 Sol, and GPT-6 Luna through supported providers, including GitHub Copilot. See Choose a Model.
  • Grok 4.7 by default for xAI — New xAI sessions now default to Grok 4.7. See Provider Authentication.
Added
  • Added inherited Claude Opus 5.5, GPT-6 Sol, and GPT-6 Luna support for GitHub Copilot.
  • Added inherited GPT-6 Sol and GPT-6 Luna support for OpenAI API keys and OpenAI Codex subscriptions.
  • Added inherited Claude Opus 5.5 support for Anthropic with adaptive thinking and a 1M context window.
Changed
  • Changed the default xAI model to Grok 4.7.
Fixed
  • Fixed split-turn compaction summaries being refused by Claude Fable 5.1 by clearly separating the conversation and using continuation-oriented instructions (#​9908 by @​davidbrai).
  • Fixed missing or invalid --mode values being silently ignored instead of reporting an error and exiting with a nonzero status (#​9045).
  • Fixed inherited image-only user messages being rejected by some OpenAI-compatible providers because they included an empty text part (#​9797).
  • Fixed inherited Anthropic OAuth requests reporting an outdated Claude Code version.

v0.87.0

Compare Source

New Features
  • Canonical session context and extension boundaries — Edit model context without rewriting history and add actionable lifecycle hooks. See ContextEditEntry and extension events.
  • Full-transcript context extensions — Use context_with_system for per-request system-message transformations. See context_with_system.
  • Per-model image input limits — Configure cache-safe image resizing per model for attachments, read, and tool-result images. See Image Input Limits.
Breaking Changes
  • Removed the inherited shouldStopAfterTurn agent option. Use finishTurn and return { action: "end" } instead. finishTurn runs before turn_end but applies the decision afterward, and it also receives error and aborted responses; migrate normal-response predicates by returning undefined for those hard exits. See the @earendil-works/pi-agent-core changelog for a complete before-and-after example.
  • Added ContextEditEntry to the exported SessionEntry union. TypeScript consumers with exhaustive entry switches must handle context_edit; use replacement: null for omission and a content replacement otherwise.
  • Made SessionManager canonical for AgentSession provider context. Assigning session.agent.state.messages no longer replaces future request history; restore with SessionManager.inMemory(cwd, { id }, entries), navigate with session.navigateTree(), or append through session.sessionManager and call session.refreshContext().
  • Expanded TurnEndEvent with required boundary fields and added AgentBeforeSettleEvent to the exported ExtensionEvent union. Consumers constructing events or exhaustively switching on ExtensionEvent must handle the new shapes. ExtensionRunner.emit() no longer accepts turn_end; host integrations dispatch actionable boundaries with emitBoundary(baseEvent, buildContext).
  • Deferred runs requested from agent_settled handlers until all settled handlers finish. Handlers still observe ctx.isIdle() === true, but no longer see a reentrant agent_start during the same notification dispatch.
Added
  • Added append-only model-context edits. For example, sessionManager.appendContextEdit(entryId, null) omits one message from future provider context without changing raw history, usage, or UI history.
  • Added actionable turn_end and agent_before_settle extension boundaries. Return { entries: [...event.entries, draft], continue: true } to persist structural entries in order and ensure one next provider request without changing steering or follow-up scheduling.
  • Added retain-none compaction input: sessionManager.appendCompaction(summary, null, tokensBefore) stores the compaction's own ID as its kept boundary.
  • Added the context_with_system extension event, which runs after context handlers on the full transcript including system messages and sends its result verbatim. See context_with_system.
  • Added per-model image resize profiles through inputLimits.images.resize in models.json, applied to file attachments, image reads, and tool-result images (#​9631).
Fixed
  • Fixed string context-edit replacements producing invalid assistant and tool-result message content instead of text blocks.
  • Fixed context-invisible boundary metadata and replacement edits causing newly appended or replaced input to be summarized before its first provider request.
  • Fixed edited-context accounting both discarding valid assistant usage captured after the latest context edit and reusing that usage after a later compaction made it stale.
  • Fixed selected error retries and final length/overflow recovery retaining abandoned model attempts in future provider context; post-run recovery omissions are now persisted without hiding raw transcript history or changing queue scheduling.
  • Fixed context handlers that filter or slice messages dropping the prompt and tool declarations, which after extension-driven compaction left requests without built-in tools or made Codex emit raw tool-call text. Handlers no longer see system messages; Pi restores the prompt and tool state after they run. See context (#​9789, #​9822).
  • Fixed /bug allowing uploads in offline mode while preserving local zip exports (#​9841 by @​christianklotz).
  • Fixed idle prompt-cache warming rebuilding expired caches when its timer or an extension decision is delayed.
  • Improved crash diagnostics with hints identifying loaded extensions that appear in the stack trace.
  • Fixed text files beginning with GIF being misclassified as images and omitted from read and CLI @file input (#​9755).
  • Fixed malformed prompt template frontmatter being silently ignored instead of reported as a resource warning (#​9830 by @​christianklotz).
  • Fixed inherited unknown OpenAI-compatible Chat Completions endpoints receiving strict tool schemas unless they explicitly advertise support (#​9816).

v0.86.1

Compare Source

New Features
  • Meta Muse provider — Sign in with Meta using /login meta or use META_API_KEY to access Muse Spark models. See Meta (Muse subscription).
Added
  • Added Meta (Muse subscription) login via /login meta with automatic Model API key refresh, plus META_API_KEY support (#​9096 by @​xl0).
Changed
  • Enabled Node's persistent compile cache before loading the bundled CLI runtime, reducing repeat launch time.
Fixed
  • Fixed /bug descriptions dropping line breaks from pasted diagnostics.
  • Fixed /bug hints appearing for user cancellations and retryable provider failures such as service unavailability.
  • Fixed clipboard copy failing in containers and WSL without WSLg by restoring the OSC 52 fallback when no display is available, and added a verified Windows clipboard backend for WSL (#​9688).
  • Fixed inherited z.ai Prompt too long errors not being recognized as context overflow (#​9805).
  • Fixed inherited Cerebras models advertising unsupported strict tool schemas, which caused HTTP 400 errors when strict and non-strict tools were mixed (#​9804 by @​EdenGottlieb).

v0.86.0

Compare Source

New Features
  • Prompt cache warming — Keep valuable prompt caches alive during long tool runs and optionally while idle using cost-aware refreshes. See Cache Warming.
  • Bug reporting — Report problems with /bug using redacted diagnostics, optional transcripts, or exported ZIP archives. See Reporting Bugs.
  • Transcript-aware prompt and tool updates — Preserve instruction and tool changes across resume and branch navigation while retaining cached prefixes. See before_agent_start.
  • Offline Radius model catalog — Select Radius models immediately, with cached and live catalogs overlaid when available. See Radius.
  • Per-model compaction budgets — Configure reserved and recent-token budgets by model. See Per-model overrides.
Breaking Changes
  • Changed inherited pi-ai provider stream inputs from Context to normalized TranscriptContext values. Custom providers must read system prompts and tool declarations from context.messages with getCurrentSystemPrompt() and getCurrentTools(). See Custom Streaming API.
  • Restricted inherited ToolCall.arguments and ToolResultMessage.details to JSON-compatible values, changed ToolResultMessage into a conditional type, and made JsonValue arrays readonly.
  • user_bash now fails closed: errors or invalid defined results abort the command without invoking later handlers or executing locally. Return undefined to continue propagation; otherwise return { operations } or { result } (#​9068).
Added
  • Added transcript-backed mid-conversation system prompt and tool changes so instruction and tool updates survive resume and branch navigation while preserving cached prefixes on supported models. See before_agent_start and Entry Types (#​9548).
  • Added inherited native deferred tool loading for Fireworks Messages models. Use ToolSearch or tool_search as the loader name for prompt-prefix deferral (#​9323).
  • Added click toggling for branch summaries, compaction summaries, and skill invocation entries.
  • Added the public Radius model catalog for immediate and offline model selection, with cached and live gateway catalogs overlaid when available.
  • Added ctx.modelRegistry.stream() and streamSimple() for extension model calls through configured providers with resolved authentication (#​8964).
  • Added per-model reserveTokens and keepRecentTokens settings through compaction.modelOverrides, with ordinary compaction settings as fallback (#​8133).
  • Added compat.allowedFallbackModels configuration for overriding or disabling Anthropic server-side fallback models (#​9294).
  • Added an unsubscribe function from pi.on() so extensions can drop event handlers. Handlers added or removed during a dispatch apply to later dispatches, not the current one (#​8967).
  • Exported extension hook event and result types that were previously omitted from the package entry points (#​9642).
  • Added /bug [description] to report a bug to the Pi developers. The report bundles environment, model, provider, extension, and settings metadata (secrets redacted), assistant message diagnostics from the session, optionally the session transcript, or a model-written summary of what went wrong instead. It is uploaded to Radius (no login required; attributed when logged in) or exported as a zip archive, and the report id is recorded in the session as a pi.bug-report entry. Crashes are recorded in ~/.pi/agent/crashes.json, announced once on the next start, and attached to the next report; unexplained errors and exhausted retries point at /bug once per session.
  • Added cost-aware prompt-cache warming during long tool runs and optionally while idle, with configurable modes, model cache-lifetime metadata, /session diagnostics, transcript notices, and the cache_warming_decision extension event. See Cache Warming (#​9668).
Changed
  • Enabled Node's persistent compile cache before loading the bundled CLI runtime, reducing repeat launch time.
  • Made --resume session results appear progressively, using file modification times to prioritize all-folder loading and cancelling outstanding transcript reads after selection.
  • Reduced --continue startup time by checking candidate session headers in modification-time order and stopping after the newest matching session.
  • Replaced the external native clipboard dependency with bundled asynchronous macOS, Windows, and X11 helpers while preserving platform command and OSC 52 fallbacks (#​9163).
  • Reduced inherited fuzzy search latency for long texts by using native substring search instead of scanning each character in JavaScript (#​9267).
  • Moved compaction, branch summarization, and retry spinners into the editor border alongside the working indicator. Custom editors use the same embedding opt-in for all status spinners.
  • Enabled strict-prefer JSON-schema sampling by default for built-in read, bash, powershell, edit, and write tools, without requiring PI_EXPERIMENTAL. Extensions can re-register tool definitions with constrainedSampling: false.
  • Formatted Bash and PowerShell tool durations of at least one minute as minutes and seconds, with hours when needed (#​9628).
  • Deferred the extension compiler and bundled virtual modules until a filesystem extension is loaded, reducing the baseline SDK import cost (#​9540).
Fixed
  • Fixed GitHub Copilot GPT models, including GPT-6 Astra, using the Chat Completions adapter instead of the required Responses adapter (#​9253 by @​petrroll).
  • Fixed inherited DeepSeek V4.1 thinking levels on OpenRouter and OpenCode Go preserving provider effort metadata (#​9485).
  • Fixed inherited bodyless HTTP 400/413 errors from non-Cerebras providers being misclassified as context overflow (#​9482).
  • Fixed inherited Vercel AI Gateway replaying unsigned thinking as assistant text (#​9676).
  • Fixed inherited Google Generative AI and Vertex AI using unsupported thinking levels when reasoning is omitted or when model capabilities differ within a Gemini family (#​9455).
  • Fixed inherited Anthropic-compatible relays breaking signed thinking replay when they report a different response model, while preserving fallback pricing (#​9188).
  • Fixed inherited Amazon Bedrock one-hour cache writes being priced at the five-minute rate (#​9457).
  • Fixed inherited quadratic CPU usage when draining buffered EventStream events (#​9055).
  • Fixed inherited Mistral Medium reasoning requests to use reasoning_effort for all reasoning-capable mistral-medium-* model IDs instead of the unsupported prompt_mode (#​8700).
  • Fixed inherited OpenCode and OpenCode Go requests to send x-opencode-session from sessionId across all supported API adapters (#​9326).
  • Fixed inherited OpenAI Codex requests to send the model's Off reasoning effort instead of omitting it, while respecting unsupported Off mappings (#​9191).
  • Fixed inherited Fireworks unsigned thinking replay and reasoning effort selection using catalog metadata, with verified DeepSeek V4 and Qwen3.8 fallbacks and removal of redundant GLM 5.2 and Kimi K3 effort aliases (#​9323).
  • Fixed inherited OpenRouter requests to send x-session-id from sessionId for Chat Completions and Anthropic Messages models when prompt caching is enabled (#​9102).
  • Fixed the inherited DeepSeek catalog to advertise deepseek-flash for DeepSeek V4.1 Flash instead of retired Flash aliases, and refreshed DeepSeek pricing metadata (#​9423).
  • Fixed inherited Mistral-hosted GLM-5.2 reasoning requests to use reasoning_effort instead of the ignored prompt_mode (#​9375).
  • Fixed inherited OpenAI-compatible Responses errors to identify the actual provider instead of always labeling them as OpenAI errors (#​9298).
  • Fixed inherited Baseten requests to send session-affinity headers from sessionId for automatic prompt-cache routing (#​9629).
  • Fixed inherited retry classification for Cloudflare 520 responses (#​9627).
  • Fixed inherited retry classification for transient Azure peak-load capacity errors (#​9669).
  • Fixed session tree navigation racing with active compaction and replacing its progress UI (#​9179 by @​acmerfight).
  • Fixed exact session ID lookup scanning complete transcript bodies instead of reading session headers (#​9601 by @​metaist).
  • Fixed repeated Anthropic thinking-drop notices being shown for the same dropped blocks, and shortened notices while retaining details in the session (#​9391).
  • Fixed mid-run threshold compaction silently skipping oversized trailing tool results (#​9740).
  • Fixed signal-terminated local shell commands being reported as successful with partial output (#​9577 by @​BrendanJMurphy).
  • Fixed local clipboard failures reporting success when the terminal ignored the fallback OSC 52 write, and added platform-specific setup guidance when no clipboard backend works (#​9618).
  • Capped agent-level retry backoff at retry.maxAgentDelayMs (60s by default) so long retry runs stay responsive during prolonged transient outages (#​8826).
  • Fixed direct RPC steer and follow_up commands bypassing extension input handlers (#​8718).
  • Fixed premature missing-model errors after login by waiting for catalog discovery. Radius now defaults to balanced, falling back to the first available Radius model when needed.
  • Fixed fullscreen mode reserving a blank row for custom footers that render zero rows (#​8919).
  • Fixed extension tools without parameter schemas to be rejected during registration instead of breaking provider requests (#​9300).
  • Fixed before_agent_start handlers returning systemPrompt (and forceSystemPrompt) on models with mid-conversation system messages: the forced prompt is now sent as the provider's leading system prompt instead of being appended as a section patch after the original prompt.
  • Fixed loaded llama.cpp models with enable_thinking chat templates ignoring Pi's thinking level (#​9528).
  • Fixed cancellation races that could start automatic compaction, leave stale retry state, or miss cancellation while waiting for summarization authentication (#​9340, #​9777).
  • Fixed asynchronous Kitty image conversion replacing newer partial tool output images (#​8743 by @​wutongyuonce).
  • Fixed inherited skill slash-command autocomplete ranking the skill: prefix instead of the bare skill name (#​9120 by @​yearth).
  • Fixed inherited file autocomplete boundaries and path quoting around CJK punctuation (#​9746 by @​haoqixu).
  • Fixed inherited LaTeX legacy font switches falling back to raw source, centered cases layouts around surrounding equations, and vertically laid out unsupported and nested display scripts (#​8827, #​9564, #​7929).
  • Fixed inherited fullscreen Kitty images being erased by later row clears in WezTerm (#​9169).
Removed
  • Removed unavailable inherited GPT-5.4 and GPT-5.4 mini models from OpenAI Codex selection (#​9394).

v0.85.1

Compare Source

New Features
  • GPT-6 Astra — Available through OpenAI API keys and OpenAI Codex subscriptions. See API Keys and OpenAI Codex.
Added
  • Added GPT-6 Astra for OpenAI API keys and OpenAI Codex subscriptions.
  • Added five-times-faster mouse wheel scrolling while holding Alt in fullscreen mode (#​9166 by @​xl0).
Fixed
  • Fixed configurable save keybindings in the model and thinking selectors (#​9149 by @​rwachtler).
  • Fixed SDK import failures caused by unintentionally publishing internal experimental code and dependencies in 0.85.0. The experimental client and experimental/plugin subpaths and server/client commands are now source-only through pi-test.sh; the supported local SDK and stdio RPC API are unchanged (#​9132).
  • Fixed mouse hover changing selection and recentering autocomplete and settings lists, causing clicks to target a different item.
  • Fixed long prompt-cache requests for GPT-5.6+ Responses models to use prompt_cache_options.ttl: "30m" instead of prompt_cache_retention: "24h".

v0.85.0

Compare Source

New Features
  • Persistent Claude thinking effort — Supported Anthropic transports preserve per-turn effort and recover safely from signed-thinking mismatches. See Model Configuration.
  • Fullscreen transcript controls — Jump to the latest message from a scrolled transcript and use the embedded working indicator. See TUI Fullscreen Viewport.
  • Restorable in-memory sessions — Resume externally stored session entries through the SDK. See Session Management.
Added
  • Added SessionManager.inMemory() support for restoring externally managed session entries (#​8980 by @​y-nk).
  • Added inherited OpenAI-compatible vllmPriority and supportsMaxOutputTokens model settings for vLLM scheduler priority and OpenAI Responses output-token limits (#​9004 by @​AppleDannyClegg, #​8941 by @​scturtle).
  • Added inherited LaTeX rendering for relational algebra join symbols (#​9050 by @​haoqixu).
  • Added a clickable "Jump to latest message" label with the tui.altScreen.bottom shortcut to the fullscreen transcript while it is scrolled up (#​9080 by @​rwachtler).
  • Added Meta (Muse subscription) login via /login meta with automatic Model API key refresh, plus META_API_KEY support.
Changed
  • Moved the streaming working indicator into the default editor border and matched its default spinner and label to the thinking-level border color. Custom editors retain the standalone indicator unless they opt in to embedding it (#​8799 by @​cristinaponcela).
  • Reduced inherited fullscreen transcript search latency on large transcripts by caching unchanged search results, indexing ASCII runs, and limiting highlight work to visible matches (#​8800 by @​cristinaponcela).
Fixed
  • Fixed managed fd and ripgrep downloads on Linux musl systems (#​9070 by @​Charlie0113-T).
  • Removed the unavailable inherited Grok Build 0.1 model from /model (#​9093 by @​Jaaneek).
  • Fixed inherited provider streams emitting incompatible event sequences and custom tool-call deltas.
  • Restored the @earendil-works/pi-coding-agent/client compatibility entry point.
  • Fixed the inherited Qwen Token Plan Individual catalog to include Qwen3.8 Flash (#​9021).
  • Fixed inherited OpenAI Codex SSE parsing to process terminal events that are not followed by a blank line (#​9047).
  • Fixed inherited GitHub Copilot Claude Fable 5 requests so selected reasoning levels are sent (#​8961).
  • Fixed inherited Baseten GLM-5.2 models incorrectly advertising image input support (#​8293 by @​Panoplos).
  • Fixed skills being unavailable when Bash is the only enabled tool (#​8552 by @​xl0).
  • Fixed concurrent session shares overwriting one another (#​8613 by @​wutongyuonce).
  • Fixed image orientation detection skipping EXIF data after non-EXIF APP1 segments (#​8616 by @​wutongyuonce).
  • Fixed imported sessions overwriting an existing session with the same filename (#​8985 by @​wutongyuonce).
  • Fixed session forks losing their compaction boundary (#​8990 by @​acmerfight).
  • Fixed in-memory session forks before an active turn settled (#​8937 by @​acmerfight).
  • Fixed inherited Fireworks GLM models using the wrong API adapter.
  • Fixed inherited NO_PROXY matching for root domains and subdomains (#​8737 by @​MeiSiristhebest).
  • Fixed bash, edit, find, grep, ls, read, and write tools ignoring ctx.cwd (#​8627 by @​vmizg).
  • Fixed inherited terminal startup under restricted seccomp policies that reject the SIGWINCH self-signal ([#&#

[!IMPORTANT]
✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • Between 12:00 AM and 03:59 AM, only on Monday (* 0-3 * * 1)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot force-pushed the renovate/earendil-works-pi-coding-agent-0.x branch from 6ae169c to 1a81cc4 Compare October 7, 2026 00:33
@renovate renovate Bot changed the title chore(deps): update dependency @earendil-works/pi-coding-agent to v0.87.1 chore(deps): update dependency @earendil-works/pi-coding-agent to v0.99.1 Oct 7, 2026
@renovate
renovate Bot force-pushed the renovate/earendil-works-pi-coding-agent-0.x branch from 1a81cc4 to 4411060 Compare October 7, 2026 20:53
@renovate renovate Bot changed the title chore(deps): update dependency @earendil-works/pi-coding-agent to v0.99.1 chore(deps): update dependency @earendil-works/pi-coding-agent to v0.99.2 Oct 7, 2026
@renovate
renovate Bot force-pushed the renovate/earendil-works-pi-coding-agent-0.x branch from 4411060 to 57a9f20 Compare October 17, 2026 08:32
@renovate
renovate Bot force-pushed the renovate/earendil-works-pi-coding-agent-0.x branch from 57a9f20 to ac34db0 Compare October 17, 2026 08:36
furedea and others added 2 commits October 17, 2026 17:43
Pi 0.99 adds a deferred stop reason, which the trace records as aborted
like other non-final turns. The smoke test now honors tool results that
report isError instead of throwing, and calls emitBeforeAgentStart with
its new three-argument signature.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pi 0.99.2 pins undici 8.10.2, which has no known advisory, so the
override no longer matches any package.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@furedea-agent
furedea-agent Bot merged commit 43b4589 into main Oct 17, 2026
13 checks passed
@furedea-agent
furedea-agent Bot deleted the renovate/earendil-works-pi-coding-agent-0.x branch October 17, 2026 08:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant