github badlogic/pi-mono v0.63.0

latest release: v0.63.1
4 hours ago

Breaking Changes

  • ModelRegistry.getApiKey(model) has been replaced by getApiKeyAndHeaders(model) because models.json auth and header values can now resolve dynamically on every request. Extensions and SDK integrations that previously fetched only an API key must now fetch request auth per call and forward both apiKey and headers. Use getApiKeyForProvider(provider) only when you explicitly want provider-level API key lookup without model headers or authHeader handling (#1835)
  • Removed deprecated direct minimax and minimax-cn model IDs, keeping only MiniMax-M2.7 and MiniMax-M2.7-highspeed. Update pinned model IDs to one of those supported direct MiniMax models, or use another provider route that still exposes the older IDs (#2596 by @liyuan97)

Migration Notes

Before:

const apiKey = await ctx.modelRegistry.getApiKey(model);
return streamSimple(model, messages, { apiKey });

After:

const auth = await ctx.modelRegistry.getApiKeyAndHeaders(model);
if (!auth.ok) throw new Error(auth.error);
return streamSimple(model, messages, {
  apiKey: auth.apiKey,
  headers: auth.headers,
});

Added

  • Added sessionDir setting support in global and project settings.json so session storage can be configured without passing --session-dir on every invocation (#2598 by @smcllns)
  • Added a startup onboarding hint in the interactive header telling users pi can explain its own features and documentation (#2620 by @ferologics)
  • Added edit tool multi-edit support so one call can update multiple separate, disjoint regions in the same file while matching all replacements against the original file content
  • Added support for PI_TUI_WRITE_LOG directory paths, creating a unique log file (tui-<timestamp>-<pid>.log) per instance for easier debugging of multiple pi sessions (#2508 by @mrexodia)

Changed

Fixed

  • Fixed file mutation queue ordering so concurrent edit and write operations targeting the same file stay serialized in request order instead of being reordered during queue-key resolution
  • Fixed models.json shell-command auth and headers to resolve at request time instead of being cached into long-lived model state. pi now leaves TTL, caching, and recovery policy to user-provided wrapper commands because arbitrary shell commands need provider-specific strategies (#1835)
  • Fixed Google and Vertex cost calculation to subtract cached prompt tokens from billable input tokens instead of double-counting them when providers report cachedContentTokenCount (#2588 by @sparkleMing)
  • Added missing ajv direct dependency; previously relied on transitive install via @mariozechner/pi-ai which broke standalone installs (#2252)
  • Fixed /export HTML backgrounds to honor theme.export.pageBg, cardBg, and infoBg instead of always deriving them from userMessageBg (#2565)
  • Fixed interactive bash execution collapsed previews to recompute visual line wrapping at render time, so previews respect the current terminal width after resizes and split-pane width changes (#2569)
  • Fixed RPC get_session_stats to expose contextUsage, so headless clients can read actual current context-window usage instead of deriving it from token totals (#2550)
  • Fixed pi update for git packages to fetch only the tracked target branch with --no-tags, reducing unrelated branch and tag noise while preserving force-push-safe updates (#2548)
  • Fixed print and JSON modes to emit session_shutdown before exit, so extensions can release long-lived resources and non-interactive runs terminate cleanly (#2576)
  • Fixed GitHub Copilot OpenAI Responses requests to omit the reasoning field entirely when no reasoning effort is requested, avoiding 400 errors from Copilot gpt-5-mini rejecting reasoning: { effort: "none" } during internal summary calls (#2567)
  • Fixed blockquote text color breaking after inline links (and other inline elements) due to missing style restoration prefix
  • Fixed slash-command Tab completion from immediately chaining into argument autocomplete after completing the command name, restoring flows like /model that submit into a selector dialog (#2577)
  • Fixed stale content and incorrect viewport tracking after TUI content shrinks or transient components inflate the working area (#2126 by @Perlence)
  • Fixed @ autocomplete to debounce editor-triggered searches, cancel in-flight fd lookups cleanly, and keep suggestions visible while results refresh (#1278)

Don't miss a new pi-mono release

NewReleases is sending notifications on new releases.