Skip to content

Releases: qtnx/omppp

v1.11.7

Choose a tag to compare

@github-actions github-actions released this 30 Sep 05:45

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

Fixed

  • Fixed long sessions freezing for 15–25 seconds before every model call while secret redaction rechecked placeholders.

What's Changed

  • fix(secrets): memoize forged-prefix checks so long sessions stop freezing per turn by @qtnx in #240
  • fix(deps): bump brace-expansion override to 5.0.12 for OSV advisories by @qtnx in #241

Full Changelog: v1.11.6...v1.11.7

v1.11.6

Choose a tag to compare

@github-actions github-actions released this 29 Sep 19:41

@oh-my-pi/pi-ai

Fixed

  • /usage no longer shows an always-empty gpt-4 requests row for Cursor accounts on usage-based plans; the Cursor Models and Other Models meters remain (#13726 by @will-bogusz).
  • Cursor turns routed through an HTTP proxy now finish instead of hanging after the response completes (#13724 by @will-bogusz).

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

Added

  • Secrets in prompts and bash output are now also caught by the Secrets Sentinel classifier (hypn05/secrets-sentinel), vaulted, and shown to the model and transcript only as their env var names. Sessions use the shared server at secrets.sentinelUrl (default http://codemc:8795, override with SECRETS_SENTINEL_URL, empty to disable) and fall back to regex detection when it is unreachable; run it with scripts/secrets-sentinel/server.py.

Changed

  • Dropped connections, server errors, and overloads now retry the same model up to 5 times with backoff before switching to a fallback model (retry.retriesBeforeFallback); rate-limit and quota errors still switch immediately

Fixed

  • A connection that drops with a bare aborted error is now retried instead of immediately falling back to another model
  • The convergence and case-coverage guidance is now part of the shared system prompt for every model instead of a Claude Opus-only block: decide routing and rules once, stop re-checking settled facts, write plans and docs to disk early instead of composing them in reasoning, and list every case (other places reading the same data, variants, pending/failed/reloaded states) once before editing. In local A/B runs at xhigh thinking, Claude Opus 5.5 plan requests finished in every run instead of hitting the 20-minute cap in 3 of 5, and GPT-6 Astra plan requests finished about 17% faster (median 785s vs 950s) with the same coverage.
  • Bug-fix guidance no longer stops the sibling search after one lookup; it follows every place that reads the faulty data.
  • Fixed Herdr showing ompx panes as unknown instead of working/idle on Linux; no ompx herdr install symlink is needed anymore.
  • Fixed computer.window(74) matching every open window and computer.window({ id: 74 }) matching none; a numeric id now resolves the same window as "74" (#13649 by @will-bogusz)

@oh-my-pi/pi-natives

Fixed

  • Fixed computer.window(id).ax() and find() failing with AxFailed on macOS sheets, popovers and open menus that computer.windows() lists, such as TextEdit's Save sheet or a Calendar event popover (#13659 by @will-bogusz).
  • Fixed macOS 26 background scrolls moving twice the requested distance; background hovers, scrolls and right or middle clicks are now delivered once (#13739 by @will-bogusz).
  • Fixed macOS takeover clicks and scrolls failing with AX action 'AXRaise' failed (AXError(-25205)) on covered windows that do not support AXRaise, such as iPhone Mirroring, even when activation brings them forward; a window that stays covered still refuses before any input is sent (#13737 by @will-bogusz).

What's Changed

  • fix(coding-agent): resume stalled streams after visible text instead of stopping by @qtnx in #230
  • sync: merge upstream/main 18.3.4 into OMPx 1.11.5 by @qtnx in #231
  • ci(security): ignore unmaintained paste advisory (RUSTSEC-2024-0436) by @qtnx in #232
  • config(agent-config): fall back from claude-opus-5-5 to gpt-6-astra:medium by @qtnx in #235
  • fix(herdr): claim omp process name so herdr accepts ompx status reports by @qtnx in #236
  • feat(secrets): detect secrets in prompts and bash output with Secrets Sentinel by @qtnx in #233
  • feat(prompts): Claude Opus 5.5 model notes for convergence and case coverage by @qtnx in #237
  • fix(retry): retry transient failures on the same model before falling back by @qtnx in #234
  • feat(prompts): share convergence and case-coverage guidance across all models by @qtnx in #238
  • sync: merge upstream/main 18.4.3 into OMPx 1.11.5 by @qtnx in #239

Full Changelog: v1.11.5...v1.11.6

v1.11.5

Choose a tag to compare

@github-actions github-actions released this 24 Sep 12:13

@oh-my-pi/chrome-annotate

Fixed

  • Clicking the annotate toolbar (Pick, Draw, Send, …) or drawing a box no longer counts as a click on the page underneath, so the page's own modals and menus stay open.

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

Added

  • Browser annotations now tell the agent that a screenshot is attached and save a copy under ~/.omp/annotate/shots. The message shows the file path so the agent can reopen the image after it drops out of context. Shots older than 7 days, or beyond the newest 200, are deleted automatically.

What's Changed

  • feat(browser): link annotation screenshots and keep overlay clicks off the page by @qtnx in #229

Full Changelog: v1.11.4...v1.11.5

v1.11.4

Choose a tag to compare

@github-actions github-actions released this 24 Sep 11:31

@oh-my-pi/pi-ai

Added

  • OAuth callback servers also listen on this host's Tailscale address when a Tailscale interface is up, and OAuthAuthInfo.tailnetLaunchUrl carries a /launch shortcut on that address, so a provider login can be opened — and its callback finished — from another device on the tailnet instead of only from localhost.

@oh-my-pi/chrome-annotate

Fixed

  • Fixed Cmd+. / Ctrl+. sometimes doing nothing after the page re-rendered or removed the overlay, and one keypress toggling the overlay twice.
  • Fixed duplicate overlays after reloading or updating the extension: the old copy now closes and stops answering the shortcut.
  • Only one marker note input is open at a time; starting a new box saves the previous note.

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

Added

  • Provider and MCP login screens (/login, setup wizard, ompx auth-broker login, RPC open_url) now show a Tailscale shortcut next to the local one when this machine is on a tailnet, with a hint to swap localhost for the tailnet address if the final redirect lands on another device.
  • ompx mnemopi-embed-server serves memory embeddings over HTTP from one loaded model. Sessions use it through mnemopi.embedServerUrl (default http://codemc:8793, override with MNEMOPI_EMBED_SERVER_URL, empty to disable), so a machine with many sessions keeps a single model in memory instead of one per session. When the server is unreachable, sessions embed locally and retry the server a minute later.

Changed

  • The local memory embeddings worker (__omp_worker_mnemopi_embed) now uses far less memory and CPU: it stays around 0.35–0.5 GB instead of 1.0–1.6 GB, a recall query takes ~0.1–0.3 s instead of ~0.4–1.4 s, and a worker left idle for 5 minutes exits and restarts on the next memory lookup. Before, every open session kept its own copy loaded until the session closed.
  • Compiled Linux and macOS binaries load rarely used code on first use instead of at startup. Each helper process (daemon broker, eval and embedding workers) now holds ~17 MB of private memory instead of ~105 MB, and an idle session ~270 MB instead of ~300 MB.
  • Product Preview's web client (mermaid, canvas app, markdown renderer) loads when a preview starts instead of staying in every session's memory.
  • Idle memory trim now also returns freed native memory to the OS (after a burst of parallel searches: ~990 MB back to ~90 MB), and when a background subagent or an unsent draft keeps the session busy at the idle deadline it tries again after another idle window instead of giving up until the next turn.
  • Browser tabs left open by the agent now close after 10 minutes idle instead of 30 (browser.idleCloseSec, new 5/10-minute options).

Fixed

  • Advisor note artifacts are now written to a temp file and renamed into place. Before, the artifact path was advertised immediately while the write was still in flight, so a read could see an empty file. A block re-rendered each turn is now written only once.
  • Exiting ompx inside a Herdr pane now clears the pane's agent status instead of leaving it stuck on idle/done.
  • Codex models keep their prompt cache across turns and resumes: grep is always available, and tools activated through tool search are restored when a session is resumed, so the tool list no longer changes mid-session (cache hit on a 3-turn session: ~78% → ~88%, turns after the first ~85% → ~98%, cost ~35% lower).
  • The shared headless Chromium no longer lingers after the agent is done with the browser: once no running session holds a tab in it, it stops ~15 s later (or at exit). Before, it kept running with zero tabs, using RAM and CPU, for as long as any ompx session stayed open in the project.

@oh-my-pi/pi-mnemopi

Changed

  • Migrated all hashing operations from node:crypto to Bun.SHA256

Fixed

  • Local fastembed embeddings turn off ONNX Runtime's CPU memory arena and memory-pattern planning, stop padding every input to 512 tokens (only inputs of equal token length share a run, at most 8 per run). Vectors match to float noise; peak worker memory drops from ~1.6 GB to ~0.5 GB and a single-query embed is 2–4× faster.

@oh-my-pi/pi-natives

Added

  • Added appleFmAvailability, appleFmGenerate, and appleFmCancel native bindings
  • Added Encoding.Jev to countTokens for offline TypeSafe Jev 1.13 state input-token counts (request frame excluded), reconstructed from live API measurements

@oh-my-pi/pi-utils

Added

  • releaseNativeHeap() returns freed native-heap memory to the OS (malloc_trim on Linux glibc; a no-op elsewhere).

What's Changed

  • feat(oauth): Tailscale login shortcut for remote provider login by @qtnx in #218
  • fix(deps): bump faster-hex to 0.10.1 (RUSTSEC-2026-0306) by @qtnx in #219
  • fix(advisor): write note artifacts atomically by @qtnx in #220
  • test(learnings): wait for novelty reinforcement to persist by @qtnx in #221
  • fix(herdr): release pane authority on exit so status clears by @qtnx in #222
  • perf: cut ompx memory (shared lean embeddings, split binary, native heap trim) by @qtnx in #223
  • fix(browser): stop idle shared Chromium when no session holds a tab by @qtnx in #225
  • sync: merge upstream/main 18.2.11 into OMPx 1.11.3 by @qtnx in #224
  • fix(deps): bump faster-hex to 0.10.1 for RUSTSEC-2026-0306 by @qtnx in #226
  • feat(agent-config): serve central agent config from origin/main by @qtnx in #227
  • fix(chrome-annotate): stabilize overlay toggle and prevent stacked overlays by @qtnx in #228

Full Changelog: v1.11.3...v1.11.4

v1.11.3

Choose a tag to compare

@github-actions github-actions released this 23 Sep 07:40

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

Changed

  • Proxy streams parse partial tool-call arguments with the same throttled parser as provider streams, instead of reparsing the full buffer on every delta (200 KB argument: ~1.6 s → ~6 ms).

@oh-my-pi/pi-ai

Fixed

  • Fixed Anthropic per-message effort when a session starts without an explicit effort: the omitted level was assumed to be high, but Opus 5.5 defaults to medium, so a later switch to high never reached the API. Omitted effort is now tracked as its own baseline and every later explicit level is sent as a per-message control (upstream 20f18f8).
  • Fixed resuming an Anthropic session in a new process after an effort change losing the whole prompt cache (Opus 5.5: ~116K tokens re-written). Each assistant turn now records the effort it ran at (anthropicEffort), and a fresh session rebuilds the original top-level effort and per-message effort controls from those records.
  • Fixed every request paying a failing OAuth refresh round trip when an account in the pool had a dead refresh token: a credential blocked after a failed refresh is no longer re-refreshed during candidate preflight while its 5-minute backoff runs (forced re-mints still refresh it). With one dead OpenAI Codex account next to a healthy one, resolving a key dropped from ~480 ms to ~1 ms per request.

@oh-my-pi/pi-catalog

Fixed

  • Fixed GPT-6 Sol and Luna missing from OpenAI Codex model discovery by advertising Codex client 0.155.1 and keying the Codex model cache on the client version (#12885 by @itsddvn)
  • Added GPT-6 Sol and Luna thinking efforts on GitHub Copilot

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

Changed

  • Streaming a large tool call no longer slows every frame: the status line tracks tool-argument growth without re-serializing the arguments (1000 frames with a 200 KB argument: ~100 ms → <1 ms).
  • Assistant messages with many thinking/text blocks update in one pass instead of rescanning later blocks for every thinking block.
  • Image generation through a connected OpenAI Codex subscription now defaults to gpt-6-astra in every session, including Codex sessions chatting with an older GPT model; agents are told to leave the image provider unset unless the user names one.
  • Messages that scroll into terminal history drop their streaming render caches, cutting retained memory for long sessions (~33% less heap for 2000 committed 20 KB blocks).
  • Streamed message_update events are no longer queued for extensions when no extension listens for them.
  • The shared LSP daemon encodes each diagnostics message once instead of cloning it twice, and drops cached diagnostics when a document is closed (1000 publishes × 500 diagnostics: ~3.1 s → ~1.1 s).
  • A running tool with a lot of output no longer burns CPU on every spinner tick: the spinner no longer throws away the output block's render cache (5 MB bash output, 100 ticks: ~810 ms → <1 ms).
  • codegraph_explore no longer builds a missing index or waits minutes for one: on a project without an index it answers in milliseconds and points to jev_scout, and it waits at most 10 s for a sync or startup index already in progress. A first explore in a fresh worktree used to block every subagent that called it for ~6 minutes while it indexed the whole repository.
  • jev_scout now carries a full query guide: when to use it, the query shape, how to pick path and max_files, how to check a hit, and a change-one-input recovery after no_match. The guide is built from measured scout runs: starts at a repository root missed after one listing, while lookups scoped to a file hit in one request.
  • When codegraph_explore is missing, unindexed, still indexing, not installed, or off-target, agents switch to jev_scout (or grep/read for exact names) instead of guessing greps, installing CodeGraph, or building its index. codegraph_init now runs only when the user asks for it.

Fixed

  • Activating an MCP tool through tool discovery mid-conversation no longer rewrites the system prompt, which forced the provider to re-cache the whole conversation history (measured on Anthropic: ~45K tokens re-written per activation). The search result now names the new xd:// path, and the next mount notice names the original MCP call.
  • tnx/scout now reports its real 256K context window (64K output) instead of the 128K default, so sessions on it compact at the right time.

@oh-my-pi/context-gc-plugin

Changed

  • The per-request context check indexes messages and branch entries once instead of comparing every record against every message, about 12x faster with 1000 messages and records.

@oh-my-pi/pi-tui

Changed

  • Streaming Markdown renders ~4x faster on long replies: frozen prefix tokens and rows are reused instead of copied every frame, and a growing top-level list re-renders only its new items (56 KB reply: ~1.4 s → ~0.3 s total).
  • Typing in a large editor draft is fast again: wrap measurements for the whole draft stay cached instead of being cleared every 256 lines (2000-line draft: ~56 ms → ~1 ms per keystroke).

@oh-my-pi/pi-utils

Changed

  • chalk style chains are built once per parent builder and reused, instead of building a new builder on every property access.
  • Markdown inline lexing no longer rescans the rest of a paragraph for URLs and hard breaks after every text run, which removes quadratic work on long paragraphs.

What's Changed

  • ci: drop Intel macOS (darwin-x64) targets by @qtnx in #211
  • perf: faster streaming render, keystrokes, subagent auth and CodeGraph lookups; jev_scout query guide by @qtnx in #210
  • fix(image-gen): default Codex image model to gpt-6-astra by @qtnx in #214
  • fix(mcp): keep system prompt stable when discovery mounts MCP tools mid-conversation by @qtnx in #212
  • fix(ai): keep Anthropic per-message effort correct and cache-stable across resume by @qtnx in #213
  • fix(catalog): pick upstream GPT-6 Sol/Luna Codex discovery + Copilot efforts by @qtnx in #215
  • fix(coding-agent): report real context window for tnx/scout combo by @qtnx in #216
  • test(coding-agent): key Codex model cache seeds by client version by @qtnx in #217

Full Changelog: v1.11.2...v1.11.3

v1.11.2

Choose a tag to compare

@github-actions github-actions released this 22 Sep 21:03

@oh-my-pi/pi-ai

Fixed

  • Fixed Anthropic multi-account rotation ignoring an account whose usage limit was reset early: Opus, Sonnet, and other non-Fable usage-limit blocks now lift as soon as a live usage report shows headroom, instead of idling the account until its original weekly reset and sending every request to a still-exhausted sibling.

@oh-my-pi/pi-catalog

Added

  • Added GPT-6 Sol ($2/$10) and GPT-6 Luna ($0.10/$0.50) catalog rows copied from GPT-6 Astra, with cache at 0.1× read and 1.25× write.

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

Added

  • Central agent config (on by default; remoteConfig.enabled: false opts out): pull model roles, subagent overrides, fallback chains, advisor/duo settings, and agent definitions from a shared host (default codemc), hot-reloaded while running; your local config is the fallback and the last fetched copy keeps applying when the host is down
  • Editing advisor model settings (advisor.*, duo.advisor*) in config.yml while a session runs now rebuilds the advisor without a restart

Changed

  • Jev turn classification no longer runs on every tool step: with a live advisor it still judges each step, otherwise a live duo or auto-thinking session samples running tool work at most once per 15s, and duo-off sessions without auto send none.
  • Auto thinking takes its effort from Jev's prompt judgment (shared with duo routing), re-aims it mid-run from those 15s samples, and falls back to the tiny/smol classifier only when Jev is unavailable.
  • Subagents without an explicit effort or :level suffix run on auto thinking; bundled agents that pinned medium/high/xhigh now pin auto.
  • The status-line work-phase chip only shows while duo is live.
  • System prompt now routes behavior-to-location lookups to jev_scout (with an explicit tie-break against codegraph_explore), makes browser_jev the first tool for the main agent's own web UI verification, and adds a parallel fan-out playbook with concrete spawn triggers and an isolated-scope recipe for subagent waves.

What's Changed

  • fix(ai): heal Anthropic opus/sonnet/default usage-limit blocks from live usage by @qtnx in #203
  • ci: fast release path (<5 min when natives unchanged) by @qtnx in #204
  • perf(coding-agent): budget Jev turn signals and let auto thinking adapt mid-run by @qtnx in #206
  • feat(catalog): add GPT-6 Sol and Luna from Astra by @qtnx in #205
  • feat(coding-agent): prioritize Jev tools and add parallel fan-out playbook in system prompt by @qtnx in #207
  • feat(coding-agent): pull agent config from a central host with hot reload by @qtnx in #208
  • fix(coding-agent): register Remote Config settings group by @qtnx in #209

Full Changelog: v1.11.1...v1.11.2

v1.11.1

Choose a tag to compare

@github-actions github-actions released this 22 Sep 18:20

@oh-my-pi/pi-ai

Fixed

  • Claude Code OAuth now advertises CLI 2.1.280, which Anthropic requires for Opus 5.5 (claude_code_version_too_old).

@oh-my-pi/pi-catalog

Added

  • Added the RunAnywhere provider (inference.runanywhere.ai): OpenAI-compatible discovery of its GLM-5.3 Flash, Qwen3.8 27B, and Gemma 4 deployments with measured reasoning-effort ladders, published tariff pricing including cached-token rates, and the endpoint's non-standard input/output limit fields mapped to context and output limits.
  • Added Claude Opus 5.5 (claude-opus-5-5) to the Anthropic catalog at $4/$20 per MTok with $0.20 cache reads and $5 cache writes.

Fixed

  • Fixed SuperGrok (xai-oauth) Grok 4.7 missing its thinking-level options and reporting null context limits; it now carries the documented 500K window and low/medium/high/xhigh ladder (#12697, #201 by @eggpeat).

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

Changed

  • Bundled @oh-my-pi/pi-ai 1.11.1, including the Claude Code fingerprint 2.1.280 update.

What's Changed

  • fix(ai): bump Claude Code fingerprint to 2.1.280 by @qtnx in #202

Full Changelog: v1.11.0...v1.11.1

v1.10.5

Choose a tag to compare

@github-actions github-actions released this 21 Sep 04:54

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

Added

  • Added jev_scout to locate source with bounded follow-up searches, including methods inside large classes. By default it shares declaration names and locations rather than source bodies; broader source sharing remains an explicit setting.
  • Subagents (scout, explore, plan, reviewer, qa, tester, security-reviewer, librarian, UI specialists) can now use jev_scout; read-only agents stay read-only.
  • TypeSafe assist for delegation (task.jevAssist, on by default): picks the subagent when none is named, flags briefs missing anchors/checks/scope, hands each subagent the relevant slice of the parent conversation inline, labels subagent questions (fact, decision, user-only, status), marks results whose report lacks command evidence, and drops reviewer findings without a concrete failure scenario.
  • Added an autonomous completion check (autonomy.stopGate) that sends premature questions and partial reports back for continued work while preserving user holds, approvals, cancellation, budgets, and plan-only requests.

Changed

  • A new request after a 5-minute idle gap is checked for a topic change, and unrelated earlier context is compacted before the request starts (previously a 30-minute gap and a 30K-token floor).

Fixed

  • Uncertain review judgments no longer delete existing findings or change their priorities.
  • An unreachable signals endpoint is skipped for a minute after a failed attempt instead of delaying each request that consults it.
  • Subagents receive ordered, deduplicated context and a full-snapshot fallback when required material cannot fit safely in an excerpt.
  • An agent named at batch level on a task call is no longer overridden by automatic routing; Jev picks an agent only when neither the item nor the batch named one.
  • Open tasks continue to block a premature stop when a completion check is inconclusive or its audit allowance is already spent; an unavailable check leaves the turn unchanged.

What's Changed

  • feat(coding-agent): add Jev scouting and autonomous completion by @qtnx in #198

Full Changelog: v1.10.4...v1.10.5

v1.10.4

Choose a tag to compare

@github-actions github-actions released this 19 Sep 18:40

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

Changed

  • The duo.extendedContext setting description now spells out that leaving the window unset also raises a smaller explicit context-window override, not just the standard-pricing cap.

Fixed

  • Duo-routed models parked exactly on their premium long-context threshold (for example openai/gpt-6-astra capped at 272K) get their full catalog window back — 1.05M — so duo.extendedContext no longer hands the model a standard-pricing window and forces an immediate compaction.

What's Changed

  • fix(duo): recover the catalog context window for premium-tier-capped models by @qtnx in #197

Full Changelog: v1.10.3...v1.10.4

v1.10.3

Choose a tag to compare

@github-actions github-actions released this 19 Sep 17:43

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

Added

  • /usage now ends its overview with a session cache block: one stacked bar splitting the prompt into cache hits, cache writes, and uncached input, plus the provider-priced cost of each bucket and an estimate of what the hits saved.
  • Context trim at a cold-cache model switch: when a session changes model (duo phase switch, manual switch) the provider prompt cache is cold for the new model anyway, so before the first request Jev judges every large prompt record against the upcoming work and the stale ones are shed — priced against the previous model's still-live prefix, so a flip-back inside its cache TTL is never paid for twice. Falls back to the kind-based cold-cache heuristic when Jev is unavailable.
  • Duo difficulty routing selects among deepseek-v4.1-flash, opus-5, gpt-6-astra, and fable-5-1, skips unavailable models, and shows the selected tier in /duo status.
  • A live Jev routing evaluation reports difficulty, reasoning, and model-selection accuracy on labeled conversation cases, including short follow-ups and quota fallbacks.
  • The scouting nudge: when the main agent has made 8+ read/grep/glob calls in one run with no edit and no scout/explore dispatched, and TypeSafe judges the slice as open-ended discovery, a notice tells it to fan the discovery out to subagents instead of paying for it in its own context.

Changed

  • Duo now adjusts reasoning effort on the current model from a single confident Jev judgment, taking effect on the next request even mid-turn — so finishing steps such as running known tests, committing, or opening a PR/MR after a hard implementation run at medium effort. Switching to a different model still waits for two agreeing judgments.
  • Duo routing now skips a model whose account has no quota headroom left (5-hour or weekly usage window spent, live usage-limit block) instead of routing onto it and failing with a multi-hour retry-after, and the top rung's fallback chain now continues down the ladder so a usage-limited planner model has somewhere to fall.
  • Duo-routed models keep their full context window (duo.extendedContext, on by default): switching to GPT-6 Astra mid-task gets its 1.05M window instead of the 272K standard-pricing cap, so the switch no longer forces an immediate compaction. Requests above the standard threshold bill at the provider's long-context rate, and leaving duo puts the registry's standard window back on the stream.

Fixed

  • Duo no longer keeps a planner-grade model on the main stream for exploration: reading, grepping, and globbing code with no edit landing routes to the executor rung whatever the task's difficulty or risk, so a risky or extreme task stops paying Fable/Astra prices to read the repository.
  • duo_handoff, duo_escalate, and duo_change_phase are now registered in every session instead of only when a duo controller happened to be live at tool-registry build time, which left an activated duo session with no handoff tool.
  • Duo now adjusts models and reasoning effort during a running task using recent conversation history; short follow-ups retain context, and the executor no longer replaces the brainstorming model.
  • Everything sent to the TypeSafe signals endpoint (transcript slices, plans, prompts, context digests) is now scrubbed first: the session's known secrets are replaced by their placeholders and credential-shaped tokens by [REDACTED].

@oh-my-pi/context-gc-plugin

Added

  • Consumed tool output is now shed mid-turn while the prompt cache is still warm: a large tool result the model has read exactly once (the slice the previous request introduced) is replaced by its recall placeholder when Jev judges the upcoming work no longer needs it and the rewrite pays back on the next request. Set OMP_CONTEXT_GC_HOT_TRIM=0 to disable.

Changed

  • Prompt-cache warmth is tracked per model instead of per session: switching model (duo planner/executor, manual switch) reads cold only for the model that will serve the next request, so a switch trims stale prompt records while the model that just answered keeps its live prefix. The cold-cache trim is now judged by Jev against the upcoming work when signals are available, and falls back to the previous kind-based heuristic otherwise.

@oh-my-pi/delegation-reminder-plugin

Added

  • Added a run-scoped discovery reminder: after 8 read/grep/glob/codegraph_explore calls in a run with no edit and no task dispatch, the tool result carries a one-time notice to fan out scout/explore subagents instead of hand-scouting. Tunable via discoveryThreshold, suppressed when TypeSafe classifies the slice as targeted lookups.

What's Changed

  • feat(duo): adapt reasoning effort mid-turn from one confident Jev judgment by @qtnx in #196

Full Changelog: v1.10.2...v1.10.3