@oh-my-pi/pi-ai
Added
- Added
UMANS_WEBSEARCH_PROVIDER=native|exasupport for routing Umans gateway-owned web search requests.
Fixed
- A single MCP tool whose input schema can't be emitted as a valid strict tool schema for the active provider no longer fails the whole turn with HTTP 400.
convertTools(openai-responses) now validates each tool's emitted parameter schema forenum/const-vs-typecontradictions that pass structural JSON-Schema validation but the provider rejects — e.g. a non-nullenumon atype: "null"node, or anenumon anarraynode — and quarantines just the offending tool with alogger.warnnaming the tool and schema path, keeping every other tool usable. AddsfindStrictToolSchemaViolationto@oh-my-pi/pi-ai/utils/schema(#2652) - Fixed OpenAI Responses-compatible streams from Ollama/local hosts dropping arguments for parallel tool calls whose deltas use
fc_<call_id>item ids, which left earlierast_grepcalls with{}and failed validation. (#2715) - Fixed dialect transcript rendering so literal thinking envelopes are unwrapped before adding the dialect's own thinking tags, preventing nested
<thinking>output in advisor raw dumps (#2700). - Fixed Anthropic-compatible Umans requests escaping client tool names and forwarding gateway web search headers so Kimi answers normally instead of returning raw gateway search results.
- Fixed Google Gemini tool calls with
toolChoice: "auto"serializing an explicittoolConfigAUTO mode, which can cause Gemini-3 models to leak raw planning JSON instead of executing tools. (#2776) - Fixed OpenAI-compatible Ollama completions that return empty
finish_reason:lengthafter fillingnum_ctxso they surface an actionable context-window error instead of an empty length stop. (#2774) - Fixed Codex browser login issuing credentials for the
opencodeOAuth originator while OMP requests identify aspi, which could make the first authenticated Codex request return 401 (#2696).
@oh-my-pi/pi-catalog
Fixed
- Fixed Kimi output caps for Umans AI Coding Plan and Venice so discovery metadata cannot use context-sized token ceilings as request caps.
- Marked Umans Anthropic-compatible models as client-tool escaped so cached and bundled metadata do not expose
web_searchas a provider server tool.
@oh-my-pi/pi-coding-agent
Added
- Added the
UMANS_WEBSEARCH_PROVIDERenvironment variable to CLI help for Umans gateway web search backend selection.
Changed
- The eager
task(task.eager: always) and eagertodo(todo.eager: preferred/always) hidden reminders now re-fire on the auto-continuation turn after a compaction (context-full / snapcompact / handoff / shake). Compaction summarizes away the first-message prelude, so the agent would otherwise silently lose the delegate-via-tasks / phased-todo guidance mid-work; the post-compaction todo nudge is reminder-only and never forces thetodotool onto the resumed turn.
Fixed
- Fixed edit-tool block operations on Emacs Lisp files:
.eland.emacspaths now resolve top-level forms forSWAP.BLK,DEL.BLK, andINS.BLK.POSTinstead of reporting an unsupported-language block-resolution error. - Fixed PDF reads leaking recoverable MuPDF WASM warnings into the terminal TUI by routing MuPDF output through the file logger before
markit-ailoads it (#2766). - Fixed
/exitand/quitwaiting one shutdown timeout per hanging extension by runningsession_shutdownhandlers within a shared shutdown window (#2736). - Fixed GitHub Copilot
.github/instructions/*.instructions.mddiscovery by loading those files as rules that honorapplyToscoping, including always-apply**files andrule://<name>access for glob-scoped entries (#2731). - Fixed Windows bash-tool child processes defaulting interpreter pipe I/O to the ANSI codepage by adding UTF-8 encoding defaults when the inherited environment is unset (#2701).
- Fixed
/advisor dump rawso Opus 4.5 thinking content that already includes literal<thinking>tags is not rendered with nested thinking tags (#2700). - The
plugin-extensions-discoverytest suite no longer writes fixtures into — andrm -rfs thenode_modulesof — the developer's real~/.omp/plugins. ItsXDG_DATA_HOMEisolation was a no-op on Windows (XDG is gated to Linux/macOS) and was bypassed in XDG-migrated Linux/macOS environments, so a local run could delete installed plugins. The suite now isolates the whole config root via anos.homedir()mock plus clearedXDG_*vars, with a pre-write guard that fails if resolution escapes the temp home (#2721). - Installed plugins whose
extensionsmanifest entry points at a directory of sub-extensions (the standard piextensions/<name>/index.tslayout, e.g.pi.extensions: ["./extensions"]) are no longer rejected at install (declared extension entry not found on disk) or silently dropped at load. The plugin manifest resolver now resolves a directory the same way as the configured-directory (-e) extension loader: the directory's ownpackage.jsonomp/piextensions(authoritative — a missing declared entry is reported instead of falling back to a decoyindex), then a directindex.{ts,js,mjs,cjs}, then a one-level scan of sub-extensions (#2713). - Fixed OpenRouter
@upstreamrouting selectors whose upstream slug also appears in the model id, soopenrouter/...@deepseek:highkeepsopenRouterRouting.onlyinstead of being consumed by provider-scoped fuzzy matching (#2708). - Fixed
omp plugin list --jsonomitting locally linked plugins that exist only inomp-plugins.lock.jsonandnode_modulessymlinks. (#2742) - Fixed task subagents to install their configured ordered model candidates as child-session retry fallback chains, so retryable provider failures can advance to the next subagent model instead of failing the worker (#2750).
- Fixed empty reasonless aborted assistant turns to auto-retry without switching model fallback, so transient provider-side aborts after tool results do not end headless sessions (#2685).
@oh-my-pi/hashline
Fixed
- Auto-repaired duplicated JSX/XML closing boundary lines at the end of single-line replacement expansions. (#2705)
@oh-my-pi/pi-natives
Added
- Added Emacs Lisp (
.el,.emacs,emacs-lisp/elisp) support to native tree-sitter language inference, enabling astGrep/astEdit, summarizeCode, and blockRangeAt on Emacs Lisp source.
@oh-my-pi/pi-tui
Fixed
- Fixed VS Code integrated terminal keypad digit CSI-u input being handled as navigation instead of text.
- Fixed xterm-compatible terminals scrolling the native viewport to the bottom on prompt-editor keypresses by disabling
?1010/?1011while the TUI owns the TTY and restoring the prior set modes on exit (#2732). - Fixed CMUX sessions being treated as direct terminals during resize/reset because they do not set
TMUX/STY/ZELLIJand may run withTERM=dumb; the renderer now treats CMUX workspace/surface env markers as multiplexer signals and preserves pane scrollback instead of emitting ED3 (CSI 3 J). - Fixed a self-sustaining resize-redraw storm in Warp: the non-multiplexer resize fast path borrows the alternate screen, and Warp re-reports a one-row-different size whenever the alt buffer is toggled, so each drag frame fed back a fresh resize event and the TUI flooded ED3 full repaints with stable geometry. Resize now repaints in place (no alt-screen borrow, no ED3 rewrap) on terminals that re-report size on alt-screen toggles, matching the multiplexer path. Overridable with
PI_TUI_RESIZE_IN_PLACE=1|0.
What's Changed
- fix(ai): route prefixed Responses tool deltas by @roboomp in #2719
- test(plugins): isolate discovery test from real ~/.omp on all platforms by @AsafMah in #2722
- fix(coding-agent): load GitHub Copilot instruction rules by @roboomp in #2734
- fix(tui): stop Warp resize feedback-loop redraw storm by @sorphwer in #2741
- fix(cli): speed up exit shutdown handlers by @roboomp in #2745
- fix(cli): list linked local plugins by @roboomp in #2746
- fix(providers): handle Umans Kimi output caps and web search by @oldschoola in #2751
- fix(agent): retry subagent model fallback chains by @roboomp in #2753
- fix(tui): detect CMUX as multiplexer by @pathard1128 in #2755
- fix(coding-agent): route MuPDF warnings to logger by @roboomp in #2772
- fix(ai): omit Google AUTO toolConfig by @roboomp in #2782
- feat(ast): add Emacs Lisp tree-sitter support by @ryjm in #2693
- fix(ai): unwrap thinking envelopes in raw dumps by @roboomp in #2702
- fix(tool): default Windows bash children to UTF-8 by @roboomp in #2704
- fix(hashline): drop duplicated JSX boundary echoes by @roboomp in #2709
- fix(providers): preserve OpenRouter upstream routing by @roboomp in #2710
- fix(openai-responses): quarantine invalid tool schemas instead of failing the whole turn (#2652) by @AsafMah in #2711
- fix(plugins): resolve directory extension manifest entries one level deep by @AsafMah in #2714
- fix(tui): preserve scrollback while editing by @roboomp in #2733
New Contributors
- @sorphwer made their first contribution in #2741
- @pathard1128 made their first contribution in #2755
- @ryjm made their first contribution in #2693
Full Changelog: v16.0.1...v16.0.2