@oh-my-pi/pi-agent-core
Added
prepareQueuedMessagesreceives which queue (steeringorfollowUp) a batch came from (#16026)
@oh-my-pi/pi-ai
Fixed
- Fixed JSON Schema dereferencing rewriting literal values in
const,enum,default, examples, and custom annotations, or treating property names as schema keywords (#15927 by @jchanghong023). - Fixed Anthropic requests hanging forever on Bun 1.3 when the upstream accepted the request but never sent headers: aborting the request (including the first-event timeout) now fails it, so the turn retries instead of waiting until the user interrupts it (#16010 by @ca-io-systems)
- Fixed the auth gateway's
POST /v1/chat/completionsstreams being dropped (terminated) after ~255 s without upstream output, e.g. while xAI generates a large tool call's arguments, which arrive only when complete; the stream now sends an SSE: keepalivecomment every 15 s (#15940 by @radkawar) - Fixed Anthropic models with mid-conversation system messages (e.g. Claude Opus 5.5) receiving
@filemention contents and hidden extension messages as a trailingsystemmessage instead of ending the request on the user's turn (#15881)
@oh-my-pi/pi-catalog
Changed
- Renamed the built-in
google-antigravitylogin option to "Google Antigravity (Gemini, Claude, GPT-OSS)" so it is distinguishable from similarly named third-party plugins and no longer implies support stops at Gemini 3 (#15998 by @savanne-kham).
Fixed
- Fixed Command Code's
z-ai/glm-5.3-flashfailing every request with "not available on this endpoint": the catalog routes it to chat completions, the only endpoint Command Code lists for it (#15922 by @jasonharrison) - Fixed
/handofffailing with400 Provider returned erroron OpenRouter's hosted Muse Spark 1.x and Muse Wonder models: requests no longer send atool_choicethe upstream Meta backend rejects (#15910) - Fixed OpenCode Zen bringing back retired bundled models from an authoritative model cache, and dropping drop-listed models such as
gemini-3.7-flashwhen a refresh fails after an upgrade (#15770 by @adi-IL)
@oh-my-pi/pi-coding-agent
Breaking Changes
- Extension
ui.approve()hosts receive an optionalsessionchoice label and answer"once","session", or"deny"instead of a boolean
Added
- Added
imageCountBudgetto custom models andmodelOverridesin models.yml, so a custom gateway can state its host's image limit instead of the default of 5; past that limit the oldest images were dropped on every new image, which rewrote the provider's prompt cache (#15002, #15969 by @aramalipoor) - The status line names the active profile next to the
πbrand (π-work), so sessions from different profiles are distinguishable at a glance; the default profile is unchanged (#15622 by @matthewrball) - Added opt-in
prewalk.auto(off,suggest, oron): the native judge decides per task whether to arm a prewalk handoff toprewalk.autoTarget, and the next task starts back on the planning model (#16026 by @taibenvenuti) - Added
/seanceand the taskseanceagent: consult a saved session read-only, in place, without resuming it or copying its artifacts; pick the source and an optional model from pickers, and send follow-ups to the consultant (#15036 by @anatoli-tsinovoy)
Changed
- Tool approval prompts list Approve, Approve
<tool>for this session, and Deny again: with an empty composer, pick with the arrow keys and Enter; typing in the composer denies and steers instead, and the Deny row reads "Deny and send message" while you do
Fixed
- Fixed the Isolate Subagents setting description implying that all tasks run isolated; each task must opt in with
isolated: true(#15987). - Fixed
readlabeling re-encoded images with the display format instead of the source file's format; it now identifies both when they differ (#15890). - Fixed
omp -pandtasksubagents reporting a clean finish with an earlier answer when a context overflow could not be compacted enough to retry; the overflow error is now the run's outcome (#15897 by @nhthung) - Fixed Cursor's Shell tool killing commands once its
block_until_mswait elapsed; the wait no longer sets the kill deadline, which comes from Cursor'shard_timeoutor the bash default (#15898 by @nhthung) - Fixed an interrupted prompt's late setup cleanup marking the next prompt idle early, allowing overlapping submissions and releasing sleep prevention mid-turn (#15946)
- Fixed hashline
REMhiding the path-recovery warning when a nonexistent path matched an earlier-read file (#15957). - Fixed tool downloads (
sd,sg,yt-dlp,trafilatura) failing withGitHub API error: 403on a machine whose egress IP has spent GitHub's anonymous 60/hour budget; the release lookup now sendsGITHUB_TOKEN/GH_TOKENlike omp's other GitHub API call sites (#15981 by @iacore) - Background local memory extraction now stops after one bounded retry budget on repeated OpenAI-compatible 429 responses instead of multiplying transport, provider, and completion retries (#15826).
- Fixed a message-result subagent resumed by typing into its focused session leaving
agent://<id>empty and never reporting its final reply to the parent (#15948) - Fixed
readof an RSS or Atom feed showingUntitledfor every item and dropping feed titles, descriptions, dates, and RSS item links (#15954) - Fixed
readshowing a binary notice instead of an HTML page when a server sends unlabeled gzip to the first request but decodable HTML to the second (#15956) - Fixed
readreturning a homepage's site-wide feed or a page's site-widellms.txtalternate instead of the requested page (#15955). - Fixed
ast_grepreporting a clean "No matches found" for a pattern that does not parse in the target language (e.g. a bare C# identifier); it now lists the pattern's ERROR node as a parse issue (#15950) - Fixed
--resume <id>and session listings skipping transcripts placed in the session directory as symlinks (#15878, #15884 by @peda-cos) - Fixed sessions with a deferred-connecting MCP server listing every routed MCP tool twice, once as a mount notice and once in route guidance (#15982 by @zcyoung2000)
Removed
- Removed the built-in
rs-parking-lotrule; Rust edits usingstd::sync::{Mutex, RwLock}with.lock().unwrap()are no longer steered toparking_lot
@oh-my-pi/pi-natives
Changed
- Changed
encodeSixelandencodeSixelAsyncto drop a partial last 6-pixel band, so an image never extends below the requested height and the caller no longer has to shrink it to a multiple of 6 (#16007)
@oh-my-pi/pi-tui
Added
- Added selection-only session and model picker actions for
/seance, so choosing a source or model leaves the active session and model unchanged (#15036 by @anatoli-tsinovoy)
Changed
ApprovalDialogComponentshows a choice list (Approve, an optionalsessionrow, Deny): the arrow keys move between them and Enter (armed afterAPPROVE_ARM_MS) takes the highlighted one; while a composer draft holds Enter the highlight sits on Deny, relabeled "Deny and send message"; Tern clicks on a choice take it; Page Up/Down scroll the details
Fixed
- Fixed a streamed Markdown list keeping every item out of native scrollback until the turn ended, so rows that scrolled off screen were unreachable mid-stream; items in front of the newest one now retire as soon as it begins (#13676, #15993 by @shgew)
- Fixed SIXEL charts and SVG figures being resampled before display, which softened their text, on terminals whose cell height is not a multiple of 6 such as Windows Terminal (#16007)
@oh-my-pi/pi-utils
Fixed
- Fixed Markdown fence info-string parsing to keep backtick-containing backtick openers as paragraph text while accepting backticks in tilde info strings and Unicode line separators in either fence's info string (#15928 by @jchanghong023).
- Fixed
parseHTMLtreating<link>in RSS/Atom documents as an HTML void element, which dropped the URL text of RSS<link>…</link>(#15954)
What's Changed
- fix(read): rendered rss and atom feed fields instead of untitled by @roboomp in #15959
- fix(tools): scoped read alternates to the requested page by @roboomp in #15960
- fix(read): rendered decoded html from binary refetch by @roboomp in #15961
- fix(edit): preserved recovery warnings on deleted files by @roboomp in #15962
- feat(coding-agent): configurable imageCountBudget for custom models by @aramalipoor in #15969
- fix(tools): send the environment token to the GitHub release lookup by @iacore in #15981
- fix(coding-agent): suppress mount notices duplicated by route guidance by @zcyoung2000 in #15982
- fix(task): clarify opt-in subagent isolation setting by @roboomp in #15990
- fix(tui): retire finished items of a streaming list mid-stream by @shgew in #15993
- fix(catalog): rename Google Antigravity login label by @savanne-kham in #15998
- fix(tui): encoded sixel images at their cell box without resampling by @roboomp in #16009
- fix(ai): failed an aborted cowork request that never received headers by @ca-io-systems in #16010
- feat(tui): tag the status-line brand with the active profile by @matthewrball in #15622
- fix(catalog): preserve authoritative caches in resolveProviderModels by @adi-IL in #15770
- fix(memory): bounded background extraction retries by @roboomp in #15827
- fix(ai): kept user-attributed developer turns off anthropic system role by @roboomp in #15883
- fix(session): follow symlinks in session inventory scans by @peda-cos in #15884
- fix(read): corrected source image format labels by @roboomp in #15892
- fix(coding-agent): kept an unrecovered context overflow as the run's outcome by @nhthung in #15897
- fix(cursor): stopped killing Shell commands at the block_until_ms wait by @nhthung in #15898
- fix(catalog): route Command Code z-ai/glm-5.3-flash to chat completions by @jasonharrison in #15922
- fix(ai): preserve literal data while dereferencing schemas by @jchanghong023 in #15927
- fix(utils): preserve invalid backtick fences as prose by @jchanghong023 in #15928
- fix(ai): keep auth-gateway chat-completions SSE streams alive during upstream silence by @radkawar in #15940
- fix(session): preserved next prompt state after interrupted setup by @roboomp in #15947
- fix(task): publish user-resumed message results to agent:// and parent by @roboomp in #15949
- fix(natives): reported ast-grep patterns that parse to an ERROR node by @roboomp in #15958
- fix(catalog): omitted tool_choice for openrouter muse models by @roboomp in #15911
- feat(coding-agent): add opt-in auto-prewalk routing with native judgment by @taibenvenuti in #16026
- feat(coding-agent): add focused read-only session seance by @anatoli-tsinovoy in #15036
- chore(coding-agent): remove stale rs-parking-lot TTSR rule by @H4vC in #16034
New Contributors
- @zcyoung2000 made their first contribution in #15982
- @ca-io-systems made their first contribution in #16010
- @matthewrball made their first contribution in #15622
- @adi-IL made their first contribution in #15770
- @nhthung made their first contribution in #15897
Full Changelog: v18.11.2...v18.11.3