@oh-my-pi/pi-agent-core
Fixed
- Fixed Codex remote compaction to preserve images returned by image-reading tools, preventing them from being replayed as incorrect synthetic user messages.
@oh-my-pi/pi-ai
Added
- Added application-level usage attribution for billing and usage reporting, with per-application aggregation and automatic client identification. Applications can set their label with
OMP_APP_NAME(default:omp); update the broker before clients to support the new usage reports.
Fixed
- Fixed Anthropic Claude subscription OAuth requests being rejected by the upstream service (#9801).
- Fixed OpenAI-compatible streaming errors being reported as empty successful completions, enabling retries and model fallback when queue admission fails.
- Fixed multimodal tool results in OpenAI Responses requests so inline, remote, and OpenAI file-backed images are preserved correctly.
- Fixed resumed and forked Cursor sessions failing when their history came from a Responses-based provider such as Codex (#9754).
- Fixed Cursor
composer-2.5selections using the Fast variant instead of the Standard tier (#9012).
@oh-my-pi/browser-relay
Changed
- Clarified the scope of the two browser relay opt-in paths: per-call
app.relay: trueenables relay access for an individual call, while thebrowser.relaysetting enables it by default across projects in a profile.
@oh-my-pi/pi-catalog
Added
- Added cached background refresh from the shared models.dev catalog so newly published models for known providers can appear without a new OMP release, while bundled models remain the offline fallback.
Fixed
- Fixed LiteLLM model discovery so model pricing is correctly populated when pricing information is provided by a later metadata endpoint.
@oh-my-pi/pi-coding-agent
Added
- Added nonblocking shared model-catalog refresh with cached startup hydration and source freshness diagnostics, allowing newly published models for known providers to appear without a binary release.
- Added
omp usage clientsto report per-client token usage recorded by the auth broker, including the machine and application responsible for usage by provider. Supports--daysand--jsonoutput.
Changed
- Improved
omp gitresponsiveness by streaming file contents, rendering complete lines promptly, progressively applying syntax highlighting, and deferring large commit statistics until after the first interactive frame. - Expanded
omp gitnavigation and editing shortcuts: refresh withr, stage or unstage files and directories withs,u, orspace, navigate hunks and files with keyboard shortcuts, use Vim-style motions in both panes, select diff views with1–4, and open the commit form withc. - Standardized completed edit results across edit modes with hashline-style paths and numbered previews.
- Documented browser relay behavior more clearly, including that
browser.relaycan enable relay access independently ofapp.relayand that a relayed session operates in the user's logged-in browser. - Clarified the computer tool documentation:
desktop.window()must be awaited, andwin.ax()returns a textual accessibility-tree snapshot rather than a structured node list.
Fixed
- Fixed hub process waits being incorrectly prolonged or satisfied by a replacement process after an automatic restart.
- Preserved an explicitly empty
tools: []configuration for agent definitions instead of adding default work tools. - Corrected MCP per-tool approval configuration documentation and behavior to use registered tool names for deny policies.
- Made
/branchconsistently open the branch-from-message selector regardless of thedoubleEscapeActionsetting. - Improved ACP behavior when prompting during an active turn by returning a typed
session_busyJSON-RPC error instead of an opaque internal error. - Fixed
--model <id>:<effort>losing its effort setting when cycling back to thedefaultrole; an explicit--thinkingsetting continues to take precedence. - Fixed extension-registered Codex models configured with
preferWebsockets: falsefrom attempting a WebSocket connection. - Fixed stale command-generated provider and model-override credentials after HTTP 401 responses by refreshing credentials before retrying.
- Fixed extensions configured in
.omp/config.ymlnot exposing their bundled skills, hooks, tools, commands, rules, prompts, and MCP configuration for discovery. - Fixed compiled extensions that could not import public coding-agent registry modules.
- Fixed extension-provided environment variables being lost in user shell commands and prevented environment changes from one hook from affecting later commands.
- Fixed imported and legacy sessions with missing usage metadata from dropping RPC lifecycle events.
- Fixed GitHub and GitHub Enterprise issue, pull-request, and tool lookups to preserve and use the repository's actual host.
- Fixed binary installation when GitHub returns minified release metadata.
- Fixed
omp benchandomp if-benchresolving credential-scoped dynamic models already listed byomp models. - Fixed checkpoint and rewind recovery in Codex Code Mode.
- Fixed truncated
askquestions being displayed incorrectly when expanded with Ctrl+O. - Fixed the welcome screen and transcript layout not adapting correctly after terminal resizes.
- Made
omp if-benchretry transient Anthropic cyber-safety refusals before treating them as run-ending failures. - Fixed streamed assistant responses when later provider updates revise earlier Markdown.
- Fixed abandoned foreground tool cards and fast tool completions from blocking transcript scrolling or later output.
- Improved transcript replay and shutdown behavior so terminal resizes and exits do not duplicate, lose, or unnecessarily re-render committed output.
- Fixed cache-miss status messages from disrupting completed streamed assistant responses.
- Fixed YAML rewrites for settings, migrated configuration, and keybindings from adding trailing spaces to nested mapping headers.
- Fixed
/modelrole-cycle icons overlapping their ordinal on terminals with full-width icon rendering. - Improved
/collabQR-code fallbacks so the browser join URL remains visible when the code is clipped or cannot fit. - Fixed hub and child peer listings from exposing parked agents as active model context, while restoring accurate running, idle, parked, shown, and truncated counts.
- Fixed browser relay clients hanging when enabling the Runtime domain on a tab shared with another client.
- Fixed browser relay sessions leaving Chrome's debugging infobar attached after the last client releases a tab.
- Fixed interactive TTSR interruptions being displayed as errors when the rule injection succeeded.
- Fixed cold interactive launches duplicating the welcome header in Windows console scrollback.
- Fixed Git TUI hunk navigation and sidebar selection after staging or unstaging files, including correct handling of CRLF files on Windows.
- Fixed long sessions becoming unrecoverable when a provider rejects histories that exceed its message-count limit.
- Improved
/dumpoutput with readable titles for system notices and fenced XML payloads. - Fixed kernel session recovery when a dead kernel reports cancellation.
- Applied advisor tool-call loop limits to advisor runs as well as regular model runs.
- Fixed
lsp rename_fileerror handling for unreadable source paths and destination checks. - Fixed LSP clients with different process arguments, initialization options, or settings from incorrectly sharing one process;
lsp reload *now replaces superseded clients. - Fixed auto-retry countdowns appearing frozen during long provider-specified waits.
- Fixed the Todo HUD after viewing a subagent and returning to the main session.
- Fixed child task results from linking unreadable artifacts and from replaying result bodies that had already been delivered.
- Fixed
omp updateshowing a Unix reinstall command on Windows after a package-rename migration verification failure. - Preserved
thinking.requiresEffort: falsein custom model configuration so supported local models can explicitly disable thinking. - Prevented incompatible non-object values in shared project settings from silently replacing an entire settings group; such values are dropped with a warning.
- Jina Reader now uses configured credentials for authenticated rate limits while remaining available anonymously.
- Improved advisor session recovery and listing performance for large advisor transcripts.
- Fixed failed
browser.opencalls from leaving OMP-spawned application processes running when no tab could be acquired. - Browser handles now fail fast with a specific per-operation timeout error instead of hanging an entire browser cell.
- Fixed autonomous runs becoming idle when a thinking-only length stop overlaps speculative handoff and compaction recovery.
- Kept completed assistant replies visible when viewport pressure prevents older active content from being retired.
- Accelerated SHA-2 and SHA-3 checksum builtins on supported ARM64 hardware.
- Fixed joined collaboration guests becoming inconsistent with the host after host-side compaction.
- Fixed
hub listand child peer rosters counting parked agents from stale root sessions; the persisted roster now scopes to the current root, retries transient filesystem faults, and renders live rows through the production subagent prompt template with a truthful omitted count.
@oh-my-pi/pi-tui
Breaking Changes
- Removed the
inlineMathSpanEndandmathStartIndexexports; the math delimiter grammar now lives in@oh-my-pi/pi-utils/math-delimiters.
Fixed
- Math spans now end at the first unescaped delimiter, so a TeX row break no longer closes a span early:
\(a \\) b\)renders as one equation, and an escaped\$no longer ends$$…$$. - Fixed image previews displaying as garbled characters in Paseo terminals.
- Fixed terminal resizing from duplicating committed history in native scrollback.
- Fixed autocomplete suggestions for bare-name skills such as
/batchwhen no command matches the prefix more strongly.
@oh-my-pi/pi-utils
Added
- Added
math-delimiters, the LaTeX span/block delimiter grammar (mathStartIndex,mathOpenerAt,mathSpanAt,mathBlockAt) shared by every Markdown renderer: pandoc's anti-currency rules for$…$, own-line display blocks, and delimiters matched by backslash parity, so an escaped\$x$stays literal and a TeX row break cannot end a span early. - Added
RequestError.sessionBusy(message, data)to represent ACP session-busy errors (-32003) through the shared JSON-RPC transport. - Exported
getComposerCacheDirfor resolving the per-project Composer cache directory, including support forXDG_CACHE_HOME.
Fixed
- Fixed OMP sessions unexpectedly exiting during socket cleanup or optional-worker communication on Bun.
What's Changed
- fix(settings): prevent sidebar clicks from toggling options by @roboomp in #9796
- fix(coding-agent): export registry subpaths to compiled extensions by @grapexy in #9797
- fix(ai): restore Anthropic subscription OAuth compatibility by @fanbaoyu1024 in #9801
- fix(coding-agent): attribute tool-policy denies to the tool, not tools.approval by @srobroek in #9808
- fix: decouple /branch from doubleEscapeAction setting by @Anne416wu in #9818
- fix(tui): reseed in-flight hub wait card on focus rebuild by @roboomp in #9819
- fix(task): reuse prepared extensions in subagents by @whattheflop in #9821
- fix(acp): surface session-busy as a typed JSON-RPC error instead of -32603 by @Coriou in #9825
- fix(tui): surface skills for leading bare-name slash prefixes by @fabriciopirini in #9829
- docs(coding-agent): correct MCP approval key format by @roboomp in #9831
- fix(coding-agent): preserve extension websocket preferences by @roboomp in #9841
- fix(tui): skip append resize replay on height-only grow by @roboomp in #9672
- fix(ai): pin Standard tier for cursor composer-2.5 selections by @shizhenwei1984-cell in #9678
- fix(utils): contain uncaught worker IPC EPIPE by @n4s5ti in #9679
- fix(catalog): preserve LiteLLM cache pricing metadata by @jordanfbrown in #9691
- docs(coding-agent): corrected computer tool prompt for async window handles and textual AX snapshots by @dianaloveava in #9695
- docs(browser-relay): document relay scope for operators and relay semantics in the agent-facing tool prompt by @chan1103 in #9706
- fix(coding-agent): resolve composer cache to XDG_CACHE by @Parsifa1 in #9707
- fix(tui): drop Kitty image protocol inside Paseo terminals by @aproto9787 in #9724
- fix(coding-agent): expand truncated ask questions with Ctrl+O by @Giardi77 in #9729
- fix(git-tui): strip carriage returns from CRLF worktree diff lines by @roboomp in #9735
- fix(coding-agent): keep the effort suffix on the --model default role override by @SipgateSteffenPaul in #9737
- fix(coding-agent): harden persisted roster context by @amco3008 in #9738
- fix(ai): preserve multimodal Responses tool outputs by @chsong1 in #9744
- fix(session): handled missing usage in session stats by @roboomp in #9746
- fix(cursor): sanitize foreign tool-call ids for history replay by @roboomp in #9756
- fix(tui): hide system XML wrappers in async-result and todo-nudge tree rows by @roboomp in #9757
- fix(coding-agent): keep collab join URL when the QR is clipped by @Giardi77 in #9758
- fix(config): refresh command-backed provider headers after 401 by @roboomp in #9761
- fix(coding-agent): refresh model hub from the online catalog by @fabiomcarneiro in #9766
- fix(coding-agent): preserve dynamic providers with static fallbacks by @fabiomcarneiro in #9767
- fix(discovery): load config.yml extension roots for sub-discovery by @roboomp in #9769
- fix(utils): ignore async ERR_SOCKET_CLOSED from node:net internals by @ephraimduncan in #9771
- perf(pi-shell): avoid duplicate Windows Git discovery by @Shlummie in #9776
- fix(install): anchor tag_name extraction for minified JSON by @baileyrosen3 in #9778
- fix(collab): rebuild guest context after host compaction by @roboomp in #9784
- docs(hooks): document plain status text by @roboomp in #9791
- fix(settings): preserve later external config edits by @roboomp in #9792
- fix(coding-agent): diff user-shell env hook against the child shell's base environment by @sjawhar in #9794
- fix(coding-agent): mount xd tools for read-only sessions by @lz37 in #9803
- fix(ai): surface in-band completions stream errors by @roboomp in #9814
- fix(cli): plugin uninstall no longer reports removing nothing by @srobroek in #9838
- feat(catalog): add runtime shared-catalog refresh by @wolfiesch in #9903
- feat(collab-web): render LaTeX in transcripts via native MathML by @smurphnerd in #9782
New Contributors
- @grapexy made their first contribution in #9797
- @fanbaoyu1024 made their first contribution in #9801
- @srobroek made their first contribution in #9808
- @Anne416wu made their first contribution in #9818
- @whattheflop made their first contribution in #9821
- @Coriou made their first contribution in #9825
- @fabriciopirini made their first contribution in #9829
- @shizhenwei1984-cell made their first contribution in #9678
- @n4s5ti made their first contribution in #9679
- @jordanfbrown made their first contribution in #9691
- @dianaloveava made their first contribution in #9695
- @aproto9787 made their first contribution in #9724
- @SipgateSteffenPaul made their first contribution in #9737
- @chsong1 made their first contribution in #9744
- @fabiomcarneiro made their first contribution in #9766
- @Shlummie made their first contribution in #9776
- @baileyrosen3 made their first contribution in #9778
- @smurphnerd made their first contribution in #9782
Full Changelog: v18.0.6...v18.0.7