chore(deps): update dependency can1357/oh-my-pi to v18.6.3 #209
Loading…
Reference in a new issue
No description provided.
Delete branch "renovate/can1357-oh-my-pi-18.x"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
This PR contains the following updates:
18.6.0→18.6.3Release Notes
can1357/oh-my-pi (can1357/oh-my-pi)
v18.6.3Compare Source
@oh-my-pi/pi-agent-core
Breaking Changes
Agent.withdrawUndeliveredQueuedMessages()replaceswithdrawLiveSteering()and returns{ steering, followUp }: it also takes back queued input already dequeued for the next model call, which the aborted run then neither records nor reports inagent_end(#14179 by @andrebrait)Added
Agent.setOnModelCallSystemPrompt, called with the exact system prompt each model call is built from (#14338 by @will-bogusz)Changed
SessionInitEntry.systemPromptholds the system prompt blocks as sent; session files written earlier keep one joined string (#14338 by @will-bogusz)imageTokens()formula with its OpenAI Responses wire rule; values are unchanged (#14286 by @will-bogusz).Fixed
Invalid signature in thinking block(or silently dropping the summarized thinking) on models with preserved thinking (#14251 by @will-bogusz)@oh-my-pi/pi-ai
Added
compat.statefulResponsesto enable or disable stored Responses chaining (previous_response_idwithstore: true) for one endpoint without the official-only request fields thatcompat.officialEndpointimplies (#13686 by @alphastorm).AuthStorage.health.check()acceptsexcludeProvidersto skip credentials of providers the caller does not serve (#14234 by @will-bogusz)Changed
recordAffinity: falseto credential resolution options, selecting as the session would without pinning the choice to that session (#14512 by @will-bogusz)Fixed
unsupported_native_inflight_message) now classify as retryable from their error text alone, matching the provider's own classification, andAIError.isCodexSteerRejection()identifies them so the agent retry can stay on the same model (#14242 by @alphastorm)detail: "original"images to endpoints whosesupportsImageDetailOriginalis off (#13687 by @alphastorm).onPayloadhook, so payload capture now sees each Devin chat request and a returned replacement is what gets sent (#14506 by @will-bogusz)storeResponses: true, setPI_MUSE_STORE_RESPONSES=1, or set a process-wide default withconfigureProviderStoreResponses(#14293 and #14534 by @abilliontokens).[DONE]sentinel arrived (#14481).@oh-my-pi/browser-relay
Fixed
@oh-my-pi/pi-catalog
Added
statefulResponsescompat field for OpenAI Responses models, kept through OpenRouter's Responses dispatch (#13686 by @alphastorm).image-tokenizationaxis, which declares how GPT-5.2+, Claude and Gemini 3 lines bill input images on every host, with wire-API fallback rules for other models, plusimageTokens()to price one image (#14286 by @will-bogusz).Changed
azure/openai-codexproviders pointed at a non-Azure/non-CodexbaseUrl, OpenRouter) to defaultsupportsImageDetailOriginaltofalse, so snapcompact frames and computer screenshots go out asdetail: "auto"instead of failing on servers that rejectoriginal; setcompat.supportsImageDetailOriginal: trueto opt a host in (#13687 by @alphastorm).Fixed
store-responses), so a turn whose connection drops can be recovered instead of re-run. Storage is opt-in via the omp settingproviders.muse-code.storeResponsesorPI_MUSE_STORE_RESPONSES=1(#14293 and #14534 by @abilliontokens).404 Requested entity was not found. After a successful model refresh and on subsequent restarts, only models in the account's own Antigravity model list are offered (#14328).@oh-my-pi/pi-coding-agent
Breaking Changes
createAgentSessionnow throwsCould not restore model <provider/id>when a resumed session's saved models cannot be restored, andAgentSession.switchSessionthrows it, keeping the current session, when it opens such a session; both still fall back with a warning whenhasUIis set andretry.modelFallbackis on, and hosts that cannot show that warning can opt out withallowSessionModelFallback: false(#13689 by @alphastorm).Added
statusLine.compactThinkingLevel(Compact Thinking Level, on by default) is oncomputer.zoom()and window-localzoom()in JavaScript and Python Eval, with native-detail region captures that preserve full-screenshot click coordinates.observe(), native application discovery/launch, live display handles, bounded input holds, human-approved task control, and macOS Space helpers in both Eval languages.open_sessionandswitch_sessionaccept an optionalprovider/modelIdpair that binds the session to that model instead of its saved one, as--modeldoes at startup;RpcClient.openSession()/switchSession()and the Python client'sopen_session()/switch_session()take it too (#13689 by @alphastorm)compat.statefulResponsestomodels.yml, so a provider or model can opt into or out of stored Responses chaining without the process-widePI_OPENAI_STATEFUL(#13686 by @alphastorm).app.stt.pushToTalkkeybinding, defaulting toSpace, so push-to-talk can be remapped or disabled independently from speech-to-text andapp.stt.toggle(#6592 by @anatoli-tsinovoy).expandThinkingBlockssetting that keeps finished thinking blocks expanded in Tern instead of collapsing them at turn end (#14519 by @H4vC)/slow:get_statereportsslowModeSupported,slowModeEnabled, and a provider-neutralusageLimit(wrap-up or low-priority stage, with reset times for the client's timezone), and the newset_slow_modecommand turns it on or off; the TypeScript client and the generated Python, Go, and Rust SDKs gain a matchingsetSlowMode/set_slow_mode/SetSlowModemethod (#14153 by @andrebrait)abort_and_restore_queue: queued steering and follow-up messages are taken back and returned for the editor instead of running in a new turn after the abort (#14179 by @andrebrait)remove_queued_messagenow returns the removed message's images, so clients can put an edited queued message back in the editor with its attachments (#14179 by @andrebrait)/btwside questions for RPC hosts:btwasks one (or a follow-up in an earlier topic) while the main turn keeps running, the answer streams asbtw_delta/btw_recordframes,btw_cancelstops it, andget_btw_historylists the session's BTW history shared with the TUI (#14110 by @andrebrait)providers.muse-code.storeResponsessetting (off by default;PI_MUSE_STORE_RESPONSESoverrides it) to store Muse Code results on Meta's servers, so a turn whose connection drops is recovered instead of re-run (#14534 by @abilliontokens).Changed
computer.display: allremains available explicitly.readparses large files for block context off the main thread (#14520 by @H4vC)sloppy-mode edit streams, its preview no longer guesses an edit for a*** Findwhose*** Replacehas not arrived yet; the preview of an earlier file section that ends in a bare*** Findstill matches what will be applied (#14520 by @H4vC)@file mentions autocomplete faster in large repositories (#14454 by @H4vC)_or$, cut to 80 bytes;#-prefixed and indented lines are no longer picked (#14521 by @H4vC)tab.observe()much faster on element-heavy pages, especially over the relay: listed elements are resolved to handles only whentab.id(n)uses them (#14431 by @will-bogusz)Fixed
⇧⇥) whatever the symbol preset/new, session switches, and Esc aborts hanging for up to 30 seconds while an extension'smessage_endhook was still running; they now wait only for end-of-turn maintenance.tab.goto,back,forwardandreloadtiming out on pages whose ad, chat or other iframe never finishes loading, although the page itself had loaded (#14421 by @will-bogusz)/usagesheet in Tern missing the Close button the other report sheets have (#14455 by @H4vC).umaskin a bash command changing the umask of omp itself (#14454 by @H4vC)xychartwhose axis range is finer than floating-point precision freezing the terminal (#14454 by @H4vC)--continue/--resumein print, JSON, RPC, andrpc-uimodes (and in the TUI withretry.modelFallback: false) now exits with an error naming the model instead of using the settings-default or first available model. At runtime, RPCopen_sessionandswitch_session, ACP session load and fork, and extension session switches fail withCould not restore model <provider/id>and keep the current session instead of continuing on the current model; TUI/resumewarnsCould not restore model <provider/id>. Using <provider/id>, or fails with the error whenretry.modelFallbackis off./resumealso restores models from discovery-backed providers the way startup does (#12274, #13689 by @alphastorm)..envrc(and devenv setup) on every call; an unchanged direnv environment is now reused (#14310 by @n3oney).computerguide telling the model that refs from its earlierax()reads expire; it now says an element keeps its[ref=eN]across reads until its role or label changes (#14485 by @will-bogusz)/skill:or collab prompt you sent from the kept history, and kept screenshots inflating the post-compaction token count and discarding speculative compactions (#14247 by @will-bogusz)tab.waitForDownload()andtab.downloads()reporting a path that does not exist when another open tab set a differentdownloadsdirectory (#14434 by @will-bogusz)/mcp reloador adding or removing an MCP server; running and revived subagents now follow the main session's MCP tools (#14441 by @abilliontokens).check/uncheckon an element that never becomes clickable timing out with no reason; the timeout now names the last failed check, such asdisplay:none(#14230 by @will-bogusz)check(),uncheck()andclick()refusing or timing out on custom-styled checkboxes and radios whose real input is transparent or drawn over by its label (#14231 by @will-bogusz)omp auth-gateway serveadvertising and routing models from providers listed indisabledProviders;omp auth-gateway checknow skips those providers' credentials too (#14234 by @will-bogusz)/shakeand other history rewrites during a running tool call leaving the context meter stale and dropping that tool call from the agent's history (#14261 by @will-bogusz)browser.relayUrlport stopping the browser relay that other sessions were using on a different port (#14407 by @will-bogusz)tab.click(selector)failing at once with "matched no visible element" when the page renders the target a moment later; it now waits liketab.fill,tab.typeandtab.dblclick(#14408 by @will-bogusz)tab.fill()andtab.type()on a disabled or read-only field wiping it and typing into whichever field had focus while reporting success; they now fail with the reason (#14412 by @will-bogusz)tab.fill(selector, "")clearing a field without telling the page, so React and Vue forms kept and submitted the old value; the clear now firesinputandchange(#14413 by @will-bogusz)tab.waitForDownload()missing a download started by the next tab action on tabs opened without adownloadsdirectory; the file landed in the browser's default folder and the wait timed out (#14417 by @will-bogusz)browser.openfailing with a bare[object ErrorEvent]when the browser's debugger websocket refuses the connection; the error now names the endpoint and why it failed (#14418 by @will-bogusz)select()now fails and leaves the dropdown unchanged when a value matches no option, on every backend (#14226 by @will-bogusz)Control+afailing on Chrome tabs, frames and elements, and macOS editing shortcuts and clipboard copy/paste doing nothing (#14225 by @will-bogusz)tab.extract("text")running headings, paragraphs, list items and table cells together on one line, and leaking<script>/<style>text with aselector(#14227 by @will-bogusz)omp dry-balancesaving a 30-day session pin toagent.dbfor every sampled session id (#14512 by @will-bogusz)omp dry-balancerejecting--config; it now applies the overlay likePI_CONFIG_FILES, so account-policy experiments route as configured (#14513 by @will-bogusz)omp dry-balancefailing to resolve credential-scoped dynamic models, such as Factory Droid's, thatomp modelslists (#14514 by @will-bogusz)click({ button, count })) becoming one left click on Tern and cmux tabs; cmux now refuses the buttons and counts it cannot press (#14232 by @will-bogusz)openandtab.observe()reporting a fixed 1365x768 viewport on relay, attached and visible browsers instead of the tab's real window size and pixel ratio (#14409 by @will-bogusz)browser.openon a page that outlasts itstimeoutclosing the tab with a bare "Browser open timed out"; the tab now stays on what loaded and the error names the navigation andbrowser.tab(name). A new tab whose navigation fails outright, or whose open is cancelled, is still closed (#14420 by @will-bogusz)tab.observe()leaving out every control inside iframes (embedded sign-in, payment and checkout forms), including iframes inside a web component's shadow root underselector, so they got no ids to act on. An iframe that does not answer within 5 seconds is left out and skipped by later observations until it navigates (#14415 by @will-bogusz)editsilently dropping late LSP diagnostics from slow servers such as tsserver; they now arrive like they do forwrite(#14214)askdropping the ticked options of a multi-select question when the user also typed an "Other" answer; the model now receives both (#14369)agent://<id>artifact is now updated and the parent receives the completion (#14428)type("…\n")presses Enter (#13848)inlineToolDescriptors: autodecision, which sent empty tool descriptions to the new model and failed withfunction.description is required(#14200)omp worktree addand other git operations failing withgit open: … does not appear to be a git repositorywhen the checkout directory name ends in.git(#14553)goalcalls asking for approval under--approval-mode write, which paused goal-mode loops atcomplete;always-askstill prompts for goal changes but notget(#14368)@oh-my-pi/pi-natives
Breaking Changes
isoResolvenow returns a Promise and runs off the JavaScript thread; a backend found available is not re-probed (#14528 by @H4vC)Added
encodeSixelAsyncanddecodeSixelToPngAsync, which encode and decode SIXEL off the JavaScript thread (#14529 by @H4vC)warmBlockParse, which parses a file for block context off the JavaScript thread so later block-context lookups answer from the cache; files over 4 MiB, which the cache does not keep, are skipped (#14520 by @H4vC)Changed
fuzzyFind: a cached scan is scored in place instead of being copied on every call (#14454 by @H4vC)astEditcalls with many edits (#14521 by @H4vC)countTokenson long runs of one kind of character, such as whitespace or letters (#14454 by @H4vC)ls,find,paste,diff,cmp,wc,echo,ts),while readandmapfileloops over files, andsedscripts usingN(#14522 by @H4vC)renderMermaidAscii; a 40-node flowchart renders about 14× faster, with identical output (#14454 by @H4vC)find -type,rm -r,mkdir -p,lsandstat, especially on Windows (#14523 by @H4vC)sedscripts that use regular expressions,printfoutput, andsort -, which now reads standard input directly instead of copying it to a temporary file (#14454 by @H4vC)cpandmvof directory trees;mvwithin one filesystem no longer walks the moved tree first (#14524 by @H4vC)pidwaitand PTY sessions wait for process exit and cancellation events instead of polling (#14526 by @H4vC)listWorkspace,fuzzyFindwith followed symlinks, andfd; the file-mention scan cache releases expired entries sooner (#14527 by @H4vC)Process.waitForExit()on a single process waits for the operating system's exit notification instead of polling every 50 ms (#14454 by @H4vC)renderMermaidAscii, snapcompact rendering and single-display desktop screenshots (#14529 by @H4vC)DesktopSession.capabilitiesno longer blocks behind a running capture or input operation: while one runs, it answers from the capabilities read by the latest capture or capabilities call; otherwise it reads them live (#14529 by @H4vC)…[+N], showing how many characters were dropped (#14532 by @H4vC)Fixed
umaskin the embedded shell changing the host process's umask; the mask now belongs to the shell, applies to files created by redirections, builtins such astouch,mkdirandcp, and external commands, and a subshell'sumaskno longer leaks out (#14454 by @H4vC)git diffdoes (#14521 by @H4vC)enable execandenable suspendrestoring builtins that replace or stop the host process (#14454 by @H4vC)ls -tandls -Slisting entries with equal times or sizes in arbitrary order, andls --group-directories-firstscrambling entries within each group; ties now sort by name as in GNUls(#14523 by @H4vC)rm -randrm -don Windows failing on a directory that has the read-only attribute (#14523 by @H4vC)declare -rlisting only readonly variables that were also traced, anddeclare -tlisting every variable (#14454 by @H4vC)sedregular expressions treating\bas a backspace instead of a word boundary (#14454 by @H4vC)mvbetween filesystems losing modification times, modes, ownership, subdirectory extended attributes and hard links, failing on sockets, and removing source symlinks when copying an entry failed (#14524 by @H4vC)sortreading standard input again for each repeated-operand (#14454 by @H4vC)sortcollating text only on its first run in a session and taking its collation order, decimal point and thousands separator from omp's own locale instead of the shell'sLC_ALL,LC_COLLATE,LC_NUMERICandLANG, andsort --parallelchanging the host's thread pool:--parallel=Nnow limits that sort to N threads and rejects invalid counts as GNU sort does (#14525 by @H4vC)taccrashing omp when the file it read was truncated at the same time (#14525 by @H4vC)tail -fpiped into a command that exits early (such asgrep -m1) never stopping, including when following provider-backed paths (#14525 by @H4vC)psqloutput minimizer listing every table row whose first column began with a word likeERRORabove the table, instead of applying the row limit (#14454 by @H4vC)Process.args()on Windows returning an empty list for elevated processes when the caller is not elevated (#14526 by @H4vC)highlightCodedropping the end of long lines) (#14454 by @H4vC)renderMermaidAsciihanging and running out of memory on anxychartaxis whose range is finer than floating-point precision (#14454 by @H4vC)getWorkProfile()attributing async work to the wrong region or dropping it (#14454 by @H4vC)readandmapfilein the embedded shell treating Ctrl-C and Ctrl-D bytes in a file or pipe as an interrupt or end of input (printf 'a\003b\n' | read -r xfailed,printf '\004x\n' | mapfilestored nothing); they are keys only when standard input is a terminal (#14522 by @H4vC)readstoring each byte of UTF-8 input as a separate character (ébecameé);read -nandread -Nnow count characters instead of bytes, as bash does (#14522 by @H4vC)read -dwith a multibyte delimiter never matching; it stops at the delimiter's first byte, as bash does (#14522 by @H4vC)echo -e -Eexpanding escapes; the later option wins, as in bash (#14522 by @H4vC)mapfile -Owriting into a readonly array; it now fails before reading any input, as bash does (#14522 by @H4vC)computerelement refs expiring after twoax()reads of a window while the element was still there: an element now keeps its[ref=eN]acrossax()andfind()reads, even after missing a single snapshot. An element whose role or label changes gets a new ref, and its old ref keeps working until it expires; on Windows, an element that reuses a gone element'sRuntimeIdgets a new ref, and one whoseRuntimeIdcannot be read gets a new ref on every read (#14485 by @will-bogusz)@oh-my-pi/snapcompact
Breaking Changes
maxFramesForDataBudget()now takes the frame shape instead of a byte budget, so the default 1568px shapes get 26 frames instead of 17 (#14277 by @will-bogusz).Added
frameBilling,frameTokensandframeBillingKey, which price a rendered frame at what the model reading it is billed (#14291 by @will-bogusz)Fixed
@oh-my-pi/pi-tui
Breaking Changes
WorkingRowSpecno longer takesrate: the native working row reads spinner, elapsed time, divider, then the intent, and the tok/s readout moved to the composer barAdded
ComposerNativeState.rateshows a tok/s readout in the native composer bar after the effort chip, andComposerNativeState.thinkingInModeldraws the thinking level as the model chip's icon instead of a separate chipformatTooltipKeyformats a key for a native tooltip: unicode keycap glyphs whatever the symbol preset,escfor EscapeImageOptions.requestRenderrepaints an image without an image budget once its SIXEL encode lands (#14529 by @H4vC)AssistantMessageComponentcan keep finished thinking sections expanded viasetExpandThinkingBlocks(); sections folded by hand stay folded (#14519 by @H4vC)Changed
/hotkeysshows the effectiveapp.stt.pushToTalkbinding, includingDisabledwhen unbound (#6592 by @anatoli-tsinovoy).Fixed
ctrl+g); they use keycap glyphs (⇧⇥,⌃G)@oh-my-pi/pi-utils
Breaking Changes
cursorPositionoption ofTerminalQueryResponderwithhostCursorHandshake, which leaves only the PTY host's own session-start cursor query unanswered instead of every cursor-position queryWhat's Changed
New Contributors
Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.6.2...v18.6.3
v18.6.1Compare Source
@oh-my-pi/pi-agent-core
Fixed
@oh-my-pi/pi-ai
Fixed
@oh-my-pi/pi-coding-agent
Fixed
/switchautocomplete so model and role suggestions use the same relevance ordering as the model picker, including support for@rolealiases.skill://searches blocking other filesystem operations and delaying subagent artifact publication.pi.exec()reporting exit code0when a process was terminated by a timeout or signal; terminated processes now report code-1./collabguests being unable to respond to setting-change approval and tool-issue report consent prompts./btwanswers in Tern being clipped with no way to scroll:/btwnow answers in the scrollable BTW history sheet (#14331 by @H4vC)/btwanswers longer than 4 KiB being cut off with[…truncated]once they finished (#14331 by @H4vC)/btwreopens it);xcancels the answer (#14331 by @H4vC)@oh-my-pi/pi-natives
Fixed
@oh-my-pi/pi-tui
Fixed
##headings, and the arrow/page keys scroll the answer (#14331 by @H4vC)fto follow up jumps to the bottom of the conversation (#14331 by @H4vC)What's Changed
Full Changelog: https://github.com/can1357/oh-my-pi/compare/v18.6.0...v18.6.1
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate CLI.
32159ce3a9982bc8be2bchore(deps): update dependency can1357/oh-my-pi to v18.6.1to chore(deps): update dependency can1357/oh-my-pi to v18.6.3