@oh-my-pi/pi-agent-core
Breaking Changes
- Replaced the irc, job, and launch tools with a unified hub tool.
- Removed the tool discovery system (including the search-tool-bm25 tool) and its associated configuration settings (tools.discoveryMode, tools.essentialOverride, mcp.discoveryMode, and mcp.discoveryDefaultServers).
- Removed the resolve tool; plan approval and preview actions now use writes to the xd://propose virtual device path.
Added
- Introduced the xd:// virtual device protocol for mounting tools as URLs readable/writable via read/write tools, configurable via the new tools.xdev setting (defaults to true).
- Added the hub tool, consolidating agent peer messaging, background job control, and supervised long-running processes.
- Added the edit.enforceSeenLines configuration setting (defaults to false) to optionally reject edits on lines that have not been fully displayed.
- Added the ToolLoadMode type and an optional satisfies predicate to SoftToolRequirement to support compliance checks against specific invocation shapes (such as writing to a virtual device path).
@oh-my-pi/pi-ai
Changed
- Improved Ollama streaming performance by parsing NDJSON response bytes directly instead of decoding and buffering network chunks as text.
Fixed
- Fixed Cursor TLS connection resets causing process-fatal uncaught exceptions, allowing the active turn to fail or retry gracefully without terminating the session.
- Fixed Amazon Bedrock stream error handling to correctly handle non-Error values that cannot be serialized by JSON.stringify.
@oh-my-pi/pi-coding-agent
Breaking Changes
- Merged the
irc,job, andlaunchtools into a single unifiedhubtool (loadMode: "essential"). Messaging, job control, and process supervision operations are now routed through this single tool. SDK:IrcTool,JobTool,LaunchTool,IrcDetails, andJobToolDetailshave been removed in favor ofHubTool,CoordinationDetails,LaunchToolDetails, andhubToolRendererfromtools/hub. - Removed the hidden
resolvetool. Staged actions are now finalized through three plain-text resolution devices:xd://resolve(apply preview),xd://reject(discard preview), andxd://propose(submit a plan slug/title for approval). Thewritetool is now auto-included whenever a deferrable tool is present or plan mode is enabled. SDK:ResolveToolandHIDDEN_TOOLS.resolvehave been removed in favor ofdispatchResolutionDevice()andqueueResolveHandler(). - Unified tool presentation on
loadMode(essential|discoverable), replacing the custom-toolxdev?: booleanopt-out. Custom, extension, MCP, RPC host, image-generation, and TTS tools now default todiscoverableand mount underxd://when enabled.generate_image,tts, and MCP tools are now exposed asxd://devices in default sessions instead of shipping their schemas top-level. - Removed the BM25 tool-discovery system, including the
search_tool_bm25tool, thetools.discoveryMode,mcp.discoveryMode, andmcp.discoveryDefaultServerssettings, and per-tool MCP selection. All connected MCP tools are now enabled and mounted under thexd://transport. SDK:search_tool_bm25, thetool-discoverymodule, and associatedAgentSessiondiscovery/MCP-selection methods have been removed. - Removed the legacy
report_findingtool. Reviewer agents now record findings through incrementalyieldsections. SDK:reportFindingToolandHIDDEN_TOOLS.report_findinghave been removed. - Removed the
sshagent tool (remote command execution). Thessh://read/write/search protocol, theomp sshhost-management CLI, and SSH host discovery are retained. SDK:SshTool,loadSshTool, thessh/ssh-executormodule, andAgentSession.refreshSshToolhave been removed. - Removed the
tools.essentialOverridesetting, themcp_tool_selectionsession message type, and thexdev--toolstoken.
Added
- Added
xd://virtual tool devices (controlled by thetools.xdevsetting, default on), allowing mounted tools to be discovered viaread xd://, documented viaread xd://<tool>, and executed viawrite xd://<tool>. - Added the
edit.enforceSeenLinessetting (default off) to gate the hashline seen-line guard. When enabled, edits anchored on lines that a priorreadorgrepnever displayed are rejected. - Added per-agent prewalk for subagents, featuring a
prewalkfrontmatter field, atask.agentPrewalksettings override toggled from the/agentsdashboard, and atask.prewalkboolean (default off) to arm the bundled generictaskagent.
Changed
- Renamed
"dev.autoqa.consent"to"dev.autoqaConsent"and"todo.reminders.max"to"todo.remindersMax"to eliminate nested configuration prefix collisions in standard JSON/YAML. - Made the hashline seen-line guard opt-in and off by default, and stopped excluding column-clipped (>512-char) lines from a snapshot's seen set, allowing single-line edits on long lines to apply without a full-width re-read.
- Changed the default
astGrep.enabledsetting tofalse. - Batched todo operations with real tool calls to prevent solo todo turns and extra round trips.
- Changed all bundled TTSR rules to warn instead of interrupting generation.
- Renamed the system prompt's project-context section wrapper from
<context>to<repo-rules>to prevent collisions with thetasktool'scontextparameter under in-band XML tool dialects. - Rendered
read xd://calls in a compact grouped read view instead of a full tool-execution card. - Updated
--toolsto reject unknown tool names with a usage error instead of silently narrowing the toolset. - Capped the
xd://device docs inlined into the system prompt to a 48k-char budget (10k per device) to prevent large MCP catalogs from bloating requests; devices past the cap are listed by name and summary and fetched on demand. External (dynamic-mount) tool descriptions embed at most 200 chars — schemas stay intact, full text viaread xd://<tool>. - Dead BM25-discovery settings keys (
tools.discoveryMode,tools.essentialOverride,mcp.discoveryMode,mcp.discoveryDefaultServers) are cleaned from configs on load;tools.xdevkeeps its default (true). - Mid-session
xd://mount changes (e.g. MCP connect/disconnect) no longer rewrite the system prompt: the delta is announced to the model as a steered system notice ("these tools became available" / "no longer mounted"), so the provider prompt cache stays intact; device docs join the prompt on the next unrelated rebuild.
Fixed
- Fixed a bug where a nested configuration value (like
dev.autoqa.consent/dev.autoqaConsent) would incorrectly satisfy a parent key lookup (likedev.autoqa), causing Auto QA to be enabled and prompt for consent by default when it should have been disabled. - Fixed compiled appserver startup deadlocking before socket creation when user extensions were present.
- Fixed Bash internal URLs remaining unresolved when used as unquoted arguments inside command substitutions.
- Fixed
--toolssilently dropping hidden tool names likexdevandyield. - Fixed the built-in
fdprinting broken pipe errors when a downstream pipeline reader exited early; it now exits silently with status 141. - Fixed prewalk repeatedly continuing after a bash-only task (such as
commit) had already completed. - Fixed the Bash tool hanging when in-process commands read process substitution operands.
- Fixed
/shareand/exportweb views rendering inline Markdown inside list items as literal text. - Fixed plan-mode re-entry dropping a new plan request when a prior plan artifact existed; re-entry now anchors on the new request and folds old-plan corrections into it.
- Fixed ACP clients rendering
xd://device dispatches as file edits; they now map to anexecute-kind tool call titled with the device URL. - Fixed non-yolo approval modes double-prompting for
xd://device dispatches. - Fixed TTSR rules with leading inline regex flags failing to compile and being silently dropped in Bun/JS environments, and recovered scope tokens and sibling values from malformed frontmatter.
@oh-my-pi/collab-web
Changed
- Consolidated the legacy irc and job tool renderers into a unified hub renderer for messaging, background jobs, and process supervision, while preserving existing visual styles.
- Enhanced rendering for xd:// device dispatches to resolve through their inner tool's renderer, preserving generated-image thumbnails and MCP/autoresearch presentations under a unified xd:// card label.
Removed
- Removed custom visualization for the search_tool_bm25 tool, which now falls back to generic rendering.
@oh-my-pi/hashline
Added
- Added
enforceSeenLinesoption toPatcherOptions(defaulting totrue) to control whether seen-line validation is enforced on anchored edits, allowing tags to validate on content hash alone when disabled.
@oh-my-pi/pi-natives
Fixed
- Fixed the in-process grep builtin to correctly handle escaped alternation (|) in default and -G (GNU basic-regex) searches, while preserving the correct regex dialects for -E, -F, and -P.
@oh-my-pi/pi-tui
Added
- Improved LaTeX rendering for \underbrace, \overbrace, \overset, \underset, and \stackrel to use drawn horizontal braces with centered labels and stacked annotations instead of flat inline glyphs.
- Improved LaTeX rendering of multi-letter subscripts and superscripts by displaying them as raised or lowered blocks instead of ragged per-character Unicode glyphs.
- Added an opt-in Editor.setImeSafeCursorLayout() method to protect macOS IME preedit while retaining the compact bordered layout by default.
Fixed
- Fixed SIXEL image rendering where images with cell heights not divisible by 6 would have their bottom portion overwritten by subsequent content.
- Fixed an issue where the Kitty OSC 99 desktop-notification capability probe would leak raw text into the terminal pane when running inside a multiplexer like tmux or screen.
@oh-my-pi/pi-utils
Fixed
- Improved SSE streaming performance by batching complete lines into a single UTF-8 decode per chunk, reducing decoder overhead.
- Fixed an issue in
parseFrontmatterwhere a single malformed YAML line would corrupt sibling values by parsing each line independently.
What's Changed
- fix(ttsr): register rules with inline regex flags and malformed scope by @roboomp in #5489
- fix(bash): resolve internal URLs in command substitutions by @roboomp in #5536
- fix(amazon-bedrock): guard baseMessage against undefined JSON.stringify by @roboomp in #5540
- perf(stream): batch response decoding by @roboomp in #5544
- fix(prewalk): stop completion turn loops by @roboomp in #5553
- fix(tui): protect editor border from IME preedit by @roboomp in #5569
- fix(export): render inline Markdown in list items by @roboomp in #5570
- fix(shell): materialize process substitution fds for builtins by @roboomp in #5564
- fix(coding-agent): lazily load compiled extension modules by @roboomp in #5571
- fix(plan-mode): anchor re-entry on the new request by @roboomp in #5577
- fix(tui): round SIXEL encode height to multiple of 6 to prevent image… by @H4vC in #5595
- fix(tui): suppress OSC 99 capability probe under tmux by @roboomp in #5583
- fix(ai): handle Cursor HTTP/2 TLS session errors by @roboomp in #5594
Full Changelog: v16.5.2...v17.0.0