Changelog
Changes to the Pify documentation site, separate from the Pi SDK changelog.
This page records changes to the Pify documentation site. For Pi releases, use the upstream release history.
2026-10-06
Release coverage
Pify advances its current baseline to the official Pi v1.0.0 release. Source review is pinned to the full release commit a13d35a742c6ef8462812a28fbe1d8c8b7431c32, reviewed on 2026-10-06. The official Pi 1.0 announcement and Pi Durable announcement explain the release intent; the pinned tag and commit define the behavior documented here.
Stable core and experimental Durable boundary
- Pi 1.0 stabilizes the small, extensible core and Coding Agent, including Codemode, MCP, Virtual Models, deferred Tool loading, Anthropic cache warming, transcript-aware prompt and Tool changes, a system TUI theme, and fullscreen mode. The experimental Agent Core harness and experimental runtime subpaths were removed from that core surface.
@earendil-works/pi-durableis a separate experimental package for long-running conversations and Tasks with storage, checkpoints, recovery, and explicit Tool replay policy. It shares lower-level Pi packages and principles, but it does not replace the Pi Coding Agent or make Durable APIs part of the stable core. Interrupted Tools run again only when declaredreplay: "safe"; otherwise interruption becomes a Tool error for the agent to handle.
Coding Agent, Codemode, models, and authentication
- The Coding Agent TUI now starts fullscreen. Set
tuiModeto"regular"or pass--tui-mode regularto retain terminal scrollback.quietStartup: "header"keeps the version and key hints while hiding the model scope and loaded-resource list. - Codemode uses a shorter script-global and Tool description, with recovery guidance for unknown names and malformed model calls. Scripts can call public
models.generateImages()using the session's credentials; returned base64 image blocks can be attached withimage(), and usage contributes to session cost. Extensions can callctx.modelRegistry.generateImages(). A script checking Tool existence should use"name" in toolsrather thantypeof tools.name. /loginoffers Radius sign-in and, after success, can configure its MCP server in globalmcp.jsonwith"auth": { "provider": "radius" }. Anthropic/loginadds a copy-code path for a browser on another machine. For MCP OAuth,oauth.authServerMetadataUrloverrides discovery when server metadata is wrong or missing; the release also checks the authorization response's RFC 9207iss, stores credentials per server name and URL, and preserves granted scopes during step-up sign-in.
Reliability and migration notes
--providerwithout--modelnow fails instead of silently running a default from another provider. Deferred MCP Tools loaded bytool_searchsurvive resume and/reloadafter their server reconnects; OAuth token responses with empty optional fields no longer fail as invalid scope.- Fullscreen fixes prevent color bleeding at selection and search boundaries, while transcript rendering retains less memory for long assistant messages. Existing users who need normal terminal scrollback should select regular TUI mode explicitly.
Documentation and verification scope
- The six direct verification pins are
@earendil-works/chord@1.0.0,@earendil-works/pi-agent-core@1.0.0,@earendil-works/pi-ai@1.0.0,@earendil-works/pi-coding-agent@1.0.0,@earendil-works/pi-durable@1.0.0, and@earendil-works/pi-server@1.0.0. The exact release authority is recorded inscripts/fixtures/pi-release-1000.json. - Public contract fixtures are
tests/fixtures/pi-sdk-1000.contract.ts,tests/fixtures/pi-coding-agent-1000.contract.ts, andtests/fixtures/pi-durable-1000.contract.ts. The Durable check opens and closes an offline root; it does not exercise a live provider account or establish a stability promise for Durable. - The existing Codemode/MCP, Virtual Models, and experimental Durable guides remain paired in English and Vietnamese. The public inventory stays at 46 bilingual page pairs and 92 documents; no routes were added.
2026-10-01
Release coverage
Pify advances its documentation baseline to the official Pi v0.99.2 release. This entry rolls up the complete 0.99.x publication chain—v0.99.0, v0.99.1, and v0.99.2—and pins source review to the exact release commit 005af57d. It summarizes user-visible changes that affect this documentation rather than reproducing the upstream package changelogs.
Major platform capabilities
v0.99.0introduced Codemode, Tool search, and MCP as built-in coding-agent extensions. Extensions can selectdirect,model-only,codemode,deferred, orhiddenexposure, group Tools into namespaces, returnstructuredContent, and orchestrate bounded nested calls throughctx.executeTool().- Experimental Virtual Models can keep a stable model identity in session history while an extension selects a physical model and thinking level for each request. The routed physical model remains visible for cost accounting and diagnostics.
- The model runtime now treats chat, image, and classifier models as explicit operation types. It adds provider-resolved
generateImages()andclassify()operations while keeping existing unqualified model reads chat-only. - The experimental
@earendil-works/pi-durablepackage grew from an openable Harness and first chat/Tool turns into persisted Documents, Tasks, Conversations, inbox/reset scheduling, views and events, subagent ownership, structured concurrency, compaction, and one-retry overflow recovery. v0.99.2keeps default MCP servers out of the Codemode Tool description and stops waiting for them before the first prompt. Scripts discover server Tools throughsearchTools()anddescribeNamespace();/reloadalso enables Tools newly added todefaultTools.
Models, authentication, and interface
v0.99.1addedgpt-6.1-solto OpenAI, Azure OpenAI Responses, and OpenAI Codex, and made it the default model for the legacy OpenAI Codex provider. The bundled release also restores the OpenAI login flow module.v0.99.0added Claude Sonnet 5.5, Sign in with ChatGPT for the OpenAI provider, classifier catalogs and Jev routes, the system terminal theme, and richer model-operation catalog accessors.@earendil-works/pi-ai/modelsinv0.99.2offers a lightweight entry point for model collections and provider construction.- Anthropic workload identity federation can read the documented SDK environment variables, with API keys and
ANTHROPIC_AUTH_TOKENtaking precedence. MCP HTTP servers can use a current provider-login token, whileoauth.clientNamesupports servers that require a known OAuth client; provider-token authentication is limited to global configuration or extension registration and requires HTTPS except on loopback. - MCP server descriptions now appear in the compact system-prompt server list and participate in Tool-search ranking. Direct MCP calls and fallback-rendered Tool calls show their arguments, while Codemode exposes structured results to JavaScript and records nested usage in session cost.
Reliability and behavioral corrections
- Codemode/MCP fixes align MCP Tool names with Codemode identifiers, load the worker in Windows binaries, validate generated image data, cap wrapped result previews, omit hidden Tools from the system prompt, and keep late MCP startup or authentication from blocking the first user prompt.
- Model/provider fixes reject unfinished OpenAI Responses Tool calls, preserve requested Mistral thinking levels and direct-call sampling parameters, recognize Z.AI CN context overflow, send unsupported Anthropic strict schemas non-strict, and fall back to exponential backoff when
Retry-Aftercannot be parsed. - Catalog and routing fixes merge remote models in linear time and resolve each branch's Virtual Model selection with one catalog lookup. New sessions are persisted at the first user message, and
RpcClientno longer skips the next listener when another listener unsubscribes during dispatch. - Durable recovery now makes ownership and abort order explicit, waits for foreground descendants before owner completion, rejects background task-owned children, deduplicates admitted requests, and allows replay after interruption only when a Tool declares
replay: "safe".
Documentation and verification scope
- Direct dependencies are pinned exactly to
0.99.2for@earendil-works/pi-ai,@earendil-works/pi-agent-core,@earendil-works/pi-coding-agent,@earendil-works/pi-server,@earendil-works/pi-durable, and@earendil-works/chord. Release authority is recorded inscripts/fixtures/pi-release-0992.json. - Compile fixtures cover the public SDK, coding-agent, and Durable surfaces in
tests/fixtures/pi-sdk-0992.contract.ts,tests/fixtures/pi-coding-agent-0992.contract.ts, andtests/fixtures/pi-durable-0992.contract.ts. The verification suite also opens and closes a Durable Harness offline; it does not call a live provider account. - Added synchronized English/Vietnamese guides for Codemode and MCP, Virtual Models, and the experimental Durable Agent. The public inventory now contains 46 bilingual page pairs and 92 public documents, with route, frontmatter, language-alternate, navigation, and LLM-index count checks.
2026-09-23
Release coverage
Pify moves its documentation baseline from 0.85.0 to Pi 0.87.1. This rollup includes Pi 0.85.1, Pi 0.86.0, Pi 0.86.1, and Pi 0.87.0, with source review pinned to f07218c.
Breaking API migrations
- In
0.86.0, provider streams receive normalizedTranscriptContext. Custom providers read the prompt and tool declarations fromcontext.messagesthroughgetCurrentSystemPrompt()andgetCurrentTools(). ToolCall.argumentsandToolResultMessage.detailsaccept JSON-compatible values;ToolResultMessageis now a conditional type, andJsonValuearrays are readonly.- The
user_bashhook is fail-closed: errors or invalid defined results stop the command before later handlers or local execution. Returnundefinedto continue dispatch, or return{ operations }or{ result }to handle the command. - In
0.87.0, replaceshouldStopAfterTurnwithfinishTurnand return{ action: "end" }to stop after the turn. The hook runs beforeturn_end, but its decision applies afterward. It also receives error and aborted responses; a predicate intended only for normal responses must returnundefinedfor those hard exits. SessionManagernow owns canonical provider context forAgentSession; assigningsession.agent.state.messagesno longer replaces future request history. Restore entries withSessionManager.inMemory(), navigate withsession.navigateTree(), or append through the session manager and callsession.refreshContext().- Exhaustive
SessionEntryswitches must handleContextEditEntrywith typecontext_edit. Usereplacement: nullto omit an entry from future provider context, or supply replacement content; raw history stays intact. - Extension integrations must account for the required boundary fields on
TurnEndEventand the newAgentBeforeSettleEventinExtensionEvent. Dispatch actionableturn_endandagent_before_settleboundaries throughemitBoundary(); handlers can return entries and request continuation. Runs requested duringagent_settledwait until all settled handlers finish.
New capabilities
0.85.1adds GPT-6 Astra through OpenAI API keys and OpenAI Codex subscriptions.0.86.0adds cost-aware prompt cache warming during long Tool runs, with optional idle warming and acache_warming_decisionhook./buggathers redacted diagnostics with an optional transcript or summary for upload to Radius or local ZIP export.- Radius gains an offline model catalog, supplemented by cached and live discovery. In
0.86.1, Meta Muse supports/login metawith key refresh and directMETA_API_KEYauthentication. - Per-model compaction budgets use
compaction.modelOverrideswithreserveTokensandkeepRecentTokens. Extensions can call configured models throughctx.modelRegistry.stream()andstreamSimple()with resolved authentication.pi.on()returns an unsubscribe function; registration changes during dispatch affect subsequent dispatches. - In
0.87.0,context_with_systemruns aftercontexton the full transcript, including system messages, and sends its result verbatim. Per-modelinputLimits.images.resizeprofiles inmodels.jsonapply to attachments,read, and Tool-result images. 0.87.1adds Claude Opus 5.5 through Anthropic, GPT-6 Sol and GPT-6 Luna through OpenAI API keys and OpenAI Codex subscriptions, and all three through supported GitHub Copilot routes. New xAI sessions default to Grok 4.7.
Reliability, provider, and CLI fixes
- The root-import packaging workaround needed for
0.85.0is no longer needed after0.85.1fixes accidental publication of internal experimental dependencies. The experimentalclientandexperimental/pluginsubpaths and server/client commands become source-only throughpi-test.sh; the supported local SDK and stdio RPC API keep their existing contracts. - The
0.86.xfixes cover GitHub Copilot GPT routing through Responses, provider reasoning and cache metadata, compaction/cancellation races, signal-terminated shell commands, clipboard fallbacks, and/bugdiagnostics.0.86.1also enables Node's persistent compile cache before CLI startup. 0.87.0repairs context-edit accounting and recovery omissions, restores prompt and Tool state aftercontexthandlers, and avoids rebuilding expired caches during delayed idle warming. Offline/bugpermits local ZIP export while blocking uploads; unknown OpenAI-compatible endpoints receive strict Tool schemas only when they advertise support.- In
0.87.1, split-turn compaction prompts separate the conversation from continuation instructions so Claude Fable 5.1 can summarize it. A missing or invalid--modevalue now reports an error and exits with a nonzero status. - The image-only message fix omits an empty text part that some OpenAI-compatible providers reject. Anthropic OAuth requests also report the corrected Claude Code version.
Documentation and verification scope
- This entry publishes Pify's
0.87.1baseline authority and release rollup. Detailed chapter, How-to, reference, and source-review migrations are scheduled for the remaining commits in this release series. The Course implementation remains an independent teaching implementation with no promise of Pi API compatibility. - Package verification pins
@earendil-works/pi-ai,@earendil-works/pi-agent-core,@earendil-works/pi-coding-agent, and@earendil-works/pi-serverto0.87.1.scripts/fixtures/pi-release-0871.jsonrecords release authority;tests/fixtures/pi-sdk-0871.contract.tschecks public declarations and supplies offline deterministic Agent, session restoration, and runtime-host checks. Content checks cover release links, migration claims, bilingual structure,lint:sync,lint:frontmatter,lint:editorial, andtest:preservation; these checks do not exercise live provider accounts. @earendil-works/pi-client,@earendil-works/pi-protocol, and@earendil-works/pi-serverremain experimental, with no stable API or compatibility guarantee. Pinning a package or describing a source contract does not change that boundary.
2026-09-04
Pify's documentation baseline now follows the official Pi 0.85.0 release and explicitly includes the intervening Pi 0.84.4 release. This is a documentation-release summary of user-visible changes, not a copy of Pi's upstream changelog.
New capabilities
- Documented external session restoration through
SessionManager.inMemory()and the ownership boundary for externally stored entries. - Documented persistent Claude thinking effort: supported Anthropic transports preserve per-turn effort and recover safely from signed-thinking mismatches.
supportsMidConvoEffortbelongs toAnthropicMessagesCompat, defaults tofalse, and may be enabled only for an exact supported Claude model on a faithful Anthropic Messages transport; it is the mechanism used for per-turn effort and signed-thinking recovery. - Added model compatibility fields:
vllmPrioritybelongs toOpenAICompletionsCompat, is relevant to vLLM priority scheduling, and is not set in generated model metadata by default, while vLLM server priority defaults to0;supportsMaxOutputTokensbelongs toOpenAIResponsesCompat, defaults totrue, and controls whether Responses-compatible gateways receivemax_output_tokens. - Added relational-algebra LaTeX join-symbol rendering support.
- Added the experimental service architecture formed by
@earendil-works/pi-client,@earendil-works/pi-protocol, and@earendil-works/pi-server, including routed sessions, transport, and protocol responsibilities.
Behavior and interface changes
- Added the prompt and RPC lifecycle:
ui_prompt_start/ui_prompt_endidentify waits for extension UI, whileclear_queuereturns and removes steering and follow-up messages before abort flows. - Clarified that built-in path tools resolve the live invocation
ctx.cwd, and documented terminal/fullscreen behavior includingPI_HYPERLINKS, capability overrides, faster search, selection-copy controls, and the embedded working indicator. - Recorded the fix for Bash-only Skills.
Reliability/provider fixes
- Covered managed
fd/rgdownloads on musl without requiring the GitHub Releases API, restored the@earendil-works/pi-coding-agent/clientcompatibility entry point, and fixed incompatible event sequences and custom Tool-call deltas. - Codex SSE now processes terminal events without a trailing blank line; fragmented Mistral tool calls retain continuations that omit the tool-call ID; OpenAI reasoning replay merges streamed text and summary deltas; the unavailable Grok model was removed.
- Provider catalog and request fixes make the Qwen catalog include Qwen3.8 Flash, send selected reasoning for Fable, correct Baseten image input metadata, select the Fireworks API adapter, repair Vertex proxy use, include Cloudflare gateway catalog models, and keep OpenRouter models that require reasoning from receiving
noneeffort. - Recorded JSONL append, concurrent share, collision-safe import, in-memory and file-backed fork, compaction, and manual abort integrity fixes.
- Documented
NO_PROXYmatching, proxy HTTP tunneling, restricted-seccomp terminal startup, and EXIF orientation scanning; resilient rendering of image-heavy output avoids the V8 string-length-limit crash.
Documentation and verification scope
- Updated the Pify chapters, How-to guides, references, FAQ, Quickstart, examples, and compile fixtures to the
0.85.0package and source baseline, with focused bilingual structure and behavior verification checks. - The client/protocol/server service packages remain experimental; this documentation does not present those APIs as stable or promise compatibility beyond the published release.
2026-08-26
- Refreshed the technical baseline and code examples for Pi
0.84.3. - Added Chapter 11 and three How-to guides for SDK testing, evaluation, and runtime hosting.
- Published an original bilingual course with a separate overview and 15-checkpoint Build Your Own Pi-style Agent path.
- Added an offline TypeScript workshop with focused tests for every checkpoint.
- Expanded the site to 43 synchronized English/Vietnamese pairs and 86 public documents.
2026-08-24
- Added an automated bilingual editorial lint for residual Han characters, control characters, full-width punctuation, mojibake, known literal translations, and long Vietnamese prose without diacritics.
- Defined a canonical English/Vietnamese terminology contract and a review ledger pinned to a specific upstream Pi commit.
- Began the full editorial and technical review of all 23 English/Vietnamese page pairs.
2026-08-22
- Replaced the previous Astro and GitBook delivery experiments with a self-hosted Fumadocs application on Vercel.
- Added English and Vietnamese routing, localized navigation, search, SEO metadata, syntax highlighting, Mermaid rendering, and bilingual end-to-end tests.
- Published the Quickstart, Glossary, Changelog, five task-oriented How-to guides, API/configuration/environment reference pages, and FAQ.
- Added code-block titles and line highlighting through the Fumadocs renderer.
- Fixed localized documentation links so clean routes no longer expose
.mdfilenames. - Added the Pify logo, adaptive favicon, GPLv3 license, contribution guide, and deployment documentation.
2026-08-20
- Imported the first 10 English and Vietnamese chapters from the Pi Agent Book translation project; the original Chinese Pi Agent Book was the canonical source for that first translation.
- Added the initial documentation navigation and source-provenance records.
- Added a custom 404 page and generated sitemap.