Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Releases: badlogic/pi-mono

v0.56.3

06 Mar 16:08

Choose a tag to compare

New Features

  • claude-sonnet-4-6 model available via the google-antigravity provider (#1859)
  • Custom editors can now define their own onEscape/onCtrlD handlers without being overwritten by app defaults, enabling vim-mode extensions (#1838)
  • Shift+Enter and Ctrl+Enter now work inside tmux via xterm modifyOtherKeys fallback (docs/tmux.md, #1872)
  • Auto-compaction is now resilient to persistent API errors (e.g. 529 overloaded) and no longer retriggers spuriously after compaction (#1834, #1860)

Added

Fixed

  • Fixed custom editors having their onEscape/onCtrlD handlers unconditionally overwritten by app-level defaults, making vim-style escape handling impossible (#1838)
  • Fixed auto-compaction retriggering on the first prompt after compaction due to stale pre-compaction assistant usage (#1860 by @joelhooks)
  • Fixed sessions never auto-compacting when hitting persistent API errors (e.g. 529 overloaded) by estimating context size from the last successful response (#1834)
  • Fixed compaction summarization requests exceeding context limits by truncating tool results to 2k chars (#1796)
  • Fixed /new leaving startup header content, including the changelog, visible after starting a fresh session (#1880)
  • Fixed misleading docs and example implying that returning { isError: true } from a tool's execute function marks the execution as failed; errors must be signaled by throwing (#1881)
  • Fixed model switches through non-reasoning models to preserve the saved default thinking level instead of persisting a capability-forced off clamp (#1864)
  • Fixed parallel pi processes failing with false "No API key found" errors due to immediate lockfile contention on auth.json and settings.json (#1871)
  • Fixed OpenAI Responses reasoning replay regression that broke multi-turn reasoning continuity (#1878)

v0.56.2

05 Mar 23:43

Choose a tag to compare

New Features

  • GPT-5.4 support across openai, openai-codex, azure-openai-responses, and opencode, with gpt-5.4 now the default for openai and openai-codex (README.md, docs/providers.md).
  • treeFilterMode setting to choose the default /tree filter mode (default, no-tools, user-only, labeled-only, all) (docs/settings.md, #1852 by @lajarre).
  • Mistral native conversations integration with SDK-backed provider behavior, preserving Mistral-specific thinking and replay semantics (README.md, docs/providers.md, #1716).

Added

  • Added gpt-5.4 model availability for openai, openai-codex, azure-openai-responses, and opencode providers.
  • Added gpt-5.3-codex fallback model availability for github-copilot until upstream model catalogs include it (#1853).
  • Added treeFilterMode setting to choose the default /tree filter mode (default, no-tools, user-only, labeled-only, all) (#1852 by @lajarre).

Changed

  • Updated the default models for the openai and openai-codex providers to gpt-5.4.

Fixed

  • Fixed GPT-5.3 Codex follow-up turns dropping OpenAI Responses assistant phase metadata by preserving replayable signatures in session history and forwarding phase back to the Responses API (#1819).
  • Fixed OpenAI Responses replay to omit empty thinking blocks, avoiding invalid no-op reasoning items in follow-up turns.
  • Updated Mistral integration to use the native SDK-backed provider and conversations API, including coding-agent model/provider wiring and Mistral setup documentation (#1716).
  • Fixed Antigravity reliability: endpoint cascade on 403/404, added autopush sandbox fallback, removed extra fingerprint headers (#1830).
  • Fixed @mariozechner/pi-ai/oauth extension imports in published installs by resolving the subpath directly from built dist files instead of package-root wrapper shims (#1856).
  • Fixed Gemini 3 multi-turn tool use losing structured context by using skip_thought_signature_validator sentinel for unsigned function calls instead of text fallback (#1829).
  • Fixed model selector filter not accepting typed characters in VS Code 1.110+ due to missing Kitty CSI-u printable decoding in the Input component (#1857)
  • Fixed editor/footer visibility drift during terminal resize by forcing full redraws when terminal width or height changes (#1844 by @ghoulr).
  • Fixed footer width truncation for wide Unicode text (session name, model, provider) to prevent TUI crashes from rendered lines exceeding terminal width (#1833).
  • Fixed Windows write preview background artifacts by normalizing CRLF content (\r\n) to LF for display rendering in tool output previews (#1854).

v0.56.1

05 Mar 06:15

Choose a tag to compare

Fixed

  • Fixed extension alias fallback resolution to use ESM-aware resolution for jiti aliases in global installs (#1821 by @Perlence)
  • Fixed markdown blockquote rendering to isolate blockquote styling from default text style, preventing style leakage.

v0.56.0

04 Mar 20:25

Choose a tag to compare

New Features

  • Added OpenCode Go provider support with opencode-go model defaults and OPENCODE_API_KEY environment variable support (docs/providers.md, #1757).
  • Added branchSummary.skipPrompt setting to skip branch summarization prompts during tree navigation (docs/settings.md, #1792).
  • Added gemini-3.1-flash-lite-preview fallback model availability for Google provider catalogs when upstream model metadata lags (README.md, #1785).

Breaking Changes

  • Changed scoped model thinking semantics. Scoped entries without an explicit :<thinking> suffix now inherit the current session thinking level when selected, instead of applying a startup-captured default.
  • Moved Node OAuth runtime exports off the top-level @mariozechner/pi-ai entry. OAuth login and refresh must be imported from @mariozechner/pi-ai/oauth (#1814).

Added

  • Added branchSummary.skipPrompt setting to skip the summary prompt when navigating branches (#1792).
  • Added OpenCode Go provider support with opencode-go model defaults and OPENCODE_API_KEY environment variable support (#1757).
  • Added gemini-3.1-flash-lite-preview fallback model availability in provider catalogs when upstream catalogs lag (#1785).

Changed

  • Updated Antigravity Gemini 3.1 model metadata and request headers to match upstream behavior.

Fixed

  • Fixed IME hardware cursor positioning in the custom extension editor (ctx.ui.editor() / extension editor dialog) by propagating focus to the internal Editor, preventing the terminal cursor from getting stuck at the bottom-right during composition.
  • Added OSC 133 semantic zone markers around rendered user messages to support terminal navigation between prompts in iTerm2, WezTerm, Kitty, Ghostty, and other compatible terminals (#1805).
  • Fixed markdown blockquotes dropping nested list content in the TUI renderer (#1787).
  • Fixed TUI width handling for regional indicator symbols to prevent wrap drift and stale characters during streaming (#1783).
  • Fixed Kitty CSI-u handling to ignore unsupported modifiers so modifier-only events do not insert printable characters (#1807).
  • Fixed single-line paste handling to insert text atomically and avoid repeated @ autocomplete scans on large pastes (#1812).
  • Fixed extension loading with the new @mariozechner/pi-ai/oauth export path by aliasing the oauth subpath in the extension loader and development path mapping (#1814).
  • Fixed browser-safe provider loading regressions by preloading the Bedrock provider module in compiled Bun binaries and rebuilding binaries against fresh workspace dependencies (#1814).
  • Fixed GNU screen terminal detection by downgrading theme output to 256-color mode for screen* TERM values (#1809).
  • Fixed branch summarization queue handling so messages typed while summaries are generated are processed correctly (#1803).
  • Fixed compaction summary requests to avoid reasoning output for non-reasoning models (#1793).
  • Fixed overflow auto-compaction cascades so a single overflow does not trigger repeated compaction loops.
  • Fixed models.json to allow provider-scoped custom model ids and model-level baseUrl overrides (#1759, #1777).
  • Fixed session selector display sanitization by stripping control characters from session display text (#1747).
  • Fixed Groq Qwen3 reasoning effort mapping for OpenAI-compatible models (#1745).
  • Fixed Bedrock AWS_PROFILE region resolution by honoring profile region values (#1800).
  • Fixed Gemini 3.1 thinking-level detection for google and google-vertex providers (#1785).
  • Fixed browser bundling compatibility for @mariozechner/pi-ai by removing Node-only side effects from default browser import paths (#1814).

v0.55.4

02 Mar 22:26

Choose a tag to compare

New Features

  • Runtime tool registration now applies immediately in active sessions. Tools registered via pi.registerTool() after startup are available to pi.getAllTools() and the LLM without /reload (docs/extensions.md, examples/extensions/dynamic-tools.ts, #1720).
  • Tool definitions can customize the default system prompt with promptSnippet (Available tools) and promptGuidelines (Guidelines) while the tool is active (docs/extensions.md, #1720).
  • Custom tool renderers can suppress transcript output without leaving extra spacing or empty transcript footprint in interactive rendering (docs/extensions.md, #1719).

Added

  • Added optional promptSnippet to ToolDefinition for one-line entries in the default system prompt's Available tools section. Active extension tools appear there when registered and active (#1237 by @semtexzv).
  • Added optional promptGuidelines to ToolDefinition so active tools can append tool-specific bullets to the default system prompt Guidelines section (#1720).

Fixed

  • Fixed pi.registerTool() dynamic registration after session initialization. Tools registered in session_start and later handlers now refresh immediately, become active, and are visible to the LLM without /reload (#1720)
  • Fixed session message persistence ordering by serializing AgentSession event processing, preventing toolResult entries from being written before their corresponding assistant tool-call messages when extension handlers are asynchronous (#1717)
  • Fixed spacing artifacts when custom tool renderers intentionally suppress per-call transcript output, including extra blank rows in interactive streaming and non-zero transcript footprint for empty custom renders (#1719 by @alasano)
  • Fixed session.prompt() returning before retry completion by creating the retry promise synchronously at agent_end dispatch, which closes a race when earlier queued event handlers are async (#1726 by @pasky)

v0.55.3

27 Feb 21:55

Choose a tag to compare

Fixed

  • Changed the default image paste keybinding on Windows to alt+v to avoid ctrl+v conflicts with terminal paste behavior (#1682 by @mrexodia).

v0.55.2

27 Feb 21:27

Choose a tag to compare

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 /reload after 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. createBranchedSession now defers file creation to _persist() when the branched path has no assistant message, matching the newSession() 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_thinking blocks 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 choices array (#1671)

v0.55.1

26 Feb 00:12

Choose a tag to compare

New Features

  • Added offline startup mode via --offline (or PI_OFFLINE) to disable startup network operations, with startup network timeouts to avoid hangs in restricted or offline environments.
  • Added gemini-3.1-pro-preview model support to the google-gemini-cli provider (#1599 by @audichuang).

Fixed

  • Fixed offline startup hangs by adding offline startup behavior and network timeouts during managed tool setup (#1631 by @mcollina)
  • Fixed Windows VT input initialization in ESM by loading koffi via createRequire, avoiding runtime and bundling issues in end-user environments (#1627 by @kaste)
  • Fixed managed fd/rg bootstrap on Windows in Git Bash by using extract-zip for .zip archives, searching extracted layouts more robustly, and isolating extraction temp directories to avoid concurrent download races (#1348)
  • Fixed extension loading on Windows when resolving @sinclair/typebox aliases so subpath imports like @sinclair/typebox/compiler resolve correctly.
  • Fixed adaptive thinking for Claude Sonnet 4.6 in Anthropic and Bedrock providers, and clamped unsupported xhigh effort values to supported levels (#1548 by @tctev)
  • Fixed Vertex ADC credential detection race by avoiding caching a false negative during async import initialization (#1550 by @jeremiahgaylord-web)
  • Fixed subagent extension example to resolve user agents from the configured agent directory instead of hardcoded paths (#1559 by @tianshuwang)

v0.55.0

24 Feb 22:53

Choose a tag to compare

Breaking Changes

  • Resource precedence for extensions, skills, prompts, themes, and slash-command name collisions is now project-first (cwd/.pi) before user-global (~/.pi/agent). If you relied on global resources overriding project resources with the same names, rename or reorder your resources.
  • Extension registration conflicts no longer unload the entire later extension. All extensions stay loaded, and conflicting command/tool/flag names are resolved by first registration in load order.

v0.54.2

23 Feb 00:58

Choose a tag to compare

Fixed

  • Fixed .pi folder being created unnecessarily when only reading settings. The folder is now only created when writing project-specific settings.
  • Fixed extension-driven runtime theme changes to persist in settings so /settings reflects the active currentTheme after ctx.ui.setTheme(...) (#1483 by @ferologics)
  • Fixed interactive mode freezes during large streaming write tool calls by using incremental syntax highlighting while partial arguments stream, with a final full re-highlight after tool-call arguments complete.