@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
errorevent three times and reporting it asstream 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_blocksbeing dropped on openai-completions tool-call turns (#13407). - Fixed Anthropic turns ending on a bare
abortederror with no retry when the connection dropped mid-response (typically during long thinking). The first-party Anthropic transport runs onnode:https, whose Bun shim reports a response cut off mid-body asError("aborted")(ECONNRESET) — indistinguishable from a cancellation, so it classified as unknown. It now surfaces as "The socket connection was closed unexpectedly…", the same wording nativefetchuses, 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
EPERMwhen 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/AandX-Api-Key: N/Aheaders (#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
resolveCatalogAxestocompat/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 xhighon Amazon Bedrock Grok 4.6 (us.xai.grok-4.6,global.xai.grok-4.6,xai.grok-4.6), which was silently lowered tohigh(#13515 by @pgkt04). - Fixed
--thinking xhighand--thinking maxon Amazon Bedrock Claude Opus 5.5, which were silently lowered tohigh(#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-lsporlsp.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 singlecache/composer.db; the old directory is no longer read and can be deleted. - Improved interactive startup: the session status bar appears sooner because
retry.fallbackChainsvalidation, 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
thinkingBudgetsand that local OpenAI-compatible models use effort controls instead (#13503). /forknow 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)/vibestatus checks no longer redraw every worker the director killed:vibe_waitandvibe_listleave killed sessions off the wall with aN killed hiddencount, andvibe_listcollapses them to one trailing line naming the most recent (transcripts stay athistory://<id>) (#13073 by @igasmi).
Fixed
- Fixed
findexhausting 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.methodOrdersuch 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/createBashToolDefinitionwith aspawnHookno longer make every bash call fail withready and env require a service name.(#13461 by @sjawhar) - Fixed
/newwith automatic thinking starting the new session at the previous session's classified effort instead of the provisional level, both in its firstthinking_level_changeentry and on the wire (#13383) - Fixed a corrupt
agent.dbcrashing every launch withno such table(for examplehint_usage) instead of being preserved and recreated (#13530 by @Hunter-124) - Fixed
editrejecting a one-line replacement of anifopener,caselabel, 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 wayjj statusandjj diffdo, 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
taskresult now names the child's exit status andagent://output, keeps that output on disk, and is marked as an error (#13557 by @aktanazat) - Fixed SDK sessions created with
agentDirloading user rules (rules/,RULES.md) and custom tools from the default agent dir instead of thatagentDir;discoverCustomToolPathsanddiscoverAndLoadCustomToolsaccept anagentDirargument (#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.collapseCompactedis off, for both the automatic compaction-end and the manual/compactpath (#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, andmemory_edittool descriptions naming each other by bare name when those tools are reachable only asxd://devices (#13207 by @andrebrait). - Listed the directories searched for agent files in the
tasktool'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: truecustom messages (such as extensionpi.sendMessagenotices sent without starting a turn) not appearing in the transcript until the session was reloaded (#12718 by @Broglah1). - Fixed
omp usageignoring usage providers registered by extensions, which left those accounts listed as having no usage data;omp usagenow also accepts-e/--extensionand--no-extensions(#13579) - Fixed a task model saved in
/agentsbeing 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
disabledProvidersno 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
globsilently clampinglimitabove 200 while advisingUse 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./*.tsand absolute paths stay scoped to their directory (#13360 by @jchanghong023) - Fixed the
asktool'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.ymlwhose target contains..writing a file other than the one the link reads, andagent.dbstaying 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.enabledis on (#13333 by @jerryfane) - Fixed editing one fallback chain in the model hub, or one agent in
/agents, saving every chain or agent a--configoverlay supplies intoconfig.yml(#13308 by @Vortex727) - Fixed
omp install --dry-run <local-path>andomp plugin link --dry-runlinking 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
astConditionandinterruptMode: alwaysletting the matchingwriteoreditrun 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 exampletool.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
writeleaving 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
/usagedashboard 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
grepretaining every matching line until the search finished: the newonMatchesoption 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
SDKROOTset (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
rgsearch its own redirected output and madetail -Freport 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
ulimitin 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
/traceandomp statsdashboards failing to load after operating-system temporary-file cleanup (#13487 by @Peter-Tam).
@oh-my-pi/pi-tui
Breaking Changes
- Replaced
AgentsHubDeps.setDisabledAgents/setOverrideswithsetAgentDisabled(name, { disabled })andsetAgentOverride(property, name, value), so each hub edit persists only the agent it changes;PropertyKindis 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
/loopstatus readingLoop waiting, which hid that the next prompt becomes the repeated loop body; it now readsLoop: 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
ato 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-256colorwithoutTERM_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, andPI_NO_HYPERLINKS=1still 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
thint for models that cannot reason (#13112).
@oh-my-pi/pi-utils
Fixed
- Fixed SQLite stores opened with
recoverCorruptioncrashing on a corrupt file instead of being preserved and recreated when the corruption surfaced as a different initialization error such asno 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
- @ShivamB25 made their first contribution in #13485
- @Peter-Tam made their first contribution in #13487
- @pgkt04 made their first contribution in #13515
- @Komzpa made their first contribution in #13209
- @pdufault made their first contribution in #13214
- @JYeswak made their first contribution in #13303
- @Vortex727 made their first contribution in #13308
- @jerryfane made their first contribution in #13333
- @LlemonDuck made their first contribution in #13338
- @andersennl made their first contribution in #13371
- @wimjan123 made their first contribution in #12998
- @johnrichardrinehart made their first contribution in #13168
- @Broglah1 made their first contribution in #12718
- @pjgmobile made their first contribution in #13499
- @Jpei1994 made their first contribution in #12825
Full Changelog: v18.4.0...v18.4.1