Repository navigation
chore(deps): update dependency @oh-my-pi/pi-coding-agent to v18.18.0 - #32
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
|
Note renovate[bot] opened this pull request, so PR Lens left it undrawn. Comment
|
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
2 times, most recently
from
October 5, 2026 02:40
9ee0b0e to
0a52b6f
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
2 times, most recently
from
October 5, 2026 17:18
a3b6be6 to
20bc5a0
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 6, 2026 02:12
20bc5a0 to
87727ab
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 6, 2026 14:21
87727ab to
b9a87ed
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 6, 2026 23:35
b9a87ed to
2b8f341
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 7, 2026 17:20
2b8f341 to
c307895
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 9, 2026 14:16
c307895 to
d74342c
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
2 times, most recently
from
October 10, 2026 00:46
514e42d to
e0ca091
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 10, 2026 09:29
e0ca091 to
a0ea453
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 11, 2026 00:50
a0ea453 to
518dc09
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 11, 2026 05:17
518dc09 to
353b50a
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 11, 2026 20:39
353b50a to
ce0ec27
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 15, 2026 16:52
792b8b6 to
7337b20
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 15, 2026 22:39
7337b20 to
0096b45
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 17, 2026 02:35
0096b45 to
86a7717
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 18, 2026 00:40
86a7717 to
2c49266
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 18, 2026 16:38
2c49266 to
42f11ad
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 20, 2026 10:52
42f11ad to
4c3694d
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 20, 2026 19:59
4c3694d to
d1d0787
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 21, 2026 02:07
d1d0787 to
e3d6ebf
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 21, 2026 21:58
e3d6ebf to
37e2b8e
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 22, 2026 21:45
37e2b8e to
126e410
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 23, 2026 20:51
126e410 to
5317adc
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 24, 2026 04:29
5317adc to
c5388bd
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
October 25, 2026 01:56
c5388bd to
4ed9dad
Compare
renovate
Bot
force-pushed
the
renovate/oh-my-pi
branch
from
November 1, 2026 09:38
4ed9dad to
7399aec
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
18.0.11→18.18.0Release Notes
can1357/oh-my-pi (@oh-my-pi/pi-coding-agent)
v18.18.0Compare Source
Fixed
cd <dir> &&/cd <dir>;was hoisted into the working directory show thatcdagain above the visualized command, with the separator the model wrote, instead of dropping where it rancd <dir>; ...now run in<dir>as their working directory when it exists, so its direnv environment loads and the directory shows on the tool card (#18329 by @harshaygadekar)taskFile.retainandlearnmemories are no longer lost when delivery fails or omp exits: they are kept on disk, retried, and delivered by the next session without duplicates (#18176 by @alphastorm)Native shell returned an invalid execution tracewhen a bash command assigned a long value containing multi-byte characters such as Chinese text (#18259)grep -eandrg -ein the bash tool accept patterns that start with-(e.g.grep -e "--canary") instead of failing with an unknown-option error.v=$(printf '\377'))grep,globand isolated subagents no longer flash a console window when they query or start the ovnfs daemon.[(e.g.a && [while still streaming) no longer crashes omp in the Pseudo shell visualization (#18320)@(e.g.@local://x,@vault://x) aborting the run with "uses internal scheme ... not as a filesystem path"; such a mention is now left as plain text (#16071)JSON Parse error: Unexpected identifier "access_token"against GitHub's token endpoint (#18292)resourceadvertised by the authorization server, fixing401 invalid_tokenafter/mcp reauthon servers such as Firecrawl's hosted MCP (#18315)Cannot send … instance across threadswhen their model comes from an extension-registered provider with its ownstreamSimple(#18310 by @Dangerboi)display.shellVisualizationnow omits bash execution traces from tool updates and saved sessions, including in ACP (#18267)./quitand/exitno longer wait several seconds for an unresponsive OTLP telemetry collector (#18255).opennow returns the same tab with a recovery notice when Chrome detaches the relay during navigation and omp successfully reattaches, instead of failing the open and closing newly opened tabs (#18252 by @will-bogusz)tab.errors()keeps the fields of plain-object and other non-Error rejections, bounded like console arguments, instead of reporting onlyObject(#16959) (#18251 by @Alex-Wengg)authHeader: truekeeps its cachedfetchDynamicModelscatalog whenomp models refreshfails, instead of showing 0 models until the next successful forced refresh (#18227)@brief.md, a greeting, a bare number — is now named once from the assistant's reading of it, instead of staying untitled until the next message that happens to be titleable (which, for an agent launched from one brief and left to run, never came) (#18238 by @sjawhar)write agent://…) before its first file edit (#18322 by @1vivy)v18.17.0Compare Source
Added
display.shellVisualization(default on).grepandglobinside an ovnfs checkout ask the ovnfs daemon to search the checkout in-process, avoiding per-file mount round trips; the daemon and its mount come fromovnfs --json statuswhen the ovnfs binary is found. They fall back to the native search when the daemon is unavailable or rejects the request, and cancelling the tool cancels the daemon's search. ovnfs with admin protocol 5 is required.skills.manualSkillsglob patterns to hide skills from the model catalog while keeping them manually invocable (#18114 by @Shadorain)web/keenable), usingKEENABLE_API_KEYor a storedkeenablecredential, or a keyless public endpoint when explicitly selected (#17953 by @KGKallasmaa)web_searchresults list failed providers with reason and status code indetails.failures(#18124 by @will-bogusz)update.auto, offered in setup) that installs new releases via your install method and runs them next launch; skipped on Nix, source checkouts, and Tern.omp updaterefuses to run while another update (including auto-update) is installing.nonetoedit.mode(andPI_EDIT_VARIANT) to remove theedittool;bashstays available even ifbash.enabledis off.providers.openaiResponsesWebsocketsto use WebSockets for supported standard Responses models (#17354 by @TatsukiMeng)/unpin [session id]unpins a session (#17848 by @SuperUserA)message/eventblocks full, compact, or hidden viapi.registerTranscriptPresenter(), and redraw withctx.ui.refreshTranscript(ids); enable withextensionRenderers.transcriptPresenters(default off) (#17960 by @materemias) (#17997 by @materemias)isTranscriptBlockCompact()(#17997 by @materemias)cachestatus-line segment (full/nerdpresets) showing whether the next message hits the prompt cache; Tern and/sessionshow why not and how much is resent (#12677) (#17496 by @will-bogusz)^model tags accept a:levelsuffix (e.g.^openai-codex/gpt-6-astra:high) to set the subagent's effort (overridingtask.maxEffort), with completion of each model's supported levels (#17574 by @a-glapinski)chillaxmagic keyword for brief, lowest-effort thinking on supported models; configure viamagicKeywords.chillaxtui.colorfulMarkdown(on by default): replies color headings by level, bold and italic text, inline code and table headers from the theme's palette; turn it off for the previous single heading color and plain bold/italictui.motion(full/reduced/none),tui.spinnerInterval(0= static) andtui.maxFpsto control animation and repaint rate, also via--motion/--spinner-interval/--max-fpsandPI_MOTION/PI_SPINNER_INTERVAL/PI_MAX_FPS; an explicittui.spinnerIntervalbeatstui.motion, and keystroke echo keeps 30 fps (#14240 by @mccraigmccraig)omp zsh,omp bashandomp shto run omp's built-in shell engine directly, passing all arguments through and exiting with the shell's status.omp zsh/omp bashkeep shell history in your$HISTFILE, compatible with real zsh, including!expansion,fcandhistory.omp zshruns interactively like zsh (line editor,bindkey, completion, job control, prompt hooks, common modules), so oh-my-zsh and powerlevel10k configs start.bashresults report truncated output viaelidedBytes/elidedLinesandcolumnTruncated*/columnMaxfields, decoded by the Go, Python and Rust SDKs (#17957 by @H4vC)pi.getShortcutConflict(chord)so extensions can check whether a key chord is free or who holds it (#17961 by @materemias)unwrapHashlineHeaderPathfrom@oh-my-pi/pi-coding-agentto turn a[path#TAG]target into its plain path (#17961 by @materemias)devin-clilogin imports Devin CLI credentials, so thedevinprovider no longer requiresDEVIN_API_KEY(#13637 by @pavel-kalmykov)devin-windsurflogin authenticates thedevinprovider with an existing Windsurf Enterprise account (#13288 by @pavel-kalmykov)Changed
ovnfs.path, elseovnfson PATH): agents get the separate-checkout guidance, and isolated subagents use ovnfs checkouts whenisolation.backendisautotextVerbositytomediumfor the old lengthwaitwith nothing new returns after 5s (backing off to 5m over repeated idle waits) instead of blocking up to 30 minutes, and nudges the agent toward other workwaitreturns jobs finishing within 1.5s of each other in one resultwaitor interrupt bash/eval; a direct message still ends a wait and delivers every queued messagewaitfor a reply gives up after 5 minutes (was 30) and returns at once if the other agent is waiting on the userbashtool never touches your shell history or completion, and itszsh -i/bash -iskip.zshrc/.bashrcPI_MOTION=none omp --motion fulluses full motion); env vars still outrank settings filestask.workerThreadscaps workers (default 4;0keeps all on the main thread)write agent://allfails, pointing to a directagent://<id>message) and are no longer told to announce shared-file edits; the main agent can still broadcastFixed
tab.traceStart(), opening a second tab, and other calls into background tabs no longer stall or time outload_*) no longer change the main session's tools or system promptwaitno longer streams full transcripts, and they stall less on a busy main threadtaskcall no longer slows quadratically (about 80 ms → 2 ms for a 200 KB call)computerfrom Eval now useszoomfor legible close-ups instead of cropping the downscaled screenshot (#18158 by @will-bogusz)@tooldefinitions with type annotations now register on Python 3.9 (#18143 by @Winston-Hsiao)readof an SEC EDGAR filing document or folder returns that document, not the company profile (#18150 by @will-bogusz)readof a Read the Docs page no longer returns another repository's linked file (#18162 by @will-bogusz)tab.waitForDownload()now errors with atab.runsuggestion that actually catches the download (#17615) (#18155 by @will-bogusz)open({ viewport })now sizes relay tabs,app.cdp_url/app.pathbrowsers, and headed Chromium on first open (#18160 by @will-bogusz)omp stats(#18178)/extensionsshows the active~/.agentsskill when a higher-priority~/.claudecopy is not opted in (#18190)detailscontain a throwing getter no longer silently stop all later session saves (#18134 by @MonsieurBarti)writeto a newssh://file no longer fails when the content ends with areadtruncation notice (#18154 by @will-bogusz)findreturns verified hits as partial results when its 20 s budget runs out instead of failing (#14809) (#18161 by @will-bogusz)| a |||) fails to parse (#18151 by @will-bogusz)"skill:// external command"reach external commands as written instead of failing with exit 126 (#18163 by @will-bogusz)ctx.ui.getLinkClicksAvailable()now work on every launch, not only the first after an edit (#18116 by @materemias)meta:row instead of splitting across rows (#18105 by @JustasMasiulis)./ccontinue no longer reports "Nothing to resume" after/handoff, compaction, or a/skill:-started sessionomp bashandomp shshow a prompt whenPS1is unsetdisplay.cacheMissMarkernow flags turns that re-send most of the conversation (e.g. after an idle gap), even when the system prompt block was cachedconfig.ymlgains a value its omp version doesn't know, preserving tools and prompt cacheawaitcancels the cell and keeps the kernel and variables (#18115 by @Winston-Hsiao)/fix the user's login bug) now reach$ARGUMENTSand$1,$2, … intact (#18008)(no output, exit code 0)(#17957 by @H4vC)web(or other model-kind) role model no longer fall back toweb/*search providers and fail withUnhandled API in mapOptionsForApi: web-search(#18056 by @haesol-shin)readrows naming a URL link the whole URL, not just its last path segment (#18071 by @iacore)asknote on a later single-select question no longer replaces the previous question's note (#17979)omp --smoke-testwithSubagentCodeChangedErroror keeps subagents on the main thread (#18060)ttstool uses Grok Voice again instead of silently falling back to Kokoro, and sendslanguageto xAI (auto-detected if omitted) (#17992 by @Mirceone)�(#17947 by @H4vC)User Preferences) from the prompt when over the render budget (#17548, #17955 by @harshaygadekar)task.softRequestBudgetguard; it andtask.agentSoftRequestBudgetresolve by agent name (e.g.scout), not task ID (#17988 by @sinhduc01, #18121 by @eggpeat)blockedindicator follows its own approval mode, tool policies, and grants instead of the main session'sexec >file,exec 2>/dev/null, orexec <fileno longer redirects later commands in the sessionEXITtrap fires once at the end of its command, not after every later command(sleep 1; echo late) &) no longer appears in a later command's outputenv -ino longer passes non-shell-name variables (A-B=1), andX=v env -i/X=v env -u Xno longer pass an exported outerXxargsreports a signal-killed command like GNU xargs:xargs: CMD: terminated by signal N, stopping with status 125./script < fifo &) runs as bash instead of failing withExec format error@toolcall waiting on anasyncio.Lockheld by another subagent's call@toolcoroutine, releasing locks, and reportsPython tool request was cancelledast_grepandast_editdetect languages for uppercase file extensionscomputerwindow lookup and app opening work for app IDs, paths, and~paths, and survive Wayland permission timeoutscomputer/browser lifecycle works in SDK embeddings and local test runs*** Endand*** End Patchmarkers are no longer written into files or truncate later editsv18.16.0Compare Source
Added
retainandlearncan now store a memory withscope: "global"so every project recalls it. It is opt-in through the newhindsight.globalScopesetting (off by default) and needsglobalorper-project-taggedscoping (#17706 by @alphastorm, from #15030 by @kithawk).btw.inject(off by default;/settings→ Interaction → "/btw Steering Inject"): when you ask/btwfor a steering prompt, it drafts one in an<inject>block shown behind a pink rail, andAlt+I(app.btw.inject) sends it to the main session (as a steer while the agent runs, else as a new turn) from the inline answer or the BTW history sheet, once per answer from the current run. Once sent, the block turns green with➤on each line and "Injected into main session" below it; if the main session drops or refuses the send, the block turns back to pending and the same key retries (#17618 by @apullin)OTEL_EXPORTER_OTLP_METRICS_ENDPOINT), composer predictions export content-freeomp.composer.prediction.*metrics by serving model: requests by outcome (offered, skipped, stale, cancelled, timeout, error) with their duration, predictions shown (counted on the first frame that paints them), shown predictions by whether they were accepted with Tab or Right, and the time from first display to acceptance (#17739 by @wolfiesch)Minimized: git 120.4KB → 3.2KB) (#16586 by @will-bogusz)attempts(JSawait handle.attempts(), Pythonhandle.attempts): each fallback candidate tried, in order, with the model, the reasoning effort sent, its outcome, and the error when it failed (#17782 by @xiangnan0811)composer.predictionAlternatives(off by default;/settings→ Interaction → "Prediction Alternatives", listed while Composer Predictions is on): the same single prediction request returns up to four different next messages, most likely first. Type a few letters to get ghost text for the first one that matches; after inserting one, press Tab again to pick another from a list. Prediction metrics carry how many alternatives were offered (omp.composer.prediction.choices), and an accepted prediction now resolves when it retires, with the rank of the alternative inserted last (omp.composer.prediction.rank) (#17796 by @wolfiesch)/reviewand/annotate code-reviewwork from a folder of checkouts:/review owner/repo#123reviews a GitHub PR from anywhere;/review ./repo [#​123 | !7] [focus]reviews in that checkout (#Na GitHub PR,!Na GitLab MR); and outside any repository, the local and open-PR menu choices ask which child repository to useChanged
/resumeandomp --resumeopen at once on your titled sessions (read from~/.omp/agent/history.db), then fill in prompts, status, and untitled sessions when the full scan finishes; the first scan saves older sessions' titles too, so later opens list them right awaysymbolPreset: ascii, status glyphs are three columns wide ([+],[-],[#],[ ]) and status spinners animate as[|] [/] [-] [\](#17732 by @JustasMasiulis)Fixed
browser.close({ all: true })from a subagent no longer closes its parent's tabs; it releases only the calling agent's tabs. Tabs now belong to the agent that opened them rather than its conversation id, so after/new,/resume, fork, or branch they are still frozen, idle-closed, released by close-all, and closed when the session ends instead of leaking (#15975, #16133 by @harshaygadekar)lsp requestnow sendspayload: "null"as JSON null instead of substituting auto-built document params (#17715)../con an empty conversation reports that there is nothing to resume (#17828).pr://<n>,issue://<n>, and repo-lessgithubtool calls in a checkout whoseupstreamremote is not the fork parent oforiginnow resolve toorigininstead of the upstream project;gh repo set-defaultstill winsomp -ptext mode now prints each automatic retry with its error (for example "Couldn't reach api.anthropic.com … check your network") instead of showing onlyWorking...while a turn retries (#17529 by @Mannan-Goyal)omp --exportand/exportno longer fail withError: Out of memoryon large sessions with subagent transcripts, and use far less memory: the HTML is now streamed to disk instead of built as one string (#17741)security_scanwithasync.enabledon (the default) now waits for its backgroundsecurity-reviewerworkers and publishes their findings, instead of endingpartialwith 0 findings and "The scan session ended without publishing a canonical result" (#17788)tab.waitForSelector,tab.evaluateandtab.gotono longer fail after 20 s when the page or server takes longer; like on a launched Chrome they now run to the call's own timeout, up to omp's 60 s protocol timeout, and a command Chrome never answers names itself and its tab (#17778 by @will-bogusz)tab.click(selector, { button, count })andframe.clickignoring their options and left-clicking once, so a right-click meant to open a context menu clicked the element instead; cmux tabs refuse buttons and counts they cannot press (#17767 by @will-bogusz)fillin Chrome no longer sometimes puts the new text in front of a Slate editor's old text when the machine is busy, and refuses a rich-text editor whose focus moves to a wrapper or the page instead of reporting success (#17742 by @will-bogusz)Target closedwhen Chrome detached omp from the tab; it now says Chrome detached omp and whether the tab was reattached, as a call in the page itself does (#17768 by @will-bogusz)persist: truein your Chrome through the relay now stay open when the session ends (anomp -prun exits, a subagent finishes), so a page left for you is still there; other tabs omp opened still close, and an explicit close racing session cleanup still closes its page (#17751 by @will-bogusz)xd://device mounts when woken after omp restarts, so they no longer lose their earlier Claude thinking (#17746 by @will-bogusz)%pipin Python eval leaving the installer process behind in Linux containers and chroots without a usable/proc(#16552 by @will-bogusz)readpages of files with very long lines ending after a few KB: a line cut totools.outputMaxColumnsnow counts the width shown, not its full length, against the page size, so paging no longer stops before such a line or refuses to step past it. When the first cut line is larger than a:rawread returns, the cut notice names that byte cap, and a multi-range read that the page size stops partway through a range says where to continue (#16595 by @will-bogusz)writeaccepting the output of areadwhose long lines were cut totools.outputMaxColumnsand overwriting the file with the cut lines; it now refuses it as an incomplete read, as it does for other truncated reads (#16595 by @will-bogusz)models.ymlacceptstokenizer: cl100kon a custom model or override (#17607 by @will-bogusz)~/.omp/agent/agent.dbgetting corrupted (wiping stored logins) on Linux when grep,read, the bash tool, extensions or eval read it while omp has it open;writeandttsnow refuse to overwrite a database omp holds open (#15586)v18.15.0Compare Source
Added
widgetmodel role when the job, after running 15 seconds, is shown in a live widget or listed by/jobs full; the jobs sheet and/jobs fullshow it under the job's purpose. It follows the Live Job Widgets setting (async.widgets), andCreateAgentSessionOptions.jobCaptionWriterreplaces the model call (#17649 by @wolfiesch)Changed
packages/collab-web/scripts/build-export-viewer.ts, besidebun gen:export-viewer(#17636 by @sjawhar)Kernel restarted: … state is unavailable. Re-run needed setupahead of its own output, instead of failing with a bareNameErroron a variable an earlier cell set (#17595 by @sjawhar)write agent://<id>) while still starting up running on the sharedcontextalone and never receiving itstasks[].taskassignment; the message now waits for the assignment's turn (#17587)lsp reloadnow discovers Rust crates created after rust-analyzer started, so hover and other analysis work without restarting omp (#17658)./compact snapcompact, idle and pre-prompt compaction) (#17490 by @will-bogusz)/compact snapcompactnow reports its reason once instead of twice, and names the/compactmode to run instead (#17490 by @will-bogusz)/jobs,/jobs full,proc://listings,waitandjobresults, and the jobs HUD hover lead with it ahead of the raw command line (#17649 by @wolfiesch)seanceguidance in the task tool and thearchivedocs now say that a question about an earlier session is answered by theseanceagent, and that reading the session's raw JSONL belongs to narrow mechanical checks only, so a consult is no longer duplicated by transcript reads and re-run checks (#17523 by @iacore)Fixed
retry.fallbackChainscandidate that has one instead of failing with "No API key found", and switches back on the first prompt after the credential returns (#17559 by @wolfiesch)/compactstarting turns on stale history or disappearing from the saved session (#17599).fuse-overlayfsdaemon running when the unmount hit a transient "Device or resource busy"; a failed unmount now reports fusermount's error and keeps the workspace foromp worktree clearinstead of deleting its layers under the live mount (#17644)models.ymlmodel whose id differs only by case from a bundled model of the same provider (such asxiaomi/MiMo-V2.6-Probesidexiaomi/mimo-v2.6-pro) silently staying unset (#17580)tab.waitForSelector,tab.waitForText, …) giving up after 29 s when passed a longer{ timeout }; the requested timeout is now honored up to the browser tool's 300 s cap ([#17617](https://redirect.github.com/can1357/oh-my-pi/issuesConfiguration
📅 Schedule: (in timezone Europe/Warsaw)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ 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 was generated by Mend Renovate. View the repository job log.