@oh-my-pi/pi-agent-core
Breaking Changes
- Tool examples embedded in tool descriptions now always render in Python call syntax, and the
exampleDialectoption has been removed fromAppendOnlyContextManagerbuild options. - Updated
normalizeToolsto accept aNormalizeToolsOptionsconfiguration object ({ injectIntent, pruneDescriptions }) instead of positional booleans.
Fixed
- Fixed an issue where runs would fail with an error if an Anthropic stream was truncated after complete tool calls were streamed; the agent now recovers and executes those tool calls.
- Fixed an issue where artifact recovery reads could be incorrectly elided during compaction.
@oh-my-pi/pi-ai
Changed
- Standardized tool-call examples in
renderToolExamplesandrenderToolInventoryto use Python keyword-argument syntax (name(key="value")) across all models, removing the model-specific dialect parameter and theDialectRenderOptions.exampleflag. - Updated
renderToolInventoryto render the tool catalog as a unified OpenAI-Harmony-style## functionsblock using TypeScript type declarations and comments, replacing the previous per-tool Markdown sections. - Added a
style: "harmony"option tojsonSchemaToTypeScriptfor generating compact, comma-delimited TypeScript definitions.
Fixed
- Fixed a session-blocking issue where unescaped Harmony control tokens in replayed assistant responses and tool inputs caused subsequent requests to be rejected with
invalid_prompterrors. - Fixed an issue where Codex Responses dropped native image-generation results from assistant content and replays due to stale
generatingstatuses. - Fixed Anthropic stream truncation handling where unexpected connection closures were incorrectly treated as clean stops, causing the agent loop to halt silently mid-sentence.
- Optimized Anthropic prompt caching to prevent unnecessary cache invalidation of the entire system prefix when volatile project footer details (such as current working directory, date, or workspace tree) change.
@oh-my-pi/browser-relay
Added
- Initial release of the Chrome MV3 extension, enabling the omp browser tool to attach to and drive existing browser tabs via chrome.debugger.
- Added automatic, robust tab management that groups active agent-driven tabs into a dedicated per-window "omp" tab group and ensures clean dissolution upon disconnect.
@oh-my-pi/pi-catalog
Fixed
- Fixed an issue where newly advertised chat models were dropped during dynamic discovery for the
alibaba-token-planprovider. - Fixed a
400error when forcing a specific tool with DeepSeek reasoning models on OpenCode Zen/Go gateways by automatically downgrading the tool selection mode toautowhile keeping the tool advertised.
@oh-my-pi/pi-coding-agent
Breaking Changes
- Replaced the computer tool's coordinate-batch schema with persistent JavaScript runs, and removed computer.backend and model-specific controller switching.
- Changed the edit tool's replace mode from a multi-edit batch schema to a single-edit schema ({ path, old_string, new_string, replace_all? }).
Added
- Added a relay browser mode to drive local Chrome tabs via the OMP Browser Relay extension, supporting automatic daemon startup and tab grouping.
- Added a scriptable desktop session featuring window-targeted capture and input, native accessibility trees, clipboard access, and streamed screenshots.
- Added broker-shared language servers (controlled by the lsp.shared setting) to multiplex LSP servers across multiple instances in a project, reducing cold-start times and resource usage.
- Added optional timeoutMs to discovery configuration in provider options to configure custom HTTP probe timeouts for llama.cpp, Ollama, and OpenAI-compatible endpoints.
- Added a cross-platform, in-process ps shell builtin with custom columns, sorting, and process metrics.
- Added the --service-tier flag to override the OpenAI service tier for a session.
- Added a configurable per-request web search timeout via providers.webSearchTimeoutSeconds.
- Added turn-aware /tree navigation shortcuts (Alt+Up/Alt+Down, Home/End, PageUp/PageDown) to traverse user and assistant turns.
- Added display.hideToolActivity and a Ctrl+Shift+O shortcut to toggle the visibility of model-initiated tool calls and results.
Changed
- Exposed the script-driven computer schema to all models, including those with provider-native Computer Use support.
- Reduced omp --help cold-start latency and memory usage by rendering lightweight command metadata.
Fixed
- Fixed durability of session transcripts to prevent data loss on process crashes.
- Fixed a bug on Windows where a timed-out bash command could terminate the main omp process.
- Fixed headless runs hanging or leaving background workers alive after completion.
- Fixed a crash when opening the Agent Hub after resuming a session.
- Fixed /mcp reauth environment variable expansion and token validation.
- Fixed fuzzy replace-all edits re-matching replacement text indefinitely, which could freeze the TUI.
- Fixed inspect_image ignoring configured thinking effort for vision models.
- Fixed compiled binaries dropping certain extensions with complex CommonJS/ESM dependency graphs.
- Fixed template argument substitution executing recursive placeholder expansion when positional arguments contain literal $@ or $ARGUMENTS tokens.
- Fixed project-scoped session directories using leading-hyphen names and collapsing distinct paths.
- Fixed manual /shake leaving the context budget anchored to stale pre-shake token counts.
- Fixed Mnemopi scoped recall reporting "No relevant memories found" when individual targets fail internally.
- Fixed skill:// resolution ignoring custom directories when a same-named skill exists in a default path.
- Fixed image paste failing on Wayland-only Linux sessions.
- Fixed prewalk switching to the fast model during read-only investigations.
- Fixed self-update misclassifying glibc Linux hosts with an installed musl loader as musl hosts.
- Fixed omp setup python to validate the correct interpreter used by the Python eval runtime.
- Fixed the terminal-tab title dropping to idle while an unsuppressed async job was still running.
- Fixed redirected stdin being ignored when Bun reports a pipe with an undefined isTTY.
- Fixed a literal API key configured via /login being hijacked on Windows by case-differing system environment variables.
- Fixed Esc during a streaming /loop iteration pausing the loop instead of aborting the current turn.
- Fixed heavily branched conversation trees shifting linear continuations into disconnected columns.
- Fixed plugin installation validation failures for legacy compatibility shims.
- Removed hard-coded references to disabled or absent agents in system and tool prompts.
@oh-my-pi/pi-natives
Breaking Changes
- Replaced DesktopSession.execute(actions, window) and action batches with dedicated per-operation methods for capture, pointer, keyboard, window, and accessibility. Capture capabilities now apply per call, and coordinate input requires a prior frame for the same target.
Added
- Added a cross-platform, in-process ps shell builtin supporting BSD/procps selection forms, custom output columns, sorting, process metrics, and header suppression.
- Added unified desktop backends for macOS, Win32, X11, and Wayland behind a single session API, featuring capture-free window discovery, isolated capture, explicit background/foreground delivery, native accessibility trees (AX/UIA/AT-SPI) with generational references, and structured errors for unsupported background input.
Fixed
- Fixed accessibility snapshots incorrectly marking a window root as focused based on its app-local AXFocused attribute when another application held global focus; the root annotation now correctly reflects the global window-roster focus flag.
- Improved coordinate-frame error messages for pointer input before capture, out-of-frame coordinates, and between-display points to clearly explain the capture-frame contract and remedy instead of throwing a generic bounds check.
- Fixed duplicated characters in AppKit targets on macOS caused by background keyboard events being posted through both CoreGraphics and SkyLight; events are now delivered once via the authenticated SkyLight route.
@oh-my-pi/pi-tui
Fixed
- Fixed Kitty and Ghostty keyboard shortcuts on non-Latin keyboard layouts by requesting base-layout key reporting from the terminal.
@oh-my-pi/pi-utils
Added
- Added utility functions
parseFlag(),getBrowserRelayDir(), andgetGlobalDaemonRuntimeDir()to support browser relay mode and global daemon runtime directory resolution.
Changed
- Updated the lightweight CLI runner to support static command metadata, allowing root help to render without importing full command implementations.
What's Changed
- perf(cli): keep root help off runtime graph by @eggpeat in #7205
- fix(coding-agent): let customDirectories skills win over default-path duplicates by @zhang17-24 in #7246
- fix(omp): refresh context budget after shake by @oleksoleksoleks in #7310
- fix(agent): skip prewalk switch on read-only xd:// device calls by @roboomp in #7314
- fix(catalog): downgrade forced tool choice for deepseek reasoning models by @roboomp in #7317
- fix(coding-agent): support Wayland image paste by @roboomp in #7318
- fix(tui): requested base-layout keys for shortcuts by @roboomp in #7321
- fix(ai): cache stable system prefix across cwd/date footer changes by @roboomp in #7326
- fix(compaction): stop shake from re-eliding artifact recovery reads by @jwmacd in #7327
- fix(tui): preserve loop after cancelling iteration by @roboomp in #7331
- fix(tui): compact linear branch continuations by @roboomp in #7333
- test(vibe): fix kill-before-init race with a worker-ready handshake by @szavadsky in #7340
- fix(agent): stop leaking scout into prompts when it is disabled by @szavadsky in #7344
- fix(eval): preserve console for ConPTY Python kernels by @roboomp in #7350
- fix(mnemopi): bound locked retention during teardown by @roboomp in #7355
- fix(mnemopi): bound embed worker IPC and reap on timeout by @roboomp in #7356
- fix(auth): guard config-value resolvers against case-insensitive env hijack by @roboomp in #7362
- fix(mnemopi): surface scoped recall failures by @roboomp in #7367
- docs: document role-backed task agents by @fatihaziz in #7371
- fix(cli): restore piped custom session persistence by @roboomp in #7382
- test(browser): stop gating chromium tests on a top-level-await export by @paralin in #7384
- fix(coding-agent): keep focused status bar caps bright by @art-wiedzmin in #7385
- fix(tui): keep working title across non-terminal agent_end by @roboomp in #7387
- fix(setup): align Python setup probe with eval by @paolofraz in #7390
- fix(catalog): admit discovered Token Plan chat models by @roboomp in #7392
- fix(update): detect active Linux libc by @BrianHotopp in #7394
- fix(postmortem): resolve native hard-exit per call by @roboomp in #7395
- fix(session): make project directories safe and unique by @roboomp in #7397
- feat(omp): navigate conversation turns in tree by @oleksoleksoleks in #7126
- feat(coding-agent): configure web search timeout by @will-bogusz in #7197
- fix(edit): prevent fuzzy replace-all self-matching by @roboomp in #7437
- fix(mcp): expand env vars in reauth OAuth credentials and reject empty tokens by @roboomp in #7441
- fix(coding-agent): keep completed session entries durable across crashes by @olegpulatov in #7444
- fix(openai): preserve Codex native image results by @roboomp in #7447
- feat(tui): add hidden tool activity mode by @dannyboy-ai in #7342
- fix(extensions): resolve compiled dependency graphs by @roboomp in #7405
- fix(coding-agent): restore legacy compaction exports by @roboomp in #7406
New Contributors
- @zhang17-24 made their first contribution in #7246
- @jwmacd made their first contribution in #7327
- @fatihaziz made their first contribution in #7371
- @paolofraz made their first contribution in #7390
- @BrianHotopp made their first contribution in #7394
- @dannyboy-ai made their first contribution in #7342
Full Changelog: v17.2.4...v17.2.5