vault / earendil-pi / v1.3.0
earendil-pi @ v1.3.0
integrity
- size
- 8.6 MiB
- downloaded
- last checked
source https://github.com/earendil-works/pi · temporary_down
release notes
New Features
- Choose where
/shareuploads:sessionShareDestinationselectsauto,gist, orradius. See Sessions and context and Export or share a session. - Cache-preserving thinking level changes on OpenAI GPT-6: changing the thinking level mid-session with an API key keeps the prompt cache.
- Kimi Code over Chat Completions: tools added mid-conversation no longer invalidate the prompt cache.
models.jsonbase URL overrides must now include/v1. See Providers. - Clean model switching: thinking from a previous model is dropped instead of being shown to the new model as text.
- Resumed sessions keep their active tools:
--tools +name/-nameapplies on top of them. See Tools.
Added
- Changing the thinking level mid-session on OpenAI GPT-6 models (API key) now keeps the prompt cache (#10853)
- Added the
sessionShareDestinationsetting to choose automatic, GitHub gist, or Radius uploads for/share(#10870 by @vegarsti)
Changed
- Changed the
kimi-codingprovider to use OpenAI Chat Completions athttps://api.kimi.com/coding/v1, the protocol used by the official Kimi Code client. K3, K3-256K, and Kimi For Coding now accept tools added mid-conversation without invalidating the prompt cache.models.jsonoverrides of thekimi-codingbase URL must now include/v1(#10720) - Changed model switching to drop thinking blocks from earlier assistant messages produced by a different model, instead of sending them as plain text. The new model previously saw the old model's reasoning as part of its replies and could start writing its own reasoning into the visible answer (#10995)
Fixed
- Pinned internal Pi dependencies to exact release versions to prevent fresh installs from mixing incompatible packages (#10865)
- Fixed resumed sessions dropping tools activated during the session. Resume now restores the session's active tools, with
--tools +name/-nameentries applied to them, unless--toolswith tool names,--no-tools, or--no-builtin-toolsselects tools explicitly (#10785) - Fixed stopping a codemode script or reaching its deadline waiting for a non-interruptible built-in to return on Bun (#10748)
- Fixed repeated codemode timeouts or aborts accumulating surviving workers; admission now limits live workers to two across sessions, counting cancelled workers until actual exit (#10748)
- Fixed
--modelchoosing a provider by catalog order when several providers offer the match; Pi now prefers the provider with credentials and otherwise reports the ambiguity.--modelsandenabledModelsadd a model for each provider that offers it and warn about the ambiguity (#10160) - Fixed
readline-range labels for numeric-string or null arguments in the TUI, session tree, HTML exports, and examples (#9887) - Fixed the Nix flake build failing when a provider switched APIs: the model catalog pin is now refreshed from the newest published catalog when its model API groups differ, and releases pin the newest catalog and build with it before tagging (#10985)
- Fixed the Nix package putting its Node.js first on
PATH, which made bash tool shells use Pi's Node instead of the user'snode/npm. Pi's Node is now only a fallback (#10519) - Fixed prompt templates dropping empty quoted arguments (
""or''), which shifted later positional arguments and prevented positional defaults from applying (#10867) - Fixed the Nix package build failing in its install check because it still expected chord and esbuild, which Pi no longer depends on
- Fixed tool-call argument parsing dropping fields when a string contains an invalid
\uescape such as\usepackage(#10868) - Fixed Anthropic and Bedrock Claude requests failing with a 400 when an error tool result contains images; the images are now sent after the tool results of the turn, so the model still sees them (#10794)
- Fixed OpenCode Go Gemini models failing with a 404 by moving OpenCode Zen and OpenCode Go to the
opencode.ai/inferenceendpoints, and added Google Generative AI support to the OpenCode Go provider - Fixed OpenCode Go MiniMax M2.7 failing with "Model does not support this protocol" by using the Anthropic Messages API
- Fixed automatic retry not triggering for gateway
Unable to forward upstream streamerrors (#10920) - Fixed automatic retry not triggering for
The service is temporarily unavailableerrors, which also made compaction fail on the first attempt (#10965) - Fixed OpenAI-compatible responses showing thinking after the answer when a proxy such as LiteLLM sends reasoning and content in the same stream chunk (#10926)
- Fixed Gemini 4 Argon requests on Google Vertex failing with "Thinking budget is not supported", and its thinking level being ignored on the Gemini API (#10890)
- Fixed Xiaomi MiMo models failing with a 400 at the
minimalthinking level; they now expose only theoffandhighlevels (#10818) - Fixed
openai-codex/gpt-6.1-solusing a 272K context window instead of the 500K window Codex now provides (#10840) - Fixed tool calls whose final arguments are malformed JSON silently running with only the fields parsed before the error; they now fail validation and show the model the raw arguments it sent (#10897)
- Fixed Claude Haiku 5.5 and Claude Opus 5 not supporting the
offthinking level (#10753) - Fixed
done()of an extension'sctx.ui.custom({ overlay: true })closing the topmost overlay instead of its own, which left the finished overlay on screen and another extension's dialog unresolved (#10648, #10999 by @masonc15)
download
unix · zip
curl -fL -o v1.3.0.zip https://ratatoskr.space/pkg/earendil-pi/v1.3.0.zip
printf '%s %s\n' '054c323bf267d92ff0425408c075bca64edec105522847ff8c0d0fcf63cb5a81' 'v1.3.0.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/earendil-pi/v1.3.0.zip"
$out = "v1.3.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "054c323bf267d92ff0425408c075bca64edec105522847ff8c0d0fcf63cb5a81") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1.3.0.tar.gz https://ratatoskr.space/pkg/earendil-pi/v1.3.0.tar.gz
printf '%s %s\n' '93048fcee510533c6b903e0936d996ddd4d62d7a27c0711e58a96dc8907a6afa' 'v1.3.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/earendil-pi/v1.3.0.tar.gz"
$out = "v1.3.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "93048fcee510533c6b903e0936d996ddd4d62d7a27c0711e58a96dc8907a6afa") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v1.3.0.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/earendil-pi/v1.3.0.zip
printf '%s %s\n' '054c323bf267d92ff0425408c075bca64edec105522847ff8c0d0fcf63cb5a81' 'v1.3.0.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/earendil-pi/v1.3.0.zip"
$out = "v1.3.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "054c323bf267d92ff0425408c075bca64edec105522847ff8c0d0fcf63cb5a81") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1.3.0.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/earendil-pi/v1.3.0.tar.gz
printf '%s %s\n' '93048fcee510533c6b903e0936d996ddd4d62d7a27c0711e58a96dc8907a6afa' 'v1.3.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/earendil-pi/v1.3.0.tar.gz"
$out = "v1.3.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "93048fcee510533c6b903e0936d996ddd4d62d7a27c0711e58a96dc8907a6afa") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1.3.0.zip | zip | 8.7 MiB |
blake3-24 c74fb6fd5e4ce5641c92d2de96483f7505b4ee297d08b8a0
sha256 054c323bf267d92ff0425408c075bca64edec105522847ff8c0d0fcf63cb5a81
sha1 c6b6e058fddc01e22ac4c2c7ae2374d472614084
|
| v1.3.0.tar.gz | tar.gz | 7.6 MiB |
blake3-24 9ce9ac14a078c09e0712b802248e59997250413b6f50674d
sha256 93048fcee510533c6b903e0936d996ddd4d62d7a27c0711e58a96dc8907a6afa
sha1 91511dd0b413eeac716c3c15c3e670dddb2dd3d9
|
install
bazel
http_archive(
name = "earendil-pi",
urls = ["https://ratatoskr.space/pkg/earendil-pi/v1.3.0.tar.gz"],
integrity = "sha256-kwSPzuUQUzxrkD4JNtmW3dTWLXonwHEeWKltyJB6avo=",
strip_prefix = "earendil-pi-v1.3.0",
)
zig
.url = "https://ratatoskr.space/pkg/earendil-pi/v1.3.0.tar.gz",
install via yggdrasil mesh
bazel
http_archive(
name = "earendil-pi",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/earendil-pi/v1.3.0.tar.gz"],
integrity = "sha256-kwSPzuUQUzxrkD4JNtmW3dTWLXonwHEeWKltyJB6avo=",
strip_prefix = "earendil-pi-v1.3.0",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/earendil-pi/v1.3.0.tar.gz",