New Features
- Extensions can dynamically remove custom providers via
pi.unregisterProvider(name), restoring any built-in models that were overridden, without requiring/reload(docs). pi.registerProvider()now takes effect immediately when called outside the initial extension load phase (e.g. from a command handler), removing the need for/reloadafter late registrations.
Added
pi.unregisterProvider(name)removes a dynamically registered provider and its models from the registry without requiring/reload. Built-in models that were overridden by the provider are restored (#1669 by @aliou).
Fixed
pi.registerProvider()now takes effect immediately when called after the initial extension load phase (e.g. from a command handler). Previously the registration sat in a pending queue that was never flushed until the next/reload(#1669 by @aliou).- Fixed duplicate session headers when forking from a point before any assistant message.
createBranchedSessionnow defers file creation to_persist()when the branched path has no assistant message, matching thenewSession()contract (#1672 by @w-winter). - Fixed SIGINT being delivered to pi while the process is suspended (e.g. via
ctrl+z), which could corrupt terminal state on resume (#1668 by @aliou). - Fixed Z.ai thinking control using wrong parameter name, causing thinking to always be enabled and wasting tokens/latency (#1674 by @okuyam2y)
- Fixed
redacted_thinkingblocks being silently dropped during Anthropic streaming, and related issues with interleaved-thinking beta headers and temperature being sent alongside extended thinking (#1665 by @tctev) - Fixed
(external, cli)user-agent flag causing 401 errors on Anthropic setup-token endpoint (#1677 by @LazerLance777) - Fixed crash when OpenAI-compatible provider returns a chunk with no
choicesarray (#1671)