You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Queue API replaced with steer/followUp: The queueMessage() method has been split into two methods with different delivery semantics (#403):
steer(text): Interrupts the agent mid-run (Enter while streaming). Delivered after current tool execution.
followUp(text): Waits until the agent finishes (Alt+Enter while streaming). Delivered only when agent stops.
Settings renamed: queueMode setting renamed to steeringMode. Added new followUpMode setting. Old settings.json files are migrated automatically.
AgentSession methods renamed:
queueMessage() → steer() and followUp()
queueMode getter → steeringMode and followUpMode getters
setQueueMode() → setSteeringMode() and setFollowUpMode()
queuedMessageCount → pendingMessageCount
getQueuedMessages() → getSteeringMessages() and getFollowUpMessages()
clearQueue() now returns { steering: string[], followUp: string[] }
hasQueuedMessages() → hasPendingMessages()
Hook API signature changed: pi.sendMessage() second parameter changed from triggerTurn?: boolean to options?: { triggerTurn?, deliverAs? }. Use deliverAs: "followUp" for follow-up delivery. Affects both hooks and internal sendHookMessage() method.
RPC API changes:
queue_message command → steer and follow_up commands
set_queue_mode command → set_steering_mode and set_follow_up_mode commands
RpcSessionState.queueMode → steeringMode and followUpMode
Settings UI: "Queue mode" setting split into "Steering mode" and "Follow-up mode"
Added
Configurable double-escape action: choose whether double-escape with empty editor opens /tree (default) or /branch. Configure via /settings or doubleEscapeAction in settings.json (#404)
Vertex AI provider (google-vertex): access Gemini models via Google Cloud Vertex AI using Application Default Credentials (#300 by @default-anton)
Built-in provider overrides in models.json: override just baseUrl to route a built-in provider through a proxy while keeping all its models, or define models to fully replace the provider (#406 by @yevhen)
Automatic image resizing: images larger than 2000x2000 are resized for better model compatibility. Original dimensions are injected into the prompt. Controlled via /settings or images.autoResize in settings.json. (#402 by @mitsuhiko)
Alt+Enter keybind to queue follow-up messages while agent is streaming
Theme and ThemeColor types now exported for hooks using ctx.ui.custom()
Terminal window title now displays "pi - dirname" to identify which project session you're in (#407 by @kaofelix)
Changed
Editor component now uses word wrapping instead of character-level wrapping for better readability (#382 by @nickseelert)
Fixed
/model selector now opens instantly instead of waiting for OAuth token refresh. Token refresh is deferred until a model is actually used.
Shift+Space, Shift+Backspace, and Shift+Delete now work correctly in Kitty-protocol terminals (Kitty, WezTerm, etc.) instead of being silently ignored (#411 by @nathyong)
AgentSession.prompt() now throws if called while the agent is already streaming, preventing race conditions. Use steer() or followUp() to queue messages during streaming.
Ctrl+C now works like Escape in selector components, so mashing Ctrl+C will eventually close the program (#400 by @mitsuhiko)