github can1357/oh-my-pi v18.18.4

latest release: v18.18.5
one hour ago

@oh-my-pi/pi-ai

Added

  • Added the base64SkipThoughtSignature compat flag so Gemini gateways that decode thoughtSignature as base64 (such as the Hyperspace AI LLM proxy) can receive the unsigned-tool-call bypass sentinel without rejecting the request with a 400 (#18586 by @tuandinh0801).

Changed

  • Providers paused by a disabled auth rule (currently Google Antigravity) are left out of the built-in login list, refuse login, token refresh and usage probes, resolve no key from any source, and refuse requests and image generation with the pause reason; stored logins are kept and work again once the rule is removed, and an extension that registers its own login under the paused id takes it back (#18622 by @H4vC)

Fixed

  • Exclusive tools (edit, write, eval, …) called as Cursor MCP tools now keep their place in the tool batch, so a shell or read sent with an edit no longer runs against the old file or starts before an earlier call finishes (#18502 by @eggpeat)

@oh-my-pi/pi-catalog

Added

  • Added Otari gateway provider: /login otari with OTARI_API_KEY, models discovered live per workspace (#17841 by @tbille)
  • Added the base64SkipThoughtSignature Google compat flag, which sends the Gemini unsigned-tool-call bypass sentinel base64-encoded for gateways that decode thoughtSignature as bytes (#18586 by @tuandinh0801).
  • Added a disabled "<reason>" auth rule that pauses a provider: no login offers it and nothing calls it, while its code and users' stored logins stay in place (#18622 by @H4vC)

Changed

  • Paused Google Antigravity, since Google may restrict accounts that use it outside its own apps (#18622 by @H4vC)

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

Added

  • SDK: PromptOptions.followUps queues prompts to run after the prompt, in order; if the prompt never reaches the agent they come back with it in DroppedPrompt.followUps

Changed

  • The task tool no longer advertises a per-call model field unless task.perCallModel is on or the bundled seance is spawnable; a model sent anyway is still refused before dispatch (#18554 by @xiangnan0811)

Fixed

  • /usage, session statistics, and omp stats now include session title spend from both the default fork title and the tiny title model, and tiny-model titles count toward --max-cost (#18177, #18491 by @yuzu-octopus)
  • Retries after --model pi/<role> (or @<role>, <role>) now walk that role's retry.fallbackChains entry instead of the default chain, including on --continue (#18389, #18534 by @harshaygadekar)
  • Fixed a -> / => list sent to an idle session running its second item before its first; if the first item can't start (Esc, a refused or failed setup), the whole list goes back to the editor (#10802)
  • Fixed auto-compaction repeating every turn when the system prompt and tool schemas alone exceed the compaction budget; it now warns once instead (#18589).
  • Fixed a blank per-call model ("" or whitespace) failing the gate for task calls, eval agent() and eval workpool() instead of using the agent's configured model (#18576 by @iwangjie)
  • task tool calls with an empty model string or empty model array now use the agent's normal model routing (#18554 by @xiangnan0811)
  • Fixed todo append without a phase failing instead of adding tasks to the active phase, the last phase, or a new Tasks phase (#17265, #18575 by @taotao7).
  • Learned-only memory guidance no longer tells the model to read a missing memory_summary.md (#18523 by @nick-maderight).
  • A wait that times out now says how long it waited and how long a back-to-back wait allows, instead of returning a bare still-running snapshot that agents read as an empty result, and the back-to-back reminder tells agents not to start sleep jobs to wait longer (#18612 by @alphastorm).
  • auth-gateway stdio now follows a role's configured fallback chain even when modelRoles does not set the role (a chat role without its own chain inherits the default chain) (#18509 by @enieuwy)
  • In the Pseudo shell visualization, a ;-separated chain no longer draws its statement separators as rows of their own, so echo a; echo b reads as two statements (#18258, #18497 by @yuzu-octopus)
  • Autoresearch update_notes with append_idea now creates an ## Ideas section instead of inserting the bullet before the first heading when notes contain only a similarly named heading such as ## Ideas backlog or ### Ideas (#18505 by @eggpeat)
  • Exclusive tools (edit, write, eval, …) called as Cursor MCP tools now keep their place in the tool batch, so a check sent right after an edit sees the new file and an edit no longer starts before an earlier read finishes (#18502 by @eggpeat)
  • Quarantined Hindsight memories are now deleted once their 30-day review period ends even when no new memory is quarantined (#18504 by @eggpeat)
  • The compaction display summary no longer requests reasoning, so thinking models return a summary instead of spending the 512-token cap on reasoning and returning nothing (#18541 by @phillipxkang)
  • Retries on the same model now stop after three consecutive generic aborts instead of spending the whole retry budget (#18535 by @nick-maderight)
  • lsp.formatOnWrite no longer re-indents 2/4-space files at 1 space per level when they contain JSDoc/block comments or one-off odd indents, and no longer converts tab-indented files that open with a JSDoc block to spaces (#18544)
  • Isolated task sandboxes now finish cleanup after a SIGHUP or other signal even when releasing them takes longer than the agent shutdown grace period (#18519).

@oh-my-pi/pi-mnemopi

Fixed

  • Fixed late background embedding writes overwriting newer vectors for updated memories or recreating vectors for deleted memories (#18503 by @eggpeat)
  • Fixed a second Mnemopi instance configured for a different local embedding model silently reusing the first instance's encoder while stamping its vectors with the configured model: local encoders are now cached per model, and a failed load evicts only that model's entry (#18562 by @eggpeat)

@oh-my-pi/omp-stats

Fixed

  • Fixed omp stats re-parsing every unchanged session after a filesystem's device number changes, such as across ZFS remounts (#14736) (#18536 by @Alex-Wengg).

@oh-my-pi/pi-tui

Added

  • ask HTML forms with two or more <fieldset>s show one tab per question plus a Review tab in Tern; Next moves on, ←/→ and PgUp/PgDn switch tabs, and Submit lives on Review (#18608 by @Gabriel-Hiss)
  • ask HTML forms hide to one row with app.ask.hide (Alt+H) or the Hide button, as the ask dialog does (#18608 by @Gabriel-Hiss)

Fixed

  • Prefilled single-line ask fields now open at the start of their value instead of scrolling to the end when focused (#18585).
  • Fixed the │ rails of a wrapped box-drawing tree line (├── **label**: …) taking the color and weight of the node's leading bold, italic or code span under colorful Markdown; continuation rails now match the first row's rails and the node text keeps its own styling (#18584 by @chan1103)
  • Fixed relayed Windows terminal events after an event-loop stall so they neither abort the running turn nor type TSP data into the composer (#18512).
  • Fixed transcript rows a few turns above the composer disappearing from the screen and from scrollback, at a place that moved with every resize, while a todo list or subagent panel stayed up after a turn (#18510 by @mccraigmccraig)
  • Fixed xd://<device>:raw and xd://<device>:conflicts resolving as that device. Those suffixes stay in the name, so the read or write no longer runs the device (#18561 by @wisehead)
  • Fixed ask HTML forms taller than the composer area being cut off and unscrollable in Tern: the form now scrolls in the composer's place, and Cancel/Submit stay visible
  • Fixed the Agent Hub in Tern freezing itself and the session behind it once hundreds of agents are listed: moving the selection no longer re-sends every roster row, and live roster updates on large hubs are batched (up to once a second) so the terminal keeps up

What's Changed

  • feat(catalog): add Otari provider by @tbille in #17841
  • fix(task): treat empty model placeholders as default routing by @xiangnan0811 in #18554
  • fix(lsp): detected indent stride from dominant step, skipping block comments by @roboomp in #18546
  • fix(tui): keep :raw and :conflicts in xd:// device names by @wisehead in #18561
  • fix(eval): treat a blank per-call model as omitted by @iwangjie in #18576
  • fix(tui): keep a tree node's leading span style off its continuation rails by @chan1103 in #18584
  • fix(gemini): added base64 skip-thought-signature compat for Gemini gateways by @tuandinh0801 in #18586
  • fix(tui): opened prefilled ask inputs at the start by @roboomp in #18587
  • fix(coding-agent): stop threshold compaction looping when fixed context exceeds the recovery band by @MaisonnatM in #18590
  • fix(pi-shell): stop the pseudo view drawing statement separators as rows by @yuzu-octopus in #18497
  • fix(cursor): order MCP mutations with native exec frames by @eggpeat in #18502
  • fix(mnemopi): reject obsolete background embedding writes by @eggpeat in #18503
  • fix(hindsight): prune expired quarantine on every outbox drain by @eggpeat in #18504
  • fix(autoresearch): match the ideas heading before inserting a note by @eggpeat in #18505
  • fix(coding-agent): preserve role fallback chains in auth-gateway stdio by @enieuwy in #18509
  • fix(tui): bill a HUD that outlives the idle settle window into the chrome floor by @mccraigmccraig in #18510
  • fix(tui): deferred stalled win32 relay flushes by @roboomp in #18514
  • fix(memory): omit missing summary read path by @nick-maderight in #18523
  • fix(task): kept isolated cleanup alive on signal exit by @roboomp in #18524
  • fix(coding-agent): bound consecutive generic abort retries by @nick-maderight in #18535
  • fix(stats): don't invalidate parser cursors when a filesystem's device number changes by @Alex-Wengg in #18536
  • fix(compaction): run the display summary without reasoning by @phillipxkang in #18541
  • fix(mnemopi): key the local encoder cache by model by @eggpeat in #18562
  • fix(coding-agent): default omitted todo append phase by @taotao7 in #18575
  • fix(wait): explain the idle window in timed-out wait results by @alphastorm in #18612
  • feat(tui): split ask HTML forms into question tabs with Review and hide in Tern by @Gabriel-Hiss in #18608
  • feat(auth): pause providers with a KDL disabled rule; pause Google Antigravity by @H4vC in #18622
  • fix(collab): bound and attribute the host's send-queue admission by @iliaal in #11371
  • fix(coding-agent): preserve role ownership for retry fallback chains by @harshaygadekar in #18534
  • fix(coding-agent): journal session title usage by @yuzu-octopus in #18491

New Contributors

Full Changelog: v18.18.3...v18.18.4

Don't miss a new oh-my-pi release

NewReleases is sending notifications on new releases.