github badlogic/pi-mono v0.61.0

6 hours ago

New Features

  • Namespaced keybinding ids and a unified keybinding manager across the app and TUI. See docs/keybindings.md and docs/extensions.md.
  • JSONL session export and import via /export <path.jsonl> and /import <path.jsonl>. See README.md and docs/session.md.
  • Resizable sidebar in HTML share and export views. See README.md.

Breaking Changes

  • Interactive keybinding ids are now namespaced, and keybindings.json now uses those same canonical namespaced ids. Older config files are migrated automatically on startup. Custom editors and extension UI components still receive an injected keybindings: KeybindingsManager. They do not call getKeybindings() or setKeybindings() themselves. Declaration merging applies to that injected type (#2391)
  • Extension author migration: update keyHint(), keyText(), and injected keybindings.matches(...) calls from old built-in names like "expandTools", "selectConfirm", and "interrupt" to namespaced ids like "app.tools.expand", "tui.select.confirm", and "app.interrupt". See docs/keybindings.md for the full list. pi.registerShortcut("ctrl+shift+p", ...) is unchanged because extension shortcuts still use raw key combos, not keybinding ids.

Added

  • Added gpt-5.4-mini to the openai-codex model catalog (#2334 by @justram)
  • Added JSONL session export and import via /export <path.jsonl> and /import <path.jsonl> (#2356 by @hjanuschka)
  • Added a resizable sidebar to HTML share and export views (#2435 by @dmmulroy)

Fixed

  • Tests for session-selector-rename and tree-selector are now keybinding-agnostic, resetting editor keybindings to defaults before each test so user keybindings.json cannot cause failures (#2360)
  • Fixed custom keybindings.json overrides to shadow conflicting default shortcuts globally, so bindings such as cursorUp: ["up", "ctrl+p"] no longer leave default actions like model cycling active (#2391)
  • Fixed concurrent edit and write mutations targeting the same file to run serially, preventing interleaved file writes from overwriting each other (#2327)
  • Fixed RPC mode to redirect unexpected stdout writes to stderr so JSONL responses remain parseable (#2388)
  • Fixed auto-retry with tool-using retry responses so session.prompt() waits for the full retry loop, including tool execution, before returning (#2440 by @pasky)
  • Fixed /model to refresh scoped model lists after models.json changes, avoiding stale selector contents (#2408 by @Perlence)
  • Fixed validateToolArguments() to fall back gracefully when AJV schema compilation is blocked in restricted runtimes such as Cloudflare Workers, allowing tool execution to proceed without schema validation (#2395)
  • Fixed CLI startup to suppress process warnings from leaking into terminal, print, and RPC output (#2404)
  • Fixed bash tool rendering to show elapsed time at the bottom of the tool block (#2406)
  • Fixed custom theme file watching to reload updated theme contents from disk instead of keeping stale cached theme data (#2417, #2003)
  • Fixed footer Git branch refreshes to run asynchronously so branch watcher updates do not block the UI (#2418)
  • Fixed invalid extension provider registrations to surface an extension error without preventing other providers from loading (#2431)
  • Fixed Windows bash execution hanging for commands that spawn detached descendants inheriting stdout/stderr handles, which caused agent-browser and similar commands to spin forever (#2389 by @mrexodia)
  • Fixed google-vertex API key resolution to ignore placeholder auth markers like <authenticated> and fall back to ADC instead of sending them as literal API keys (#2335)
  • Fixed desktop clipboard text copy to prefer native OS clipboard integration before shell fallbacks, improving reliability on macOS and Windows (#2347)
  • Fixed Bun Bedrock provider registration to survive provider resets and session reloads in compiled binaries (#2350 by @unexge)
  • Fixed OpenRouter reasoning requests to use the provider's nested reasoning payload, restoring thinking level support for OpenRouter models and custom compat settings (#2298 by @PriNova)
  • Fixed Bedrock application inference profiles to support prompt caching when AWS_BEDROCK_FORCE_CACHE=1 is set, covering profile ARNs that do not expose the underlying Claude model name (#2346 by @haoqixu)

Don't miss a new pi-mono release

NewReleases is sending notifications on new releases.