@oh-my-pi/pi-agent-core
Fixed
- Fixed stream finalization when a provider ends without emitting a completion or error event, ensuring the final assistant message is preserved and corresponding message lifecycle events are emitted.
- Fixed tool execution being incorrectly skipped when host steering callbacks reject during a tool batch.
- Fixed stream hangs and preserved the original error when host aside-commit or discard callbacks fail.
@oh-my-pi/pi-ai
Added
- Added Claude saved-reset discovery and redemption, including session-only resets, grant eligibility, expiry, and safe retry handling.
Fixed
- Fixed custom OpenAI-compatible extension streamers failing when no compatibility configuration was provided.
- Fixed local provider sign-in for LM Studio, llama.cpp, and vLLM so an empty API key is not treated as successful authentication.
- Fixed Vercel AI Gateway models backed by non-Anthropic providers failing tool calls because of strict schema validation; requests now retry with compatible non-strict tool handling.
- Improved AWS Bedrock authentication by refreshing expired AWS SSO sessions automatically, reducing the need to run
aws sso loginagain. - Fixed Bedrock tool-enabled requests when tool descriptions are included in the system prompt.
- Improved Alibaba Token Plan (Beijing) quota reporting across workspaces and made gateway rejection codes visible in error logs.
- Fixed the tool-call loop guard so repeated identical calls continue to be redirected after the detection threshold is reached.
- Fixed valid required null values inside tool argument unions being removed before dispatch (#12523 by @cswenor).
- Signing in to a local provider (lm-studio, llama.cpp, vllm) with an empty key paste no longer reports the provider as logged in while its requests go out unauthenticated. (#12436 by @xiechimon)
- Fixed every turn failing with
400 Invalid schema for function '<tool>' … Missing '<param>'on Vercel AI Gateway models served from a non-Anthropic upstream (e.g.openai/gpt-5.6-sol): the translated strict-tool rejection now triggers the existing non-strict retry instead of failing the turn (#12760 by @primitive-type). - Expired AWS SSO access tokens are now refreshed via the SSO OIDC
refresh_tokengrant instead of failing withsso-token-expired, so Bedrock profiles keep working betweenaws sso loginruns the same way the AWS CLI does (#12736 by @nwbb). - Fixed Bedrock rejecting tool-enabled requests when tool descriptions are inlined into the system prompt (#12732 by @mustafaabidali).
- Alibaba Token Plan (Beijing) quota reporting no longer pins requests to a single workspace, and HTTP-200 gateway rejections now log their error code (#12395 by @Dante-dan).
- The tool-call loop guard keeps redirecting when a model continues the same identical call past the detection threshold instead of firing only once (#12709 by @F0Rextasy).
- Fixed OpenAI-compatible Gemini gateways losing message-level thought signatures when replaying tool-call history.
- Added support for explicitly disabling reasoning with
reasoning_effort: "none"through Chat Completions authentication gateways. - Improved Bedrock resilience by retrying transient in-stream internal server, service unavailable, and throttling errors.
- Fixed Anthropic prompt-cache keep-alive refreshes for turns that used forced tool selection.
- Fixed auth-broker usage reports incorrectly sharing usage limits between Team members with shared workspace and organization identifiers.
- Fixed OpenAI Codex requests hanging when an error response body is delayed.
- Fixed Kimi usage reporting so monthly totals and code quotas are shown alongside the five-hour usage window.
- Bedrock no longer sends provider-invalid payloads when an errored tool result contains an image; the image is hoisted into a sibling block (#12865 by @roboomp).
- Gemini, Vertex, and Cloud Code Assist requests no longer include the unsupported
minP/repetitionPenaltysampling fields, which caused 400s when set globally (#12850 by @roboomp).
@oh-my-pi/pi-catalog
Fixed
- Local OpenAI-compatible backends—including llama.cpp, LM Studio, vLLM, Ollama, and custom loopback or LAN hosts—now support maxTokens values above 64k without incorrectly applying the hosted OpenAI limit.
- Fixed Union Alpha requests on OpenCode Go and Zen by using the correct Messages API.
- Updated SuperGrok’s Grok 4.7 metadata to expose its documented 500K context window and low, medium, high, and xhigh thinking levels.
- Fixed GPT-OSS tool interactions on Google Antigravity and Gemini CLI so function-call history is preserved correctly.
- Fixed Devin model discovery for Enterprise credentials by falling back to the legacy Windsurf catalog when native discovery does not return the full model list.
- Curated Xiaomi Token Plan (China) MiMo V2.6 metadata: context/output limits, reasoning, and image input (#12841 by @roboomp).
@oh-my-pi/pi-coding-agent
Added
- Added Claude saved resets to usage views and
/usage reset, with automatic blocked-limit recovery and expiring-reset redemption controlled byclaudeResets. - Added support for searching embedded harness documentation with
findandomp findusingomp://scopes, including file-specific searches and:start-endselectors; results open directly through canonicalomp://URLs.
Changed
- Updated server-side fallback documentation and logic to target claude-opus-5-5
- Added support for claude-opus-5-5 to model priority registry
- Updated the read tool guidance to decode images inline by default and require an explicit
:imgselector for SVG rendering. - Improved model discovery and fallback behavior: authentication failures are surfaced in the
/modelshub, and models without a matching role-specific fallback now use the default fallback chain. - Improved resilience for subagents by retrying provider stream failures that occur after partial output and preserving configured ordered model fallbacks at startup.
- MCP OAuth with Google issuers now requests offline access so refresh tokens can be issued; repeated auth-broker token rotations also preserve the required refresh and client metadata.
- MCP servers from omp-plugins now expand
${CLAUDE_PLUGIN_ROOT}and${OMP_PLUGIN_ROOT}in commands, arguments, and working directories. /reviewnow uses the session's current working directory after/moveor/wt.- Pasted and dragged image files now retain their original filesystem paths so the agent can act on the source files directly.
- Custom sessions can now be moved across filesystems without losing transcripts or artifacts.
hub jobsnow returns a compact, non-consuming status summary instead of replaying completed output or consuming pending auto-delivery.- The display-reset shortcut now works while the ask dialog has keyboard focus, and
tab.press()provides a clear error for the legacy argument order. - Wayland keyboard input now follows the compositor's active XKB layout instead of assuming a US layout.
- LSP diagnostics now refresh when watched files are created or deleted and after a server reload.
- Compiled bytecode binaries now start correctly when bundled dependencies use
import.meta.resolve.
Fixed
- Fixed JavaScript
evalassignments in cells containing top-levelawaitso they persist into subsequent cells. - Fixed skill hints becoming out of sync with the active prompt after discarded rebuilds and in advisor sessions.
- Restored
pi.pi.askToolRendererfor extensions that replace the built-in ask tool, preserving native rendering. - Fixed npm plugin upgrades and reinstalls leaving stale or duplicate manifest entries that could break
bun install. - Fixed
evalwaits longer than approximately 24.8 days returning immediately because of native timer overflow. - Fixed deleted sessions being resurrected from stale rewrite backups.
- Fixed
/collabrelay connections honoringHTTPS_PROXYandNO_PROXY. - Fixed sessions remaining blocked by queued turns or Hindsight auto-recall after disposal or cancellation.
- Fixed edits to auto-generated files aborting the entire turn; they now return a tool-scoped error.
- Fixed Edit handling of invalid overlapping selections in multibyte text so the worker reports a match error instead of panicking.
- Fixed local memory consolidation on case-insensitive filesystems when project path casing changes between launches.
- Fixed first-time Xcode MCP connections on macOS by allowing the signed
ompbinary to request Apple Events permission. - Fixed stale or duplicated TTSR trigger events during streaming.
- Fixed MCP OAuth credentials retaining their refresh endpoint and client metadata across repeated token rotations.
- Fixed local model and provider retry behavior for streamed and partially buffered failures.
- Fixed memory and session cleanup issues that could leave stale artifacts or inconsistent state.
lsp.formatOnWritenow prefers a dedicatedisLinterformatter server when a type-checker also claims the file (#12847 by @roboomp)./extensionsno longer shows OMP-installed marketplace capabilities as disabled behind the foreign-plugin opt-in gate (#12849 by @roboomp).
Removed
- Removed support for image query parameters (
?q=) and bare image paths in the read tool. - Custom models now honor provider-level
transport: pi-nativeand send requests to the native gateway (#12845 by @joshrzemien). - Fixed live models that match no
retry.fallbackChainsrole primary (e.g. Fable after/model) resolving no chain, so a wait longer thanretry.maxDelayMsaborted the session instead of walkingdefault(#12421). - Fixed skill hints drifting from the active prompt after discarded rebuilds or in advisor sessions (#12148 by @jerome-benoit).
- Restored
askToolRendereron the extension namespace (pi.pi.askToolRenderer) after the pi-tui renderer migration dropped it, so extensions that shadow the built-in ask tool can keep the native rendering again. (#12694 by @xiechimon) - Model discovery rejected with 401/403 now surfaces an authentication error in the /models hub instead of a silently empty model list. (#12436 by @xiechimon)
- Pasted or dragged image files now reach the agent with their original filesystem path, so it can read and act on the source file directly; clipboard screenshots keep working unchanged. (#12404 by @xiechimon)
/reviewnow runs VCS operations against the live session cwd after/moveor/wtinstead of the session-start checkout (#12712 by @F0Rextasy).- Reinstalling or upgrading an npm plugin no longer leaves stale or duplicate manifest edges that broke
bun install(#12727 by @F0Rextasy). - TTSR now emits one
ttsr_triggeredevent per streamed violation instead of one per evaluation pass (#12729 by @F0Rextasy). - Eval
wait()timeouts above ~24.8 days no longer overflow the native timer and return immediately (#12731 by @F0Rextasy). - MCP OAuth against Google issuers now requests
access_type=offlineso refresh tokens are issued (#12737 by @F0Rextasy). - Deleting a session now also removes its stale
.bakrewrite backups so the picker cannot resurrect it (#12746 by @F0Rextasy). /collabrelay WebSockets now honorHTTPS_PROXY/NO_PROXYlike other transports (#12762 by @jacobcolyvan).tab.press()now rejects the invertedpress(selector, key)call with a hint naming the corrected(key, { selector })form, instead of the key parser's opaqueUnknown key: <selector>(#12136) (#12266 by @danilouchoa).- The display-reset shortcut (
app.display.reset,alt+lby default) now fires while the ask dialog holds keyboard focus, instead of being dropped silently; the #11215 global-listener promotion covered the other four editor display actions but missed this one (#12217) (#12262 by @danilouchoa). - Custom sessions can move across filesystems without losing their transcript or artifacts (#12360, #12378 by @Dante-dan).
- Fixed
hub jobsreplaying full output for every settled job and consuming pending auto-delivery; it now returns a compact non-consuming status summary (#12547 by @pedropaulovc). - Compiled bytecode binaries now start correctly when bundled dependencies use
import.meta.resolve(#12133 by @andrebrait). - Subagents now retry provider stream errors that arrive after buffered partial output, and such failures are reported as transport errors instead of schema-invalid results (#12752 by @bse-ai).
- Edits targeting auto-generated files now return a tool-scoped rejection instead of aborting the whole turn (#12499 by @Dante-dan).
- Subagents with an ordered model fallback keep it reachable on startup when the parent default role shares the same primary model (#12377 by @Dante-dan).
- omp-plugins MCP servers now substitute
${CLAUDE_PLUGIN_ROOT}/${OMP_PLUGIN_ROOT}incommand,args, andcwd(#12801 by @holny).
@oh-my-pi/pi-natives
Fixed
- Fixed stale workspace addons failing when first used; the error now identifies the addon and provides the command to rebuild native addons.
- Fixed background bash jobs hanging indefinitely when output forwarding stalls.
@oh-my-pi/snapcompact
Fixed
- Fixed summaries incorrectly advertising a
¶think:scope when thinking content is excluded from the archive.
@oh-my-pi/omp-stats
Fixed
- Fixed background statistics spans to use unique identifiers and close jobs correctly.
@oh-my-pi/pi-tui
Added
- Added Claude and Codex saved-reset counts, availability, and expiry to usage views, with provider-specific confirmation and uniquely identified account options.
- Added terminal detection and capability support for otty and rio, including Kitty graphics and true-color support where available, plus otty hyperlinks and notifications.
- Added the public
stripTerminalSequencesexport for extensions that need to remove terminal control sequences.
Fixed
- Composer shape previews now use the full available overlay width instead of being clipped at 96 columns.
- Fixed cursor placement when recalling prompts from history, keeping single-line entries at the end and preserving the appropriate position for multi-line entries.
- Restored modified-key handling and terminal notifications over SSH sessions running inside tmux.
- Fixed typed Enter occasionally being interpreted as a literal newline when terminal input events are batched.
What's Changed
- singularityapi login flow by @H4vC in #12707
- singularityapi main platform by @H4vC in #12740
- fix(catalog): singularityapi image transport and GPT-5.6 reasoning ladder by @H4vC in #12751
- feat(find): search omp:// harness docs via materialized corpus by @H4vC in #12758
- fix(retry): walk default fallbackChains when live model matches no role (#12421) by @shah1git in #12620
- fix(compat): model side-turn capability policy by @gokceneraslan in #12629
- feat(catalog): split singularityapi into dev and tech providers by @H4vC in #12803
- fix(task): preserve subagent retry fallback role on startup by @Dante-dan in #12377
- fix(hub): summarize jobs without consuming output by @pedropaulovc in #12547
- fix(agent): append zero-event trailing message to context and emit lifecycle events by @xiechimon in #12605
- fix(tui): detect the otty terminal with Kitty graphics and placeholder support by @xiechimon in #12665
- fix(snapcompact): gate ¶think: legend on includeThinking by @F0Rextasy in #12703
- fix(setup): run link-omp natively on Windows by @F0Rextasy in #12704
- fix(ai): re-detect continued identical tool calls past the threshold by @F0Rextasy in #12709
- fix(changelog): merge duplicate 18.0.7 sections by @F0Rextasy in #12717
- fix(catalog): curate xai-oauth grok-4.7 with documented thinking ladder by @eggpeat in #12725
- fix(stats): ensure unique background span ids and correct job closing by @404MaximWang in #12726
- fix(plugins): prune stale npm edge before bun install by @F0Rextasy in #12727
- fix(ttsr): emit one ttsr_triggered per violation, not per evaluation by @F0Rextasy in #12729
- fix(eval): chunk oversized wait timers past the 32-bit limit by @F0Rextasy in #12731
- fix(ai): omit empty Bedrock tool descriptions instead of sending "" by @mustafaabidali in #12732
- fix(ai): refresh expired AWS SSO tokens instead of erroring by @nwbb in #12736
- fix(mcp): request access_type=offline from Google issuers by @F0Rextasy in #12737
- fix(session): delete stale .bak siblings with the session by @F0Rextasy in #12746
- fix(coding-agent): retry provider stream errors in subagents and stop reporting them as schema failures by @bse-ai in #12752
- fix(ai): classify gateway-translated strict tool schema rejections by @primitive-type in #12760
- fix(collab): honour relay WebSocket proxies by @jacobcolyvan in #12762
- fix(catalog): enable supportsFunctionPartId for gpt-oss on google-antigravity by @tuandinh0801 in #12771
- fix(ai): map Bedrock stream exception shapes to their service-model status by @nick-maderight in #12775
- fix(ai): accept reasoning_effort none on Chat Completions auth-gateway by @holny in #12789
- fix(tui): add stripTerminalSequences by @RockinPaul in #12795
- fix(coding-agent): substitute CLAUDE/OMP plugin root in omp-plugins MCP servers by @holny in #12801
- Document browser MCP filtering by browser.enabled by @pavel-kalmykov in #12804
- fix(ai): preserve message-level Gemini thought signatures by @roboomp in #10631
- test(coding-agent): isolate agent directory in advisor toggle tests by @andrebrait in #12130
- fix(build): retain ESM semantics in compiled bytecode by @andrebrait in #12133
- fix(skills): freeze provider-side skill hint across mid-session skillful toggles by @jerome-benoit in #12148
- fix(coding-agent): keep display reset working while the ask dialog holds focus by @danilouchoa in #12262
- feat(tui): detect rio terminal with kitty graphics and true color by @danilouchoa in #12263
- fix(browser): reject inverted tab.press(selector, key) with an actionable hint by @danilouchoa in #12266
- fix(ai): avoid pinning Beijing quota to one workspace by @Dante-dan in #12395
- fix(catalog): honor maxTokens on local OpenAI hosts by @ton-anywhere in #12433
- fix(coding-agent): keep generated-file errors tool-scoped by @Dante-dan in #12499
- fix(natives): reported a stale workspace addon instead of " is not a function" by @iacore in #12698
- fix(commands): review uses live session cwd after /move or /wt by @F0Rextasy in #12712
- fix(tui): use full overlay width for composer shape preview by @F0Rextasy in #12713
- fix(catalog): route Union Alpha through OpenCode Messages API by @Dante-dan in #12380
- fix(coding-agent): carry the original filesystem path of pasted images to the agent by @xiechimon in #12404
- fix(tui): open recalled prompt history at a consistent caret by @H4vC in #12814
- feat(collab): publish whether a host session is working by @alphastorm in #12844
- fix(tui): resolve terminal identity through tmux by @roboomp in #12810
- fix(tui): stop raw-paste classifier from eating stall-batched enter by @roboomp in #12811
- fix(pi-edit): reject overlapping sloppy selection spans instead of panicking by @roboomp in #12817
- fix(auth): preserve mcp oauth refresh material by @roboomp in #12820
- fix(ai): prevented auth-broker Team usage collisions by @roboomp in #12821
- fix(macos): added apple events signing entitlement by @roboomp in #12823
- fix(memories): fold cwd casing into memory scope keys on win32 by @roboomp in #12826
- fix(ai): drop forced tool_choice from zero-output cache refresh by @roboomp in #12827
- fix(ai): bound codex error-body reads with the pre-response deadline by @roboomp in #12831
- fix(shell): bound chunk-forward stall so a wedged consumer cannot strand a background bash job by @roboomp in #12832
- fix(hindsight): cancel in-flight auto-recall on abort by @roboomp in #12833
- fix(agent): guard trailing checkSteering in runTool against rejection by @roboomp in #12813
- fix(agent): isolate aside-commit / discardAsides host callbacks by @roboomp in #12815
- fix(coding-agent): suspend loop on Esc even mid-iteration by @H4vC in #12851
- fix(catalog): restored legacy Devin discovery by @roboomp in #12858
- fix(ai): parsed Kimi monthly usage quotas by @roboomp in #12855
- fix(extensions): bind ExtensionAPI methods by @roboomp in #12856
- fix(lsp): refresh diagnostics after workspace changes by @roboomp in #12857
- fix(ai): preserve required nested nulls in tool argument unions by @cswenor in #12523
- fix(catalog): curate xiaomi mimo v2.6 metadata by @roboomp in #12841
- fix(coding-agent): preserve provider transport on custom models by @joshrzemien in #12845
- fix(lsp): prefer formatter servers for formatOnWrite by @roboomp in #12847
- fix(extensions): exempt omp-origin marketplace plugins from dashboard opt-in gate by @roboomp in #12849
- fix(ai): drop Gemini-unsupported minP/repetitionPenalty from google transports by @roboomp in #12850
- test(coding-agent): flush the deferred prewarm tick before restoring mocks by @andrebrait in #12863
- fix(bedrock): hoist images out of error toolResults by @roboomp in #12865
New Contributors
- @shah1git made their first contribution in #12620
- @gokceneraslan made their first contribution in #12629
- @F0Rextasy made their first contribution in #12703
- @404MaximWang made their first contribution in #12726
- @nwbb made their first contribution in #12736
- @primitive-type made their first contribution in #12760
- @jacobcolyvan made their first contribution in #12762
- @tuandinh0801 made their first contribution in #12771
- @holny made their first contribution in #12789
- @RockinPaul made their first contribution in #12795
- @pavel-kalmykov made their first contribution in #12804
- @jerome-benoit made their first contribution in #12148
- @ton-anywhere made their first contribution in #12433
- @cswenor made their first contribution in #12523
Full Changelog: v18.2.8...v18.2.9