Oh My Pi v18.12.2
@oh-my-pi/pi-agent-core Changed The failed-tool-call correction sent to DeepSeek models now also covers chat-template tool-call tokens written out as text, not only malformed DSML (#16216 by @H4vC) Fixed Fixed Ollama chat history estimates counting stripped…
Read full notes
@oh-my-pi/pi-agent-core
Changed
- The failed-tool-call correction sent to DeepSeek models now also covers chat-template tool-call tokens written out as text, not only malformed DSML (#16216 by @H4vC)
Fixed
- Fixed Ollama chat history estimates counting stripped native thinking and missing foreign thinking replayed as text, which skewed compaction after model switches (#16164)
@oh-my-pi/pi-ai
Added
- Added
nativeJudgmentImageBounds(): the image bounds a native judge enforces, its wire's transport limits tightened by the catalog's model bounds - Added Box judgment questions (
BoxQuestion/BoxAnswer, TypeSafe Jev 1.14+ direct or through OpenRouter): each names the request image it searches byimageindex, and comes back as that image's edges as 0–1 fractions; text, OpenAI Decisions, and Workers AI judges reject them
Fixed
- Fixed Muse Code usage going stale whenever its 5-hour window sits idle: the idle window now reports as unused, and weekly usage carries over from the last active window until its reset (#16193 by @eggpeat)
- Fixed DeepSeek tool calls never running when the model writes them as chat-template tokens with
_in place of▁, a missing|, or no per-call close (e.g.<|tool_calls_begin|>…<|tool_calls_end|>): they now run as tool calls, and any that still cannot be parsed are removed from history and reported to the model as a failed call (#16216 by @H4vC)
@oh-my-pi/browser-relay
Fixed
- Fixed a relay tab close failing when Chrome refuses it for a moment (a tab being dragged); the extension retries it (#16119 by @will-bogusz)
- Fixed tabs created for a relay request whose connection dropped mid-create staying open, and answers to such requests going to a later connection (#16119)
- Fixed the relay resolving an old tab id to a different tab after a browser restart; the extension now reports each browser run (#16119)
@oh-my-pi/pi-catalog
Changed
- Seeded TypeSafe
jev-1.14.0and OpenRoutertypesafe/jev-1.14, and made them thejudgerole defaults and TypeSafe's default model; TypeSafe discovery keeps seeded ids its alias-only/v1/modelslisting omits
@oh-my-pi/pi-coding-agent
Added
- Added
computer.backgroundFallback(takeoverby default, orrefuse): when acomputerwindow input call has no background route, the tool reruns that one call in takeover, hands focus back to your app and says so in its result;refusefails the call instead and also refuses the agent's own foreground requests (takeover: true,raise(), an activatingapps.open, desktop input, and on macOS menus andAXOpen) (#15191 by @will-bogusz) - Added DeepSeek as a web search engine (
web/deepseek), using DeepSeek's new Search API with your existingDEEPSEEK_API_KEYor storeddeepseekcredential - Added
el.selectText(text, { prefix?, suffix?, select? })to the macOScomputertool: it selects text (or places a caret) in a background app's text field without taking focus, moving the pointer or sending keys, so typing into that field replaces it (#15175 by @will-bogusz) - Added
{ takeover: true }to computer-usewin.move, so a hover that a window refuses in the background can be retried in the foreground (#15173 by @will-bogusz) - Added a
menuoption to thecomputertool'swin.click,el.click,el.pressandel.perform, so on macOS the call that opens a menu also chooses its item, e.g.menu: ["Add to", "Fonts"](#15185 by @will-bogusz) - Added
el.type(text)andel.press(chord)to thecomputertool, which send text and keys to that element instead of wherever its window's focus is; on macOS and Windows nothing is sent when the element cannot be addressed without taking your focus (#15563 by @will-bogusz) - Added: pressing Escape during takeover input now stops computer use for the rest of the turn, and that session's later
computercalls are refused, unsent, until your next message (#15564 by @will-bogusz) - Added the
computertool'sUserIntervenederror on macOS: input into an app you have used since the agent last read its window fails without sending, and the agent is told to read the window again and keep your edits (#15562 by @will-bogusz) - Added
tui.completeScrollback: rows a growing HUD or dialog pushes off screen go straight to scrollback instead of missing from it until it shrinks (#15692 by @Ilm-Alan)
Changed
- The
computertool and its errors no longer tell the model to retry withtakeover: true, and its instructions tell it never to callraise()orapps.open(…, { activate: true })to make input work (#15191 by @will-bogusz) - Computer-use window input with
takeoveromitted now stays in the background aftercomputer.control.acquire, so an acquired grant no longer activates the target app or moves the user's pointer; passtakeover: truefor foreground input (#15173 by @will-bogusz) - Pressing Escape in your own app no longer stops the
computertool's background window input unless task control is held; Escape in omp still interrupts it, and physical Escape still stops takeover input (#15176 by @will-bogusz) - Added Box questions to
ChainJudge: they go only to Jev judges that answer them, and the box edges measure the image you passed even when it was padded to fit Jev's size bounds - A relay
browser.openwithoutapp.targetnow opens its own background tab instead of adopting the visible one (after reinstalling the relay extension; older ones select it), andbrowser.closecloses it;app.targetstill borrows an existing tab (#16119 by @nnnnoel and @will-bogusz) - Computer-use
win.menu.itemsnow needsexecapproval and is rejected inread_onlyruns, since on macOS it makes the window key in its own application before reading its menus (#15184 by @will-bogusz) - The
computer
…