Release · Oh My Pi · can1357

Oh My Pi v18.18.3

What's new in Oh My Pi v18.18.3, released Nov 9, 2026 (). Newer: v18.20.0 (Nov 12, 2026)

Release notes

Oh My Pi v18.18.3

@oh-my-pi/pi-catalog

Changed
  • Added a balanced delegation bias between eager and restrained; models without a delegation-bias rule now resolve to it instead of eager

@oh-my-pi/pi-coding-agent

Breaking Changes
  • The ask tool takes one HTML form ({ html }) instead of questions[]: the model writes a <form> of radios, checkboxes, selects, text inputs and textareas with its recommendation preselected, and receives the submitted form data as JSON. AskToolDetails is now { answers: { name, question, answer }[]; timedOut? }; QuestionResult, the "Other", "Chat about this", answer-note and answer-image paths of the tool are removed, and /tree re-answer reopens the original form (NavigateTreeResult.reopenAsk carries html).
Added
  • In Tern, right-clicking an ask answer offers Note, which annotates that answer without picking it (#18551 by @H4vC)
  • task.eager (preferred/always) now shapes only the main agent's system prompt; subagents fall back to their model's own delegation policy instead of being pushed to spawn further subagents
  • ask forms can show pictures: <img src> from an http(s) URL, a data: URI or a local file (relative to the session's working directory), and inline <svg> diagrams, drawn in the terminal form and natively in Tern
  • ask forms give every radio and checkbox group a free-text "Other" answer: its text is the radio's value or is appended to the checkbox group's array (field-by-field fallback, collab guests and ACP elicitation included)
  • Extension UI gains optional ui.formDialog(html, options), which renders an HTML <form> and resolves to { data, timedOut? } (undefined when cancelled). The interactive TUI renders it as a form dialog, ACP clients with form elicitation get one elicitation with a property per field, and hosts without it (RPC) answer the ask tool field by field through select/input/editor.
  • Eval cells can run shell commands with sh: sh("git status") in Python, await sh`ls ${dir}` or await sh("make", { cwd }) in JavaScript. Commands run on the embedded bash engine to completion (never auto-backgrounded), return their output, and raise ShellError with the exit code on failure.
  • omp zsh on Windows runs omp's builtin utilities (ls, cat, head, jq, …) for commands PATH does not have, unless a command_not_found_handler handles them (#18532 by @H4vC).
Changed
  • Clarified tool and internal-URL descriptions for history:// concise transcripts, proc:// job retention and parked-agent lookups, and read JSON query text output (#18553 by @xiangnan0811)
  • Models without a delegation rule (Claude, Gemini, …) no longer get pushed to delegate: the "map unknown code via task" rule and the "Task + scout" nudges in search tool descriptions are replaced by a light suggestion to explore unfamiliar subsystems with a scout
  • In Tern, clicking an ask answer and then Note now annotates the answer highlighted on the question shown instead of the one just clicked (#18551 by @H4vC)
Fixed
  • Fixed ask notes added with n right after picking an answer landing on the previous question instead of the one shown; a Tern click then Note still notes the answer just clicked, and the Note button names it (#18317 by @DonMikone)
  • Fixed /export failing on Windows when saving in the current directory, including relative paths such as sub/../session.html; the export message now shows the full path of the written file (#18369, #18525 by @minhngoc25a).
  • Todo initialization now names empty phases Tasks, so subsequent updates can address them (#18552 by @xiangnan0811)
  • omp zsh and the bash tool on Windows: background commands without job control ignore Ctrl-C (INT, and QUIT in zsh) as zsh and bash do, so the console's Ctrl-C leaves them running (#18532 by @H4vC).
  • omp zsh finds the system zsh's function library (compinit loads) on Debian, Ubuntu and Arch, and on Windows from an MSYS2, Cygwin or Git for Windows zsh (#18532 by @H4vC).
  • omp zsh on Windows: typed commands no longer end in ^M, programs are found through Path, piped scripts run every line, cd takes C:\…/C:/…, .. and ~ (keeping $PWD as C:/…), >/dev/null works, the prompt is % rather than root's #, $OSTYPE is msys, and no USERNAME warning is printed (#18532 by @H4vC).
  • omp zsh on Windows edits lines with ZLE (history, Tab completion, key bindings, $COLUMNS); Ctrl-C abandons the line, runs an INT trap, or interrupts a read that then goes on, instead of ending the shell (#18532 by @H4vC).
  • omp zsh on Windows: Ctrl-C interrupts the foreground program, jobs, fg and bg work (a job brought back with fg gets Ctrl-C too), and process substitution reaches Windows programs (diff <(…) <(…), prog >(…)) (#18532 by @H4vC).
  • On Windows, /dev/null works in the bash tool (>/dev/null, cat /dev/null, [ -c /dev/null ]) (#18532 by @H4vC).
  • On Windows, /dev/tty opens the console in omp zsh and the bash tool (prog >/dev/tty), and an MSYS or Cygwin program killed by Ctrl-C reports status 130 instead of 512 (#18532 by @H4vC).
  • omp zsh prints the [n] pid line for a background pipeline under job control, as it does for a single command (#18532 by @H4vC).
  • omp zsh starts compinit many times faster: single array and association elements are assigned and read without copying the whole parameter, and autoload -r no longer re-reads the .zwc digests in $fpath for every function it resolves (#18533 by @H4vC).
  • omp zsh's read -k and read -q read a key from the terminal without waiting for Enter, as zsh does, instead of reading standard input (#18533 by @H4vC).
  • omp zsh completion listings mark file types again (dir/, exe*

…