Release notes
Oh My Pi v18.11.1
@oh-my-pi/pi-agent-core
Added
Tokenizer.countLatestTurn: counts a message as the transcript's latest assistant turn, which an Anthropic Messages replay keeps byte-for-byte (#15791 by @will-bogusz)Agent.prioritizeSteering: moves given pending steering messages ahead of older ones so one-at-a-time delivery takes them first (#15642)
Fixed
- Fixed a Cursor tool call re-sent by the server persisting two results under one id; the re-run's result replaces the first (#15749)
- Fixed compaction keeping more recent history than
keepRecentTokenswhen the latest Claude turn on the Anthropic Messages API ended its tool calls onstoporlength: the replay keeps that turn's signed reasoning, but the cut point counted only its visible blocks (#15791 by @will-bogusz)
@oh-my-pi/pi-ai
Added
- Added image support for native OpenAI Decisions and Workers AI judgments, prompted vision chat, and auth-gateway System One requests; images exceeding a judgment API's documented caps (e.g. Clef's 4 images, 4 MiB each) are rejected locally (#15471 by @anatoli-tsinovoy).
isSurvivingAssistantinproviders/transform-messages: whether an assistant turn reaches a replay, malformed tool calls dropped first, so callers outsidetransformMessagespick the same latest turn (#15791 by @will-bogusz)
Fixed
- Fixed Codex-hosted image generation ignoring the requested
aspect_ratio/image_size, and3:2/2:3requests sending no size to OpenAI image models (#15601 by @chulmin-dev) - Fixed Claude subagents failing to return structured results when
yieldarguments arrived as invalid JSON (#15605 by @farnoy) - Fixed turns stopping instead of retrying when a gateway reports its upstream WebSocket closed before
response.completed(#15628 by @nqrwhal). - Fixed Claude on Google Vertex ignoring
cacheRetention: "long": prompt caches now get the 1h TTL instead of expiring after 5 minutes, and theextended-cache-ttlbeta (which Vertex rejects) is never sent there (#15505 by @hpost) - Fixed Gemini tool continuations failing on OpenAI-compatible gateways that return
reasoning_signature, including restored sessions (#15678 by @Zzz141592653) - Fixed Cursor sessions failing every rebuilt request with
PROVIDER_ERRORafter the server re-sent a tool call: the call is recorded once, and histories that already repeat it replay it once with its latest result (#15749) - Fixed Cursor turns cut off mid-stream failing every retry with
PROVIDER_ERRORuntil you sent a new message; the retry now starts a fresh Cursor conversation (#15830) - Fixed malformed image-generation inputs being forwarded to providers or reported as credential/upstream errors (#15765 by @anatoli-tsinovoy).
- Fixed broker-backed auth-gateway processes retaining a cache entry for every distinct client session indefinitely under sustained traffic (#15841).
- Fixed turns ending on a pinned error when a provider reports "temporarily unavailable" or finishes with an
unknown,otherorunspecifiedfinish reason: these now retry automatically (#15424 by @lockwo)
@oh-my-pi/pi-catalog
Fixed
- Enabled long prompt-cache retention (
ttl: "1h") for Claude models ongoogle-vertex(#15505 by @hpost) - Fixed Gemini 4 Argon on Google Vertex and the Gemini API failing every request with "Thinking budget is not supported for this model": Gemini 4 now sends
thinkingLevelinstead ofthinkingBudget, and Argon offers only the low, medium, and high levels Google accepts (#15643 by @kevcube) - Fixed the Antigravity model selector offering roster rows the backend marks disabled (
disabled: true, e.g.gemini-4-argon-disabledon accounts without Argon access), which answeredCloud Code Assist API error (404): Requested entity was not found.; discovery now skips them the way it already skipsisInternalrows (#15684 by @CharleoYang) - Removed Google Antigravity's Gemini 3.5 Flash and its
gemini-3-flashalias from the model list; Antigravity retired them and answers every request with a retirement notice instead of a reply (#15445 by @will-bogusz) - Fixed
xai-oauthGrok 4.20 models (grok-4.20-0309-reasoning,-non-reasoning,grok-4.20-multi-agent-0309) advertising a 2M context window when the SuperGrok API rejects prompts over 1M; auto-compaction and context usage now work from the 1M window (#15443 by @will-bogusz) - Fixed trailing-dot
localhost.and*.local.custom endpoints losing local-backend compatibility settings (#15798).
@oh-my-pi/pi-coding-agent
Added
- Added image attachments to single and batch eval
judge()/judge_batch()calls (local paths or embedded images); image judgments skip candidates without image support and fail explicitly instead of dropping images (#15471 by @anatoli-tsinovoy) - Added a job tree to
/jobs,/jobs fulland the jobs pill's sheet, in the terminal UI and over ACP: subagents' background jobs now appear nested under the task that runs them, with the busiest branches listed first; only your own jobs offer Cancel (#15854 by @H4vC) - Added
ctx.ui.getEditorComponent()so extensions can wrap the active custom editor factory instead of replacing it (#8655 by @jovi-tsx)
Changed
- Reduced memory used by bundled model catalog data in standalone and npm installs (#15876 by @iliaal).
Fixed
- Fixed
/shakeand automatic shake leaving old transcript rows in native scrollback or obscuring the start of a response beside the Todo HUD (#15877). - Fixed
writemaking Rust source files beginning with#![...]executable instead of preserving their permissions (#15858
…