Skip to content

[WRONG BRANCH] release: 2.85.0 - #7094

Merged
lidge-jun merged 54 commits into
mainfrom
release/promote-main-2.85.0
Oct 14, 2026
Merged

lidge-jun merged 54 commits into
mainfrom
release/promote-main-2.85.0

Conversation

@lidge-jun

Copy link
Copy Markdown
Owner

Summary

Promote the frozen dev candidate ba865da7252e4476d77aa2f3cf373df15c0f7da9 to main as stable 2.85.0. The promotion head faa8572bce merges in main ancestry with the ours strategy and has exactly the candidate tree (1609f11c01). The version is already 2.85.0 in package.json, desktop tauri.conf.json and Cargo.toml at the candidate. The dev pre-move is #7093 (dev → 2.86.0), merged before this promotion.

Highlights since 2.84.0:

Verification

Main-review disposition. Promotion from dev to main and npm releases are maintainer-controlled (MAINTAINERS.md). The project owner delegated this release train, including merge decisions, to the coordinator, so this promotion merges with owner authority (--admin). The PR targets main deliberately, so an enforce-target wrong_base failure is expected (as in #7016).

Checklist

  • Scope stays focused and avoids unrelated cleanup.
  • Docs or release notes were updated when needed.
  • Security-sensitive changes were reviewed for secrets, auth, and unsafe defaults.

github-actions Bot and others added 30 commits October 12, 2026 17:43
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Inject a non-operating restart service through the common diagnostic
fixture startup path. Cover refusal behavior and authenticated HTTP
dependency forwarding, and include both helpers in the Windows mirror.

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Based on #7017 by @luvs01.

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
…#7023)

Retain an absolute original home and arm the test-home guard after clearing the diagnostic child environment. Reuse the setup in Rust-driven module contracts and refuse relative protected-home inputs. Place the documentation beside fixture setup to avoid overlapping the pending process-isolation note.

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: JUN <jun@lidgeai.com>
Adds Modelflare as an ordinary API-key preset (openai-chat, https://modelflare.dev/v1, ${MODELFLARE_API_KEY}) so `ocx provider add modelflare`, `ocx init` and the dashboard Add provider picker offer it. Seeds the four live-verified chat models (glm-5.3-flash default, claude-sonnet-5-5, gpt-6.1-sol, deepseek-v4-flash); deepseek-v4.1-flash is excluded because it answers 503. Docs recount presets to 104 / 85 key-based.

Merged by the maintainer under the MAINTAINERS.md dev integration policy on the repository owner's explicit instruction, at head 82bcc8b with 0 failing and all Cross-platform CI jobs green on that exact head (run 38376510703). The Enforce PR target branch run was still queued in a repository-wide runner backlog; PR hygiene passed.
Based on #7027 by @luvs01. The opt-in health sentinel (#6671) now probes only numeric endpoints (loopback for default, localhost and every wildcard spelling the server accepts), pins that endpoint for its lifetime, and re-reads the runtime record before termination, so a DNS bind name or a changed record cannot turn unrelated timeouts into a kill of a healthy proxy.

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Some Azure Responses deployments reject Claude Code's tiny model-switch validation budget. Add opt-in provider setting minMaxOutputTokens for the azure / azure-openai adapter: explicit positive integer max_output_tokens below the floor are raised to it; unset providers, omitted or invalid budgets, and larger budgets are unchanged. Spend admission reserves the same effective cap at final route normalization and for each Combo target, and Combo restores the caller's ceiling for targets without a floor.

Based on #7012 by @tsruu. Supersedes #6696 by @ismell0992-afk.

Co-authored-by: tsruu <183051730+tsruu@users.noreply.github.com>
Co-authored-by: ismell0992-afk <255305877+ismell0992-afk@users.noreply.github.com>
…7025)

Parse code-mode tool declarations with one bounded forward scan instead of a backtracking regex, so a pathological exec description can no longer freeze the event loop. Quoted text and comments stay opaque while balancing delimiters, oversized descriptions and declarations carry no evidence, and an empty parameter type is still refused.

Co-authored-by: luvs01 <luvs01@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
)

Recheck the model GitHub Copilot Auto negotiates (initially, on renewal, and on account or key rotation) against the key scope captured at admission, before route mutation or inference dispatch. A model outside the scope ends the request with a non-replayable model_not_allowed_for_key refusal that names the caller's selector: HTTP 403 before streaming or a terminal error in an already-started stream. Account recovery, sidecar credential rotation, and combo or policy fallback cannot continue past that refusal, and the combo boundary keeps its envelope.

Co-authored-by: luvs01 <luvs01@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* fix(runtime): bound overflow parsing and batch replay scrubs

Limit overflow normalization to a bounded prefix and collect rejected native
reasoning blobs before scrubbing raw and parsed replay history once.
Preserve existing route and credential provenance checks.

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* docs(claude): explain bounded overflow error messages

* docs(claude): describe overflow prefix spacing in prose

---------

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: JUN <jun@lidgeai.com>
* fix(codex): safely unlink generated profiles

Refuse final-component profile symlinks before configuration or recovery
journal changes. Unlink the checked regular entry under its canonical
parent and preserve recovery evidence when its destination changes.

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(codex): preserve recovery on refused profile removal

Carry the verified rollback, dangling-link and ENOENT follow-up with focused journal regressions. Preserve the existing configuration lock and document its pathname race boundary.

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix(codex): bind removal recovery to its observed input

---------

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: JUN <jun@lidgeai.com>
…7022)

* fix(launcher): verify PATH ancestry and reject temporary app bundles

Validate original and resolved POSIX PATH ownership, modes and symlink hops before executing a Bun candidate. Reject raw and canonical temporary app bundles while retaining permanent installations beneath ordinary TMPDIR overrides.

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* test(launcher): align stable bundle fixtures and PATH recovery docs

---------

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: JUN <jun@lidgeai.com>
…sed (#7035)

Refs #2999.

When the native main refresh exchange succeeds but saving auth.json is refused because another writer changed it, serve the new access token to that request only. auth.json stays as the other writer left it, the rotated grant is not stored, and the old grant is not marked rejected. The comment claiming the inode check protects a Codex login is corrected (Codex rewrites in place, keeping dev/ino).

Integrated by the repository owner's delegated agent under the dev maintainer-integration policy (MAINTAINERS.md); exact-head CI on 9c36701 was all green (25 pass, 9 skipped).
…7007)

* fix(claude): preserve distinct Desktop aliases with effort fallback

* fix(claude): handle Fast profile aliases and refresh localized guides

* fix(claude): preserve genuine identities and filter unresolved discovery aliases

* fix(claude): derive native identity from cold profile bindings

* fix(claude): treat configured Anthropic defaultModel as a genuine native ID

A cold native launch has no server registry, so nativeClaudeModelIds() is the only evidence that an alias-shaped ID is a real Anthropic model. The catalog seeds providers.anthropic.defaultModel for static providers, but the native identity list omitted it, so a saved genuine selection was replaced and its env slot deleted. Include the default under the same profile-collision rules; an active synthetic binding still wins.

---------

Co-authored-by: Fei <283775571+richardfeiliu-a11y@users.noreply.github.com>
Co-authored-by: bitkyc08-arch <bitkyc08@gmail.com>
…inary exists (#7048)

Fixes #2999.

Add nativeMainRefresh: "codex" | "opencodex". When a Codex binary at or above 0.130.0 is found (runtime resolver: CODEX_CLI_PATH, pinned runtime, shim backups, PATH, ChatGPT.app bundle), Codex owns the native main refresh: OpenCodex calls app-server getAuthStatus with includeToken/refreshToken, uses the returned authToken, writes nothing and does not reread auth.json. A chatgpt method with a null token maps to reauth. A missing or older binary, or an explicit "opencodex", keeps the guarded writer plus the in-flight token from #7035. ocx doctor reports the active mode.

Integrated by the repository owner's delegated agent under the dev maintainer-integration policy (MAINTAINERS.md); exact-head CI on ffed9fe was all green (35 pass, 7 skipped).
…a competing proxy (#6971) (#7032)

* fix(startup): let the Codex shim run under OpenCodex Desktop without a competing proxy (#6971)

The shim runs ocx ensure on every Codex launch, and ensure spawned a detached
CLI proxy whenever nothing answered. During a Desktop restart gap, or after
Desktop quit with its durable claim, that proxy took the port and Desktop came
back unsupervised, so the dashboard disabled shim install/repair under Desktop.

ensure now waits for a running Desktop, relaunches a claimed macOS Desktop
hidden (one launch per cold start via a lease), and otherwise fails with
guidance; it never falls back to a CLI proxy while Desktop owns or runs the
runtime. The dashboard then enables shim install/repair under Desktop while
keeping the service guard, gives the shim installer the login-shell PATH
(bounded, process-group cleanup, cached), and shows the activation step
instead of Repair for an intact overlay the dashboard PATH cannot see.

* fix(startup): fail closed on unknown Desktop evidence and harden launch dedupe (#6971)

Review follow-up:
- Unreadable service ownership or process list now refuses instead of
  reaching the CLI spawn.
- Desktop detection matches executable identity (/proc/*/exe on Linux,
  ps comm paths inside an app bundle on macOS, per-user tasklist on Windows),
  so arguments naming opencodex-desktop no longer count and pgrep is not needed.
- The launch lease is held by a live pid; a dead holder's lease is reclaimed by
  rename so only one contender wins, and a live peer's moved lease is restored.
- The login-shell probe parses after stdout closes and kills the process group
  only on timeout or when a background job holds the pipe after exit.

* fix(startup): user-scoped Linux Desktop detection and generation leases (#6971)

Review round 2:
- Linux detection reads only this user's processes (by /proc/<pid> owner),
  skips exited ones, and reports unknown when one of this user's processes
  cannot be read, so an unreadable Desktop is never treated as absent.
- The launch lease is a numbered generation published whole with link(2);
  only one contender can create generation N+1, and no caller ever moves or
  restores another holder's lease.
- Real-host smoke test: the process scan must answer on Linux and macOS.

* fix(startup): stand down when a higher Desktop launch generation exists (#6971)

A contender whose directory read predates a winner's cleanup could publish a
lower generation the winner had just removed. After publishing, a caller that
sees a higher generation releases its lease and waits instead of launching.

* fix(startup): rule out non-dumpable Linux processes by comm and require a visible scan (#6971)

A same-user non-dumpable process such as ssh-agent hides /proc/<pid>/exe, which
made every plain Linux cold start refuse. Its comm stays readable, so only a
process named like Desktop is unverifiable now. The scan must also see this
process itself; a filtered procfs (hidepid) proves no absence.

* fix(startup): keep the newest launch generation and refuse on hidden Linux procfs (#6971)

Review round 4:
- Releasing a lease no longer deletes the newest generation, so numbering can
  never restart below a stale contender; a lease lapses when its holder exits.
- hidepid=2/4 on /proc can hide a same-uid Desktop; where Desktop is installed
  (~/.opencodex-desktop or /usr/bin/opencodex-desktop) a filtered scan is
  unknown and ensure refuses. Hosts without Desktop keep the CLI cold start.

* fix(startup): keep handleEnsure's live branch in place for the Desktop cold start (#6971)

Source-structure tests (grok-lifecycle, sync-client-integrations) read the live
branch of handleEnsure before const pinPort. Restore the dev shape and run the
Desktop cold start first: a proxy Desktop brings up flows into the unchanged
live tail, and the restart guard only rejects a proxy that was already live.

* test(startup): order-free procfs fixture; colon-only login PATH merge (#6971)

Linux readdir order is filesystem-defined, and the login-shell PATH is POSIX
only, so merging must not use the Windows path delimiter.
macOS Background Task Management resubmits the OpenCodex LaunchAgent through
smd, so launchctl print reports path = (submitted by smd.<pid>) with
managed_by = com.apple.xpc.ServiceManagement. Startup Safety and the tray
realpath'd that value, failed, and marked a valid login item unverified.
Credit that shape only for this copy's program and an unchanged registration
re-read, in both implementations, with shared fixture cases.
* fix(qoder): recover runTurn keys on scoped 401/429 failures

* fix(qoder): keep generic rate limits from rotating keys

* fix(qoder): scope runTurn recovery to account limits

* docs(qoder): align runTurn recovery contract
)

* fix(openai-chat): preserve Mistral typed text and thinking blocks

* Preserve typed content in both response paths.
* Add regression tests and update adapter documentation.

* fix(openai-chat): reset inline tags at typed reasoning boundaries

* Flush pending text before typed reasoning in both response paths.
* Add four regression cases and document the boundary.

Review: #7047 (comment)
…ss (#7038)

* test(config): preserve generation child startup diagnostics

Drain bounded stdout and stderr from generation-race children, identify exits before readiness, and report per-child missing files and import phases. Reap owned children in a finally block when readiness or outcome collection fails.

Keep the 10-second readiness and child deadlines and the exact-one-callback generation assertions unchanged. Add real-child regressions for early exit, bounded capture, and cleanup. This records evidence for a startup timeout; it does not claim that timeout is fixed.

Reconstruct the test-only follow-up from #7017 on current dev.
Source-commit: 3e76357
Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>

* test(windows): align tray probe readiness with production startup

Perform production initialization and its initial launch tick before measuring maintenance, then wait for the actual child PID readiness signal instead of a fixed sleep. Retain the 250 ms maintenance bound, process reaping assertions, and delayed Online readiness coverage.

Reconstruct the test-only follow-up from #7017 on current dev. Native Windows validation of this new candidate is still required; prior source-commit CI is not evidence for this candidate.
Source-commit: 23b4333
Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: bitkyc08-arch <bitkyc08@gmail.com>
…#7030)

* fix(responses): preserve tool catalog boundaries across inbound wires

Honor deferred Chat and Messages catalogs while enforcing explicit empty declarations. Preserve deterministic refusal codes and normalize declared default names across streaming and JSON responses.

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* docs(responses): describe native-lane guard activation accurately

* docs(responses): keep wire-shapes doc within line budget

---------

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: jun <jun@juns-Mac-Studio.local>
…push to dev/main (#7052)

Co-authored-by: jun <jun@juns-Mac-Studio.local>
* fix(claude): reject non-regular Desktop configuration reads

Read library metadata and profiles through checked regular-file descriptors and preserve open error identity. Retain filtered OAuth child failure diagnostics used during validation.

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* docs(structure): split Desktop config-read contract under the doc budget

---------

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: bitkyc08-arch <bitkyc08@gmail.com>
Use the shared integration reader for default ZCode bootstrap discovery.
Preserve relocation and explicit data-root overrides, cover real-file
boundaries, and document the bootstrap and fixture contracts.

Co-authored-by: Epinephrine <27862058+luvs01@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: bitkyc08-arch <bitkyc08@gmail.com>
…eed picker (#7050)

* fix(codex): offer Ultrafast for GPT-6 Astra and GPT-6.1 Sol in the speed picker

With the Ultra Fast switch on, the generated model catalog now adds the
documented Ultrafast service tier to native gpt-6-astra and gpt-6.1-sol
rows (bare and account-bound), so Codex Desktop and the CLI offer it next
to Fast. Codex builds its speed menu from model_catalog_json, which
replaces ChatGPT's plan-aware live list, and our catalog only carried the
bundled priority tier. Disabling the switch withdraws the exact generated
descriptor and leaves operator-written entries alone.

Co-authored-by: 정우철 <oocheol@naver.com>

* fix(codex): track generated native Ultrafast tiers with an explicit marker

Withdrawing the tier no longer infers ownership from matching text, so an
operator-written native Ultrafast entry identical to the generated one
survives turning the switch off. Addresses Codex review on #7050.

---------

Co-authored-by: 정우철 <oocheol@naver.com>
Co-authored-by: jun <jun@juns-Mac-Studio.local>
Co-authored-by: jun <jun@juns-Mac-Studio.local>
Co-authored-by: jun <jun@juns-Mac-Studio.local>
Co-authored-by: jun <jun@juns-Mac-Studio.local>
lidge-jun and others added 16 commits October 13, 2026 10:46
…allback (#7043) (#7074)

* fix(update): recover through launchd/systemd before an unsupervised fallback (#7043)

* fix(update): settle timed-out manager restarts, honor vetoes, ignore stale records (#7043 review)

---------

Co-authored-by: jun <jun@juns-Mac-Studio.local>
#6990) (#7070)

* fix(history): rebuild large request-history indexes on a worker thread (#6990)

Split from #6999. A full rebuild of a ledger of at least 1 MiB runs on a
Bun Worker that writes a private build file; the serving thread swaps it
in once complete. Async readers wait without blocking the event loop; the
routing-time sync entry throws RequestHistoryIndexBusyError, which health
scoring already reads as unknown evidence. Ingest moves to ingest.ts so
the worker and the inline path share it.

* test(layout): place the rebuild-worker test by seed instead of explicit entries

* fix(history): serve a successful rebuild at the async wait limit; map history in structure

Addresses Codex review on #7070: the build that reaches the async wait
limit is now refreshed and served instead of reported busy, and
structure/manifest.json maps src/routing/history/ to dashboard-and-usage.md.

* fix(history): rebuild inline for async readers after a worker failure

Addresses CodeRabbit review on #7070: during the worker-failure cooldown,
async readers and manual rebuilds fall back to the inline rebuild instead
of reporting busy; routing-time reads still never rebuild inline.

---------

Co-authored-by: jun <jun@juns-Mac-Studio.local>
…o pool recovery (#7046) (#7076)

* fix(codex): answer the main hard lock as a usage limit and clamp retry to pool recovery (#7046)

* fix(codex): recovery hint honors gated rosters and every routing hold (#7046 review)

* fix(codex): reuse the request-fenced model denials for the recovery hint (#7046)

---------

Co-authored-by: jun <jun@juns-Mac-Studio.local>
Rebased onto dev as a single commit for #5955. Resolved the src/server/chat-completions.ts import conflict by keeping both the advisor capability import and the UNDECLARED_TOOL_CALL_ERROR_CODE import from dev.

Co-authored-by: leaf <leaf@users.noreply.github.com>
Rebased onto dev as a single commit for #6079. Regenerated structure/INDEX.md with bun run structure:index.

Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
Co-authored-by: lcxhh521 <59329914+lcxhh521@users.noreply.github.com>
Co-authored-by: JUN <jun@lidgeai.com>
…ettings (#6934)

* feat(claude): configure CLI tier defaults and explicitly apply user settings

Rebased onto dev as a single commit for #6934. Resolved structure/runtime.md by keeping both paragraphs and dropped one blank line in structure/clients/claude-desktop.md to stay within its 600-line doc budget.

Co-authored-by: JUN <jun@lidgeai.com>

* fix(claude): mark tier-default preview routes as interactive-preview exemptions

Dev's capability/route parity gate requires every management route to be covered by a CLI capability or explicitly exempt. The preview/apply pair is a GUI-only fingerprint workflow, which is exactly the interactive-preview exemption.

---------

Co-authored-by: GSL-R <174104911+GSL-R@users.noreply.github.com>
Co-authored-by: JUN <jun@lidgeai.com>
Co-authored-by: jun <jun@juns-Mac-Studio.local>
* feat(clients): add Qoder client integration and config export

Rebased onto dev as a single commit for #5950. Kept every client that dev added (Command Code, Kilo, Factory Droid) and placed Qoder beside them in each list, raising the client counts to nineteen. Dev's new CLI integration-plan decoder now lists qoder and accepts its modelConfigs.customModels.* managed path, matching the GUI decoder.

* docs(structure): move Qoder ownership notes to clients/qoder.md

clients/integrations.md was already at its 600-line budget on dev, so the Qoder section now lives in its own registered doc and is linked from the existing introduction.

* fix(gui): complete Qoder strings for the Portuguese locale

Dev added a pt catalog after this branch was cut, so it lacked the three Qoder keys. Qoder joins the product-name allowlists for zh-TW and French alongside Kilo and Factory Droid.

* fix(clients): honor QODER_CONFIG_DIR and keep Qoder in standard sync paths

Addresses the remaining review findings on #5950:

- qoderHomeDir resolves QODER_CONFIG_DIR (absolute or ~-relative; relative values are refused) and both the config path and integration detection use it.
- Owned-catalog refresh in ocx sync, /api/sync and catalog refresh now includes qoder.
- ocx export --client qoder asks the live /api/client-config route, like Raycast and Factory Droid, so the serving process's bind and unauthenticated loopback listener decide the exported URL. The split-port case is covered by the shared listener-policy test.

* fix(gui): clarify the Qoder loopback requirement in French

---------

Co-authored-by: jun <jun@juns-Mac-Studio.local>
…ses hop) (#7080)

* feat(protocols): decode Chat straight into the IR on Antigravity routes

Behind protocols.rollout.antigravityDirect (default off), a Chat request whose settled route is one concrete Google Antigravity provider no longer goes through the internal Responses body. The ingress validates and decodes the conversation with chatConversationToIr and hands the Responses core only the request settings (chatSettingsToResponsesBody, built by the same applyChatSettings as the bridge body). The decoded conversation replaces the settings-only parse at the parse seam; the answer uses the direct Chat encoder. The trace reads chat -> ir -> other both ways.

The lane is held to the bridge it replaces: the parsed request equals parseRequest(chatCompletionsToResponsesBody(body)) apart from _rawBody and timestamps, refusals match, and the Google wire body is identical. A route that leaves Antigravity after the ingress decided gets the bridge conversation restored before any other reader sees the raw body.

Refs #7079

* docs(protocols): describe the Antigravity direct lane

Refs #7079

* fix(protocols): keep the Antigravity direct lane equal to the bridge under rewrites

Address independent review of the first head:
- decline when the core would rewrite conversation text on the bridge body (a skills catalog, a generated-image link) or the cache diagnostic recorder is observing;
- restore the bridge conversation right after every route assignment, before sanitization, ciphertext stripping and injected guidance can touch the raw body;
- judge ambiguous-resend replay on the body the bridge would have sent;
- predict the lane only for standalone routes, not combo children;
- skip an own __proto__ parameter key as the schema parse does;
- rename the eligibility test so its seed domain matches its registration.

Refs #7079

* fix(protocols): decline the direct lane only while cache diagnostics record

The cache diagnostic hook is registered whenever its module loads; recording is gated by
OPENCODEX_CACHE_DEBUG. Checking registration alone declined every request and made the lane
unreachable. The hook now reports its enabled state.

Refs #7079
PackyCode is no longer a sponsor. Drop the README sponsor rows, sponsor logo and marketing screenshots, the registry sponsor field, the affiliate dashboard link, the provider overview sponsor card and its localized copy. The packycode provider preset itself stays as an ordinary key preset.

Co-authored-by: jun <jun@juns-Mac-Studio.local>
… an unsupervised fallback (#7043) (#7078)

* fix(update): dashboard update restarts through launchd/systemd before an unsupervised fallback (#7043)

Ports the #7074 manager-first recovery to the dashboard update worker in src/update/job.ts.

* fix(update): report every managed fallback exit as unsupervised after a failed manager restart

* fix(update): release the update lease before every dashboard manager restart

* fix(update): keep service manager stderr out of the dashboard job log

---------

Co-authored-by: jun <jun@juns-Mac-Studio.local>
…on, 4.6/5.5 by account roster) (#7071)

* feat(google): add Gemini 4 Argon (gemini-4-argon)

* feat(antigravity): serve Gemini 4 Argon with the CLI User-Agent

Adds gemini-4-argon to the google-antigravity picker with low/medium/high mapped to the verified gemini-4-argon-{low,medium,high} wire ids. CCA serves those ids only to the Antigravity CLI User-Agent, so Argon inference and model discovery use antigravity/cli/1.3.4 while every other model keeps the IDE User-Agent.

* feat(antigravity): trim the static lineup to 3.8 Flash, 4 Argon, Opus 5.5 and Sonnet 5.5

The static google-antigravity picker now lists gemini-3.8-flash, gemini-4-argon, claude-opus-5-5 and claude-sonnet-5-5. Claude 5.5 gets the same low/medium/high suffix-tier mapping as Argon and 3.8 Flash. Dropped bases (3.7 Flash, 3.1 Pro, 3.1 Flash Image, Claude 4.6, gpt-oss) stay known to routing, discovery collapse and usage identity, so saved selections route unchanged and discovered rows still appear.

* fix(antigravity): keep migrations and discovery tests consistent with the trimmed lineup

Retired 3.5/3.6 Flash selections now migrate to the live gemini-3.8-flash base (registrySeedsTarget refused 3.7 once it left the lineup). Discovery-only family tests use a hypothetical claude-opus-6-1 because Claude 5.5 now has a static ladder. The static catalog count is 4.

* feat(antigravity): filter and route models by each account roster

Antigravity gates models per account (Claude 4.6 on some accounts, Claude 5.5 suffix families on others, Gemini 4 Argon on Ultra/Enterprise). Discovery now records each account roster; account selection prefers an account whose roster lists the requested model, skips a known non-listing account, and treats a missing roster as unknown. The catalog keeps exposing only the active account discovery, and the static-lineup drop is no longer warned as drift.
…7081)

* feat(protocols): decode Messages straight into the IR on Antigravity routes

The Messages ingress plans the Antigravity direct lane before translating:
the settings-only body carries the resolved model, prompt-cache key and
reasoning settings, the route is previewed on that model, and the
conversation is decoded into the IR (messages-ir.ts) only for an eligible
route. Routing then settles on the same body; if it moves, the full bridge
translation replaces it. Refs #7079.

* feat(protocols): turn the Antigravity direct lane on by default

protocols.rollout.antigravityDirect now defaults on for the Chat and
Messages ingresses. An explicit false turns it off; a non-boolean value or
a malformed protocols block fails closed. Requests the eligibility rule
declines keep the bridge as before.

* docs(protocols): describe the Messages direct lane and its default

* fix(protocols): hand an abandoned Messages direct plan's budget back

A plan the ingress abandons (an undecodable envelope the bridge retries, or
a settled route that moved) released none of the reasoning copies its decode
retained, so the bridge translation that followed could answer 413 where the
bridge alone fits. The decode now records its retained charges and the plan
releases them when it is left.

* fix(protocols): release the settings-only body's charge when leaving the plan

leaveDirectPlan charged the full translation without handing back the
retained charge for the settings-only body it replaced, so a route that
settled off the plan (a per-model wire override, say) could answer 413 where
the bridge alone fits. It also dropped the stale replay map.
…(Windows file ids exceed 2^53) (#7087)

Co-authored-by: jun <jun@juns-Mac-Studio.local>
…own (Windows EBUSY) (#7088)

Co-authored-by: jun <jun@juns-Mac-Studio.local>
…pool block (Windows EBUSY) (#7091)

Co-authored-by: jun <jun@juns-Mac-Studio.local>
@lidge-jun
lidge-jun requested a review from Ingwannu as a code owner October 14, 2026 05:12
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-14T05:35:44.608012Z faa8572 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions

Copy link
Copy Markdown
Contributor

✅ Deterministic PR hygiene checks passed.

@coderabbitai

coderabbitai Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 583 files, which is 283 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration
  • Configuration used: Repository: lidge-jun/opencodex/.coderabbit.yaml
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 53d37460-7288-4221-a487-6e46c85e73c0
📥 Commits

Reviewing files that changed from the base of the PR and between 6955343 and faa8572.

⛔ Files ignored due to path filters: 7
  • assets/sponsors/packycode-overview-mobile.png is excluded by !**/*.png
  • assets/sponsors/packycode-overview.png is excluded by !**/*.png
  • assets/sponsors/packycode-picker.png is excluded by !**/*.png
  • assets/sponsors/packycode-readme.png is excluded by !**/*.png
  • assets/sponsors/packycode.png is excluded by !**/*.png
  • desktop/src-tauri/Cargo.lock is excluded by !**/*.lock
  • src/generated/model-metadata.ts is excluded by !**/generated/**
📒 Files selected for processing: 583
  • .github/workflows/catalog-async-contracts.yml
  • .github/workflows/ci.yml
  • .github/workflows/codex-queue-helpers.yml
  • .github/workflows/service-lifecycle.yml
  • AGENTS.md
  • CONTRIBUTING.md
  • README.md
  • bin/ocx.mjs
  • desktop/src-tauri/Cargo.toml
  • desktop/src-tauri/src/cli_command_posix.rs
  • desktop/src-tauri/src/login_registration.rs
  • desktop/src-tauri/tauri.conf.json
  • devlog/_fin/260905_test_modularization_and_windows/001_test_inventory.md
  • devlog/_plan/260924_protocol_first_class/040_acceptance_and_rollout.md
  • devlog/_plan/261014_antigravity_direct_protocols/000_plan.md
  • docs-site/astro.config.mjs
  • docs-site/src/content/docs/fr/getting-started/quickstart.md
  • docs-site/src/content/docs/fr/guides/claude-code.md
  • docs-site/src/content/docs/fr/guides/codex-integration.md
  • docs-site/src/content/docs/fr/guides/minimax.md
  • docs-site/src/content/docs/fr/guides/providers.md
  • docs-site/src/content/docs/fr/reference/configuration/advisor.md
  • docs-site/src/content/docs/fr/reference/configuration/providers.md
  • docs-site/src/content/docs/fr/reference/configuration/server.md
  • docs-site/src/content/docs/fr/reference/proxy-formats.md
  • docs-site/src/content/docs/getting-started/installation.md
  • docs-site/src/content/docs/getting-started/quickstart.md
  • docs-site/src/content/docs/guides/chatgpt-desktop.md
  • docs-site/src/content/docs/guides/claude-code.md
  • docs-site/src/content/docs/guides/codex-app-models.md
  • docs-site/src/content/docs/guides/codex-integration.md
  • docs-site/src/content/docs/guides/desktop-app.md
  • docs-site/src/content/docs/guides/integrations.md
  • docs-site/src/content/docs/guides/minimax.md
  • docs-site/src/content/docs/guides/protocol-paths.md
  • docs-site/src/content/docs/guides/providers.md
  • docs-site/src/content/docs/guides/remote-hub.md
  • docs-site/src/content/docs/ja/getting-started/quickstart.md
  • docs-site/src/content/docs/ja/guides/claude-code.md
  • docs-site/src/content/docs/ja/guides/codex-integration.md
  • docs-site/src/content/docs/ja/guides/minimax.md
  • docs-site/src/content/docs/ja/guides/providers.md
  • docs-site/src/content/docs/ja/reference/configuration/advisor.md
  • docs-site/src/content/docs/ja/reference/configuration/providers.md
  • docs-site/src/content/docs/ja/reference/configuration/server.md
  • docs-site/src/content/docs/ja/reference/proxy-formats.md
  • docs-site/src/content/docs/ko/getting-started/installation.md
  • docs-site/src/content/docs/ko/getting-started/quickstart.md
  • docs-site/src/content/docs/ko/guides/claude-code.md
  • docs-site/src/content/docs/ko/guides/codex-app-models.md
  • docs-site/src/content/docs/ko/guides/codex-integration.md
  • docs-site/src/content/docs/ko/guides/desktop-app.md
  • docs-site/src/content/docs/ko/guides/minimax.md
  • docs-site/src/content/docs/ko/guides/providers.md
  • docs-site/src/content/docs/ko/reference/configuration/advisor.md
  • docs-site/src/content/docs/ko/reference/configuration/providers.md
  • docs-site/src/content/docs/ko/reference/configuration/server.md
  • docs-site/src/content/docs/ko/reference/proxy-formats.md
  • docs-site/src/content/docs/reference/adapters.md
  • docs-site/src/content/docs/reference/cli/agents.md
  • docs-site/src/content/docs/reference/cli/lifecycle.md
  • docs-site/src/content/docs/reference/codex-retry-diagnostics.md
  • docs-site/src/content/docs/reference/configuration/advisor.md
  • docs-site/src/content/docs/reference/configuration/providers.md
  • docs-site/src/content/docs/reference/configuration/routing.md
  • docs-site/src/content/docs/reference/configuration/server.md
  • docs-site/src/content/docs/reference/management-api.md
  • docs-site/src/content/docs/reference/proxy-formats.md
  • docs-site/src/content/docs/ru/getting-started/quickstart.md
  • docs-site/src/content/docs/ru/guides/claude-code.md
  • docs-site/src/content/docs/ru/guides/codex-integration.md
  • docs-site/src/content/docs/ru/guides/minimax.md
  • docs-site/src/content/docs/ru/guides/providers.md
  • docs-site/src/content/docs/ru/reference/configuration/advisor.md
  • docs-site/src/content/docs/ru/reference/configuration/providers.md
  • docs-site/src/content/docs/ru/reference/configuration/server.md
  • docs-site/src/content/docs/ru/reference/proxy-formats.md
  • docs-site/src/content/docs/tr/getting-started/quickstart.md
  • docs-site/src/content/docs/tr/guides/claude-code.md
  • docs-site/src/content/docs/tr/guides/codex-integration.md
  • docs-site/src/content/docs/tr/guides/minimax.md
  • docs-site/src/content/docs/tr/guides/providers.md
  • docs-site/src/content/docs/tr/reference/configuration/advisor.md
  • docs-site/src/content/docs/tr/reference/configuration/providers.md
  • docs-site/src/content/docs/tr/reference/configuration/server.md
  • docs-site/src/content/docs/tr/reference/proxy-formats.md
  • docs-site/src/content/docs/troubleshooting/update-failed.md
  • docs-site/src/content/docs/zh-cn/getting-started/quickstart.md
  • docs-site/src/content/docs/zh-cn/guides/claude-code.md
  • docs-site/src/content/docs/zh-cn/guides/codex-integration.md
  • docs-site/src/content/docs/zh-cn/guides/minimax.md
  • docs-site/src/content/docs/zh-cn/guides/providers.md
  • docs-site/src/content/docs/zh-cn/reference/configuration/advisor.md
  • docs-site/src/content/docs/zh-cn/reference/configuration/providers.md
  • docs-site/src/content/docs/zh-cn/reference/configuration/server.md
  • docs-site/src/content/docs/zh-cn/reference/proxy-formats.md
  • docs-site/src/content/docs/zh-tw/getting-started/quickstart.md
  • docs-site/src/content/docs/zh-tw/guides/claude-code.md
  • docs-site/src/content/docs/zh-tw/guides/codex-integration.md
  • docs-site/src/content/docs/zh-tw/guides/minimax.md
  • docs-site/src/content/docs/zh-tw/guides/providers.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/advisor.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/providers.md
  • docs-site/src/content/docs/zh-tw/reference/configuration/server.md
  • docs-site/src/content/docs/zh-tw/reference/proxy-formats.md
  • gui/src/App.tsx
  • gui/src/app-routing.ts
  • gui/src/components/UltraFastTierSetting.tsx
  • gui/src/components/apikeys-workspace/client-config-clients.ts
  • gui/src/components/integration-marks.ts
  • gui/src/components/provider-workspace/ProviderSponsor.tsx
  • gui/src/desktop-compatibility-api.ts
  • gui/src/i18n/de.ts
  • gui/src/i18n/desktop-compatibility-copy.ts
  • gui/src/i18n/en.ts
  • gui/src/i18n/fr.ts
  • gui/src/i18n/ja.ts
  • gui/src/i18n/ko.ts
  • gui/src/i18n/pt.ts
  • gui/src/i18n/ru.ts
  • gui/src/i18n/tr.ts
  • gui/src/i18n/vi.ts
  • gui/src/i18n/zh-TW.ts
  • gui/src/i18n/zh.ts
  • gui/src/nav-groups.ts
  • gui/src/pages/Advisor.tsx
  • gui/src/pages/ClaudeCode.tsx
  • gui/src/pages/CodexSet.tsx
  • gui/src/pages/Startup.tsx
  • gui/src/pages/claude-code-save.ts
  • gui/src/pages/claude-code-tier-defaults.tsx
  • gui/src/pages/codex-desktop-compatibility.tsx
  • gui/src/pages/codex-set-tab.ts
  • gui/src/pages/desktop-compatibility-startup-setting.tsx
  • gui/src/pages/integrations/FileIntegrationPage.tsx
  • gui/src/pages/integrations/integration-api.ts
  • gui/src/pages/integrations/integration-tabs.ts
  • gui/src/pages/integrations/overview-clients.ts
  • gui/src/pages/startup-sections.tsx
  • gui/src/pages/startup-shared.ts
  • gui/tests/advisor-save-feedback.test.tsx
  • gui/tests/claude-code-background-helper.test.tsx
  • gui/tests/claude-code-save.test.ts
  • gui/tests/claudecode-save-bar.test.tsx
  • gui/tests/client-config-panel.test.tsx
  • gui/tests/codex-set-shell.test.tsx
  • gui/tests/desktop-compatibility-api.test.ts
  • gui/tests/desktop-compatibility-panel.test.tsx
  • gui/tests/fr-localization.test.ts
  • gui/tests/integrations-api.test.ts
  • gui/tests/locale-parity.test.ts
  • gui/tests/provider-catalog-sponsor-pinning.test.ts
  • gui/tests/provider-sponsor-overview.test.tsx
  • gui/tests/sidebar-codex-set.test.ts
  • gui/tests/sidebar-rows.test.ts
  • gui/tests/startup-minimal.test.tsx
  • package.json
  • readme/README.fr.md
  • readme/README.ja.md
  • readme/README.ko.md
  • readme/README.ru.md
  • readme/README.tr.md
  • readme/README.zh-CN.md
  • readme/README.zh-TW.md
  • readme/i18n-manifest.json
  • scripts/build-standalone.ts
  • scripts/diagnostics/windows-version-control/README.md
  • scripts/diagnostics/windows-version-control/src/control.rs
  • scripts/diagnostics/windows-version-control/src/fixture_env.rs
  • scripts/diagnostics/windows-version-control/src/main.rs
  • scripts/diagnostics/windows-version-control/tests/async_contracts.test.rs
  • scripts/generate-ocx-skill-surface.ts
  • scripts/model-metadata.source.json
  • scripts/test-layout/layout-clients.json
  • scripts/test-layout/layout.json
  • scripts/test-layout/schema.ts
  • scripts/test-layout/seeds.json
  • skills/ocx/references/01_management_surface.md
  • skills/ocx/references/01_surface_access-remote.md
  • skills/ocx/references/01_surface_agents-routing.md
  • src/adapters/anthropic/beta-allowlist.ts
  • src/adapters/anthropic/client-identity.ts
  • src/adapters/anthropic/passthrough.ts
  • src/adapters/azure.ts
  • src/adapters/client-fingerprint.ts
  • src/adapters/coding-agent/turn.ts
  • src/adapters/cursor/arg-codec.ts
  • src/adapters/cursor/catalog.ts
  • src/adapters/cursor/effort-map.ts
  • src/adapters/cursor/freeform-args.ts
  • src/adapters/cursor/protobuf-events.ts
  • src/adapters/google-antigravity-wire.ts
  • src/adapters/google.ts
  • src/adapters/openai-chat.ts
  • src/adapters/openai-chat/response-events.ts
  • src/adapters/qoder/adapter.ts
  • src/advisor/consult.ts
  • src/advisor/context.ts
  • src/advisor/disclosure.ts
  • src/advisor/runtime.ts
  • src/advisor/settings.ts
  • src/advisor/state.ts
  • src/advisor/synthetic-tool.ts
  • src/bridge/errors.ts
  • src/chat/inbound.ts
  • src/chat/outbound.ts
  • src/claude/desktop-3p-library.ts
  • src/claude/desktop-3p.ts
  • src/claude/desktop-picker-profile.ts
  • src/claude/desktop-profile.ts
  • src/claude/desktop-remote-store-io.ts
  • src/claude/inbound.ts
  • src/claude/intercept/local-ca.ts
  • src/claude/model-default-settings.ts
  • src/claude/model-info.ts
  • src/claude/outbound.ts
  • src/cli/advisor.ts
  • src/cli/capabilities-agents-routing.ts
  • src/cli/capabilities-base.ts
  • src/cli/chatgpt-command.ts
  • src/cli/claude.ts
  • src/cli/dispatch.ts
  • src/cli/doctor.ts
  • src/cli/ensure-desktop-cold-start.ts
  • src/cli/export-command.ts
  • src/cli/help.ts
  • src/cli/index.ts
  • src/cli/integration-plan-dto.ts
  • src/cli/registry.ts
  • src/cli/restart-scope.ts
  • src/clients/config-export.ts
  • src/clients/config-export/contracts.ts
  • src/clients/config-export/model-metadata.ts
  • src/clients/config-export/qoder.ts
  • src/codex/auth-context.ts
  • src/codex/autostart-health.ts
  • src/codex/catalog/build-entries.ts
  • src/codex/catalog/configured-tiers.ts
  • src/codex/catalog/effort.ts
  • src/codex/catalog/model-hints.ts
  • src/codex/catalog/native-ultrafast.ts
  • src/codex/catalog/parsing.ts
  • src/codex/catalog/provider-models.ts
  • src/codex/catalog/retained-sync.ts
  • src/codex/catalog/routed-gather.ts
  • src/codex/catalog/vendor-context.ts
  • src/codex/config-write-lock.ts
  • src/codex/convergence.ts
  • src/codex/desktop-app-restart.ts
  • src/codex/desktop-app/types.ts
  • src/codex/desktop-app/windows.ts
  • src/codex/desktop-compatibility/certificate-service.ts
  • src/codex/desktop-compatibility/certificate-store.ts
  • src/codex/desktop-compatibility/connection-store.ts
  • src/codex/desktop-compatibility/installed-build.ts
  • src/codex/desktop-compatibility/json-body.ts
  • src/codex/desktop-compatibility/native-identity.ts
  • src/codex/desktop-compatibility/relay-listener.ts
  • src/codex/desktop-compatibility/routing-binding.ts
  • src/codex/desktop-compatibility/routing-preflight.ts
  • src/codex/desktop-compatibility/runtime-ownership.ts
  • src/codex/desktop-compatibility/runtime.ts
  • src/codex/desktop-compatibility/service.ts
  • src/codex/desktop-compatibility/startup-settings.ts
  • src/codex/desktop-compatibility/usage-activation.ts
  • src/codex/desktop-compatibility/usage-controlled-fetch.ts
  • src/codex/desktop-compatibility/usage-controller.ts
  • src/codex/desktop-compatibility/usage-policy.ts
  • src/codex/desktop-compatibility/usage-refresh.ts
  • src/codex/desktop-compatibility/usage-sse-controller.ts
  • src/codex/desktop-compatibility/windows-activation-source.ts
  • src/codex/desktop-compatibility/windows-certificate-trust.ts
  • src/codex/desktop-compatibility/windows-key-protection.ts
  • src/codex/desktop-compatibility/windows-package-command.ts
  • src/codex/desktop-compatibility/windows-package-launch.ts
  • src/codex/history-provider.ts
  • src/codex/inject/config-write-section.ts
  • src/codex/inject/remove.ts
  • src/codex/journal.ts
  • src/codex/main-account.ts
  • src/codex/native-main-refresh-mode.ts
  • src/codex/routing/health-store.ts
  • src/codex/routing/pool-recovery.ts
  • src/codex/shim-diagnostics.ts
  • src/codex/shim-overlay.ts
  • src/config/diagnostics.ts
  • src/config/live-reconcile.ts
  • src/config/load-degrade.ts
  • src/config/schema/config-schema.ts
  • src/config/schema/desktop-compatibility.ts
  • src/config/schema/leaf-validators.ts
  • src/integrations/catalog-refresh.ts
  • src/integrations/config-io.ts
  • src/integrations/journal.ts
  • src/integrations/mutation-plan.ts
  • src/integrations/registry.ts
  • src/integrations/store.ts
  • src/integrations/writer.ts
  • src/lib/advisor-activation.ts
  • src/lib/bounded-file-read.ts
  • src/lib/bun-path-runtime.d.mts
  • src/lib/bun-path-runtime.mjs
  • src/lib/desktop-proxy-route.ts
  • src/lib/desktop-upstream-tunnel.ts
  • src/lib/errors.ts
  • src/lib/local-internal-call-capability.ts
  • src/lib/package-tree-integrity.ts
  • src/lib/socks5-fetch.ts
  • src/lib/socks5-handshake.ts
  • src/lib/translator-budget.ts
  • src/oauth/generic-account-failover.ts
  • src/oauth/index.ts
  • src/oauth/kiro-device-login.ts
  • src/oauth/kiro.ts
  • src/protocols/codecs/chat-ir.ts
  • src/protocols/codecs/chat.ts
  • src/protocols/codecs/messages-ir.ts
  • src/protocols/features.ts
  • src/protocols/path.ts
  • src/protocols/plan-snapshot.ts
  • src/protocols/plan.ts
  • src/protocols/settings.ts
  • src/providers/antigravity-account-roster.ts
  • src/providers/antigravity-models.ts
  • src/providers/model-rename-fields.ts
  • src/providers/model-rename-migration.ts
  • src/providers/registry/entries-core.ts
  • src/providers/registry/entries-extended.ts
  • src/responses/parser.ts
  • src/routing/history/build-file.ts
  • src/routing/history/indexer.ts
  • src/routing/history/ingest.ts
  • src/routing/history/rebuild-job.ts
  • src/routing/history/rebuild-protocol.ts
  • src/routing/history/rebuild-worker.ts
  • src/server/admission-model-scope.ts
  • src/server/antigravity-direct-eligibility.ts
  • src/server/auth-cors.ts
  • src/server/chat-completions.ts
  • src/server/claude-messages.ts
  • src/server/index.ts
  • src/server/index/desktop-compatibility-startup.ts
  • src/server/index/serve-options.ts
  • src/server/index/startup-warnings.ts
  • src/server/index/websocket-handler.ts
  • src/server/inference/client-encoder-delivery.ts
  • src/server/login-shell-path.ts
  • src/server/management-api.ts
  • src/server/management/advisor-routes.ts
  • src/server/management/agent-settings-routes.ts
  • src/server/management/companion-routes.ts
  • src/server/management/config-routes.ts
  • src/server/management/context.ts
  • src/server/management/desktop-compatibility-routes.ts
  • src/server/management/desktop-compatibility-runtime-routes.ts
  • src/server/management/desktop-compatibility-settings-routes.ts
  • src/server/management/model-routes.ts
  • src/server/management/protocol-settings-patch.ts
  • src/server/management/route-registry.ts
  • src/server/management/sibling-guard.ts
  • src/server/messages-antigravity-direct.ts
  • src/server/messages-native.ts
  • src/server/request-log.ts
  • src/server/responses-undeclared-tool-guard.ts
  • src/server/responses/adapter-continuation.ts
  • src/server/responses/adapter-delivery.ts
  • src/server/responses/adapter-dispatch.ts
  • src/server/responses/advisor-plan-slot.ts
  • src/server/responses/advisor-slot.ts
  • src/server/responses/code-mode-collab-surface.ts
  • src/server/responses/core-combo-failure.ts
  • src/server/responses/core-combo.ts
  • src/server/responses/core-lifetime.ts
  • src/server/responses/core-normalize.ts
  • src/server/responses/core-options.ts
  • src/server/responses/core-replay.ts
  • src/server/responses/core.ts
  • src/server/responses/passthrough-delivery.ts
  • src/server/responses/passthrough-dispatch.ts
  • src/server/responses/request-prepare.ts
  • src/server/responses/request-transport.ts
  • src/server/responses/run-turn-execution.ts
  • src/server/responses/sidecar-execution.ts
  • src/server/responses/terminal-guard.ts
  • src/server/startup-action-control.ts
  • src/server/startup-health-cache.ts
  • src/service/desktop-startup.ts
  • src/service/health-sentinel-main.ts
  • src/service/health-sentinel-probe.ts
  • src/service/logging.ts
  • src/types/config.ts
  • src/types/provider.ts
  • src/types/request.ts
  • src/types/tools.ts
  • src/update/async-check.ts
  • src/update/badge.ts
  • src/update/index.ts
  • src/update/job-supervised-restart.ts
  • src/update/job.ts
  • src/update/notify.ts
  • src/update/refresh-scheduler.ts
  • src/update/supervised-recovery.d.mts
  • src/update/supervised-recovery.mjs
  • src/usage/cache-diagnostic.ts
  • src/usage/expected-prices.ts
  • src/web-search/gemini-executor.ts
  • structure/INDEX.md
  • structure/advisor.md
  • structure/catalog-vendor-context.md
  • structure/catalog.md
  • structure/clients/chatgpt-desktop.md
  • structure/clients/claude-desktop-config-reads.md
  • structure/clients/claude-desktop.md
  • structure/clients/codex-desktop.md
  • structure/clients/integrations.md
  • structure/clients/qoder.md
  • structure/codex-home.md
  • structure/config.md
  • structure/dashboard-and-usage.md
  • structure/data-planes/protocol-paths.md
  • structure/desktop-start-at-login.md
  • structure/desktop-terminal-command.md
  • structure/gui-and-management-api.md
  • structure/manifest.json
  • structure/ops/docs-and-release.md
  • structure/ops/service-and-sidecars.md
  • structure/ops/service-health-recovery.md
  • structure/ops/service-logging.md
  • structure/ops/update-supervised-recovery.md
  • structure/overview.md
  • structure/providers-and-adapters.md
  • structure/providers/chat-compat.md
  • structure/providers/cursor.md
  • structure/providers/kiro.md
  • structure/providers/openai-accounts.md
  • structure/runtime.md
  • structure/subagents.md
  • structure/transports/inventory.md
  • structure/transports/responses-failover.md
  • structure/transports/responses-spend.md
  • structure/transports/responses-wire-shapes.md
  • structure/transports/responses.md
  • tests/adapters/anthropic/anthropic-beta-allowlist.test.ts
  • tests/adapters/anthropic/anthropic-client-identity.test.ts
  • tests/adapters/google/antigravity-account-roster.test.ts
  • tests/adapters/google/antigravity-discovered-families.test.ts
  • tests/adapters/google/gemini-37-flash-migration.test.ts
  • tests/adapters/google/gemini-4-argon-antigravity.test.ts
  • tests/adapters/google/google-antigravity-wire.test.ts
  • tests/adapters/google/google-hardening.test.ts
  • tests/adapters/openai/openai-chat-mistral-content.test.ts
  • tests/advisor/advisor-authority-transport.test.ts
  • tests/advisor/advisor-consult.test.ts
  • tests/advisor/advisor-context.test.ts
  • tests/advisor/advisor-continuation-limit.test.ts
  • tests/advisor/advisor-core-boundary.test.ts
  • tests/advisor/advisor-guard.test.ts
  • tests/advisor/advisor-internal-authority.test.ts
  • tests/advisor/advisor-plan.test.ts
  • tests/advisor/advisor-responses-wiring.test.ts
  • tests/advisor/advisor-settings.test.ts
  • tests/advisor/advisor-state.test.ts
  • tests/ci-workflows/bun-runtime.test.ts
  • tests/ci-workflows/ci-review-lanes.test.ts
  • tests/ci-workflows/ci-scope-gaps.test.ts
  • tests/ci-workflows/ci-scope-reduction.test.ts
  • tests/ci-workflows/ci-structure-gate.test.ts
  • tests/ci-workflows/ci-workflows.test.ts
  • tests/ci-workflows/skill-ocx-generated.test.ts
  • tests/claude-integration/claude-cli.test.ts
  • tests/claude-integration/claude-desktop-discovery.test.ts
  • tests/claude-integration/claude-desktop-picker-profile.test.ts
  • tests/claude-integration/claude-desktop-remote-hub.test.ts
  • tests/claude-integration/claude-intercept-settings.test.ts
  • tests/claude-integration/claude-model-default-labels.test.ts
  • tests/claude-integration/claude-native-reasoning-provenance.test.ts
  • tests/claude-integration/claude-prompt-too-long.test.ts
  • tests/cli/cli-dispatch.test.ts
  • tests/cli/cli-ensure-desktop-cold-start.test.ts
  • tests/cli/cli-export-command.test.ts
  • tests/cli/cli-headless-parity.test.ts
  • tests/cli/ocx-launcher-runtime.test.ts
  • tests/clients/aside-profiles.test.ts
  • tests/clients/cline-writer.test.ts
  • tests/clients/desktop-3p-removal.test.ts
  • tests/clients/desktop-3p.test.ts
  • tests/clients/desktop-app-restart.test.ts
  • tests/clients/desktop-app-server-shim-launcher.test.ts
  • tests/clients/desktop-compatibility-authority.test.ts
  • tests/clients/desktop-compatibility-build-probe.test.ts
  • tests/clients/desktop-compatibility-certificate-service.test.ts
  • tests/clients/desktop-compatibility-connection-store.test.ts
  • tests/clients/desktop-compatibility-launch.test.ts
  • tests/clients/desktop-compatibility-native-identity.test.ts
  • tests/clients/desktop-compatibility-relay.test.ts
  • tests/clients/desktop-compatibility-routing.test.ts
  • tests/clients/desktop-compatibility-runtime.test.ts
  • tests/clients/desktop-compatibility-trust.test.ts
  • tests/clients/desktop-profile.test.ts
  • tests/clients/desktop-remote-store.test.ts
  • tests/clients/integrations-journal.test.ts
  • tests/clients/integrations-state.test.ts
  • tests/clients/integrations-writer.test.ts
  • tests/clients/qoder-client.test.ts
  • tests/clients/sync-client-integrations-unattended.test.ts
  • tests/clients/sync-client-integrations.test.ts
  • tests/codex-integration/active-turn-disconnect.test.ts
  • tests/codex-integration/code-mode-collab-surface.test.ts
  • tests/codex-integration/codex-catalog.test.ts
  • tests/codex-integration/codex-config-generation.test.ts
  • tests/codex-integration/codex-history-pending-wal.test.ts
  • tests/codex-integration/codex-journal-recovery.test.ts
  • tests/codex-integration/codex-journal.test.ts
  • tests/codex-integration/codex-main-account-refresh.test.ts
  • tests/codex-integration/codex-restart-route.test.ts
  • tests/codex-integration/codex-shim-overlay-readiness.test.ts
  • tests/codex-integration/codex-shim-overlay-transaction.test.ts
  • tests/codex-integration/codex-shim-overlay.test.ts
  • tests/codex-integration/configured-ultrafast-picker.test.ts
  • tests/codex-integration/main-account-hard-lock-usage-limit.test.ts
  • tests/codex-integration/native-main-refresh-mode.test.ts
  • tests/codex-integration/native-ultrafast-picker.test.ts
  • tests/codex-integration/vendor-context.test.ts
  • tests/config/client-config-export-new-clients.test.ts
  • tests/config/client-config-export.test.ts
  • tests/config/protocol-settings.test.ts
  • tests/fixtures/desktop-login-registration-cases.json
  • tests/fixtures/test-layout-expected.json
  • tests/gui/integrations-invariants.test.ts
  • tests/helpers/desktop-app-server-shim-command-child.ts
  • tests/helpers/desktop-egress-fixture.ts
  • tests/helpers/desktop-egress-worker.ts
  • tests/helpers/native-main-owner-child.ts
  • tests/helpers/native-owner-restart-service.ts
  • tests/helpers/responses-core-source.ts
  • tests/helpers/windows-tray-probe-lifecycle-driver.ps1
  • tests/lib/bounded-file-read.test.ts
  • tests/lib/optional-desktop-upstream.test.ts
  • tests/lib/socks5-tls-lifecycle.test.ts
  • tests/oauth/generic-oauth-failover.test.ts
  • tests/oauth/oauth-anthropic-instance-multiprocess.test.ts
  • tests/oauth/oauth-kiro-refresh-attention.test.ts
  • tests/oauth/oauth-provider-reconcile.test.ts
  • tests/providers/azure-adapter.test.ts
  • tests/providers/cursor/cursor-freeform-args.test.ts
  • tests/providers/cursor/cursor-protobuf-events.test.ts
  • tests/providers/github-copilot/github-copilot-auto-runtime.test.ts
  • tests/providers/kiro/kiro-device-social.test.ts
  • tests/providers/model-rename-migration.test.ts
  • tests/providers/modelflare-provider.test.ts
  • tests/providers/provider-antigravity-wire-snapshot.test.ts
  • tests/providers/provider-registry-parity.test.ts
  • tests/providers/qoder-adapter.test.ts
  • tests/providers/zcode-client.test.ts
  • tests/responses/passthrough-deferred-tools.test.ts
  • tests/responses/protocol-antigravity-direct-chat.test.ts
  • tests/responses/protocol-antigravity-direct-eligibility.test.ts
  • tests/responses/protocol-antigravity-direct-messages.test.ts
  • tests/responses/protocol-chat-ir-parity.test.ts
  • tests/responses/protocol-messages-ir-parity.test.ts
  • tests/responses/responses-compaction-http-isolation.test.ts
  • tests/responses/responses-compaction-routing.test.ts
  • tests/responses/responses-spend-anchor.test.ts
  • tests/responses/responses-undeclared-tool-guard-inbound.test.ts
  • tests/server/advisor-routes.test.ts
  • tests/server/login-shell-path.test.ts
  • tests/server/management-desktop-compatibility-routes.test.ts
  • tests/server/management-desktop-compatibility-runtime-routes.test.ts
  • tests/server/management-desktop-compatibility-settings.test.ts
  • tests/server/model-settings-management-api.test.ts
  • tests/server/server-desktop-compatibility-startup.test.ts
  • tests/server/server-key-failover-e2e.test.ts
  • tests/server/startup-action-control.test.ts
  • tests/service/service-health-sentinel-runner.test.ts
  • tests/service/service-log.test.ts
  • tests/test-layout-tooling.test.ts
  • tests/update/update-desktop-owner.test.ts
  • tests/update/update-job-supervised-restart.test.ts
  • tests/update/update-standalone.test.ts
  • tests/update/update-supervised-recovery.test.ts
  • tests/usage/request-history-rebuild-worker.test.ts
  • tests/usage/usage-cost.test.ts
  • tests/windows/windows-tray.test.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot changed the title release: 2.85.0 [WRONG BRANCH] release: 2.85.0 Oct 14, 2026
@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

⏳ DRAFT

  • wrong target branch (main); retarget to dev. UI screenshot required.

What to do

  • Retarget this PR to dev — all contributions go to dev.
  • Add a screenshot of the UI change to the PR description.

Its title has been prefixed with [WRONG BRANCH].
Automatic draft conversion failed (token cannot change draft status). Please convert this pull request to a draft manually. The required enforce-target check will keep failing until every issue above is resolved.

@github-actions
github-actions Bot marked this pull request as draft October 14, 2026 05:13

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: faa8572bce

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +176 to +177
options.directRequest = undefined;
if (body && typeof body === "object" && !Array.isArray(body)) Object.assign(body, direct.bridgeConversation());

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Release direct-decode charges before bridge fallback

When a large Anthropic Messages request initially takes the Antigravity direct lane and is later rerouted—for example by memory-model routing, a blocked-model redirect, or a combo—bridgeConversation() runs the full Messages translation against the same TranslatorBudget, while the direct decoder's retained reasoning charges and conversation remain live. Clearing options.directRequest does not release those charges, unlike the ingress-level leaveDirectPlan() path, so a request whose bridge representation fits under the 32 MiB limit can be rejected with translation_buffer_limit only because both representations are charged. Add a release hook to DirectRequestOption and invoke it when abandoning the direct lane before building the bridge conversation.

Useful? React with 👍 / 👎.


function snapshotFingerprint(current: ReturnType<typeof readSettings>, models: ClaudeTierModels | undefined) {
const target = selectedEnv(models, current.env);
return createHash("sha256").update(JSON.stringify([current.exists, current.raw, target])).digest("hex");
const serialized = JSON.stringify([nativeContext, owner.hostname, owner.port, owner.loopbackPort, projection], (_key, value) =>
record(value) ? Object.fromEntries(Object.keys(value).sort().map(key => [key, value[key]])) : value);
if (Buffer.byteLength(serialized) > 1048576) throw new Error("Routing snapshot too large");
return createHash("sha256").update(serialized).digest("hex");
@lidge-jun
lidge-jun marked this pull request as ready for review October 14, 2026 05:31
@lidge-jun
lidge-jun merged commit 732fba6 into main Oct 14, 2026
41 of 43 checks passed
@lidge-jun
lidge-jun deleted the release/promote-main-2.85.0 branch October 14, 2026 05:31

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

directConversation = chatConversationToIr(chatBody, chatBody.model as string);
internalBody = chatSettingsBody(chatBody);

P1 Badge Charge direct Chat decoding against the translator budget

When the default-on Antigravity direct lane receives a large Chat history, chatConversationToIr materializes uncharged copies such as parsed tool-argument objects and serialized reasoning signatures, while the later budget charge covers only the small settings-only internalBody. The bridge path instead charges the full translated body, so a near-limit reasoning_content or tool argument that would return translation_buffer_limit can bypass the 32 MiB translation cap and amplify memory across concurrent requests. Pass the request budget into the direct decoder and charge its retained allocations, with release semantics if the lane is abandoned.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.