@oh-my-pi/pi-agent-core
Added
- Added
Agent.setModelResolver()to fit every model an agent adopts (viasetModel, starting with the current one) before it is used (#15048 by @H4vC) - Added
CompactionSettings.baseWindowTokens: when set,resolveThresholdTokens()scales its percentage or reserve-based threshold from that base instead of the full context window (#15065 by @H4vC)
Fixed
- Fixed OpenAI V1 remote compaction re-attaching a prior Anthropic native payload after a successful compact (#15041 by @PaleRoses)
- Fixed
resolveThresholdTokens()clamping a positivethresholdTokenstobaseWindowTokens; a fixed threshold is checked against the real window, and the base only rescales the percentage and reserve policies (#15074 by @H4vC) - Fixed
resolveThresholdTokens()clamping a fixedthresholdTokensat or past the context window to one token below it, so compaction fired only after the next request overflowed; it now clamps to the window less the reserve (#15146 by @will-bogusz)
@oh-my-pi/pi-ai
Fixed
- Fixed OpenAI Responses and Codex tool calls running with empty
{}arguments when a compatible host or proxy ends the call with an empty arguments payload after streaming the real ones (#15099 by @will-bogusz) - Fixed truncated Factory Droid Gemini responses ending as a hard error or a half-received tool call instead of being retried (#15103 by @will-bogusz)
- Fixed Factory Droid Gemini ignoring an error the server reports mid-response, which hid its status and retried errors that cannot succeed (#15103 by @will-bogusz)
- Fixed resumed OpenAI Responses sessions (xAI, Factory Droid, OpenAI and other hosts) dropping all earlier encrypted reasoning on their first request; GitHub Copilot still rebuilds history until its first response (#15148 by @will-bogusz)
@oh-my-pi/browser-relay
Fixed
- Fixed tabs a relay client asks to open in the background being created as the selected tab (#15109 by @will-bogusz)
@oh-my-pi/pi-catalog
Added
- Added the
connection-bound-native-historyrule axis for Responses hosts that reject native history items from an earlier connection, set for GitHub Copilot (#15148 by @will-bogusz)
Fixed
- Fixed Devin's discovered models not marking the account's default model, the one Devin's own CLI starts the account on (SWE-2 High on Pro, SWE-1.6 Slow on Free); when it is an effort lane of a family, the family starts at that effort. Cursor's discovered models no longer carry that marker, so Cursor keeps its existing startup selection (#15115 by @will-bogusz)
@oh-my-pi/pi-coding-agent
Added
- Added
/jobs kill <id>|allto cancel a running background job (or every one this session owns) from the command line, even while the agent is busy (#14160 by @KanwarGill) - Added
omp anonymize [session] [-o dir]to write a shareable copy of a session and its subagent transcripts: only an explicit allowlist of omp metadata (ids, timestamps, models, usage, built-in tool names and options) is kept; message, thinking, and tool-output text become size-annotated[redacted …]markers; tool-call paths become mock paths (/home/seg3/seg4/src/seg9.ts:10-20), shell commands keep known programs and flags, other literals such as a grep pattern becomePLACEHOLDER_N, and extension or MCP payloads are redacted whole, with the same original always mapping to the same token across files (#15077 by @H4vC) - Added
/dump anon, which writes the same anonymized session and subagent JSONL to a zip in the temp directory and copies its path (#15077 by @H4vC) - Added message times to
/dumptranscripts (assistant turns also show request duration and time to first token), and live status, last activity, pending tool calls, and the partially streamed turn to/dump allfiles for subagents still running, so a stuck subagent can be diagnosed from the archive (#15121 by @H4vC) - Added
contextFiles.extrato load extra instruction files, such asAGENTS.local.md, beside the usual context file (#15147 by @Shadorain). /annotateopens the note you are writing, a file or typed-prompt source, or (for local diff reviews) the current working-tree file in$VISUALor$EDITORwith the external-editor key (Ctrl+G by default); a file source is saved back and its notes follow the edited text (#15151 by @Shadorain)
Changed
- A
/modelscompaction limit set past a model's standard context window now runs that model on its extended window instead of being silently clamped; the hub warns (noting long-context pricing) and saves on a second Enter, in the terminal and in Tern, and rejects limits past the model's largest window (#15048 by @H4vC) - A token compaction limit set in
/models(orcompaction.modelThresholds) is now the base omp scales with its usual policy, as if it were the model's window (85% of it by default for bases above ~109k, orcompaction.thresholdPercentof it), instead of the exact point. Plain numbers saved since 18.8.5 therefore compact earlier; rewrite one as"f<tokens>"(or typef400kin the hub) to keep it an exact trigger. The/modelslimit field shows where the model would compact as you type (compacts at 340K · 85% of 400K base), the preview's Compacts at row says why, and the saved message repeats it (#15065 by @H4vC)
Fixed
- Fixed
/usage(or clicking the status-line cost) while the usage dashboard was already open stacking a second dashboard on top; it now focuses the open one (#15145 by @H4vC) - Fixed the browser tool prompt not documenting
observe()'sviewportOnlyandincludeAlloptions, or thatopen/close/runtimeouts are seconds clamped to 1–300 whilewaitFor*timeouts are milliseconds (#15104 by @will-bogusz) - Fixed browser relay pages opened in the background (
browser.newPage({ background: true })intab.run) taking over the user's selected tab; they now open unselected once the relay extension is reinstalled (#15109 by @will-bogusz) - Fixed browser
openwithapp.relayand atargetfailing withNo page target matchedorSelected tab is no longer availablewhen the matching tab was opened a moment earlier outside omp; it now waits briefly for the relay to list the tab (#15112 by @will-bogusz) - Fixed a timed-out
browser.openholding up the next open of the same browser (apps launched withapp.pathexcepted) until its abandoned launch or connect returned; the timeout error now names the step that stalled (#15117 by @jinpyo-jeon and @will-bogusz) - Fixed browser tabs crashing mid-load on some pages with a same-site iframe, Google Travel among them, after which every open, screenshot and evaluate on the tab timed out (#15118 by @will-bogusz)
- Fixed the custom-tool examples' full-documentation link opening a missing page (#15076 by @qingshungLI)
- Fixed the
/modelscompaction limit preview and Compacts at row rounding fractional percentages (12.5%showed as13%) (#15074 by @H4vC) - Fixed
/omfgsave, overwrite, and validation prompts in Tern opening as a sheet over the candidate rule; they now sit in the composer slot likeask, so the rule stays readable while you choose (#15058 by @H4vC) - Fixed hotkeys pressed in Tern while omp is still starting (such as Alt+P for the model selector) being ignored; like in other terminals, they now take effect once startup finishes (#15120 by @H4vC)
- Fixed a startup extension dialog (select, confirm, input) in Tern not receiving keys until it timed out (#15122 by @H4vC)
- Fixed auto-compaction overflowing the context window every cycle when
compaction.thresholdTokensor anf<tokens>model limit is at or past a window the provider caps lower (such as Factory's 196K Kimi K3); it now compacts at the window less the reserve, and/modelsshows the trigger as capped (#15146 by @will-bogusz) - Fixed resumed xAI, Factory Droid and OpenAI sessions forgetting earlier reasoning on their first request, while a retry after a stale Responses item error still rebuilds history (#15148 by @will-bogusz)
- Fixed the startup default ignoring the model a provider's discovery names as the account's default: with no model chosen, Devin Pro now starts on SWE-2 at High instead of SWE-1.6 (#15115 by @will-bogusz)
@oh-my-pi/pi-mnemopi
Fixed
- Fixed long retained transcripts exhausting local memory extraction models by limiting each extraction input to 8192 characters while keeping the opening context and newest turns (#14956).
@oh-my-pi/pi-natives
Changed
- Reduced macOS accessibility-tree latency for
ax()without changing its text output: each element's children are read once, and its bounds, which the tree never shows, are no longer read (#15159 by @will-bogusz)
Fixed
- Fixed macOS computer use reporting
AxFailedinstead ofStaleReffor a ref whose element the app had removed (#15156 by @will-bogusz) - Fixed macOS
el.press()andel.perform()reportingAxFailedwhen the app did not answer in time, such as a press that opens a modal dialog; they now reportAxUnconfirmed(#15156 by @will-bogusz)
@oh-my-pi/pi-tui
Breaking Changes
ModelHubCallbacks.onCompactionPointChangenow receives aconfirmedflag and returns aCompactionPointChangeResult({ kind: "error" }or{ kind: "confirm" }) instead of an error string; aconfirmresult shows a warning that a second Enter on the same input accepts (#15048 by @H4vC)ModelCompactionPoint.percentis replaced bybasis, a short explanation of why the model compacts there (fixed,85% of 400K base,80% of window) that the model hub preview shows next to the trigger (#15065 by @H4vC)
Added
- Added an
inlineoption toHookSelectorComponentthat keeps a selector in the composer slot in Tern instead of opening it as a sheet over the screen (#15058 by @H4vC) - Added
ModelHubCallbacks.previewCompactionPoint, whose line the compaction limit field shows while you type instead of the input syntax (#15065 by @H4vC) - Added Vim find and till motions (
f,F,t,T) in the prompt editor, with;and,to repeat them (#15100 by @Shadorain) - Added Vim replace (
r,R) in the prompt editor (#15100 by @Shadorain) - Added Vim bracket and quote matching (
%), paragraph motions ({,}), line join (J), and indent (>>,<<) in the prompt editor (#15100 by @Shadorain) - Added an external-editor key (Ctrl+G by default) to the annotation overlay for the note draft and, when the host provides
onExternalEditor, the source being annotated; an edited text source is returned aseditedTexton the paste result (#15151 by @Shadorain) - Added
TUI.releaseHeldInput(): on a terminal expected to speak TSP, adeferInputstart now holds keystrokes (TSP events and the cell-size reply still apply; Ctrl+C/Ctrl+D release early) until the app calls it once its session is wired; such terminals also skip the sixel probe (#15120 by @H4vC) - Added
TUI.replaceHeldFocus(previous, next), whichComposer.setEditor()calls so a swapped-in editor inherits held startup keys; only keys for the start-time focus owner are now held, and a dialog that takes focus gets its input live (#15122 by @H4vC) - Added
RenderResultOptions.elapsedMsandcancelled,NativeToolHead.commandandNativeToolView.preview: "children"for native describe hooks
Changed
- Tern draws each bash run, eval cell and
!/$run as one box: the command or code, its output, status lines and a foot with state, time and facts; images sit below the box and the bash head shows the intent instead of the command
Fixed
- Fixed the Agents hub Time column rewinding and freezing for running subagents between progress updates (#15140 by @H4vC)
@oh-my-pi/pi-utils
Fixed
- Fixed
formatDurationprinting60.0sfor durations just under a minute; they now read1m(#15121 by @H4vC)
@oh-my-pi/pi-wire
Added
- Added
TspToolProps.command(the command line Copy command copies),TspToolProps.preview: "children"(the collapsed body stays whole while its children clamp) andTspCodeProps.preview
What's Changed
- fix(tui): keep /omfg prompts in the Tern composer slot by @H4vC in #15058
- feat(coding-agent): let custom compaction limits reach the extended context window by @H4vC in #15048
- feat(coding-agent): scale per-model compaction limits, add a fixed mode, and explain them in the hub by @H4vC in #15065
- fix(coding-agent): address review follow-ups on per-model compaction limits by @H4vC in #15074
- fix(docs): correct custom tool guide link by @qingshungLI in #15076
- fix(agent): keep cleaned preserve data after V1 remote compaction by @PaleRoses in #15041
- fix(mnemopi): bound retained transcript extraction input by @roboomp in #14959
- feat(coding-agent): add /jobs kill |all by @KanwarGill in #14160
- feat(coding-agent): add session anonymizer (omp anonymize, /dump anon) by @H4vC in #15077
- fix(tui): queue input during startup in Tern by @H4vC in #15120
- feat(tui): add the missing Vim editing keys by @Shadorain in #15100
- fix(tui): exit history on vim replace overwrite and keep counted r linear by @H4vC in #15127
- fix(coding-agent): show live subagent state and message times in /dump by @H4vC in #15121
- fix(tui): deliver Tern startup dialog input live and replay held keys before draft restore by @H4vC in #15122
- fix(tui): keep agent hub Time ticking forward between subagent progress frames by @H4vC in #15140
- fix(coding-agent): focus the open /usage dashboard instead of stacking another by @H4vC in #15145
- feat(coding-agent): open the default editor from /annotate by @Shadorain in #15151
- feat(coding-agent): add contextFiles.extra for custom context filenames by @Shadorain in #15147
- fix(natives): report removed macOS AX elements as StaleRef and unanswered actions as AxUnconfirmed by @will-bogusz in #15156
- perf(natives): read each macOS AX element's children once and skip unused bounds in ax() by @will-bogusz in #15159
- fix(ai): keep streamed tool arguments when Responses ends with an empty payload by @will-bogusz in #15099
- fix(ai): retry Factory Droid Gemini streams that are cut off mid-response by @will-bogusz in #15103
- docs(browser): document observe viewportOnly/includeAll and timeout units by @will-bogusz in #15104
- fix(browser-relay): open Target.createTarget background tabs without selecting them by @will-bogusz in #15109
- fix(coding-agent): let a relay target adopt a tab opened a moment earlier by @will-bogusz in #15112
- fix(catalog,coding-agent): start on the account's default model when discovery reports one by @will-bogusz in #15115
- fix(browser): name the stalled step of a timed-out open and stop it holding up the next one by @will-bogusz in #15117
- fix(browser): stop the WebMCP page hook getting Chromium to kill the tab's renderer by @will-bogusz in #15118
- fix(agent,coding-agent): compact a fixed trigger past a capped context window before the next request overflows by @will-bogusz in #15146
- fix(ai): keep earlier reasoning on the first request of a resumed Responses session by @will-bogusz in #15148
- test(browser): run the spawned-app abandoned-open test on Windows by @H4vC in #15214
New Contributors
- @qingshungLI made their first contribution in #15076
- @KanwarGill made their first contribution in #14160
- @Shadorain made their first contribution in #15100
Full Changelog: v18.8.7...v18.8.8