Repository navigation
v2026.9.21.8-snapshot
·
342 commits
to feature/dev
since this release
Linux release assets
CLIProxyAPI_<version>_linux_<arch>.tar.gzis the default Linux build. It supports dynamic library plugins and is built against a GLIBC 2.17 baseline.CLIProxyAPI_<version>_linux_<arch>_no-plugin.tar.gzis the portable Linux build for musl-based or older systems such as OpenWrt. It does not support dynamic library plugins.
FreeBSD release assets
CLIProxyAPI_<version>_freebsd_aarch64_no-plugin.tar.gzis the FreeBSD arm64 build. It is built without CGO and does not support dynamic library plugins.
Changelog
- feat(meta): add native Meta (Muse Code) provider and OAuth device flow (54d4f4c)
- fix(cli): make config optional in commandMode so login works without existing config.yaml (fbf7464)
- feat(meta): mint LLM API key from device access token via /muse-code/key (30191c3)
- feat(meta): add Meta OAuth management endpoint and WebUI / TUI support (23c16e2)
- fix(management): disable caching for management.html to prevent stale SPA views (78c14b8)
- fix(tui): rename Meta provider label from Meta (Muse) to Meta (18385de)
- feat(meta): add Meta API key management handlers, routes, logo, and tests (e475807)
- fix(meta): address review feedback on credential lifecycle, models, and config loading (cee799f)
- fix(codex): recognize codex_exec user agent for multi-agent v2 optimization (923a8c3)
- fix(meta): exclude cleared expired timestamp on persist, add runtime alias resolution, and fix test race (47cc31a)
- chore(meta): keep provider PR scoped to Meta support (21aa46b)
- fix(meta): recover and persist minted credentials correctly (be7323f)
- fix(meta): implement request preparer, disable unconditional refresh, scope 429 quota, and stabilize auth index (d09042a)
- fix(meta): require OAuth storage for DCA tokens and reject them in config meta-api-key (1144ae7)
- fix(meta): validate catalog section, singleflight management mints, and synchronize singleflight test (06660dd)
- fix(meta): unify credential minting and preserve auth lifecycle (4a0131c)
- chore(models): remove gpt-5.4 and gpt-5.4-mini models (31ec436)
- fix(aistudio): normalize thinking level to uppercase (9dfddd6)
- fix(watcher): preserve concurrent file updates during auth snapshot rescans (084f25c)
- fix(claude): avoid mid-conversation system splicing for advisor calls or results (7c2f6ce)
- fix(codex): scope usage limit errors to credentials and parse flexible quota resets (5ab0bca)
- feat(usage): propagate session and parent session hierarchy to usage reporting queue (580df36)
- chore(codex): update codex user-agent to 0.153.3 (c76dfd4)
- perf(auth): optimize scheduler result updates with targeted model shards (fa01468)
- feat(pluginhost): expose outbound HTTP wire profile to plugin requests (00c63a5)
- feat(antigravity): add conversation compaction support and capsule encryption (70f4560)
- fix(xai): support compaction fallback from payload input or previous response id (0e85eb4)
- fix(gemini): append trailing user turn for requests ending with model content (5dc428f)
- fix(claude): preserve non-result block positions during tool result alignment (8564142)
- fix(antigravity): omit tools when tool_choice is none (a76da71)
- fix(auth): preserve active cooldown deadlines on subsequent failures (1c22598)
- fix(antigravity): enable thinking summary when responses reasoning effort is set (e92f6cf)
- fix(claude): normalize codex agent messages in responses conversion (d2f7122)
- feat: add Aiberm sponser (63fd255)
- fix Aiberm sponser logo (578ac8f)
- feat: add Aiberm sponsorship information to README_JA.md (4cd8ee7)
- feat: add link to Aiberm in sponsorship section of README files (934fb79)
- fix(gemini): hide trailing text thought signatures from responses timeline (510c9c8)
- fix(codex): restore dotted collaboration tool names in multi-agent v2 (82f4f37)
- fix(antigravity): default to short connections and harden connection pool lifecycle (fixes router-for-me#5494) (d539790)
- Merge pull request router-for-me#5596 from sususu98/fix/issue-5494-antigravity-idle-conns (f19d6da)
- fix(codex): simplify complex tool schema unions and detect empty incomplete responses (bf20b99)
- feat(claude): support structured output via system prompt instructions (4f03809)
- fix(wsrelay): preserve queued frames during terminal message delivery (7871a5a)
- fix(codex): preserve service tier and cache write tokens in openai responses (8696585)
- fix(codex): explicitly default function tool strict to false (d01516c)
- fix(codex): recover omitted tool namespaces in openai responses (03a054e)
- fix(codex): sanitize invalid tool name characters for upstream compatibility (bee20b9)
- fix(codex): recognize retryable server errors for bootstrap failover (ba7e558)
- fix(docs): remove Infistar.ai sponsorship details from README files (d198db5)
- fix(claude): default function parameters for tools without input schema (6e1f9ec)
- fix(antigravity): normalize gemini responseJsonSchema to responseSchema (dc21a42)
- fix(claude): align beta assembly and Haiku helper transport with the measured 2.1.258 (280b96a)
- fix(claude): attach helper request IDs according to the upstream base (35a4723)
- feat(kimi): support openai responses api (d4146bd)
- fix(antigravity): include resolved pool settings in transport cache key (68dd99d)
- fix(claude): enforce sequential content blocks for interleaved streaming tool calls (ef99119)
- fix(auth): cap refresh loop timer wait duration (48e5e9e)
- fix(claude): map codex reasoning tokens to thinking tokens (e365ab0)
- feat(session): enhance harness hierarchy recognition and deduplicate selector extraction (3905891)
- feat(usage): normalize reported session hierarchy to canonical UUIDv8 (6b187e7)
- fix(plugin-store): only check releases for installed update sources (1c9d719)
- fix(auth): strip monotonic clock reading from quota cooldown deadlines (1d5f7b2)
- fix(plugin-store): coalesce and throttle cached release checks (54b17ce)
- fix(plugin-store): honor shared GitHub API rate-limit cooldowns (8c0ad8c)
- feat(auth): export helper functions for headless antigravity oauth (20e3f73)
- perf(antigravity): batch functionResponse name repairs (d8f2dce)
- fix(plugin-store): add network scope handling for shared GitHub API cooldowns (3639d92)
- fix(api): skip access logging for health probes (e026cbf)
- fix(session): harden canonical UUIDv8 normalization for empty prefixes and context roots (1119ef1)
- fix(logging): silence only successful health probes (a163c5e)
- Merge pull request router-for-me#5625 from router-for-me/fix/issue-5608-plugin-store-rate-limit (f39702a)
- fix(gemini): normalize responses tool call outputs and resolve alternate call ids (d0bb908)
- Merge pull request router-for-me#5626 from nichaoshou/fix/healthz-access-log (454452d)
- feat(plugin): preserve raw json in management responses on schema version 6 (c6327a8)
- fix(gemini): reorder trailing text before function responses in user turns (4fde97f)
- fix(codex): strip schema dialect keywords from tool parameters (7fac6b1)
- feat(plugin): add host session affinity lookup callback (0796d6d)
- fix(claude): emit trailing usage chunk and aggregate stream usage (a59b176)
- feat(codex): support model-level quota cooling (b064b83)
- fix(translator): strip unsupported unicode property escape patterns from tool schemas (e56abd5)
- fix(schema): inspect patternProperties keys and avoid Unicode escape fast-path bypass (37ce368)
- Merge pull request router-for-me#5677 from sususu98/fix/codex-tool-schema-pattern (db01159)
- feat(management): add endpoint to refresh auth files (60e5b8b)
- feat(auth): propagate canonical session id for custom header expansion (3bf787f)
- fix(auth): classify terminal upstream auth failures as non-retryable errors (aedc9e6)
- feat(codex): add support for gpt-image-2.5 models (d1a024e)
- fix(claude): preserve 1h cache ttl and beta header for subagent requests (6a73f39)
- fix(openai): preserve prewarm input and allow named tool outputs in responses websocket (bd03aab)
- fix(openai): preserve nested error details and sequence numbers in responses stream (2591308)
- fix(codex): treat model capacity errors as bootstrap overload failures (3ae9093)
- fix(auth): enable model cooldown and rotation for model not found errors (dde250f)
- fix(translator): ignore null and empty finish reasons in openai to gemini response (4dce5f3)
- fix(stream): handle split CRLF across chunk boundaries in SSE validation (638ed7e)
- docs(readme): remove RunAPI sponsor (09a29bd)
- fix(openai): process reasoning deltas before content in responses stream (c8ecb4f)
- fix(antigravity): keep active block open on empty text parts in claude stream (fd3e662)
- fix(auth): treat cloudflare 520-526 origin errors as transient upstream failures (9fad505)
- fix(gemini): preserve function call pairing for interrupted calls and replay failures (b8e6ec0)
- fix(auth): bound force refresh all concurrency using worker pool (6dce786)
- fix(translator): ignore fco output item IDs when extracting responses call ID (5a07045)
- Merge dev into feat/meta-provider and preserve both registry tests (c6e076f)
- docs(readme): update links after GitHub username change (cfeeeb3)
- feat(usage): propagate upstream base_url across usage records and plugin auth (c8f723e)
- chore(codex): update codex user-agent to 0.154.0 (8461b4e)
- fix(codex): inherit template metadata for model aliases and restrict provider capabilities (8f23ad0)
- fix(translator): support incomplete status and response.incomplete event in responses translation (4efcac7)
- feat(auth): support execution result policy before quota and cooldown mutations (2912516)
- fix(translator): relay claude tool result images as user messages for openai (4cd1729)
- feat(auth): support organization-hashed claude credentials and legacy migration (fc96a87)
- fix(translator): preserve unknown thinking signatures in claude to codex compat translation (942bda9)
- fix(translator): support audio transcription parts in gemini response translation (5c80a01)
- fix(auth): drop stale auth updates using monotonic watcher revisions (d1702fd)
- fix(signature): preserve Gemini 3 server-side tool thought signatures (router-for-me#5652) (54776fb)
- fix(thinking): extract configuration_update reasoning effort in codex usage reporting (4edf9d1)
- feat(signature): validate Claude CAQS reasoning signatures (75ce635)
- fix(claude): anchor billing fingerprint to initial turn for cloaked cache stability (377c315)
- feat(kimi): add Kimi K2.8 model definitions, normalization, and temperature guard (8bd67f3)
- feat(readme): add RapidProxy sponsorship details and logo (e88cd94)
- feat(readme): add RapidProxy sponsorship details and logo in Chinese and Japanese (ae8f1f8)
- fix(gemini): include thought tokens in OpenAI completion usage (cd1e8e1)
- fix(gemini): include thought tokens in OpenAI responses usage (c2562d8)
- fix(websockets): prevent keepalive pong starvation during large payload writes (b5ba02c)
- Merge pull request router-for-me#5744 from smartconnect365/fix/5733 (9781fe4)
- Merge pull request router-for-me#5746 from smartconnect365/fix/gemini-responses-output-tokens (137db72)
- fix(auth): clear unauthorized cooldowns on credential changes and sync codex plan type (456d4c3)
- fix(claude): forward unmanaged caller betas on direct anthropic requests (d9b8fdb)
- feat(plugins): expose model list responses to plugin interceptors (5b27856)
- perf(antigravity): cache and deduplicate model capability probe requests (e30de3d)
- feat(management): add plugin quota and declarative probe endpoints (b192f65)
- feat(plugins): forward query parameters as metadata in auth provider start login (3c3938f)
- fix(codex): buffer keepalive and empty item announcements during codex bootstrap (cb73cd9)
- docs(readme): update APIKEY.FUN sponsor link (ac02da6)
- feat(codex): forward X-Codex-Turn-State header in executor requests (e696ea4)
- feat(codex): preserve native fidelity for responses-lite requests (f702bc1)
- feat(cooldowns): add cooldown snapshot feature for management auth files (1ca975d)
- docs(config): document payload filter examples for codex tools (94d6eb5)
- Merge pull request router-for-me#5795 from router-for-me/feat/management-auth-cooldowns (d23ba5e)
- feat(models): expose CPA web search capability (294b7f5)
- feat(devin): add Devin/Cognition provider integration and CLI OAuth (f947527)
- feat(devin): bind upstream session_id and cascade_id to CPA canonical session (cbe800a)
- feat(devin): prefix all Devin model IDs with devin/ namespace (eed2490)
- feat(devin): restrict glm-5-2 to free tier, remove static swe-1-7-lightning, and harden cloak (02fd1bd)
- fix(devin): restrict sensitive word obfuscation strictly to system prompt only (f5247e4)
- feat(devin): support sensitive-words in auth json metadata and attributes (1b69485)
- refactor(devin): align sensitive-words with antigravity to config.yaml only (d115fe2)
- fix(devin): sanitize claude subagent identity and emoji directives to prevent content policy 403 (c0b8605)
- refactor(devin): keep sensitive words strictly external in config.yaml without hardcoding (c0b76c2)
- feat(devin): support credential quota and seat status query via GetUserStatus (7b5741c)
- fix(devin): strip system prompt lines matching configured sensitive words to evade unicode normalization bypass (5b8e382)
- feat(devin): add devin/gemini-3-8-flash and devin/grok-4-6 model definitions and signature recognition (ea2f29f)
- feat(devin): enhance request-log with intermediate interactions and decoded upstream body (2caab7d)
- docs(devin): document cloud-side system instructions baseline in DevinExecutor (8a37707)
- feat(devin): add deepseek-v4-flash and deepseek-v4-1-flash models (308e5ad)
- feat(devin): support none thinking level for glm-5-2 (0c2351b)
- docs(devin): update DevinExecutor comment with verbatim reconstructed cloud system prompt (59df75d)
- feat(devin): add standalone devin_models.json catalog and remote updater (982cd12)
- feat(devin): auto-namespace model IDs from clean devin_models.json (6174174)
- feat(devin): add symmetric decoded upstream response in request log (16cb6c0)
- feat(devin): parse protobuf timestamp and harden partial failure logging (469aa36)
- feat(cmd): add fetch_devin_models CLI tool for dynamic model catalog extraction (2683ec2)
- feat(devin): clamp maxTokens to model MaxCompletionTokens (ca664c6)
- feat(devin): map model aliases and swe-1-7/haiku/sonnet/gpt-4-1 UIDs (bf06746)
- feat(registry): auto-populate Gemini token limits and generation methods for Devin models (0aedd05)
- fix(devin): calculate total_input_tokens and total_tokens correctly (85ddf3a)
- feat(registry): transparently resolve un-prefixed devin models in auth selection (fbabc27)
- Revert "feat(registry): transparently resolve un-prefixed devin models in auth selection" (a0ccc3a)
- fix(util): enforce strict devin/ prefix requirement for devin provider (ca159b3)
- fix(devin): align wire protocol, harden streaming, and resolve multi-turn tool/signature parity (f1f5506)
- fix(devin): sort streaming tool call stop events and normalize prompt CRLF (a5ea971)
- fix(devin): guard against reopening thought step on late-arriving signatures (2f2f9b4)
- fix(devin): bound tool call indices against OOM, set Refresh timeout, and check manual callback state (d754298)
- fix(devin): update streaming tool call step metadata if arriving in subsequent frames (50dd582)
- fix(devin): enforce Connect-RPC EOS trailer invariant, validate frame flag, and bind OAuth callback to ctx (5d0c77c)
- perf(devin): cache sensitive word regex matcher, preallocate request bytes and frame decompression buffer (6c7d2d5)
- perf(devin): eliminate O(K^2) tool call argument string allocations using strings.Builder (6df8f32)
- perf(devin): cache Devin HTTP transports per proxy URL to reuse connection pools (86de823)
- fix(devin): propagate stream chunk errors, fix truncated protobuf infinite loop, respect ctx roundtripper, and limit auth response body reads (6a239f5)
- fix(devin): store transient quota metrics strictly in Quota.Signals and keep Metadata static (98b106f)
- fix(devin): normalize upstream internal errors to 502 Bad Gateway (1604cb0)
- fix(devin): dynamic catalog-driven chat_model_uid resolution and effort clamping (926450e)
- fix(devin): transport reuse, interleaved stream steps, strings.Builder panic, and updater URL (fb2c1c1)
- feat(devin): integrate global signature detector for cross-provider signature detection (9d190f3)
- refactor(devin): deduplicate auth credentials extraction, filter sparse tool calls, and optimize model lookup (30b2ac8)
- feat(models): require explicit per-model native search support (4311ae8)
- chore(models): sync verified native search capability metadata (678da56)
- Merge pull request router-for-me#5797 from router-for-me/feat/cpa-web-search-catalog (7e864ac)
- feat(devin): implement Devin OAuth flow with callback handling and session management (44e62bc)
- feat(plugin-quota): add typed summary metrics (acb0eae)
- fix(plugin-quota): accept summary-only probes (5cb41e2)
- fix(openai): convert responses tool choice to chat completions format (8c5f6e1)
- fix(plugin-quota): require summary metric values (7b60be3)
- fix(plugin-quota): tolerate malformed summaries (782a5cd)
- fix(plugin-quota): validate summary identifiers (d3cb685)
- fix(plugin-quota): validate summary metadata (617b9fd)
- fix(plugin-quota): preserve mapped summaries (6aea72e)
- fix(devin): parse field 8 header submessages, accumulate field 4 prompt tokens, and add field 28 usage fallback (b4749cb)
- test(devin): add unit test for devin oauth-model-alias channel routing (0148331)
- fix(devin): reject case-insensitive duplicate model IDs (db0b957)
- feat(api-call): support
$TOKEN$ replacement in request body data (0719520) - fix(plugin-quota): preserve valid mapped summaries (07e85de)
- fix(devin): unwrap repeated field 28 groups, merge partial field 7 usage, and harden APICall escaping (4c331bb)
- fix(devin): trigger dimension group fallback if any usage metric is zero (5f56ce9)
- fix(devin): use loopback callback endpoint for oauth redirect uri (cca35ae)
- Merge pull request router-for-me#5806 from router-for-me/feat/devin-followups (7fa443d)
- feat(devin): support port-free manual code login in no-browser mode (fe2fdde)
- fix(devin): align OAuth authorization URL parameter order with official CLI binary (09807c5)
- fix(devin): mock AuthService in headless token test and validate prompt before printing URL (c35db12)
- feat(discovery): add LAN gateway discovery (3428110)
- fix(translator): preserve html characters in tool arguments and fix devin sequential tool calls (c1cb0c5)
- docs(readme): remove FastAIToken sponsor (fd3cd15)
- test(devin): route status calls to mock server in headless auth tests (f465ebd)
- fix(claude): repair tool call pairing and handle standalone tool outputs (2bcebaa)
- fix(discovery): harden advertiser lifecycle and browse limits (b900577)
- fix(discovery): honor caller cancellation and reload endpoint (c1b7c91)
- Merge pull request router-for-me#5724 from Viggo95/fix/codex-bootstrap-buffer-noncontent-events (bb20fa2)
- fix(discovery): bound browse resource usage (f5c19d2)
- fix(cmd/fetch_antigravity_models): support symlinked auth dir and multi-auth fallback (f341e07)
- feat(models): add gemini-3.5-flash-lite model definition (d48590a)
- feat(codex): add optional time ceiling for stream bootstrap buffering (6e30755)
- test(discovery): report temp cleanup failures (c3a5e8c)
- fix(discovery): close lifecycle and routing gaps (20ec9b8)
- Merge pull request router-for-me#5818 from router-for-me/feat/codex-bootstrap-timeout (6c5fef9)
- fix(discovery): keep JSON scans clean and honor interface filters (7d68705)
- fix(discovery): load default scan config and sanitize hostnames (2dd2fd6)
- fix(discovery): uniquify instance names without a startup browse (9e847e5)
- fix(devin): share manual paste parsing and surface oauth callback errors (5f74acc)
- fix(discovery): tighten scan timeout, flags, and TCP-only types (13af6c0)
- Merge pull request router-for-me#5808 from router-for-me/feat/devin-code-login (c9b3dbe)
- Merge pull request router-for-me#5796 from router-for-me/feat/ai-gateway-discovery (9b52a49)
- fix(pluginhost): keep request and method buffers alive during native call (b8477c7)
- feat(pluginabi): support HTTP status code propagation in plugin error envelopes (6ba4445)
- test(openai): add tests for responses websocket compaction replay and routing (ca92945)
- feat(pluginhost): propagate forced provider and auth ID in host model execution (748d576)
- feat(auth): add tests to ensure async operations don’t block unrelated actions (e3cbe43)
- feat(executor): strip unsupported
idfields from Gemini interactions payload (1fac8cc) - feat(auth): add retry logic for pre-HTTP transport failures and related tests (bef1f65)
- feat(translator): handle orphan function outputs as user text in OpenAI and Gemini translators (8c98467)
- feat(executor): promote reasoning content as summary and sanitize inputs (7bbfeaf)
- Merge pull request router-for-me#5803 from anpicasso/feat/plugin-quota-summary (512c453)
- feat(translator): refine tool call argument validation for finish reason logic (772c63c)
- Merge PR router-for-me#5502 feat/meta-provider into cpa/muse (42ca5d3)
- feat(executor): add native Meta (Muse Code) provider integration (65348b9)
- feat(config): add Meta OAuth aliasing and error rules support (8335eac)
- feat(auth): enhance retry logic with enriched error handling and tests (6724a95)
- fix(interactions): strip invalid id from function_result and redundant call_id from function_call (f51d3ae)
- Merge pull request router-for-me#5830 from router-for-me/fix/issue-5828-gemini-interactions-tool-result-id (10d464d)
- feat(translator): enhance finish reason handling and tool call translations (6f908cb)
- feat(translator): enhance cache usage handling and input token computation logic (e54a8e9)
- feat(translator): introduce namespace-aware tool name capping and collision handling (e3e97ad)
- fix(devin): support swe-1-6-slow model variant (dea4ce8)
- feat(antigravity): support web search translation and URL resolution in OpenAI Responses (ef63d2e)
- feat(translator): preserve tool names in tool result messages (7def842)
- fix(devin): classify high-demand errors as rate limits (d44901f)
- Merge pull request router-for-me#5867 from avabbbb/fix/devin-swe-1-6-slow (44f8343)
- fix(executor): prevent stream failure on client disconnect after claude completion (7c32971)
- Merge pull request router-for-me#5862 from sususu98/feat/antigravity-websearch (8c6d4dc)
- feat(translator): enhance web search streaming and citation mapping in OpenAI Responses (7fcbdf8)
- Merge pull request router-for-me#5870 from avabbbb/fix/devin-high-demand-rate-limit (4613cfd)
- feat(translator): support alternative reasoning fields in OpenAI Claude translation (77820cb)
- fix(devin): buffer content deltas to handle late thinking signatures (c2bb91d)
- feat(translator): wrap demoted mid-session system messages in system-reminder envelope (b681a1e)
- Merge pull request router-for-me#5725 from ztzpro/main (87561b6)
- Merge pull request router-for-me#5696 from cookerpapa/docs/picloud-related-project (12b496b)
- Merge pull request router-for-me#5509 from trukhinyuri/fix/codex-exec-user-agent (c8ec91f)
- fix(executor): strip relayed tool result images for text-only models (c4982e8)
- test(executor): use metaUserAgent constant in meta executor test (311efcb)
- fix(schema): strip unsupported schema identifier keywords (f668ac4)
- Merge pull request router-for-me#5889 from kinka/docs/add-cc-status-line (1bb8895)
- feat(translator): preserve model metadata in requests (a9e92b8)
- fix(devin): filter automation update tools and sanitize tool descriptions (ad088a8)
- Merge pull request router-for-me#5896 from router-for-me/translator (8c664b2)
- feat(management): paginate auth file listings (76ac75e)
- Merge pull request router-for-me#5897 from camy-x/feat/auth-files-pagination (46d4baf)
- fix(devin): support images in tool results (64c9433)
- fix(config): preserve plugin configurations when saving yaml (afba07b)
- feat(plugin): support scheduling across priorities (b715526)
- fix(management): reject unresolved token placeholders in api-call (0b55053)
- fix(devin): aggregate tool calls by id and track cache write tokens (9e10db5)
- fix(devin): handle orphaned tool results and normalize function result payloads (b6fe4f2)
- feat(claude): support model-level cooling and scope overage rate limits (44eaef0)
- fix(xai): unify forced hosted tool choice normalization (c616193)
- fix(ci): replace go-cross/cgo-actions with direct FreeBSD sysroot cross-compilation (b773607)
- feat(xai): allow grok imagine aspect_ratio 9:20 (75bd6a6)
- feat(xai): also allow grok imagine aspect_ratio 20:9 (f049e00)
- fix(claude): skip retry-after header on overage-only rejections (1cce932)
- fix(codex): strip item-level and tool output prompt cache breakpoints (3662d15)
- fix(xai): restore aliased client web search tool name in responses (660a580)
- feat(codex): append (Devin) suffix to Devin model display names (2874347)
- fix(codex): normalize and support ultrafast service tier (859c486)
- feat(codex): record upstream response model and warn on silent model substitution (25f40d8)
- fix(openai): align tool call messages and preserve ordering on ambiguous outputs (cc545cb)
- feat: add PatewayAI (784285a)
- feat: add FluxA (0b9a91f)
- Merge pull request router-for-me#5919 from Fesaluo/feat/xai-imagine-aspect-ratio-9-20 (05391d7)
- Merge pull request router-for-me#5928 from Viggo95/feat/codex-response-model-observability (cd5af08)
- feat(executor): extend response model recording and substitution warnings to all providers (e9463ff)
- fix(executor): record authentic Devin and Gemini Interactions response models (f8467f0)
- fix(executor): robust response model observability across meta, kimi, and openai-compat streams (cde7d57)
- fix(executor): record expected Devin upstream model and bound stream observer memory (e84e248)
- fix(codex): preserve reasoning content and IDs for compat models in responses (81d6ba7)
- fix(openai): classify stream request timeout as server error (cb62a67)
- fix(translator): scope tool responses per turn to handle repeated tool call IDs (c2ea268)
- fix(executor): restrict claude advisor tool check to server tool use (f86a33f)
- test(config): verify claude cloak persistence and update behavior (f485217)
- feat(executor): support use-max-completion-tokens for openai compatibility models (690f4f3)
- fix(executor): restore hybrid passthrough mcp tool names in claude oauth (22392c5)
- fix(executor): buffer post-tool text to order devin tool calls before assistant response (b6d1f05)
- fix(schema): normalize true boolean subschemas and strip unsupported keywords (c93978c)
- fix(translator): deduct cache_write_tokens from input_tokens in openai/codex to claude (router-for-me#5956) (883660f)
- Merge pull request router-for-me#5962 from router-for-me/fix/issue-5956-cache-write-deduction (12773e7)
- fix(translator): align tool choice mapping and enforce fail-closed handling (49eec66)
- feat(translator): support strict tool mode mapping for gemini and claude (f247e2b)
- fix(translator): preserve constraints and additionalProperties in gemini parametersJsonSchema (b532db9)
- fix(management): reconcile expired cooldowns to active status in auth files (b4ff581)
- feat(management): support priority field in claude key patch (93b94d2)
- feat(executor): support duplex streaming for codex websockets (42c9680)
- fix(pluginhost): preserve http status codes in host callback and execution errors (1c87874)
- feat(translator): support multimodal audio, video, and file inputs in responses to gemini (61fdfc3)
- feat(translator): support builtin tools in gemini and antigravity interactions (cdfb79e)
- fix(claude): accept newer patch releases as native clients (router-for-me#5820) (83a4913)
- docs(claude): clarify patch version floor rationale for native passthrough (c52ca7b)
- fix(auth): avoid unnecessary scheduler rebuilds by checking sync needs from auth map (e56547f)
- feat(steering): add documentation for Codex response steering and duplex transport (ddc3f73)
- fix(translator): preserve reasoning content across tool turns in responses conversion (40cc648)
- feat(auth): propagate context compaction and node kind session metadata (28100e5)
- Merge pull request router-for-me#5982 from ysntony/add-kimi-ai-code-link (29bdd85)
- feat: add full support for kimi.ai oauth and runtime execution (a5ab695)
Full Changelog: v7.2.150...v2026.9.21.8-snapshot