github can1357/oh-my-pi v18.4.1

2 hours ago

@oh-my-pi/pi-agent-core

Fixed

  • Fixed fitted output caps overshooting the context window by a few tokens on strict Chat Completions hosts (e.g. llama.cpp), causing 400s.
  • Fixed native remote compaction sending requests already estimated past the model's context window (e.g. after re-expanding history behind another provider's native boundary); it now fails fast so the next configured compaction method runs (#13502)
  • Fixed V2 remote compaction retrying a standalone stream error event three times and reporting it as stream closed before response.completed; the upstream status, code, and message (e.g. context_too_large) are now surfaced (#13502)

@oh-my-pi/pi-ai

Fixed

  • Fixed extension-provided usage reports missing from broker-connected clients when the broker does not have that provider (#13579).
  • Fixed signed LiteLLM thinking_blocks being dropped on openai-completions tool-call turns (#13407).
  • Fixed Anthropic turns ending on a bare aborted error with no retry when the connection dropped mid-response (typically during long thinking). The first-party Anthropic transport runs on node:https, whose Bun shim reports a response cut off mid-body as Error("aborted") (ECONNRESET) — indistinguishable from a cancellation, so it classified as unknown. It now surfaces as "The socket connection was closed unexpectedly…", the same wording native fetch uses, so the drop classifies as transient and the turn is retried; caller aborts keep their original error (#13384 by @jerryfane)
  • Fixed a stale Z.AI quota block pinning sessions to a fallback model after live usage recovered (#13343).
  • Fixed OAuth credentials being re-minted on every provider 401 during an outage; recently minted tokens are reused for auth recovery (#13350) (#13485 by @ShivamB25).
  • Fixed Claude usage reports intermittently dropping an account's saved resets when the separate reset probe was rate-limited or timed out; the last known saved resets now stay visible until the probe answers again (#13474 by @schickling-assistant)
  • Fixed transient Windows EPERM when creating the provider in-flight lock failing the request instead of retrying (#13334 by @1Morganmore).
  • Fixed rolling per-minute TPM/RPM 429s worded as quota errors being treated as exhausted quota and ending the turn (#13253).
  • Fixed keyless Anthropic-compatible endpoints receiving Authorization: Bearer N/A and X-Api-Key: N/A headers (#13043 by @jchanghong023).
  • Fixed legacy Windsurf Enterprise API keys being rejected because they were always sent with the Devin session-token prefix (#12960).
  • Fixed an exhausted Cursor "Other Models" pool blocking Grok and Composer, which Cursor bills to its own pool (#13198).
  • Fixed Anthropic OAuth requests leaving the agent system prompt without its own cache breakpoint: the breakpoint on the short Claude Code identity block now moves to the last system block, so a request whose messages miss the cache (such as the first after a compaction) reads the cached system prompt instead of writing it again (#13104, #13556 by @aktanazat).
  • Fixed the Anthropic system cache breakpoint covering working-directory-specific system text: it now sits before the first <project-context> or <memories> block, and on OAuth it replaces the identity-block breakpoint instead of taking a message breakpoint (#13104).

@oh-my-pi/pi-catalog

Added

  • Added resolveCatalogAxes to compat/resolve, which resolves a model's catalog-axis policy without computing its full compat and thinking policy; context-window and catalog-policy lookups now use it, reducing model-catalog load time.

Fixed

  • Fixed --thinking xhigh on Amazon Bedrock Grok 4.6 (us.xai.grok-4.6, global.xai.grok-4.6, xai.grok-4.6), which was silently lowered to high (#13515 by @pgkt04).
  • Fixed --thinking xhigh and --thinking max on Amazon Bedrock Claude Opus 5.5, which were silently lowered to high (#13515 by @pgkt04).
  • Fixed GitHub Copilot GPT-5.6 and GPT-6 Astra starting on the 1.05M premium context window instead of the default tier (#13017).
  • Added Cursor model pricing so usage stats no longer record zero cost for Cursor turns (#13302 by @eggpeat).
  • Devin requests now identify as Devin CLI 3000.11.3 instead of 3000.6.2, the CLI release that routes Fusion pairings (#13527 by @will-bogusz).

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

Changed

  • With LSP disabled (--no-lsp or lsp.enabled: false), startup skips language-server discovery and warmup, and the welcome screen no longer shows the LSP Servers section
  • The first frame's status bar now renders live at the current terminal width from the cached model, thinking level, and status-line settings instead of replaying an …-filled snapshot: path and git branch are always current, the context gauge shows the window without a stale percent, git dirty counts no longer blank out when the session bar takes over, and folders that never ran omp paint the bar (and your theme) too.
  • Moved the composer startup cache (theme, welcome, recent sessions, LSP rows, status bar) from per-project JSON files under cache/composer/ to a single cache/composer.db; the old directory is no longer read and can be deleted.
  • Improved interactive startup: the session status bar appears sooner because retry.fallbackChains validation, the background model-catalog refresh, and project daemon registration no longer block the first session frame.
  • Reduced CPU use from subagent HUD repaints during active sessions (#13245 by @iliaal).
  • Clarified which provider transports honor thinkingBudgets and that local OpenAI-compatible models use effort controls instead (#13503).
  • /fork now prints how to resume the session it leaves behind (omp --resume <id> or /resume <id>) instead of the new transcript's filename (#13338 by @LlemonDuck)
  • /vibe status checks no longer redraw every worker the director killed: vibe_wait and vibe_list leave killed sessions off the wall with a N killed hidden count, and vibe_list collapses them to one trailing line naming the most recent (transcripts stay at history://<id>) (#13073 by @igasmi).

Fixed

  • Fixed find exhausting memory on trees with many matching lines: its keyword scan now counts matches as they stream in, holding a few hundred MiB where a 5-million-line tree took several GiB, and finishes faster (#13495)
  • Fixed a native compaction speculation that failed for good turning off background compaction for the rest of the cycle. With compaction.methodOrder such as ["remote", "soft"], speculation now moves to the next configured method and the threshold pass keeps deferring to it, instead of running that method on the blocking path (#13478 by @andrebrait).
  • Extensions that register bash through the legacy createBashTool/createBashToolDefinition with a spawnHook no longer make every bash call fail with ready and env require a service name. (#13461 by @sjawhar)
  • Fixed /new with automatic thinking starting the new session at the previous session's classified effort instead of the provisional level, both in its first thinking_level_change entry and on the wire (#13383)
  • Fixed a corrupt agent.db crashing every launch with no such table (for example hint_usage) instead of being preserved and recreated (#13530 by @Hunter-124)
  • Fixed edit rejecting a one-line replacement of an if opener, case label, or function signature with another of the same shape as an "ambiguous boundary" whenever another edit in the same batch broke the file's syntax; it now applies with the usual syntax-error warning. (#13522)
  • Jujutsu status and diffs now report renames and copies (R/C, rename from/rename to) the way jj status and jj diff do, instead of a delete plus an add (#13406 by @sjawhar).
  • Fixed a subagent that finished before a later step failed (such as the isolation merge) losing its evidence: the task result now names the child's exit status and agent:// output, keeps that output on disk, and is marked as an error (#13557 by @aktanazat)
  • Fixed SDK sessions created with agentDir loading user rules (rules/, RULES.md) and custom tools from the default agent dir instead of that agentDir; discoverCustomToolPaths and discoverAndLoadCustomTools accept an agentDir argument (#13558 by @aktanazat)
  • Reduced daemon broker metadata writes for historical services when owners reconnect or the broker restarts (#13471 by @Dante-dan).
  • Fixed compaction re-emitting the whole transcript into native scrollback when display.collapseCompacted is off, for both the automatic compaction-end and the manual /compact path (#12140, #13235 by @holny)
  • Subagents can submit their preceding report with a data-less yield after a finish reminder (#12837 by @iliaal).
  • Fixed session dispose losing the final message and exit record on SQL/indexed session storage (#13415 by @sjawhar)
  • Fixed the recall, reflect, and memory_edit tool descriptions naming each other by bare name when those tools are reachable only as xd:// devices (#13207 by @andrebrait).
  • Listed the directories searched for agent files in the task tool's unknown-agent error, with the home directory shortened to ~
  • Fixed sessions and subagents of the same agent in different working directories (such as one git worktree per task) never sharing the cached Anthropic system prompt: context files, workspace tree, workspace roots, and other directory-specific sections now come after the static system prompt, which stays a cache hit across directories (#13104)
  • Fixed the startup "What's New" heading and config warnings keeping the dark palette on a light terminal: they were colored before the terminal reported its background, so the heading rendered near-white on white. Both now resolve their color at render time and follow the auto theme switch
  • Fixed idle display: true custom messages (such as extension pi.sendMessage notices sent without starting a turn) not appearing in the transcript until the session was reloaded (#12718 by @Broglah1).
  • Fixed omp usage ignoring usage providers registered by extensions, which left those accounts listed as having no usage data; omp usage now also accepts -e/--extension and --no-extensions (#13579)
  • Fixed a task model saved in /agents being ignored for the rest of the session after an Alt+P session-only pick (#13345).
  • Fixed tool calls made through an xd:// alias being recorded under the alias, which made OpenAI/OpenRouter Responses replay reject every later request (#13352).
  • Fixed pasted images in skill invocations not reaching the configured vision model when the main model supports only text (#13480).
  • A provider listed in disabledProviders no longer answers through a retry fallback chain, an advisor or a restored model, and gets no credential however one of its models was selected (#13194 by @sjawhar).
  • Fixed glob silently clamping limit above 200 while advising Use limit=<clamped> retries: a clamped request is now disclosed up front and the "Use limit=" advice is dropped once the hard cap is reached (#13263)
  • Fixed subagents that stop to wait for their own background job failing with a missing yield instead of waiting for the job (#13305).
  • Fixed a failed session append leaving partial bytes behind on Windows, where ftruncate is refused on the append handle: the rollback now reopens the file without O_APPEND and verifies it is still the same file before truncating (#13362 by @jchanghong023)
  • Fixed plugin installation failing on Windows outside developer mode by linking the plugin through a directory junction, matching the marketplace link (#13364 by @jchanghong023)
  • Fixed the grep tool searching subdirectories for globs whose base path merely resolved to the cwd: only globs spelled without a directory prefix (like *.ts) now match at any depth, while ./*.ts and absolute paths stay scoped to their directory (#13360 by @jchanghong023)
  • Fixed the ask tool's "Other (type your own)" prompt sending RPC and SDK clients a terminal-rendered title (options with icon glyphs, lines clipped to the terminal width) instead of the question text; the interactive TUI's own ask dialog is unaffected (#13477 by @andrebrait)
  • Fixed prewalk targets registered by extensions resolving before their provider was loaded. The hand-off now retries after extension registration, preserves role fallback order, and refreshes a cold runtime provider when needed.
  • Fixed saving settings on Windows through a symlinked config.yml whose target contains .. writing a file other than the one the link reads, and agent.db staying open after its storage is closed (#13351 by @Vortex727)
  • Fixed grep line ranges (path:N-M) returning out-of-range lines for absolute paths with ./ or .. segments (#13296 by @pedropaulovc).
  • Fixed service requests the project's service broker cannot parse, such as commands added by a newer omp after an update, waiting 30 seconds to time out; the broker now rejects them immediately with the reason (#13301 by @eggpeat).
  • Fixed sessions stopping on "Anthropic stream stalled while waiting for the next event" (and other mid-stream stalls, HTTP/2 resets, premature closes, or sockets closed mid-response) when the connection died after the reply's text had already rendered. Replay was refused to avoid duplicating shown text and the tool-turn continuation needed a tool call, so text-only turns had no recovery; the partial turn is now kept and the model is asked to continue from where it stopped, up to 3 times per prompt when retry.enabled is on (#13333 by @jerryfane)
  • Fixed editing one fallback chain in the model hub, or one agent in /agents, saving every chain or agent a --config overlay supplies into config.yml (#13308 by @Vortex727)
  • Fixed omp install --dry-run <local-path> and omp plugin link --dry-run linking the plugin and writing the lockfile instead of only previewing (#13241).
  • Sessions containing assistant messages with no recorded usage now open with that usage counted as zero, instead of crashing on load with undefined is not an object (evaluating 'usage.cacheRead') (#13386 by @ParadaCarleton).
  • Fixed rules with an astCondition and interruptMode: always letting the matching write or edit run before the interrupt, so the file changed on disk even though the rule fired; the call is now blocked before it executes (#13303 by @JYeswak)
  • Fixed rules not applying to tool calls made from inside eval (for example tool.write(...)), which ran without any rule check; they are now checked the same way as direct calls (#13316 by @JYeswak)
  • Fixed bash calls whose optional fields arrive filled with empty values being rejected as service starts (#13182).
  • Fixed keyless vLLM providers failing every request with "No API key found" (#13246).
  • Fixed the Agent Hub usage gauge measuring a subagent against its startup model's context window after a fallback model swap (#13061).
  • Fixed HTML session exports failing to render offline or under a strict script CSP; the viewer libraries are now inlined (#12948).
  • Fixed hashline edits rejecting files whose names contain # (such as yadm alternate files) (#13428).
  • Fixed a module created with write leaving the importing file stuck on TS2307 in typescript-language-server (#12925).
  • Fixed startup waiting up to 10s on an unresponsive LM Studio loopback probe; the probe now gives up after 250ms like Ollama and llama.cpp (#12945).
  • The interactive /usage dashboard keeps connected accounts visible when some or all usage lookups fail, showing unavailable usage instead of hiding accounts (#13476 by @aktanazat).
  • Fixed multiline pastes splitting into separate submissions after a terminal drops bracketed-paste mode, and text typed right after Enter being erased by the post-submit clear (#13440 by @Dante-dan).
  • Fixed subagents never compacting when the parent sets compaction.midTurnEnabled: false; a subagent's run is a single turn, so subagents keep mid-run compaction on unless a spawn overrides it (#13212).
  • Fixed the exit resume hint so the omp --resume <id> command prints on its own line, letting triple-click select just the command (#12748 by @F0Rextasy).

@oh-my-pi/collab-web

Fixed

  • Prevented iOS Safari from zooming collab text fields on focus in wide touch viewports, including landscape orientation (#13371 by @andersennl).

@oh-my-pi/pi-mnemopi

Fixed

  • Fixed extracted facts still being recalled after their source memory was invalidated or expired. (#12825 by @Jpei1994)

@oh-my-pi/pi-natives

Fixed

  • Fixed grep retaining every matching line until the search finished: the new onMatches option streams bounded batches while the search runs, pauses the search while JS catches up, and returns only counts (#13495)
  • Fixed omp crashing at startup on macOS when built from source with SDKROOT set (e.g. via Nix) on a host whose Command Line Tools ship the macOS 27 SDK (#13168 by @johnrichardrinehart).
  • Hashline edit rejections for a tag issued for another file now name the path the tag belongs to (#13464 by @holny).
  • Fixed the native terminal output pump exiting on temporary nonblocking backpressure (#13463 by @hancens1024).
  • Fixed commits failing on Windows when a repository has commit hooks; hooks now run through git hook run (#13366 by @jchanghong023).
  • Fixed Windows path stats lacking a file identity, which let rg search its own redirected output and made tail -F report spurious replacements (#13367 by @jchanghong023).
  • Fixed the embedded shell running backtick spans inside a quoted heredoc within a double-quoted command substitution (#13307).
  • Fixed native operations to deliver results completed within their timeout and reject results when an abort signal arrives before settlement (#13209 by @Komzpa).
  • Fixed ulimit in the embedded shell changing the host process's own resource limits, including from inside ( … ) subshells: limits are now shell state applied only to the external commands the shell spawns (#13325)

@oh-my-pi/omp-stats

Fixed

  • Fixed /trace and omp stats dashboards failing to load after operating-system temporary-file cleanup (#13487 by @Peter-Tam).

@oh-my-pi/pi-tui

Breaking Changes

  • Replaced AgentsHubDeps.setDisabledAgents/setOverrides with setAgentDisabled(name, { disabled }) and setAgentOverride(property, name, value), so each hub edit persists only the agent it changes; PropertyKind is exported (#13308 by @Vortex727)

Changed

  • LSP servers section is omitted from the welcome screen when LSP is disabled
  • Usage dashboards and provider cards can show connected accounts with unavailable usage separately from reported quotas, without treating missing reports as unused or unlimited (#13476 by @aktanazat).

Fixed

  • Fixed sessions exiting as if the terminal hung up when it only stopped reading for a few seconds during a very large repaint (a long transcript's replay behind a busy tmux or container attach) (#13576 by @sjawhar)
  • Fixed fullscreen overlays rewriting the whole terminal on every change; each frame now repaints only the rows that changed (#13568 by @sjawhar)
  • Fixed the armed /loop status reading Loop waiting, which hid that the next prompt becomes the repeated loop body; it now reads Loop: next prompt repeats (#13435 by @Dante-dan).
  • Reduced memory held by long sessions: committed transcript blocks no longer keep their rendered-row caches (#13242 by @iliaal).
  • Fixed the results-limit notice advising Use limit= values the tool would clamp straight back; at the hard cap it now reports the reached count alone (#13263)
  • Fixed the rewind filter finding nothing for query words in scripts without spaces (e.g. Chinese): non-Latin words now match as substrings while Latin words keep whole-word matching (#13361 by @jchanghong023)
  • The Esc-Esc rewind selector opens on the recent tail of long sessions instead of replaying the whole branch; press a to load earlier turns (#12819 by @lemonleks).
  • Fixed OSC 8 hyperlinks (file paths, URLs, GitHub refs) rendering as plain text in Herdr panes. Herdr reports TERM=xterm-256color without TERM_PROGRAM, so its panes were treated as an unknown terminal, although Herdr renders OSC 8 itself and opens links on Ctrl+click. Screen or tmux nested inside a pane still follow their own rules, and PI_NO_HYPERLINKS=1 still opts out (#13289 by @andrebrait).
  • Fixed native stderr output painting over the TUI on Linux (#13176).
  • Fixed heavy lag while output streams with inline images on SIXEL terminals such as Orca: each visible image was re-encoded on every render pass (#12998 by @wimjan123)
  • Fixed Kitty-protocol terminals re-encoding every non-PNG image on redelivery and transcript rebuilds (#13118).
  • Fixed the Windows Terminal taskbar progress animation restarting every second while the agent works (#12940).
  • Fixed resuming a long session freezing the TUI for several seconds; first paint is now spread across frames (#12933).
  • The model hub no longer opens a thinking strip or shows the t hint for models that cannot reason (#13112).

@oh-my-pi/pi-utils

Fixed

  • Fixed SQLite stores opened with recoverCorruption crashing on a corrupt file instead of being preserved and recreated when the corruption surfaced as a different initialization error such as no such table (#13530 by @Hunter-124)
  • Fixed raw stderr output staying on the previous day's log file after the log sink rotates at local midnight (#13003).

What's Changed

  • fix(coding-agent): avoid redundant daemon metadata writes by @Dante-dan in #13471
  • fix(ai): kept Claude saved resets when the reset probe fails by @schickling-assistant in #13474
  • usage: keep accounts visible when quota reports fail by @aktanazat in #13476
  • fix(coding-agent): sent plain question as ask Other editor title by @andrebrait in #13477
  • fix(coding-agent): speculate the next method after a native speculation fails for good by @andrebrait in #13478
  • fix(coding-agent): describe pasted skill images via vision role by @roboomp in #13483
  • fix(ai): prevent OAuth refresh churn after fresh-token rejection by @ShivamB25 in #13485
  • fix(stats): keep trace dashboard available after temporary directory cleanup by @Peter-Tam in #13487
  • docs(models): noted qwen llama.cpp discovery uses openai-completions by @roboomp in #13507
  • docs(coding-agent): clarify thinking budget transport scope by @roboomp in #13508
  • fix(agent): refuse over-window native compaction and keep v2 error events by @roboomp in #13509
  • fix(catalog): keep bedrock Grok xhigh and Opus 5.5 max by @pgkt04 in #13515
  • fix(pi-edit): stop rejecting same-shape one-line replacements as ambiguous boundaries by @radkawar in #13522
  • fix(utils): recover corrupt SQLite stores whose corruption surfaces as another error by @Hunter-124 in #13530
  • docs: replace removed hub tool with wait in README coordination list by @kvnloo in #13540
  • docs(mcp): add instructions to shared server fields list by @kvnloo in #13542
  • docs(web_search): add google-gemini-cli to Gemini web candidate list by @kvnloo in #13543
  • docs: correct stale glob scheme support and live-tool-roster claims by @kvnloo in #13544
  • fix(ai): moved OAuth system cache breakpoint to last system block by @aktanazat in #13556
  • fix(coding-agent): kept failed task child's status and output by @aktanazat in #13557
  • fix(coding-agent): honor agentDir for rules and custom tools by @aktanazat in #13558
  • fix(coding-agent): list searched dirs in unknown-agent error by @aktanazat in #13559
  • theme: recolor the startup header after the terminal reports light by @aktanazat in #13566
  • fix(tui): repaint only the rows that changed in fullscreen overlays by @sjawhar in #13568
  • fix(session): clear the auto-resolved thinking level when /new starts a session by @holny in #13572
  • fix(tui): let a paused terminal stall for 60 s before declaring it gone by @sjawhar in #13576
  • fix(coding-agent): loaded extension usage providers in omp usage by @roboomp in #13581
  • fix(natives): reject cancellation before resolve by @Komzpa in #13209
  • fix(task): keep mid-run compaction on for subagent sessions by @roboomp in #13212
  • fix(cli): resolve extension prewalk targets after registration by @pdufault in #13214
  • fix(coding-agent): pair compaction-end rebuild with scrollback clear in both arms by @holny in #13235
  • fix(cli): honor dry-run for local plugin links by @roboomp in #13241
  • perf(coding-agent): avoid repeated HUD hit-map wrapping by @iliaal in #13245
  • fix(ai): classify rolling TPM/RPM 429s as transient by @roboomp in #13256
  • fix(tui): enable OSC 8 hyperlinks in Herdr panes by @andrebrait in #13289
  • fix(session): blocked AST-matched TTSR tool calls before execution by @JYeswak in #13303
  • fix(coding-agent): save one fallback chain or agent entry at a time by @Vortex727 in #13308
  • fix(session): applied TTSR rules to eval-bridged tool calls by @JYeswak in #13316
  • fix(coding-agent): continue text-only turns after a mid-stream stall by @jerryfane in #13333
  • fix(ai): retry provider in-flight lock mkdir on transient Windows EPERM by @1Morganmore in #13334
  • fix(coding-agent): point the /fork hint at the session it leaves behind by @LlemonDuck in #13338
  • fix(coding-agent): release agent.db on close and follow Windows symlink rules by @Vortex727 in #13351
  • fix(coding-agent): scope bare grep globs by spelling, not cwd coincidence by @jchanghong023 in #13360
  • fix(tui): match non-Latin rewind filter words as substrings by @jchanghong023 in #13361
  • fix(coding-agent): roll back failed session appends without O_APPEND by @jchanghong023 in #13362
  • fix(coding-agent): link installed plugins as junctions on Windows by @jchanghong023 in #13364
  • fix(pi-vcs): run commit hooks through git on Windows by @jchanghong023 in #13366
  • fix(pi-vfs): give Windows path stats a file identity by @jchanghong023 in #13367
  • fix(collab-web): prevent iOS input focus zoom in wide touch viewports by @andersennl in #13371
  • fix(ai): surface mid-response connection drops on the cowork transport as retryable by @jerryfane in #13384
  • fix(session): load assistant turns without usage as zero usage by @ParadaCarleton in #13386
  • fix(vcs): derive jj renames from the store's copy records by @sjawhar in #13406
  • fix(task): preserved owner jobs before yield reminders by @roboomp in #13411
  • fix(shell): kept quoted heredoc bodies in "$(...)" opaque by @roboomp in #13414
  • fix(session): recover a self-conflicted rewrite instead of losing the final message at dispose by @sjawhar in #13415
  • fix(ai): healed stale zai credential blocks by @roboomp in #13421
  • fix(task): honored persisted model after session selection by @roboomp in #13422
  • docs(extensions): documented runtime setting overrides via registry by @roboomp in #13423
  • fix(hashline): accepted '#' in tagged header paths by @roboomp in #13428
  • fix(agent): recorded fallback-resolved tool calls under canonical name by @roboomp in #13429
  • fix(ai): replayed litellm thinking_blocks on openai-completions turns by @roboomp in #13432
  • fix(tui): explain loop prompt capture in waiting status by @Dante-dan in #13435
  • fix(tui): recover bracketed paste and preserve post-submit text by @Dante-dan in #13440
  • fix(extensibility): stop the legacy bash shim from sending a spawn hook's env as tool input by @sjawhar in #13461
  • fix(natives): retry nonblocking tty writes by @hancens1024 in #13463
  • fix(edit): name the tag's origin path in hashline mismatch rejections by @holny in #13464
  • docs(settings): documented whitespace collapsing in bash.patterns by @roboomp in #13469
  • docs(agents): document the plugin agents user-scope gate by @F0Rextasy in #12674
  • fix(tui): resume hint command on its own line by @F0Rextasy in #12748
  • perf(tui): open Esc-Esc rewind on the recent tail by @lemonleks in #12819
  • fix(yield): submit the preceding child report after finish reminders by @iliaal in #12837
  • fix(lsp): created files reach disk before their first didOpen by @roboomp in #12925
  • fix(tui): bound transcript first paint to one frame budget by @roboomp in #12936
  • fix(tui): prevent Windows taskbar progress resets by @roboomp in #12940
  • fix(providers): bound lm-studio loopback discovery probes by @roboomp in #12949
  • fix(export): inline vendored viewer dependencies by @roboomp in #12950
  • fix(tui): stopped re-encoding SIXEL images on every render pass by @wimjan123 in #12998
  • fix(utils): follow the rotating sink with the stderr guard's fd 2 by @roboomp in #13008
  • fix(task): refreshed subagent context window on a model swap by @roboomp in #13061
  • fix(vibe): hide dead sessions from the status wall by @igasmi in #13073
  • fix(tui): skip the model hub thinking strip for non-reasoning models by @roboomp in #13112
  • fix(tui): cache kitty PNG conversions by image payload by @roboomp in #13123
  • test(ai): reset provider proxy cache in proxy test suite by @szavadsky in #13161
  • fix(natives): pin Apple FM bridge SDK to SDKROOT when set by @johnrichardrinehart in #13168
  • fix(tui): guard native stderr on linux by @roboomp in #13180
  • fix(tools): ignore empty optional bash fields when selecting service mode by @roboomp in #13186
  • fix(coding-agent): a disabled provider never resolves by name or gets a key by @sjawhar in #13194
  • fix(ai): scope cursor usage pools by model by @roboomp in #13200
  • fix(coding-agent): name xd://-mounted memory tools by URL in their descriptions by @andrebrait in #13207
  • test(coding-agent): isolate session-producing suites by @andrebrait in #13216
  • perf(tui): release committed transcript caches by @iliaal in #13242
  • fix(auth): restore keyless vllm requests by @roboomp in #13247
  • fix(grep): honor line ranges for noncanonical file paths by @pedropaulovc in #13296
  • fix(coding-agent): disclose glob limit clamping and stop advising values that clamp back by @holny in #13392
  • fix(coding-agent): paint idle display:true custom messages without a turn by @Broglah1 in #12718
  • fix(catalog): keep Copilot GPT-5.6/6 flagships on the default context tier by @roboomp in #13017
  • output-budget: add absolute headway to the fitted output cap (proportional margin alone can land a few tokens over on strict hosts) by @pjgmobile in #13499
  • fix(ai): send no Authorization or X-Api-Key for keyless Anthropic endpoints by @jchanghong023 in #13043
  • fix(mnemopi): hide extracted facts once their source row is superseded or expired by @Jpei1994 in #12825
  • fix(ai): support legacy Windsurf credentials by @roboomp in #12960

New Contributors

Full Changelog: v18.4.0...v18.4.1

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

NewReleases is sending notifications on new releases.