@oh-my-pi/pi-ai
Added
- Added Factory Droid OAuth, HTTP streaming across Anthropic, OpenAI and Gemini protocols, and pool-aware usage reporting (#8577 by @will-bogusz, continued in #13276 by @DusKing1).
AuthStorage.keys.setConfig(provider, value, { fallback: true })registers a key that is used only when no stored OAuth or/logincredential exists, instead of overriding them;removeConfig/clearConfigalso clear these fallbacks (#13815 by @H4vC)- Cursor turns now fall back to Cursor's HTTP/1 streaming transport when HTTP/2 is unavailable, surface Cursor's structured service errors, and resume from the last safe server checkpoint after a dropped stream (#11613 by @will-bogusz).
Fixed
- Auth gateway checks for configured bearer tokens in URLs or forwarded/logged headers only after authentication; unauthorized requests use socket peers and redact unknown paths. Authenticated requests with misplaced tokens are rejected before provider dispatch (#13827 by @shawnkoh).
- Codex sessions no longer keep spending an account's credits after its plan limit is reached while another logged-in account still has plan usage left; new and ongoing sessions switch to that account, and credits are used only when no account has plan usage left (#13889).
- Runtime usage providers (
usage.setProvider, extensionregisterProvider({ usage })) now key cached reports by their owncacheVersion, so reports written by processes without the override are no longer served to it (#13814). - xAI OAuth accounts with active weekly credits no longer switch away solely because an uncertain monthly counter exceeds its limit (#13806).
- Cursor retries after a rejected conversation now keep the tool calls and results already completed in the turn, instead of re-sending the last message and redoing that work (#11613 by @will-bogusz).
@oh-my-pi/pi-catalog
Added
- Added the hand-maintained Factory Droid catalog with account policy and regional discovery, upstream-specific reasoning controls, and base credit rates (#8577 by @will-bogusz, continued in #13276 by @DusKing1).
Changed
- Cursor's model list now comes from the account's own catalog: one entry per model lane with its real context window, image support, and effort ladder, only models the account can run, and Cursor's account default marked (#11613 by @will-bogusz).
Fixed
- Fixed OpenRouter decision models that report no context/output limits (
respan/span-01,respan/span-01-lite,respan/span-01-lite:free) missing from the judge model list (#13888) - Fixed every
google-vertex/claude-sonnet-5-5request failing with 400thinking.adaptive.block_binding: Extra inputs are not permitted(#13795) - Fixed Cursor Grok 4.7 appearing as separate
grok-4.7-{low,medium,high,xhigh}and-fastmodels that each also offered an effort selector; they now show asgrok-4.7andgrok-4.7-fastwith effort picked separately (#12773) - Cursor fast lanes whose bundled rate card lists only the base rate now bill at Cursor's declared fast multiplier instead of the base rate (#11613 by @will-bogusz).
- Cursor's
default(Auto) router is marked as variably priced instead of free (#11613 by @will-bogusz). - Switching Cursor accounts no longer shows the previous account's cached model list (#11613 by @will-bogusz).
@oh-my-pi/pi-coding-agent
Added
- Added Factory Droid login and model selection with base credit badges and account-matched regional discovery (#8577 by @will-bogusz, continued in #13276 by @DusKing1).
- Added
HELMCODE_API_KEYto the environment variables listed inomp --help(#13630 by @alexcerezo). - RPC hosts can send
messageUpdates: "delta"withset_event_filterto receivemessage_updateframes without the accumulated message snapshots (messageshrinks to{ role }andassistantMessageEvent.partialis omitted); the response echoes the active mode (#13716 by @alphastorm) - RPC hosts can follow each cache-warming refresh through
cache_warming_startandcache_warming_endevents (also written by--mode json), which report the outcome and the recorded usage, and can set the session's warming mode withset_cache_warmingwithout changingconfig.yml; the Python client gainsset_cache_warming()(#13717 by @alphastorm) - The
/reviewand/annotate code-reviewmenus have a "Review a specific PR" option that lists the repository's open pull requests, with server-side search and a#123shortcut (#12399 by @abilliontokens) - Pinned Subagents rows can show each agent's current (or most recent) tool call with a one-line detail and an elapsed marker; enable with
display.subagentLivePreview(off by default) (#3821 by @abilliontokens) - Model presets: save every role assignment plus the default thinking level under a name and switch between them with
/modelpreset save|switch|delete|list, pick one interactively with/modelpreset, or presssin the/modelsRoles view to save the current setup (#5253 by @abilliontokens) - Subagent tool previews name the files a freeform edit (
apply_patch, sloppy, hashline) touches (#11210 by @DarkPhilosophy).
Changed
omp auth-gateway servenow attributes peers to the socket address by default; deployments behind a trusted reverse proxy can restore forwarded peer headers with--trust-proxy-headers(#13827 by @shawnkoh)--no-uinow also works with--mode rpc-ui: extensions run headless while tool UI such as theasktool still reaches the host (#13718 by @alphastorm)omp models --jsonreports each model'spricingStatus(fixed,free,included,variable, orunknown) (#11613 by @will-bogusz).
Fixed
- Fixed the subagent live preview blanking or mislabelling a running call when a sibling call finishes: concurrent calls are tracked by call id and keep their own intent, and the row keeps the last completed call with its success or error mark until the next one starts (#11210 by @DarkPhilosophy).
- Fixed subagent tool previews rewriting a search pattern that names a home directory: path arguments are now shortened by argument key, so the pattern still shows what was searched (#11210 by @DarkPhilosophy).
- Fixed background task job progress dropping the current tool's arguments and start time (#11210 by @DarkPhilosophy).
- Replying
cduring a/guided-goalinterview now sendscas your answer instead of triggering the continue shortcut (#13819 by @H4vC) - Cache-warming refreshes cancelled or superseded after the provider accepted them now count toward session usage and cost instead of being dropped (#13717)
- Fixed Cursor turns that fail with "Cursor stream ended before turnEnded" stopping instead of continuing with their completed tool results kept (#13684 by @eggpeat)
omp plugin upgrade <name>now upgrades npm- and git-installed plugins (e.g.ida-mcpinstalled fromgithub:HexRaysSA/ida-mcp#latest, whichhcli mcp installrelies on) and resolves a bare marketplace plugin name, instead of failing with "Invalid plugin ID"; the plugin's enabled state and feature selection are kept (#13812 by @H4vC)- Extension providers that offer
/loginand also name an env var as theirapiKey(e.g. the Nexos provider'sNEXOS_API_KEY) now use the key saved by/loginwhen that env var is unset, instead of sending the env var's name as the key, which made their models fail to load or disappear (#13815 by @H4vC) - Reduced memory held by finished subagents during long sessions (#13624 by @iliaal).
- Fixed role and subagent
retry.fallbackChainsbeing skipped once the session's thinking level differed from the role's configured one (e.g.task: grok-4.7:highrunning at:xhigh), and cold-revived subagents losing the fallback chain they were spawned with (#13789) - Fixed compiled OMP extensions importing
@oh-my-pi/pi-catalogand its provider-model subpaths (#13731). - Explicit
symbolPreset: unicodenow stays Unicode after a Glyph Protocol handshake instead of switching the status bar to Nerd Font icons (#13865). - Fixed rewinding (
/rewind,/tree) during a running turn hiding the queued-prompt bar, making the still-pending queue look deleted and uneditable (#13680)
@oh-my-pi/pi-natives
Fixed
- Fixed macOS spell checking and Apple word completion adding a duplicate terminal icon to the Dock for every omp session (#12491)
- Fixed
computer.windows()on macOS marking every window of the frontmost app as focused. One window is marked now: the app's accessibility focused window, or its frontmost window when Accessibility permission is not granted. With the permission,computer.focusedWindow()no longer returns a floating panel such as TextEdit's Fonts panel in front of the document (#13673 by @will-bogusz). - Fixed non-Latin prompts that quote code in backticks or fences losing most of their prose score, which made the typing predictor's vocabulary refuse to learn them (#13758 by @jchanghong023).
- Fixed
computer.window(...).ax()leaving out everything inside an unnamed container. On macOS, Reminders, Contacts, Notes and Font Book windows showed only their toolbar and window buttons, and Calendar lost its month grid; Windows and Linux trees now also keep content under unnamed containers such as custom panes, lists and fillers (#13822 by @will-bogusz). - Fixed Wayland
computer.drag()sending all waypoints in one burst, preventing HTML5 drag-and-drop targets from receivingdrop(#13860). - Fixed Wayland computer input staying unavailable after a cancelled RemoteDesktop permission prompt or a disconnected input session (#13857).
- Fixed Wayland
win.screenshot()returning the top-left of the monitor for native Wayland windows whose position AT-SPI cannot report (Discord, Teams, Chromium); it now fails withCaptureFailedinstead of capturing the wrong region (#13854). - Fixed
computer.focusedElement()failing withAxFailed: atspi: null referenceon Linux while a Chromium or Electron app (Spotify, Discord, Steam, …) is running (#13855).
@oh-my-pi/pi-tui
Added
- Added Factory Droid base-credit badges; models without a dollar-price reference no longer appear free (#8577 by @will-bogusz, continued in #13276 by @DusKing1).
Fixed
- Fixed home directories next to shell redirections, control operators or Markdown emphasis (
<,>,&,|,*,_) leaking the full path in display-only text (#11210 by @DarkPhilosophy). - Fixed the subagent task card showing full home paths in tool intents and arguments, while keeping search patterns literal (#11210 by @DarkPhilosophy).
- Fixed Enter doing nothing on a fully typed slash-command argument while its completion popup was open (e.g.
/mcp list): it now submits instead of re-accepting the identical completion; subcommands that still need a required argument (e.g./mcp test) keep inserting the subcommand so you can type it (#13885 by @H4vC).
What's Changed
- feat(rpc): add opt-in delta-only message_update frames by @alphastorm in #13716
- feat(rpc): expose cache warming controls and refresh events by @alphastorm in #13717
- feat(rpc): allow --no-ui with --mode rpc-ui by @alphastorm in #13718
- feat(coding-agent): add /ratchet eval build and hillclimb command by @H4vC in #13672
- fix(coding-agent): upgrade npm- and git-installed plugins by name by @H4vC in #13812
- fix(coding-agent): keep /login keys ahead of extension provider apiKey defaults by @H4vC in #13815
- feat(tui): opt-in live preview of subagent tool calls in the pinned HUD by @abilliontokens in #3821
- fix(coding-agent): treat bare c as an answer during guided-goal interview by @H4vC in #13819
- fix(ai): confine auth-gateway bearer tokens to Authorization by @shawnkoh in #13827
- fix(tui): keep concurrent subagent tool calls and search patterns intact in the live preview by @DarkPhilosophy in #11210
- feat(coding-agent): add model presets for saving and switching role setups by @abilliontokens in #5253
- test(coding-agent): isolate llama.cpp discovery tests from ambient LLAMA_CPP_BASE_URL by @andrebrait in #13853
- test(shell): isolate git worktree tests from the developer's git config by @sjawhar in #13796
- docs(models): clarify thinking off on the generic openai dialect by @alphastorm in #13867
- fix(coding-agent): continued Cursor turns that end before turnEnded by @eggpeat in #13684
- fix(natives): stop marking every window of the frontmost macOS app focused by @will-bogusz in #13673
- docs(models): warn that an unset apiKey variable is sent literally by @alphastorm in #13866
- fix(task): release parked subagent sessions held by the lifecycle reviver by @iliaal in #13624
- test(coding-agent): isolate skills tests from the real home via an os.homedir spy by @andrebrait in #13872
- fix(pi-predict): keep prose scoring aligned across masked multi-byte characters by @jchanghong023 in #13758
- fix(natives): stop ax() dropping everything inside unnamed containers by @will-bogusz in #13822
- fix(tui): submit on Enter when slash-command argument is already fully typed by @H4vC in #13885
- feat(catalog): add Helmcode provider by @alexcerezo in #13630
- fix(ai): moved codex sessions off credit-funded accounts by @roboomp in #13894
- fix(ai): keyed usage report cache by the effective usage provider by @roboomp in #13818
- fix(ai): treated ambiguous xai monthly overage as advisory by @roboomp in #13813
- fix(catalog): kept openrouter models advertising zero limits by @roboomp in #13891
- fix(retry): kept role fallback chains across effort changes and revival by @roboomp in #13791
- fix(extensions): bundled catalog imports in compiled binaries by @roboomp in #13741
- fix(natives): pace Wayland computer drag frames by @roboomp in #13881
- fix(natives): retried wayland input after failed grants by @roboomp in #13876
- fix(natives): refused wayland window crops with unknown position by @roboomp in #13859
- fix(natives): skipped null at-spi refs when searching for focus by @roboomp in #13858
- fix(tui): preserve explicit unicode preset after glyph handshake by @roboomp in #13869
- fix(tui): kept queued-prompt bar visible across rewind rebuilds by @roboomp in #13691
- fix(catalog): dropped thinking binding controls for vertex sonnet 5.5 by @roboomp in #13797
- fix(catalog): collapse cursor grok effort variants by @roboomp in #12846
- feat(ai,catalog): add native Factory Droid provider by @will-bogusz in #8577
- feat(ai,catalog): use Cursor's account catalog, real prices, and native request format by @will-bogusz in #11613
- feat(coding-agent): add 'Review a specific PR' option to /review by @abilliontokens in #12399
New Contributors
- @alexcerezo made their first contribution in #13630
Full Changelog: v18.4.4...v18.4.5