v7.2.149-patch
·
445 commits
to main
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(vertex): Add Prefix field to VertexCredentialStorage for per-file model namespacing (fdeef48)
- feat(vertex): add --vertex-import-prefix flag for model namespacing (14cb2b9)
- fix(claude): add interleaved-thinking beta header, AMP gzip error decoding, normalizeClaudeBudget max_tokens (07d6689)
- fix(claude): clamp max_tokens to model limit in normalizeClaudeBudget (5f58248)
- Reconcile registry model states on auth changes (e166e56)
- fix(auth): tighten registry model reconciliation (f09ed25)
- chore(auth): drop reconcile test file from pr (e08f68e)
- Merge branch 'router-for-me:main' into feat(vertex)/add-prefix-field (a337ecf)
- fix(vertex): include prefix in auth filename and validate at import (36efcc6)
- fix: preserve Claude thinking signatures in Codex translator (a34dfed)
- fix: finalize pending thinking block before next summary part (76b53d6)
- fix: retain previously captured thinking signature on new summary part (c31ae2f)
- fix: omit empty signature field from thinking blocks (73b22ec)
- fix: clear stale thinking signature when no block is open (66eb122)
- fix: retain codex thinking signature until item done (5fc2bd3)
- fix: preserve SSE event boundaries for Responses streams (134a9ea)
- fix: address responses SSE review feedback (c03883c)
- fix: tighten responses SSE review follow-up (0fcc02f)
- fix: simplify responses SSE suffix handling (f73d55d)
- fix(gemini-cli): use backend project ID from onboarding response (fccfb16)
- feat(amp): sanitize signatures and handle stream suppression for Amp compatibility (04ba8c8)
- fix(amp): address PR review - stream thinking suppression, SSE detection, test init (b15453c)
- Merge pull request router-for-me#2403 from CharTyr/clean-pr (d267522)
- fix(antigravity): reorder model parts to prevent tool_use↔tool_result pairing breakage (25feceb)
- Merge pull request router-for-me#2409 from sususu98/fix/tool-use-pairing-break (486cd4c)
- refactor(gemini-cli): simplify redundant if/else in project ID assignment (91387ca)
- fix(amp): don't suppress thinking blocks in streaming mode (279cbbb)
- fix(auth): skip downtime for request-scoped 404 errors in model state management (17363ed)
- fix(codex): add default instructions for /responses/compact (d11936f)
- fix(openai): handle transcript replacement after websocket compaction (c1d7599)
- fix(codex): normalize null instructions for compact requests (d3b94c9)
- fix(openai): avoid developer transcript resets (a3e21df)
- feat(antigravity): add AI credits quota fallback (88dd9c7)
- fix(antigravity): preserve fallback and honor config gate (a0bf33e)
- Fixed: router-for-me#2420 (c10f8ae)
- Merge pull request router-for-me#2417 from CharTyr/fix/amp-streaming-thinking-regression (7c3c2e9)
- fix(codex): normalize null instructions for responses requests (bd855ab)
- fix(codex): normalize null instructions across responses paths (39b9a38)
- Merge pull request router-for-me#2426 from xixiwenxuanhe/feature/antigravity-credits (1623194)
- Merge pull request router-for-me#2424 from possible055/fix/websocket-transcript-replacement (b09b03e)
- Merge pull request router-for-me#2434 from MonsterQiu/fix/codex-responses-null-instructions (bc3a6e4)
- Merge pull request router-for-me#2422 from MonsterQiu/fix/codex-compact-instructions (faae9c2)
- fix(codex): use normalizeCodexInstructions to set default instructions (51fd58d)
- fix(auth): resolve oauth aliases before suspension checks (07b7c1a)
- refactor(auth): dedupe route-aware model support checks (f611dd6)
- fix(codex): set finish_reason to tool_calls in non-streaming response when tool calls are present (ec77f4a)
- fix(qwen): update CLI simulation to v0.13.2 (1b44364)
- Merge pull request router-for-me#2452 from Lucaszmv/fix-qwen-cli-v0.13.2 (1c7003f)
- refactor(runtime): move executor utilities to
helpspackage and update references (d2c7e4e) - Merge branch 'dev' of github.com:router-for-me/CLIProxyAPI into dev (b468ca7)
- fix(codex): conditionally set
Session_idheader for Mac OS user agents and clean up redundant logic (330e12d) - refactor(runtime, openai): simplify header management and remove redundant websocket logging logic (ca11b23)
- fix(codex): prioritize websocket-enabled credentials across priority tiers in scheduler logic (1734aa1)
- fix(codex): centralize session management with global store and add tests for executor session lifecycle (105a215)
- fix(openai): add websocket tool call repair with caching and tests to improve transcript consistency (d1c07a0)
- fix(openai): add session reference counter and cache lifecycle management for websocket tools (acf98ed)
- refactor(openai): remove websocket body log truncation limit (51a4379)
- fix(openai): improve client IP retrieval in websocket handler (caa529c)
- Merge pull request router-for-me#2468 from router-for-me/ip (66cd50f)
- Merge pull request router-for-me#2398 from 7RPH/fix/responses-sse-framing (c422d16)
- feat: add opt-in experimental Claude cch signing (3724933)
- fix: preserve cloak config defaults when mode omitted (15c2f27)
- fix(gemini): clean tool schemas and eager_input_streaming (e34b2b4)
- test(amp): update tests to expect thinking blocks to pass through during streaming (ff7dbb5)
- test(amp): update tests to expect thinking blocks to pass through during streaming (f5e9f01)
- Merge pull request router-for-me#2444 from 0oAstro/fix/codex-nonstream-finish-reason-tool-calls (b05f575)
- Merge pull request router-for-me#2441 from MonsterQiu/issue-2421-alias-before-suspension (e783d0a)
- feat(tui): show time in usage details (8435c3d)
- Merge pull request router-for-me#2476 from router-for-me/cherry-pick/pr-2438-to-dev (474fb04)
- Merge commit '15c2f274ea690c9a7c9db22f9f454af869db5375' into dev (d09dd4d)
- fix: scope experimental cch signing to billing header (25d1c18)
- fix: 增强 Claude 反代检测对抗能力 (4045378)
- Refactor websocket logging and error handling (34339f6)
- refactor(logging): centralize websocket handshake recording (4f8acec)
- fix: Claude API 请求使用 utls Chrome TLS 指纹 (249f969)
- feat(auth): add support for managing custom headers in auth files (09e4800)
- fix: 修复反代检测对抗的 3 个问题 (bb44671)
- Keep Claude Code compatibility work low-risk and reviewable (da3a498)
- Prevent malformed Responses SSE frames from breaking stream clients (abc293c)
- Harden Responses SSE framing against partial chunk boundaries (108895f)
- Merge pull request router-for-me#2490 from router-for-me/logs (a59e924)
- Merge pull request router-for-me#2489 from Soein/upstream-pr (e3eb048)
- Merge pull request router-for-me#2454 from buddingnewinsights/add-proxypal-to-readme (7170eee)
- Merge pull request router-for-me#2492 from davidwushi1145/main (fcba912)
- Merge branch 'main' into dev (3e78a8d)
- feat: add /healthz endpoint and test coverage for health check (7ee37ee)
- Merge PR router-for-me#2474 (ab9ebea)
- feat(gitstore): honor configured branch and follow live remote default (058793c)
- Keep Claude builtin helpers aligned with the shared helper layout (9b5ce8c)
- feat(executor): ensure default system message in QwenExecutor payload (d2419ed)
- Normalize Claude temperature for thinking (f63cf6f)
- fix: repair websocket custom tool calls (8f0e66b)
- fix: repair websocket custom tool calls (b6c6379)
- fix: repair websocket custom tool calls (d1fd2c4)
- fix(security): enforce stricter localhost validation for GeminiCLIAPIHandler (06405f2)
- feat(security): add configuration to toggle Gemini CLI endpoint access (adb580b)
- feat(models): add GPT-5.3, GPT-5.4, and GPT-5.4-mini with enhanced "thinking" levels (a824e7c)
- Comment out system message check in Qwen executor (29dba03)
- Merge pull request router-for-me#2513 from lonr-6/codex/fix-ws-custom-tool-repair-v2 (f389667)
- Merge pull request router-for-me#2509 from adamhelfgott/fix-claude-thinking-temperature (42c062b)
- Merge pull request router-for-me#2520 from Arronlong/main (ae37ccf)
- fix(executor): remove commented-out code in QwenExecutor (754b126)
- Merge pull request router-for-me#1302 from dinhkarate/feat(vertex)/add-prefix-field (0e4f189)
- chore: update antigravity UA version to 1.21.9 (f3ab8f4)
- Merge pull request router-for-me#2526 from rensumo/main (8430b28)
- Fix missing
response.completed.usagefor late-usage OpenAI-compatible streams (65e9e89) - feat: dynamically fetch antigravity UA version from releases API (8d5e470)
- Merge pull request router-for-me#2535 from rensumo/main (2ee938a)
- feat(executor): enhance Qwen system message handling with strict injection and merging rules (c2d4137)
- feat(misc): add background updater for Antigravity version caching (3774b56)
- feat(docs): add Poixe AI sponsorship details to README files (4ba1053)
- feat(api): enhance proxy resolution for API key-based auth (ada8e29)
- feat(executor): add tests for preserving key order in cache control functions (22a1a24)
- fix(amp): strip signature from tool_use blocks before forwarding to Claude (b0653ce)
- Merge pull request router-for-me#1940 from Blue-B/fix/claude-interleaved-thinking-amp-gzip-budget (c1818f1)
- Merge pull request router-for-me#2121 from destinoantagonista-wq/main (ea43361)
- Merge pull request router-for-me#2298 from snoyiatk/feat/add-gitstore-branch (000fcb1)
- docs(readme): remove redundant GITSTORE_GIT_BRANCH description in README files (6f58518)
- Merge pull request router-for-me#2332 from RaviTharuma/fix/claude-thinking-signature (b851208)
- Merge pull request router-for-me#2491 from mpfo0106/feature/claude-code-safe-alignment-sentinels (c3f8dc3)
- Merge pull request router-for-me#2522 from aikins01/fix/strip-tool-use-signature (9eabdd0)
- Merge pull request router-for-me#2531 from jamestut/openai-vertex-token-usage-fix (9f5bdfa)
- fix(claude-auth): dedupe OAuth refresh and honor 429 backoff (6431cec)
- fix(executor): route Claude refresh through retry-aware auth (29e32aa)
- fix: record zero usage (8b9dbe1)
- fix(auth): honor disable-cooling and enrich no-auth errors (0ea7680)
- feat: support socks5h scheme for proxy settings (163d683)
- Merge pull request router-for-me#2576 from zilianpn/fix/disable-cooling-auth-errors (6a27bce)
- Merge pull request router-for-me#2578 from LemonZuo/feat_socks5h (cad45ff)
- fix(websocket): skip stale state merge after client-side compact (a0fe273)
- fix(websocket): narrow compact replay detection (d2d0e6f)
- fix(websocket): gate compact replay by downstream support (4ca00f7)
- fix(executor): ensure empty stream completions use output_item.done as fallback (c8b7e2b)
- fix(executor): add transient 429 resource exhausted handling with retry logic (91e7591)
- fix(translator): add unit tests to validate output_item.done fallback logic for Gemini and Claude (fcc59d6)
- Merge pull request router-for-me#2569 from LucasInsight/fix/record-zero-usage (d1f6224)
- fix(tests): update test cases (d390b95)
- chore: add workflow to prevent AGENTS.md modifications in pull requests (f5aa68e)
- chore: add workflow to retarget main PRs to dev automatically (70efd4e)
- Merge pull request router-for-me#2592 from router-for-me/tests (12b9671)
- fix(executor): fix OAuth extra usage detection by Anthropic API (69b950d)
- fix(executor): update Qwen user agent and enhance header configuration (d54f816)
- fix(auth): handle OAuth model alias in retry logic and refine Qwen quota handling (941334d)
- fix(auth): add retry logic for 429 status with Retry-After and improve testing (ad8e396)
- fix(executor): inject full Claude Code system prompt blocks with proper cache scopes (613fe67)
- fix: use sjson to build system blocks, avoid raw newlines in JSON (f6f4640)
- fix: buildTextBlock cache_control sjson path issue (8783caf)
- fix: build cache_control JSON manually to avoid sjson map marshaling (9e0ab4d)
- fix: remove invalid org scope and match Claude Code block layout (e2e3c7d)
- fix(claude): sanitize forwarded third-party prompts for OAuth cloaking (7cdf8e9)
- fix(claude): remove invalid cache_control scope from static system block (f0c20e8)
- fix(claude): reduce forwarded OAuth prompt to minimal tool reminder (7e8e222)
- fix(auth, executor): normalize Qwen base URL, adjust RefreshLead duration, and add tests (5e81b65)
- fix(claude): remap OAuth tool names to Claude Code style to avoid third-party fingerprint detection (e8d1b79)
- fix(auth): preserve and restore ready view cursors during index rebuilds (730809d)
- fix(handlers): add base URL validation and improve API key deletion tests (1dba2d0)
- feat(antigravity): configurable signature cache with bypass-mode validation (cf24958)
- docs(antigravity): document signature validation spec alignment (38f0ae5)
- fix(antigravity): refine 429 handling and credits fallback (30e94b6)
- Merge pull request router-for-me#2412 from sususu98/feat/signature-cache-toggle (39dc455)
- fix(claude): preserve OAuth tool renames when filtering tools (ac36119)
- fix(claude): map question/skill to TitleCase instead of removing them (f780c28)
- Merge remote-tracking branch 'upstream/main' into fix/oauth-extra-usage-detection (96056d0)
- fix(claude): address PR review feedback for OAuth cloaking (0f45d89)
- fix(handlers): update listener to bind on all interfaces instead of localhost (f32c8c9)
- Merge pull request router-for-me#2621 from wykk-12138/fix/oauth-extra-usage-detection (b2c0cdf)
- feat(antigravity): prefer prod URL as first priority (d801393)
- Merge pull request router-for-me#2670 from sususu98/feat/antigravity-prefer-prod-url (2a97037)
- fix(executor): implement immediate retry with token refresh on 429 for Qwen and add associated tests (65ce863)
- fix(executor): handle OAuth tool name remapping with rename detection and add tests (5ab9afa)
- refactor(executor): remove immediate retry with token refresh on 429 for Qwen and update tests accordingly (828df80)
- Merge pull request router-for-me#2702 from AllenReder/docs/add-quota-inspector (9ded75d)
- fix(executor): handle 429 Retry-After header and default retry logic for quota exhaustion (0ab1f54)
- fix(antigravity): allow 32MB bypass signatures (727221d)
- fix(antigravity): reduce bypass mode log noise (8ed290c)
- feat(auth): implement auto-refresh loop for managing auth token schedule (a583463)
- fix(antigravity): drop redacted thinking blocks with empty text (65158cc)
- fix(antigravity): skip full schema cleanup for empty tool requests (f5ed5c7)
- refactor(auth): simplify auth directory scanning and improve JSON processing logic (6c0a1ef)
- feat(auth): add configurable worker pool size for auto-refresh loop (5bfaf80)
- Merge pull request router-for-me#2715 from sususu98/pr/antigravity-32mb-bypass-signatures (26fd3ef)
- Merge pull request router-for-me#2716 from sususu98/pr/antigravity-bypass-log-noise (1dc3018)
- Merge pull request router-for-me#2723 from sususu98/fix/drop-redacted-thinking-blocks (61e0447)
- Merge pull request router-for-me#2724 from sususu98/fix/skip-schema-cleanup-empty-tools (c4459c4)
- fix(antigravity): strip thinking blocks with empty signatures instead of rejecting (278a898)
- fix(antigravity): discard thinking blocks with non-Claude-format signatures (41ae2c8)
- fix(antigravity): use E-prefixed fake signature in strict bypass test (10b55b5)
- fix(antigravity): cap maxOutputTokens using registry max_completion_tokens (8fecd62)
- chore: remove Qwen support from SDK and internal components (8fac296)
- Merge pull request router-for-me#2782 from sususu98/fix/strip-invalid-signature-thinking-blocks (3dea1da)
- Merge pull request router-for-me#2800 from sususu98/fix/antigravity-max-output-tokens-cap (f56cf42)
- chore(models): remove outdated GPT-5 and related model entries from registry JSON (a4c1e32)
- feat(session-affinity): add session-sticky routing for multi-account load balancing (7c24d54)
- fix(antigravity): strip billing header from system instruction before upstream call (d4a6a5a)
- Merge pull request router-for-me#2816 from sususu98/feat/session-affinity (d1508ca)
- Merge pull request router-for-me#2817 from sususu98/fix/antigravity-strip-billing-header (ba454db)
- fix(docker-build): improve argument handling and error messaging for usage option (1267fdd)
- fix(util): forward custom Host header to upstream (8f9e662)
- fix(handlers): include execution session metadata and skip idempotency key when absent (7b03f04)
- feat(auth): add proxy URL override support to auth constructors and executors (d949921)
- chore: remove iFlow-related modules and dependencies (f5dc648)
- feat(models): add Claude Opus 4.7 model entry to registry JSON (5dcca69)
- fix(tests): update model lookup references and enhance Claude executor tests (d9a3b3e)
- fix(tests): update Gemini family test case numbers for consistency (da43f63)
- fix(util): also keep Host in header map for synthetic requests (eba561b)
- feat(api): integrate auth index into key retrieval endpoints for Gemini, Claude, Codex, OpenAI, and Vertex (894baad)
- fix(management): stabilize auth-index mapping (c26936e)
- fix(tests): remove obsolete config_auth_index_test file (a64141a)
- Merge pull request router-for-me#2892 from router-for-me/fix-provider (c6baa64)
- feat(translator): add partial and full image generation support in Codex-GPT and Codex-Gemini flows (86c856f)
- fix(executor): drop obsolete context-1m-2025-08-07 beta header (fixes router-for-me#2866) (f4eb161)
- Merge pull request router-for-me#2898 from octo-patch/fix/issue-2866-remove-obsolete-1m-beta-header (e05abec)
- feat(docs): add VisionCoder sponsorship details and optimize external links (8f4a4ea)
- feat(auth): add refresh backoff for ineffective token updates (e6866ff)
- fix(codex): backfill streaming response output (bb8408c)
- perf(codex): avoid repeated output patch writes (b6781d6)
- feat(api): add support for
HEADrequests to/healthzendpoint (1716a84) - Merge pull request router-for-me#2939 from stringer07/fix/codex-stream-output-backfill (3444820)
- Merge pull request router-for-me#2834 from muzhi1991/fix/openai-compat-host-header (8ced7a5)
- feat(models): add Kimi K2.6 model entry to registry JSON (4fc2c61)
- feat(models): add hardcoded GPT-Image-2 model support in Codex (e935196)
- fix(handlers): remove handling of unsupported
nparameter in OpenAI image handlers (fd71960) - fix(handlers): remove references to unsupported
nparameter in OpenAI image handlers (a188159) - feat(codex): enable image generation for all Codex upstream requests (31934ae)
- feat(antigravity): conductor-level credits fallback for Claude models (14d46a0)
- feat: support extracting X-Amp-Thread-Id header as session id for session affinity (4d6457e)
- fix(antigravity): remove credits fallback from CountTokens, fix gofmt (4de5c29)
- fix: forward HTTP headers to executor Options so session affinity can read X-Amp-Thread-Id (8e49c79)
- fix(antigravity): respect pinned auth in credits fallback, release deferred body on success (e75daa2)
- refactor(logging): strip unrelated deferred body changes, keep credits-only logging (920b6ef)
- fix(auth): break credits cold-start deadlock by keeping unknown-hint auths as fallback candidates (f130846)
- Merge pull request router-for-me#2962 from MoYeRanqianzhi/feat/codex-image-generation-tool-injection (8eb56e5)
- perf(antigravity): async credits hint refresh for warm tokens (7ad1900)
- feat(logging): add AI API path support for image routes (25137b1)
- Merge pull request router-for-me#2971 from sususu98/feat/antigravity-credits-fallback (12195a2)
- feat(models): add GPT-5.5 model entry to registry JSON (7d5f6d9)
- Add GPT-5.5 Codex model support (736018a)
- Merge pull request router-for-me#2989 from ben-vargas/gpt-5-5-support (1576d14)
- chore(models): remove GPT-5.5 model entry from registry JSON (7b89583)
- feat(codex): pass base model to enable conditional image_generation tool injection (f1ba615)
- fix antigravity credits stream fallback (5f5d593)
- Merge pull request router-for-me#3007 from sususu98/fix-antigravity-credits-stream-fallback (36cc762)
- fix(codex): classify known upstream failures (4056c25)
- feat(auth): disallow free-tier Codex auth during selection process (a7e92e2)
- Add CPA Usage Keeper to README ecosystem list (faad8e3)
- Merge pull request router-for-me#3022 from Willxup/main (be0fe6f)
- feat(api): implement protocol multiplexer and Redis queue for usage integration (28d7827)
- feat(security): implement IP ban for repeated management key and Redis AUTH failures (2c626ef)
- feat(models): add Codex Auto Review model entry to registry JSON (ea670ef)
- feat(api): enhance model assignment logic in image handlers (0a7c6b0)
- fix(claude): only reverse-remap OAuth tool names that were forward-renamed (e707cf7)
- perf(claude): pre-allocate reverseMap capacity (03ea4e5)
- fix(claude): centralize oauth tool-name transform flow (fc1ddf3)
- fix(amp): preserve lowercase glob tool name (95318ad)
- fix(openai): repair empty responses stream output (fd45dec)
- fix(openai): preserve unindexed response output items (d36e70e)
- fix(openai): preserve multiline repaired SSE data (80eb037)
- fix(test): remove free tier from GPT-5.5 inclusion test (32ef158)
- feat(config): add support for disabling OpenAI compatibility providers (3857305)
- feat(executor): add support for Codex image generation tool usage tracking (c7b28ba)
- Merge pull request router-for-me#3020 from Matthias319/fix/codex-error-classification (c5bea6f)
- Merge pull request router-for-me#3051 from philipbankier/fix/gpt55-free-tier-test (736ae61)
- logging: mark antigravity credits requests (6fc2356)
- Merge pull request router-for-me#2972 from XYenon/feat/amp-thread-id (a325533)
- fix(usage_helpers): skip zero-token usage in additional model records (04a336f)
- feat(codex): handle thinking-signature conversion for reasoning content (01e16a8)
- fix(codex): include
contentfield in reasoning item initialization (d85e13b) - Preserve Codex reasoning signatures for Claude (c523101)
- Merge pull request router-for-me#3088 from sususu98/codex-claude-reasoning-signature (34027da)
- feat: support Codex/PI session headers for session affinity (3ac39dc)
- fix(antigravity): use real antigravity UA when polling credits balance (a992dee)
- test(api): add validation for unsupported models in OpenAI image handlers (9fb6a49)
- Merge pull request router-for-me#3114 from Xbang0222/fix/antigravity-credits-ua (b34f3be)
- fix antigravity user agent handling (e78d45a)
- fix antigravity client agent headers (0e12351)
- Merge pull request router-for-me#3117 from sususu98/fix/restore-antigravity-ua-handling (c4965be)
- Merge pull request router-for-me#3089 from XYenon/feat/session-affinity (f95ab4c)
- feat(models): add GPT-5.5 to the registry with support for advanced tasks (2ea8f77)
- fix: parse gemini cli usage metadata variants (4982512)
- fix: align claude codex translation (1c0c426)
- fix: respect declared claude web search tool names (0d107dd)
- Merge pull request router-for-me#3133 from sususu98/optimize/claude-codex-translator (2c1539e)
- Merge pull request router-for-me#3125 from sususu98/fix/gemini-cli-usage-metadata-variants (b3b92f3)
- Merge pull request router-for-me#3071 from sususu98/fix/antigravity-credits-log (a1f0ed9)
- chore(docs): remove LingtrueAPI sponsorship section from README files (359ec30)
- feat: support disabling image generation globally (e3e60f9)
- feat: remove
tool_choiceforimage_generationwhen disabled (4601841) - feat: add tri-state support for
disable-image-generationconfiguration (f56a19e) - feat: apply image_generation filtering before payload rules (6ba7c81)
- feat: add unit tests for OpenAI responses request conversion (243c582)
- feat: add local Docker build script and update compose configuration (05ecfb6)
- Merge pull request router-for-me#3163 from C4AL/docs/add-codexclipplus-ecosystem (8b286e8)
- refactor(logging): replace gin-specific context handling with generic context-based request metadata utilities (4035abc)
- feat: add support for recent request tracking in auth records (6187919)
- feat: add API key usage endpoint with provider and key grouping (b0dc9df)
- chore: update .goreleaser.yml to include custom archive naming with arch override logic (e37f3be)
- feat: enhance API key usage grouping with base URL inclusion (8c2f1a8)
- feat: add tracking for auth request success and failure counts (b8bba05)
- chore: remove usage tracking and logging functionality (18bb9c3)
- Merge pull request router-for-me#3194 from daishuge/codex/add-daishuge-cpa-port-20260502 (85124f0)
- feat: add configurable retention period for Redis usage queue (56df368)
- Merge pull request router-for-me#3197 from VjayC/dev (593995a)
- Add CLIProxyAPI Usage Dashboard to statistics docs (81db7fd)
- Update README_CN.md (7972130)
- Update README_JA.md (d2386a3)
- Merge pull request router-for-me#3201 from murasame612/docs/add-cliproxy-pool-watch (054d0de)
- Merge pull request router-for-me#3204 from zhanglunet/add-usage-dashboard-link (756b600)
- feat: enhance tool mapping with namespace and web search support (af65908)
- feat: filter and drop empty assistant messages in Kimi executor (672fdd1)
- fix: prevent goroutine leaks in streaming executors via context-aware channel sends (bf0e5c2)
- feat: add validation for Claude streaming responses (2753d9f)
- Merge pull request router-for-me#2266 from DragonFSKY/fix/ws-compact-tool-output-mismatch (82ebe24)
- fix(translator): handle non-string types in tools result processing (a1487b0)
- fix(websocket): ensure state consistency on auth errors in streaming (8e6ef3f)
- chore(docker): upgrade base image to alpine 3.23 (38dad2a)
- fix(translator): improve tool response handling for non-string content (17be644)
- Align Codex websocket protocol semantics (c19ae1d)
- Fix Codex websocket retry metadata (08b0fe6)
- Align Codex default identity and docs (6b4bc0a)
- Merge pull request router-for-me#2416 from kslamph/fix/gemini-cli-projectid (a1eba11)
- fix(executor): adjust ApplyThinking order and add payload override test (89d80bf)
- feat(translator): add token usage tracking and improve usage handling (85c0150)
- fix(executor): strip Vertex OpenAI response tool call IDs for consistency (bf6fa40)
- fix(translator): handle empty tool function names in OpenAI Claude responses (c1caa45)
- Merge remote-tracking branch 'origin/pr/3205' into dev (162897e)
- fix: preserve Antigravity cancellation errors (ecf1c25)
- Merge PR router-for-me#2568: fix Claude refresh backoff (8262a03)
- fix(executor): enhance parsing of OpenAI stream data lines (e4a93c0)
- Merge pull request router-for-me#2896 from edlsh/fix/oauth-tool-rename-per-request-map (bdc4240)
- Merge pull request router-for-me#3208 from kdcokenny/codex-websocket-protocol-parity (28b4b19)
- feat(usage): add support for requested model alias handling (ba5d8ca)
- feat(management): add usage record retrieval endpoint (61b39d4)
- refactor(management): rename
GetUsagetoGetUsageQueueand update routes/tests (da6c599) - fix(executor): ignore null OpenAI stream usage chunks (99dfbae)
- chore(docs): update sponsor details in README (ed1458a)
- fix:openai 2 kimi error Continuous function_call 连续的function_call 转换 tool_calls (17a1f53)
- 📝 docs(readme): add CPA-Manager usage statistics recommendation (ad3f4f2)
- Merge branch 'router-for-me:main' into my-fix (a09a16e)
- feat(executor): add upstream disconnect handling for Codex WebSocket sessions (fb08b92)
- fix(amp): proxy thread actors route (0117174)
- Merge pull request router-for-me#3247 from edlsh/fix/amp-thread-actors-route (a034cf8)
- Merge pull request router-for-me#3237 from seakee/docs/add-cpa-manager-usage-statistics (785b00c)
- fix: require antigravity project id (33130f1)
- fix(antigravity): mask project_id in logs (809feb1)
- chore: upgrade CLIProxyAPI dependency to v7 across the project (e50caba)
- fix responses websocket tool output context (c883114)
- fix: apply default auth-dir when config value is empty (4071fde)
- refactor: extract DefaultAuthDir constant per review feedback (4cbe172)
- feat(management): expose additional OAuth and configuration helpers (1721994)
- feat(server): add support for loading configuration from a remote home control plane (c67096b)
- feat(config): add per-auth
disable_coolingoverride support (0f0fcd2) - refactor(cliproxy): remove
ClaudeCodeSessionAffinitysupport and simplify session affinity logic (0dcb8bd) - Merge pull request router-for-me#3221 from mochenya/main (09ac8a1)
- Merge pull request router-for-me#3292 from lihan3238/fix-3272 (68fddaa)
- feat(auth): add support for persisting
disabledflag in token storage (c69ff49) - feat(auth): enhance auth index generation with improved file path handling (41f4ee7)
- Merge pull request router-for-me#3283 from wuchulonly/fix/responses-ws-tool-output-context (3cbd587)
- feat(logging): add home request-log forwarding support (1abf862)
- feat(home): implement
countfor home auth dispatch requests and enable usage statistics (66c3dae) - feat(auth): add
shouldReturnLastErrorOnPickFailurehelper and improve error handling in home mode (67fb4eb) - Merge branch 'v7' into dev (a44e5eb)
- fix(api): prevent idle TCP connections from blocking the accept loop (28dfcae)
- feat(auth): add websocket session reuse for home auths with caching support (dc1cc7f)
- feat(auth): enhance home auth session reuse with scoped caching and ref counting (8300ee8)
- refactor(auth): simplify home auth session management and remove ref counting (15ac7fb)
- feat(config): add detailed logging for home config changes (5e5b1bc)
- fix(api): clear sniff deadline before entering Redis handler (c5596e0)
- Merge remote-tracking branch 'origin/pr/3239' (1fca942)
- Merge pull request router-for-me#3303 from lihan3238/fix-3267 (041ccf0)
- feat(usage): add support for detailed token breakdown in usage tracking (bd8c05a)
- feat(auth): improve unauthorized error handling for refresh and auto-refresh (6bfcb0c)
- fix: scope antigravity credits fallback gate (bfdc0b3)
- feat(client): add cluster node failover and improve reconnection handling (bcbb949)
- feat(api): add dynamic handler for Gemini models with home integration (437aa87)
- fix(home): implement home dispatch headers and enhance Gemini model handling (3a9fb37)
- feat(auth): add support for disabling auth via metadata (229d03a)
- feat(redis): implement Pub/Sub support for usage tracking (1d529c3)
- feat(redis): implement Pub/Sub support for usage tracking (9d01c80)
- fix(gitstore): adjust garbage collection to run after push operation (30a8824)
- feat(api): add request body decoding with Content-Encoding support (e7a1859)
- feat(api, watcher): add zstd decoding for request logs and payload diff support (82c9e0d)
- fix(home): use net.JoinHostPort for consistent host:port formatting (7a1a340)
- feat(home): implement home control plane integration with Redis and TLS support (48104ab)
- feat(home): add support for disabling cluster discovery in Redis configuration (644d5ea)
- Merge pull request router-for-me#3430 from router-for-me/home (f4c6c41)
- feat(home): add cluster nodes payload parsing and Redis channel handling (c66fa37)
- refactor(server): consolidate
home_flaglogic intomain.gofor better maintainability and simplicity (cd0cea3) - feat(auth): add OAuth2 support for xAI with PKCE and token persistence (e4c9570)
- feat(api, xai): integrate xAI Grok image models and extend API endpoints for image support (2ff9e33)
- feat(api, xai): add xAI Grok video model support with API integration (53d1fd6)
- fix: strip Claude Code attribution from non-Anthropic translations (d606faa)
- feat(api): add Codex client models support for OpenAI API (088ab33)
- feat(xai): normalize xAI input reasoning items and enhance test cases (ddd1053)
- refactor(api): move Codex client model handling to
registrypackage (96754f5) - feat(xai): support namespace tools and enhance tool normalization logic (8b3670b)
- fix(xai): default missing function tool parameters (2607888)
- feat(xai): support namespace tools and enhance tool normalization logic (74cb53d)
- Merge pull request router-for-me#3439 from ben-vargas/fix-grok-tool-params (4b13f9c)
- log(registry): replace panic with warning on embedded model parse failure (be841b8)
- feat(runtime): enhance payload rule resolution with dynamic path support (26d13af)
- feat(runtime): enhance payload rule resolution with dynamic path support (2007a89)
- refactor(runtime): rename
FormProtocoltoFromProtocolacross payload handling logic (9ef99aa) - feat(api): add support for local management password validation and spoofed IP rejection (605adaa)
- feat(server): add HOME_ADDR and HOME_PASSWORD env var fallback for home flags (ed0ac68)
- refactor: move home env vars after godotenv and use lookupEnv helper (5f03965)
- refactor(api): remove
newTestServerWithOptionsand spoofed IP rejection test (66c5d60) - Merge pull request router-for-me#3448 from LongDinhh/feat/home-env-vars (64d233f)
- fix(openai-claude): stabilize streaming tool_use blocks (1c2153a)
- Merge pull request router-for-me#3438 from madwiki/fix/strip-claude-code-attribution (4ad6ffe)
- Merge pull request router-for-me#2926 from slicenferqin/fix-tool-use-name-loss-and-duplicates (2460205)
- fix(proxy): support HTTP CONNECT dialer (ec79951)
- fix: shorten claude codex tool call ids (8bc2eff)
- Merge pull request router-for-me#3450 from sususu98/fix/http-connect-proxy-dialer (2710f56)
- Merge pull request router-for-me#3468 from sususu98/fix/claude-codex-call-id-length (cc0cb05)
- Cap Gemini max output tokens (1583cb4)
- Fix Antigravity Gemini thought signatures (32a0d69)
- feat(server): add mTLS certificate bootstrap via JWT for Home connections (77ba15f)
- feat(runtime): track upstream response headers in logging and usage reporting (ad98c95)
- feat(thinking): add xAI provider support with reasoning.effort implementation (bac006e)
- Merge pull request router-for-me#3469 from sususu98/fix/gemini-max-output-token-cap (6448235)
- Merge pull request router-for-me#3470 from sususu98/fix/antigravity-gemini-thought-signatures (b67eb6f)
- feat(api): add OpenAI compatibility for image models (feebe6c)
- feat(server): enhance Home certificate handling with CA fingerprint verification (bbe30f5)
- fix codex context length stream errors (ad86830)
- style(docs): improve sponsor section clarity in README files (67f2251)
- feat(docker): add cluster-specific docker-compose configuration for CLIProxyAPI (7efc162)
- feat(client): add timeout handling for Redis operations and subscription failover (bb5ac40)
- Add Codex Switch tool to README (7f68fa2)
- Update README.md (5ef7693)
- Add reasoning effort to usage events (0de0ad0)
- Merge pull request router-for-me#3482 from 9ycrooked/patch-1 (b9589e8)
- feat(models): add Gemini 3.5 Flash models to registry (ea25949)
- feat(models): expand supported reasoning levels for Codex (de03949)
- feat(models): register Gemini 3.5 Flash with dynamic thinking levels (fdffe49)
- feat(models): add Gemini 3.5 Flash to registry with enhanced thinking capabilities (0ec07e5)
- fix(translator): skip empty text parts in Claude request conversion (1c632d1)
- Merge pull request router-for-me#3484 from yavon007/main (f1ee883)
- feat(redis): enhance Redis protocol handling with subscription and queue operations (a726e37)
- Merge pull request router-for-me#3254 from sususu98/fix/antigravity-project-id-onboard (42e9605)
- Merge pull request router-for-me#3382 from sususu98/dev (8b9ecff)
- Merge pull request router-for-me#3476 from sususu98/fix/codex-context-length-stream-errors-dev (48a1c88)
- Merge pull request router-for-me#3477 from router-for-me/cluster (21fad9d)
- fix(auth): update import paths to v7 for registry and executor (3c62a9a)
- Merge pull request router-for-me#3498 from router-for-me/test (cecd393)
- fix(translator): handle system role as developer in Claude request conversion (33f4904)
- feat(models): add Grok Build 0.1 to registry (aaec919)
- docs(readme): add APIKEY.FUN sponsorship details to README files (50d19e2)
- feat(cli): add
fetch_codex_modelscommand for dynamic Codex model fetching (efa200e) - feat(logging): add
RequestIDsupport in home request logging (412d344) - feat(logging): add file-backed sources for request logging (a0bb1f3)
- feat(auth): add support for websockets in auth file parsing and patching (167edfe)
- fix: clean gemini cli request schemas (70a8cf0)
- fix: log gemini cli schema cleanup errors (4a85b6b)
- Merge pull request router-for-me#3554 from sususu98/fix/gemini-cli-request-schema-cleanup (b5959c3)
- feat(images): add support for configurable GPT Image 2 base model and improved SSE handling (e399edd)
- feat(websockets): refine incremental repair logic for tool call responses (de280d9)
- fix(translator): correct JSON path for item summary in response event (2cbb8c7)
- feat(translator): add reasoning signature handling and tests for Claude-OpenAI conversions (4b68103)
- feat(logging): add
SetTranslatedReasoningEffortto track reasoning levels in usage reporting (11f0f90) - feat(executor): add TTFT tracking and reporting for enhanced performance metrics (94c1b25)
- chore(models): remove deprecated GPT-5.x models from
codex-freecatalog (d9c01a6) - feat(logging): improve file-backed source cleanup and directory recreation logic (2bcc762)
- refactor: extract signature validation (b3d6d5d)
- fix(amp): restore response tool casing from request (01a7cc4)
- feat(usage): include cache tokens in total token calculation and add tests (65e760a)
- feat(usage): add service tier tracking and defaults in usage reporting (71c185f)
- Merge pull request router-for-me#3591 from sususu98/feat/signature-check-extraction (c65275f)
- feat(models): add Claude Opus 4.8 model to registry (df0176a)
- Merge pull request router-for-me#3595 from Progress-infinitely/fix/anthropic-tool-name-reverse-map (f28258d)
- feat(logging): add HomeAppLogForwarder for application log forwarding (c4ee063)
- Merge pull request router-for-me#3605 from router-for-me/log (4ade13a)
- feat(logging): add request_id handling in HomeAppLogForwarder and tests (d2c5f27)
- fix(logging): log errors during file-backed source cleanup (7d9980e)
- feat(signature): upgrade provider signature checks (86cb9c1)
- feat: intercept incompatible signature replay (aee7a5f)
- fix(openai): dedupe response websocket input item IDs (e9dafc7)
- Merge pull request router-for-me#3615 from sususu98/codex/signature-intercept-on-pr (034d2b6)
- Merge pull request router-for-me#3612 from router-for-me/log (96b6f7e)
- test(oauth): ensure missing auth directories are created and callback payloads are validated (fc0615b)
- fix(translator/gemini): support developer role in OpenAI Responses requests (776a9c0)
- Merge pull request router-for-me#3620 from iBenzene/fix/responses-input-id-dedupe (55901f0)
- fix(auth): strip "generate" from payload during WebSocket HTTP fallback (430e679)
- Merge branch 'dev', commit 'refs/pull/3621/head' of github.com:router-for-me/CLIProxyAPI into dev (3a54fb7)
- refactor(executor): consolidate Codex request translation logic (33983b6)
- feat(executor): implement identity obfuscation for Codex requests and responses (0f24caf)
- fix(executor/xai): drop orphaned tool_choice when Claude tools array is empty (303685c)
- feat(executor): enhance Codex identity obfuscation with turn and window metadata handling (bbcdaab)
- feat(models): add support for
grok-imagine-video-1.5-previewmodel (ac1360f) - test(models, executor): add XAI video model test and fix Codex User-Agent assertions (fb4f39d)
- feat(executor): refine session and conversation header handling for Codex (05b9724)
- fix(openai): keep referenced tool call when deduping websocket input IDs (e7f4dd4)
- refactor(openai): parse dedupe input item metadata in a single pass (f05d68d)
- feat(usage): introduce executor type tracking in usage reporting (959067e)
- feat(watcher, redisqueue): add usage refresh notification support (f353979)
- feat(models): add support for
grok-composer-2.5-fastmodel (bf04a24) - chore(models): remove legacy GPT 5.2 and GPT 5.3 Codex entries from registry (87d813c)
- Fix Home auth refresh retry handling (c9dc6bd)
- feat(codex): cache reasoning replay items (603a08f)
- fix(translator): normalize message-level system roles for Gemini (68282c4)
- Merge pull request router-for-me#3679 from sususu98/codex/system-role-to-user-upstream-dev (4abd59c)
- Merge pull request router-for-me#3667 from sususu98/feat/codex-reasoning-replay-cache-upstream-dev (8306391)
- Merge pull request router-for-me#3677 from sususu98/codex/home-auth-loop-upstream-dev (02d0d92)
- Merge pull request router-for-me#3676 from eltmon/add-panopticon-to-users (d710248)
- docs(readme): update project descriptions and add Panopticon link (28c7f41)
- fix(codex): handle non-empty reasoning and content items, add test for trailing empty messages (0e3c809)
- refactor(runtime): enhance
NewUtlsHTTPClientwith context-based RoundTripper (35ab084) - fix(codex): avoid replaying orphan tool calls (17af089)
- Merge pull request router-for-me#3688 from sususu98/fix-codex-replay-dev (7682acc)
- fix(auth): retry and backoff cloudflare challenge 403 errors (45f58d4)
- refactor(auth): simplify and narrow cloudflare challenge checks (77061aa)
- Merge pull request router-for-me#3689 from sususu98/pr/cloudflare-challenge-retry (1c9601f)
- Merge pull request router-for-me#3657 from catoncat/fix/responses-input-id-dedupe-orphaned-output (9c02454)
- feat(auth): add runtime auth removal and unscheduling logic (55440f0)
- feat(auth): add error event publishing and Redis queue integration (fd30944)
- Merge pull request router-for-me#3702 from Villoh/docs/add-tunnel-agent (bebdaa4)
- Merge pull request router-for-me#3649 from intcua/fix/xai-empty-tools-orphan-tool-choice (387c783)
- feat(logging): enable file-backed request/response sources for enhanced API logging (5753d1a)
- feat(safemode): implement example API key warning server and related functionality (bc38b68)
- Merge pull request router-for-me#3735 from router-for-me/safemode (fca12a2)
- feat(pluginhost): add capabilities for command-line flag handling and plugin execution (d625cad)
- Merge branch 'dynamic' into dev (3abfc83)
- feat(pluginhost): refactor and enhance plugin system with new execution and thinking capabilities (0ed85bb)
- chore(build): update dependencies, enhance cross-compilation, and refactor workflows (bc58c21)
- chore(build): remove goreleaser configuration and refactor release workflow (9ee6493)
- chore(build): set additional environment variables for FreeBSD builds in release workflow (3dedf47)
- chore(build): add caching for Go dependencies and FreeBSD-specific artifacts in release workflow (c75fb2c)
- chore(build): add custom runners and improve Go module handling in FreeBSD release workflow (4567fd1)
- chore(build): add custom runners and improve Go module handling in FreeBSD release workflow (43c1214)
- chore(build): enhance release workflow with automated asset handling and checksum generation (6d9014b)
- chore(build): update release workflow to include repository reference and fix exit code handling (37df0b8)
- chore(build): refactor FreeBSD build process and optimize workflows (4f55ecc)
- feat(plugin): add Codex Service Tier request normalizer plugin (c989cdd)
- fix(translator): add fallback for
system_instructionkey in Gemini request parsing (365415c) - chore(build): migrate from Alpine to Debian and update build dependencies (d9a0c9b)
- feat(translator): implement signature delta handling and enhance chunk processing in Gemini and Antigravity translators (ec67244)
- chore(build): add Linux-specific release workflows and update release notes handling (69d937a)
- chore(build): include
ca-certificatesin Docker image for improved HTTPS support (d55f215) - feat(safemode): support
/management.htmlroute inExampleAPIKeyWarningHandler(856dc81) - chore(build): remove checksum generation from release workflows (07c607b)
- fix: translate codex stream errors for claude (702295d)
- perf(codex): avoid rebuilding completed JSON when extracting generated images (4330b92)
- perf(codex): preallocate results and skip empty index sort (2e81766)
- feat(pluginhost): add support for interceptors and metadata sanitization (1762ee0)
- Merge pull request router-for-me#3771 from Folyd/perf/codex-image-streaming-memory (d128578)
- fix(runtime): update formatting in codex image extraction comment (5e41e07)
- feat(jshandler): add new plugin providing JavaScript-based interceptors and capabilities (5830535)
- feat(access, pluginhost): add support for exclusive frontend auth providers (fabf061)
- fix: update antigravity version lookup (c7cc3a1)
- Merge pull request router-for-me#3770 from sususu98/fix/codex-claude-stream-error-upstream-dev (9fb9e91)
- Merge pull request router-for-me#3773 from sususu98/fix/antigravity-version-upstream-dev (a2db6a6)
- feat(pluginhost, scheduler): introduce Go-based plugin with scheduler capabilities (693ce1c)
- feat(auth): enhance plugin scheduler with
HasSchedulersupport and fast-path tests (41a4dba) - feat(interceptor, jshandler): enhance request/response handling with original request support (556f50a)
- refactor(auth): simplify plugin scheduler by consolidating strategies and removing
RoundRobinSelector(1d1ee85) - feat(pluginhost, jshandler): integrate HostCallbackID with interceptors and JS engine logging (2aeb41c)
- feat(pluginhost): introduce browser-navigable plugin resources in Management API (44ea9ab)
- fix(logging): track Codex backend request IDs (e1864fb)
- fix(logging): tighten Codex backend request ID prefix (dc3152d)
- feat(models): add
Claude Fable 5to registry (efd69d8) - Merge pull request router-for-me#3788 from shoucandanghehe/fix/codex-backend-request-id (8caf474)
- feat(auth): deduplicate concurrent refresh token requests with
singleflight(8e52c40) - feat(docs): add Unity2.ai sponsorship details to README (21387f5)
- feat(auto-updater): refactor skip logic and add unit tests for autoUpdateSkipReason (3c773b6)
- feat(auth, interceptor, jshandler): add post-auth request interceptors and enhance format handling (1ca048a)
- feat(translator): ensure correct finish_reason handling for all response chunks (58bf645)
- feat(translator): enhance response aggregation and annotation handling (dc04d8b)
- feat(service): add XAIExecutor to home executors registration (4cbd500)
- feat(executor): refactor executor registration (ca1f627)
- feat(translator, pluginhost): add stream-specific response transformation support (9985976)
- Merge pull request router-for-me#3795 from router-for-me/webui (030c4a9)
- Merge branch 'dev' of github.com:router-for-me/CLIProxyAPI into dev (ac4017e)
- feat(plugin, api): introduce host model callback support with Go example and API handlers (8e39db2)
- feat(plugin, api): prevent plugin recursion on host model callbacks, enable targeted interceptor skipping (538e341)
- test(websocket, api): add unit tests for response ID injection and handling of pending tool calls (ed52c61)
- refactor(release): enhance release workflow with changelog generation and improved note handling (5633c93)
- feat(translator): add usage token details for cache input/output aggregation (9dbf4cd)
- feat(pluginstore): add plugin store support (e38ba28)
- Merge pull request router-for-me#3818 from router-for-me/Plugin-stone (0626b22)
- refactor(translator): update test strings to use English for consistency (69b7462)
- feat(pluginhost, api): add support for "X-CPA-SUPPORT-PLUGIN" header with CGO detection (049ced5)
- feat(pluginstore, pluginhost): add plugin unload handling and preserve config during plugin updates (60f6a54)
- feat(htmlsanitize): add HTML and JSON sanitization utilities with integration across plugins and APIs (44d3066)
- chore(plugin/jshandler): remove JS handler plugin implementation and related tests (b6c22f2)
- feat(pluginstore): fetch and install plugins from latest release (40f4b8b)
- feat(management): resolve plugin store versions from latest releases (220b4e5)
- feat(pluginstore): make registry version field optional (b2b5d10)
- fix(plugins): expose saved plugin config (b60ec43)
- Merge pull request router-for-me#3821 from router-for-me/feat/plugin-latest-release-check (cbaea35)
- fix(plugins): guard config read with mutex (4f5f1b8)
- docs(plugins): document config get endpoint in Chinese readme (b29851d)
- Merge pull request router-for-me#3822 from router-for-me/fix/plugin-config-get-endpoint (c006e67)
- fix: expose plugin support header for CORS (2659e49)
- fix: precompute exposed CORS headers (7cd5b15)
- Merge pull request router-for-me#3823 from router-for-me/fix/cors-expose-plugin-support (6a0b198)
- feat(antigravity): bridge Claude WebSearch to native googleSearch (48dcadd)
- Merge pull request router-for-me#3824 from sususu98/codex/antigravity-websearch-native-minimal (94c5a7f)
- chore(docker): simplify
.dockerignorepatterns by removing wildcard entries (b94178b) - feat: add Kimi K2.7 Code model (kimi-k2.7-code) (8223520)
- feat(translator): consolidate mid-conversation system messages into initial system content (d6c4fc2)
- Add plugin delete management endpoint (c5cfdb1)
- Document plugin delete endpoint (b79647d)
- Add plugin store install timeout (b39ee66)
- refactor(plugin): remove timeout handling from plugin installation logic (9cdb18e)
- Merge pull request router-for-me#3830 from router-for-me/codex/add-plugin-delete-api (83c53d0)
- feat(config): add "passthrough" mode for disable-image-generation (8d4a7f1)
- fix(registry): Conform Claude models listing to Anthropic API schema (f5484b0)
- fix(registry): Emit Claude model created_at as RFC 3339 string (e3301ec)
- feat(models): increase
context_lengthfor Composer 2.5 Fast to 200,000 (6d472d7) - Merge pull request router-for-me#3832 from haowang02/feat/disable-image-generation-passthrough (eebb873)
- Merge pull request router-for-me#3827 from iamkhalidbashir/add-kimi-k2.7-code (964e86f)
- Merge pull request router-for-me#3825 from xiaocoss/add-quotio-desktop (e0cb43f)
- feat(api): Route Anthropic /v1/models requests to the Claude format (c354f88)
- feat!: remove amp integration support (8122b9f)
- refactor(config): remove legacy migration code (b4054e1)
- refactor(api): remove deprecated route module interfaces (79db0e5)
- Merge pull request router-for-me#3846 from router-for-me/remove_amp (f6aa9a0)
- feat: enhance fault tolerance for kv-based caching and introduce additional tests (2a050dc)
- fix(home): forward credentials for home models (b5da088)
- fix(auth): map credential errors to unauthorized (64a8957)
- Merge pull request router-for-me#3847 from router-for-me/home (c59eee6)
- feat(pluginhost): implement host authentication callbacks and add tests (6f923a2)
- feat(executor): add support for compact response handling in XAIExecutor (529d9e9)
- feat(pluginstore): add support for third-party plugin store sources and enhance plugin management (303c0f2)
- feat(pluginstore): refactor plugin store source handling to use string URLs (239d7ee)
- feat(websockets): handle terminal events and improve error propagation (3b96119)
- feat(pluginstore): improve nil checks in pluginStoreSnapshot function (6f3bd76)
- Merge pull request router-for-me#3848 from router-for-me/feat/Community_Plugins (ea4e978)
- feat: add OpenAI video support with improved error handling and response normalization (7de9757)
- Add log cursor helpers (c61453a)
- Tail management logs with cursors (95a72a4)
- Read management logs from cursors (331daa2)
- Preserve management log line counts (0d82dac)
- Bound management log cursor reads (d417fa5)
- feat(websockets): add Codex websocket passthrough support with tests (56988ae)
- feat(websockets): implement XAIWebsocketsExecutor with enhanced execution and ID mapping (ea90ab6)
- feat(websockets): add transcript state tracking and compaction trigger support (f33bc56)
- feat(auth): add config API key exclusion management with tests (f85768e)
- feat(videos): add video authentication binding and update handler behavior (bbef8da)
- feat(plugins): implement asynchronous config reload after plugin deletion (3b0cc91)
- Continue log cursors across rotation (917cec3)
- Disambiguate zero-offset log cursors (db3fdea)
- Avoid counting all logs for tail reads (a47c386)
- Fix ambiguous empty log cursor handling (5036513)
- fix log cursor rotation gap (0b21b07)
- Merge branch 'dev' into main (1ed1f7b)
- Merge pull request router-for-me#3850 from router-for-me/feat/log-feat (e405998)
- feat(executor): sanitize web search tool domains to meet Anthropic requirements (844b855)
- feat(util): normalize Claude tool_result content and improve Gemini integration (2406daf)
- feat(config+executor): add global Claude cloak mode toggle and improve credential fallback logic (8fad0d0)
- fix(pluginhost): keep stream callbacks alive until stream close (9f940f1)
- feat(plugin): add ModelRouter before auth with single-slot routing targets (router-for-me#3865) (87132e5)
- feat(videos): add support for video_url extraction and validation in handlers (2884a67)
- fix(translator): emit Claude server tool blocks for Codex web_search_call streams (router-for-me#3868) (30dc2e7)
- feat(translator): add namespace and function call mapping for Claude responses (f49d179)
- feat(translator): enhance content block handling and add stream-specific test (a5cb883)
- fix(pluginhost): avoid holding host lock during plugin lifecycle (13f51d9)
- fix(management): reload plugins asynchronously after changes (a65ced4)
- Add runtime config clone (7f026e1)
- Use config snapshots for management reload (a4756ab)
- Stabilize management reload race tests (7b16321)
- Fix management reload snapshot ordering (a3c87ce)
- Treat loading plugins as busy (09596d2)
- Merge pull request router-for-me#3872 from router-for-me/codex/pluginhost-async-reload (125c092)
- feat(plugin-config): update default plugin
Enabledbehavior to false and expand test coverage (8d2c00c) - feat(executor): handle usage limit errors and enhance retry logic (b9d024a)
- refactor(tests): remove obsolete test files and update reasoning effort logic (8c6f279)
- Merge pull request router-for-me#3873 from router-for-me/thinking (0e81dee)
- feat(misc): align Antigravity runtime UA with agy CLI version sources (c296790)
- Merge pull request router-for-me#3877 from sususu98/feat/antigravity-cli-ua-upstream-dev (29f22ac)
- feat(executor): normalize reasoning text events and enhance handling logic (96a8b0c)
- feat(videos): implement auth binding for video requests and enhance proxy handling (644ba74)
- feat(translator): ensure tool uses stay adjacent to tool results in message generation (f23fb12)
- feat(management): add test to validate priority preservation in auth file uploads (acaf250)
- test(translator): add tests to validate omission of top-level
output_textin OpenAI responses (cde5081) - feat(translator): add tests to validate trailing assistant prefill stripping and sanitize tool call IDs (dd49a52)
- chore: remove Gemini CLI-related translator packages and logic (78ba8ba)
- feat(antigravity): HOME reasoning replay for Gemini models (365e8fc)
- Revert "feat(antigravity): HOME reasoning replay for Gemini models" (62c4b37)
- feat(antigravity): HOME reasoning replay for Gemini models (292456a)
- fix(antigravity): insert replayed functionCall before matching functionResponse (b17d29a)
- fix(antigravity): address review on replay call_id and args parsing (ef19f5f)
- fix(antigravity): PR review replay scope, signature merge, and tool keys (c55157d)
- test(antigravity): cover invalid-signature replay cache clear (ec8c2c2)
- feat(thinking): remove
thinkingConfigforModeNonewith zero budget and no level (ac8fb97) - feat(translator): add test and logic to ensure
objectschemas includepropertiesfield (c13dbcc) - test(management): add concurrency test for Codex OAuth session handling (41c52b9)
- feat(runtime): add support for
gpt-image-1.5and direct image API proxying (ae6c5ea) - fix(auth): classify transport errors as
home_unavailablewith retryable flag (052f193) - feat(config): improve config reload handling and introduce async management save hook (1d0551a)
- feat(translator): drop
apply_patchcustom tool in OpenAI responses (c020e2d) - feat(translator): normalize
service_tierin Codex requests and add tests (893412e) - feat(translator): support namespace tools in OpenAI response transformations (4926630)
- feat(auth): add transient error cooldown configuration and adjust retry logic (d33ac5e)
- feat(auth): add persistent cooldown state management with file-backed store (07c297a)
- feat(translator): preserve structured
tool_choicein OpenAI response conversions (aed54ad) - feat(translator): preserve
input_imagedetails in OpenAI response conversion (aa2ad99) - Merge branch 'remove-gemini-cli' into dev (041a065)
- feat(translator): attach
reasoning_contentto assistant and tool messages in OpenAI response conversion (1b849b6) - chore(deps): bump
github.com/jackc/pgx/v5from v5.7.6 to v5.9.2 (1581700) - feat(translator): preserve
input_audiofields in OpenAI request conversions (51aa5ba) - feat(translator): defer Codex function call starts until function name is available (34639c3)
- feat(schema): add removal of
$commentandenumDescriptionsin JSON schema processing (c44d4fc) - feat(auth): unify provider key handling with OpenAI compatibility support (4c78e40)
- feat(executor): normalize
parallel_tool_callsbased ontoolspresence (75fa626) - feat(translator): add support for
text.formatconversion in OpenAI to Gemini requests (bc652c7) - feat(executor): add session isolation for
grok-composermodels (28e2f97) - feat(translator): add benchmarking for
convertSystemRoleToDeveloperwith large inputs (379167c) - feat(auth): add per-auth OAuth model alias support (f66376f)
- feat(config): add support for
rebuild_mid_system_messageconfiguration (790ec30) - Merge pull request router-for-me#3834 from dcrdev/main (b0ca379)
- feat(registry): improve model fallback logic and refactor Claude model handling (a79ae80)
- feat(translator): sanitize
parametersJsonSchemain OpenAI to Gemini request handling (b4bec34) - feat(management): add
ResetQuotaendpoint and auth manager quota reset functionality (5771abb) - feat(translator): enforce FIFO order in tool call ID consumption for Gemini requests (011ffe1)
- feat(translator): ensure preservation of tool and call IDs in Gemini request and response translations (57e1bf9)
- feat(registry): add "max" level and remove deprecated Gemini models (09179a7)
- feat(translator): add support for handling video URLs in Gemini requests (35c3d80)
- Merge pull request router-for-me#3900 from sususu98/fix/antigravity-replay-fc-order-upstream-dev (eb8d0d0)
- feat(api): add "max" reasoning depth and
service_tiersto Codex client models (bb414de) - feat(api): prioritize non-template Codex client models and adjust priority calculation logic (9a8098d)
- feat(api): implement support for multi-auth expansion in plugin systems (1f21f94)
- fix(watcher): update Gemini provider name to "gemini-cli" in file synthesizer logic (31549af)
- feat(pluginhost): improve error handling with HTTP status codes for plugin calls (5bc0c68)
- feat(cliproxy): add
unregisterOpenAICompatExecutorand sync runtime configuration (babef2a) - feat(api): refactor provider key logic for API key usage and add test for compatibility grouping (369e560)
- fix(claude): bypass signature sanitizer for non-Claude models (router-for-me#3946) (1f2504e)
- feat(cliproxy): optimize API key alias rebuild with deferred execution and caching (079ec51)
- fix(codex): strip model prefix for websocket payloads (36ed0e5)
- Merge pull request router-for-me#3959 from fdreamsu/codex/fix-codex-ws-prefix (290f421)
- feat(plugins): sync home plugin manifests (c58da38)
- Merge pull request router-for-me#3963 from router-for-me/home (5d9ea16)
- test(translator, runtime): ensure empty text parts are skipped without null values (bd64681)
- feat(runtime): add Claude Code session handling with caching and tests (7c390a7)
- feat(translator): wrap message-level system roles as user-visible reminders (f1ed891)
- [codex] Drop foreign encrypted_content before xAI Grok upstream (router-for-me#3961) (53a21df)
- feat(xai): replay Grok reasoning for Claude messages (router-for-me#3962) (05d1792)
- feat(home): enhance plugin management and synchronization (e9a11db)
- Merge pull request router-for-me#3973 from router-for-me/home (b89c594)
- feat(auth): refactor credential kind detection and add dynamic source classification (70053be)
- refactor(home): relocate and rename home plugin status reporting logic (3a13865)
- fix(codex): sanitize downstream UA for direct image calls (38ed7ae)
- feat(oauth): add force-mapping for upstream response model rewrite (fd93ee0)
- Merge pull request router-for-me#3981 from sususu98/feat/oauth-model-alias-force-mapping (c20ac28)
- feat(videos): add model binding and propagation for video auth management (87e6d9c)
- feat(auth): add ParseAuths method for expanding credential payloads into multiple auth records (a183e72)
- fix(oauth): force-map responses to config alias not request suffix (router-for-me#3983) (a725027)
- feat(pluginhost): add shadow plugin management and cleanup functionality (df10a5b)
- Merge pull request router-for-me#3986 from router-for-me/sdk (7712ffe)
- refactor(pluginhost): replace
Snapshot().recordswithactiveRecordsfor improved filtering (b53d1e9) - feat(pluginhost): add OAuthProvider field to plugin metadata and update related functionality (810abe5)
- Merge pull request router-for-me#3998 from router-for-me/feat/plugin-OAuth (29b5343)
- feat(pluginhost): enhance logging with plugin name and path fields (192888f)
- Merge pull request router-for-me#4001 from router-for-me/plugin (c4cf0fd)
- fix(auth): rewrite API key alias response models (router-for-me#4002) (eb2e1e3)
- Merge pull request router-for-me#4003 from maxdewald/add-universal-chat-provider (abe68cc)
- feat(models): refine Gemini 3.5 Flash variants and add Medium tier (65f2288)
- feat(pluginhost): enhance plugin version management and logging for hot reload (6a59d64)
- Merge pull request router-for-me#4009 from router-for-me/plugin (4c0c602)
- feat(executor): improve downstream response ID rewrite and add test for repeated response scenarios (2fa4dab)
- docs(README): add CyberPay to partners section with multilingual updates (b05a27e)
- feat(handlers): add
disable-coolingsupport in OpenAI compatibility configuration (21d8164) - feat(pluginstore): introduce support for direct install type and version management (1f16e87)
- Merge pull request router-for-me#4035 from router-for-me/plugin (884fc3c)
- feat(plugins): enhance plugin deletion test and config handling (60eae92)
- Merge pull request router-for-me#4036 from router-for-me/plugins (f106c41)
- feat(auth): refactor authentication handling for plugins and add tests (00c0b4d)
- Merge pull request router-for-me#4038 from router-for-me/plugins (c22795a)
- feat(pluginstore): add API URL to ReleaseAsset and update asset download logic (3ea7f18)
- feat(auth): streamline GitHub token handling and enhance download asset logic (8970873)
- feat(pluginstore): refactor installation tests to improve asset download logic and error handling (caf7052)
- Merge pull request router-for-me#4039 from router-for-me/plugin (dc43747)
- feat(tests): refactor snapshot handling in model registration tests for improved clarity and consistency (c48516c)
- fix(translator): map OpenAI Responses reasoning to Gemini two-part signatures (4b51f85)
- fix(translator): align reasoning merge with Responses visible text rules (3648bc1)
- fix(antigravity): align CLI User-Agent with agy 1.0.13 short form (router-for-me#4045) (ca7478a)
- Merge pull request router-for-me#4042 from router-for-me/plugin (8c8009c)
- Merge pull request router-for-me#4043 from sususu98/fix/responses-gemini-reasoning-signature-upstream-dev (a26d384)
- fix(auth): repair force-mapped Responses SSE framing for WS forwarder (150e7f0)
- Merge pull request router-for-me#4051 from sususu98/codex/fix-force-mapped-antigravity-sse-rewriter (95b7cd4)
- fix(responses): full transcript replay on WS-to-SSE Codex paths (8f68634)
- Merge pull request router-for-me#4052 from sususu98/fix/responses-ws-to-sse-4048 (00114be)
- Improve reasoning content handling in response logic (611d65e)
- fix(registry): add Claude Sonnet 5 model metadata (956ce7c)
- Merge pull request router-for-me#4069 from TooYoungTooSimp/patch-1 (e681910)
- feat(plugin): add methods for auth provider handling and plugin metadata retrieval (e130264)
- Merge pull request router-for-me#4080 from router-for-me/plugin (cde9336)
- 🐛 fix(management): filter auth files by identity (d25b6b4)
- feat(docs): add Claude API sponsorship information to README files (c1b952d)
- fix(docs): correct link formatting for Claude API sponsorship in README (00787ef)
- fix(docs): correct formatting and wording for Claude API sponsorship in README files (87c091e)
- feat(docs): add Code0 sponsorship information to README files in English, Chinese, and Japanese (ac21758)
- docs(README): update VisionCoder URLs in all language versions (f8334be)
- Merge pull request router-for-me#4095 from router-for-me/readme-add (9e9c244)
- fix(translator): remove temperature parameter handling in Claude request transformations (5afc0f1)
- fix: allow management access in example API key safe mode (df08038)
- feat(config): default enable WebsocketAuth in LoadConfigOptional and ParseConfigBytes (4909493)
- Merge pull request router-for-me#4107 from router-for-me/safemode (22bb89a)
- Merge pull request router-for-me#4109 from router-for-me/websocket (3ef74dc)
- fix(auth): escalate quota backoff once per cooldown window and jitter cooldown waits (270869d)
- fix(auth): keep jittered cooldown waits within max-retry-interval (0d23f79)
- Merge pull request router-for-me#4117 from router-for-me/quota-backoff-guard (4a2a3b2)
- feat(interactions): add support for Google Interactions (8b9c4da)
- fix(auth): handle
invalid_granterrors with retry suspension logic (3aa42a6) - test(executor): add unit test to validate complete SSE event passthrough in Claude executor (ab6ed39)
- feat(translator): enhance Claude tool response handling with structured content parsing (dc77bf4)
- feat(openai): add support for input/output modalities in Codex client models (078ed17)
- fix(executor): map
message_too_bigWebSocket errors to structured API responses (4f157fb) - refactor(executor): centralize OpenAI stream usage handling with
StreamUsageBuffer(dea4787) - refactor(translator): simplify response logic and enhance thinking compatibility handling (14b1396)
- fix(auth): prevent credential overwrites for team-scoped plans with account hashing (505c59d)
- fix(translator): resolve pending codex tool calls on terminal response (cdccc72)
- Update Antigravity hub user agent (router-for-me#4142) (4f2e190)
- feat(models): add Grok 4.5 to model registry with extended capabilities and context (7c47edb)
- feat(models): add
xhightargeting option to confidence level settings (186c87b) - feat(auth): enable automatic credential refresh on unauthorized errors (ec3aba2)
- feat(models): adjust thinking levels by removing "none" and "xhigh" options (c612108)
- feat(executor): integrate model registry for reasoning effort support in XAI (3fd1892)
- feat(translator): add cache control handling for responses and messages (bea9567)
- feat(translator): map OpenAI max_tokens to Gemini's maxOutputTokens (d899c96)
- feat(sponsorship): add Fenno.ai sponsorship details and logo to README files (53ebde0)
- feat(sponsorship): add Qiniu Cloud AI sponsorship details and logo to README files (bc279c6)
- feat(models): update
zero_allowedthinking config tofalsein model registry (1204101) - feat(auth/models): implement Claude model ID prefix handling and plugin auth disabled state support (ee71dc5)
- feat(validation): enhance cross-family level clamping with model type mismatch handling (db4f1ce)
- fix(xai): prevent Desktop hang on complex tool schemas and set free-usage Retry-After (0df267a)
- feat(models): add GPT-5.6 models (Sol, Terra, Luna) to registry with enhanced capabilities (445de6c)
- feat(models): register additional GPT-5.6 models (Sol, Terra, Luna) to model registry (f21beb0)
- chore(models): update default client version and user agent, revise GPT-5.5 configurations (b4c5940)
- feat(middleware): support logging for Codex response websockets (ef0a4a5)
- fix: expose ultra reasoning effort to Codex clients (ed29334)
- feat(models): restrict Codex input modalities to text and image (15f3037)
- chore(models): remove GPT-5.6 Sol from model registry (5f8899b)
- feat(models): add model header overrides from configuration (26d45fd)
- feat(executor): add image generation function tool checks and corresponding tests (f9162d3)
- Merge pull request router-for-me#4175 from router-for-me/image (cfa90f9)
- chore(models): update default client version and user agent, revise GPT-5.6 Sol configuration (35dba9b)
- Merge pull request router-for-me#4160 from kogekiplay/fix/codex-client-ultra-reasoning (20e61f2)
- Merge pull request router-for-me#4157 from Wraient/fix/xai-desktop-tool-schema-and-free-usage-retry (bf25331)
- fix(xai): improve namespace-specific tool parameter handling and simplify Codex automation schema (ca67caf)
- chore(models): remove "ultra" effort level from models.json (f084eef)
- fix(oauth): reject unknown completed states (1af2334)
- fix(plugin-store): preserve installed source identity (f081b91)
- fix(oauth): hide completed sessions from legacy getter (d1ef06c)
- fix(oauth): make session completion idempotent (7115e7e)
- Merge pull request router-for-me#4185 from router-for-me/codex/fix-p2-oauth-plugin-source (0410992)
- fix(executor): enhance image generation tool handling for responses-lite requests (631f7a6)
- Merge pull request router-for-me#4192 from router-for-me/codex/fix-sol-responses-lite-image-tool (3554b63)
- feat(translator): add support for
cache_write_tokensin Codex response usage details (abb5224) - chore(docs): remove Unity2.ai sponsorship section from all README translations (cc2095f)
- feat(handlers): extend image-only model support with
grok-imagine-imageandgrok-imagine-image-quality(045a964) - feat(usage): report request and response service tiers (dc4be16)
- fix(usage): retain response tier without usage (ea20742)
- feat(executor): add chat-proxy-specific headers and improve base URL handling (3533484)
- feat(executor): refactor XAI header application logic and extend test coverage (dc162b9)
- perf(usage): avoid parsing irrelevant stream chunks (bc812e5)
- feat(oauth): refactor for device flow and cancelable sessions, extend test coverage (6e819ab)
- Merge pull request router-for-me#4202 from router-for-me/codex/issue-33-service-tier-reporting (8c2bf2c)
- feat(executor, handlers): enhance websocket output restoration and compact compaction logic (aa05fb2)
- feat(executor): add
using_apiattribute support for API path toggle and enhance test coverage (e99a205) - feat(executor): enhance
cache_tokenshandling and extend parsing logic with alias normalization (2075f77) - Merge pull request router-for-me#4230 from IQ-Director/feature/tray-powershell (9418054)
- fix(codex): proxy GPT-5.6 standalone search (46e2894)
- fix(executor): identify Grok CLI OAuth requests (1a0bbe0)
- feat(executor): add logging for resolved xAI base URL and enhance test coverage (6c70996)
- feat(handlers): update method names for image execution with auth manager (042f1fe)
- Merge pull request router-for-me#4240 from BG-QWQ/fix/xai-cli-user-agent-4233 (0ba5fab)
- fix(translator): 上游流式 tool_calls 缺少 id 时合成 call_id 保证事件链完整 (07455ec)
- feat(translator): 支持 Codex additional_tools 工具下发与 custom 工具历史回放 (bd7cc64)
- feat(translator): custom 工具调用以 custom_tool_call item 回放给客户端 (bd2aafb)
- fix(translator): 工具输出与 custom input 解包的健壮性改进 (e9d3dfb)
- fix(translator): stabilize Responses Lite tool events (dc39f44)
- feat(translator): support namespace and custom tool handling in OpenAI responses (f4a8aee)
- feat(config): add support for configurable model display names across all APIs (3586d3e)
- feat(xai): encrypted reasoning replay for Responses/Claude with hardened cache (041816c)
- refactor(xai): remove unused assistant content equal helpers (dc551b7)
- Merge PR router-for-me#4239: fix(codex): proxy GPT-5.6 standalone search (dee653c)
- feat(codex): implement session affinity and request logging for alpha search (9c3f720)
- feat(codex): pass Gin context to auth selection for Alpha search (55f4d6e)
- fix(xai): avoid ambiguous reasoning replay injection (3f875ec)
- fix(xai): preserve namespace tool routing (0e3a3e6)
- fix(xai): preserve tool-call-only replay batches (f1e9347)
- fix(xai): address namespace routing review feedback (c4eda81)
- fix(xai): disable unisolated replay without caller auth (487f8af)
- fix(xai): qualify namespaced tool choices (eb6d169)
- fix(xai): clear replay after compaction (18d239d)
- Merge pull request router-for-me#4190 from sususu98/pr/xai-sse-reasoning-replay (5b7f236)
- feat(codex): add summary detection and processing for local compaction in websocket input (e0a0b5a)
- fix(xai): handle additional namespace tools (4123e27)
- Merge pull request router-for-me#4251 from huahai0202/fix/xai-namespace-tool-routing (19fb0f0)
- Fix xAI allowed tool namespace choices (e674f19)
- feat(registry): remote-refresh Codex client model catalog (router-for-me#4276) (4fe2c60)
- feat(ui): add provider SVG logos and descriptions in multilingual README files (6279bb8)
- fix(codex): gate tool search by model providers (ceaeb75)
- fix(codex): require model template for tool search (e73aad2)
- Merge pull request router-for-me#4278 from huahai0202/fix/disable-custom-tool-search (7efe8b3)
- docs(readme): add Grok Search MCP project entry (cf10f25)
- docs(readme): add Grok Search MCP translations (a9813dc)
- fix(xai): normalize custom tool call history (7bb8132)
- perf(executor): avoid O(n^2) rebuilds when sanitizing reasoning encrypted_content (router-for-me#4281) (7f6d491)
- fix(xai): filter internal X search calls (caa93a7)
- fix(executor): strip orphan reasoning ids when store is disabled (router-for-me#4285) (194fbce)
- perf(xai): reuse parsed input array (4651c37)
- Merge pull request router-for-me#4284 from vvanglro/codex/fix-xai-x-search-history-4282 (4fd81f9)
- feat(xai): enhance response filtering with client-declared tool support to distinguish internal X Search traces (a5577cc)
- feat(xai): add xAI API key support with comprehensive handling and tests (423f3d5)
- fix(xai): sync allowed_tools and prune orphaned choices for x_search inject (a9831c8)
- fix(release): rename
GOARCHtoTARGET_GOARCHin release workflow to resolve variable mismatch during FreeBSD builds (2a63b27) - Merge pull request router-for-me#4283 from MapleMapleCat/docs/add-grok-search-mcp (06a4e46)
- feat(ui): update Kimi logo with new SVG design and dimensions (6c6b16f)
- fix(usage): collapse OpenAI service tier metadata (router-for-me#4275) (03d58c4)
- feat(auth): add home force mapping logic with tests and alias result handling (160a556)
- feat(auth): add
SelectAuthByKindmethod and enhance Codex Alpha Search handling (411d7d4) - feat(translator): handle reasoning content and improve request serialization (3d46ede)
- feat(logging): add deferred request body capture for error handling (e574167)
- feat(translator): enhance handling of custom tool calls and improve tool call batching logic (9f62c8d)
- feat(translator): disambiguate and deduplicate tool names in request/response workflows (c880371)
- feat(config): resolve plugin directory paths and handle tilde expansion (35a5f06)
- perf(translator): build input and messages arrays in a single pass (613255e)
- perf(translator): build claude system and messages arrays in a single pass (3c6c7b7)
- feat(usage): track generate flag with backward-compatible defaults (768b4c4)
- fix: publish usage event for xAI images/generations path (9f500ae)
- feat(gitstore): migrate to new client options API and disable commit signing (71b5beb)
- feat(executor): simplify xAI function schema handling and rejection logic (b6ce0be)
- Merge remote-tracking branch 'origin/pr-4344' into dev (3cb2d27)
- fix: complete xAI image usage reporting (466cee6)
- feat(translator): improve error handling and response conversion for incomplete statuses (09da52a)
- perf(api): skip inactive request interceptors (970529b)
- fix(translator): reduce Claude to Codex allocations (b3ffb11)
- perf(translator): avoid redundant gjson array parsing (e1e2357)
- feat(kimi): use dynamic version from buildinfo for API headers (106270b)
- feat(pluginstore): implement plugin synchronization and validation (5243b38)
- feat(tests): enhance thinking test cases with new scenarios and model updates (74a9876)
- feat(kimi): implement native thinking object extraction and update reasoning handling (255df2d)
- Merge pull request router-for-me#4381 from router-for-me/plugin (050bec6)
- fix(xai): rewrite image.image_url to image.url before upstream send (f82123a)
- Merge pull request router-for-me#4387 from router-for-me/think (bb0fdbf)
- Merge commit 'refs/pull/4390/head' of github.com:router-for-me/CLIProxyAPI into dev (70152f4)
- fix(xai): normalize image refs with special JSON keys (f583414)
- fix(registry): update Gemini 3.1 Flash Lite model ID and add test for validation (2366f67)
- fix(executor): ensure
top_pis removed innormalizeClaudeSamplingForUpstream(4231ad6) - fix(xai): update compact request handling to use dedicated base URL (9f4f53c)
- feat(logging): add CPA trace ID middleware and enhance metadata handling (3662719)
- feat(oauth-model-alias): add support for display names in OAuth model aliases (f5746a9)
- feat(executor): add ID shortening for overlong Codex input items (1cfe529)
- feat(websockets): implement active connection tracking for websocket sessions (fbe1160)
- feat(translator): prioritize service tier for fast responses in Claude requests (da087d7)
- feat(executor): implement agent-scoped cache key isolation and enhance replay handling (baffbe2)
- feat(executor): add root union type normalization and extended tests (2f80cb9)
- feat(executor): add normalization for parallel tool calls in Codex executors (81d70f5)
- fix(config): rename SyncRevision to AuthRevision in PluginsConfig (1e119af)
- feat(models): add new Kimi K3 variants and update metadata (a28b9f1)
- fix(models): correct casing in Kimi K3 model ID (740caab)
- feat(executor): extend
applyClaudeHeadersand Kimi executor with additional header support (76dc0fd) - Merge pull request router-for-me#4408 from router-for-me/plugin (d32a116)
- fix(executor): normalize Kimi upstream model ID to canonical k3 (8bafd85)
- feat(kimi): migrate Kimi executor to use chat completions path and remove deprecated code (1176543)
- fix(models): update Gemini model IDs and metadata for production release (bd38411)
- feat(kimi): route Claude requests through Claude executor in Kimi (70c4bd7)
- Merge pull request router-for-me#4419 from mikewong23571/fix/kimi-upstream-model-normalization (93d74a8)
- feat(redis): add plugin sync timeout and enhance redis options handling (b651a1a)
- chore(go): update
golang.org/x/systo v0.47.0 in Claude web search router (58ef846) - fix(auth): update credential filename logic to include account hash (0b2ce80)
- feat(auth): add explicit handling for
count_tokensendpoint errors and enhance model availability logic (36ed0ca) - Merge pull request router-for-me#4329 from mazzz1y/perf/executor (910ab83)
- Merge pull request router-for-me#4366 from Johnnybyzhang/fix/claude-codex-allocation-fix (9f1e890)
- test(translator): add benchmarks for request translation performance across large histories (3c2010b)
- perf(translator): optimize array allocation logic and replace
JoinRawArraywithSetRawArrayItemsmethods (7c61e98) - feat(executor): promote
additional_toolsto top-leveltoolsin XAI requests (f175c08) - feat(translator): implement output indexing for OpenAI response generation (b7299a3)
- feat(translator): handle empty response content for Claude and adjust JSON structure (cd98e9d)
- feat(translator): qualify function names with namespace in OpenAI response handling (07f8354)
- feat(translator): normalize and extract OpenAI file content with MIME type (e47ffda)
- feat(executor): sanitize and drop overlong encrypted reasoning IDs in Codex input processing (fde40c5)
- perf(translator): add normalization and reuse logic for Codex request payloads (0f52284)
- perf(translator): add unit tests for payload reuse and normalization across translators (6429112)
- perf(executor): replace
sjson.SetByteswith optimized helpers for conditional payload updates (8b4fd28) - perf(util): introduce
GetGJSONBytesNoCopyfor efficient JSON parsing without data duplication (53c1e7e) - chore(models): remove obsolete variables and approvals from Codex client models (7d2883e)
- fix(websocket): propagate upstream 1009 without credential fallback (router-for-me#4444) (7329437)
- test(websocket): add robust unit tests for tool call handling and reconciliation (a007ad6)
- Update README_CN.md (0eddcff)
- feat(docker): add plugin volume mapping to docker-compose files (01f387f)
- docs(readme): update Kimi model descriptions with K3 details (db82d65)
- fix(pluginhost): prevent stream close/send panic (router-for-me#4480) (3e7e081)
- fix(pluginhost): honor accepted emit results (119debe)
- Merge pull request router-for-me#4481 from KorenKrita/agent/fix-plugin-stream-bridge-close-race (2b4e962)
- Merge pull request router-for-me#4083 from seakee/fix/auth-files-filter-by-index (36b45d5)
- perf(translator): optimize tool handling in OpenAI translator requests (3ad6dfe)
- perf(executor): improve token counting by introducing
countXAIInputTokens(cb110ad) - feat(executor): add Claude input token state handling and token estimation logic (f3e36f1)
- feat(server): add support for Codex Alpha Search model routing (f71ec0e)
- Merge pull request router-for-me#4249 from sylearn/docs/add-aiusage-showcase (e8ef4d7)
- fix(responses): preserve context across websocket transport changes (e05ae09)
- fix(xai): preserve compacted websocket transcript state (840ba5d)
- fix(responses): commit websocket tool cache atomically (a661172)
- feat: add Home credential concurrency support (3ecd4af)
- Merge branch 'credential-concurrency' into dev (b30e7d9)
- Merge branch 'dev' of github.com:router-for-me/CLIProxyAPI into dev (285322c)
- Merge pull request router-for-me#4522 from sususu98/fix/responses-ws-continuity (e572987)
- fix(usage): add normalized token accounting v2 (416a080)
- fix(usage): classify partial token accounting correctly (fe8a616)
- Merge pull request router-for-me#4528 from router-for-me/fix/issue-81-normalized-token-accounting (885ffac)
- fix(usage): harden canonical token normalization (42f36b9)
- fix(pluginhost): stabilize Windows plugin response buffer (520cfa1)
- Add Claude Dialects to 'Who is with us?' (9ffc3ba)
- Mention public site claude-dialects.cc (87750f9)
- refactor(tests): simplify credential concurrency and sentinel test fixtures (7692ccd)
- Merge pull request router-for-me#4540 from router-for-me/test (a556dfc)
- feat(executor): replace
sdktranslator.TranslateRequestwithhelps.TranslateRequestWithCodexMultiAgentV2(84bf937) - Merge branch 'optimize-multi-agent-v2' into dev (35ebe3f)
- feat(models): add Codex client model catalog and response builder (71d5912)
- feat(models): add Claude client model catalog and response builder (0296600)
- perf(codex): make replay prefix fingerprints incremental (6cdd51f)
- feat(live): add Codex Live session handler and sideband support (46172dd)
- feat(live): relay realtime WebRTC media (bda79b2)
- feat(diff): enhance config diff and relay updates for Codex Live Media (ebc7446)
- feat(live): add TCP proxy for Codex Live WebRTC relay (49be36a)
- feat(logging): log Codex media forwarding start with detailed fields (f8dffa0)
- feat(logging): add debug logging for OAuth selection in home execution (3727d87)
- Merge pull request router-for-me#4553 from router-for-me/log (5ac5deb)
- fix(docs): update Claude API registration links in README files (a14dfc7)
- fix(antigravity): preserve complete reasoning replay (router-for-me#4525) (7288635)
- fix(translator): prevent duplicate message delta processing in Claude response handler (f04605d)
- Merge pull request router-for-me#4538 from yueziji/fix/windows-plugin-response-buffer-upstream (284ccc4)
- feat(models): add new models Claude Opus 5 and Gemini 3.6 Flash (ace2e84)
- fix(antigravity): sanitize unsigned thinking signatures in OpenAI Chat Completions for Claude models (router-for-me#4562) (62a2c0d)
- fix(runtime): skip deferred tools when injecting cache_control (95d5b24)
- feat(runtime): improve executor binding logic and add config-based executor handling (27fc316)
- feat(runtime): enhance response preparation for xAI executor output controls (41f6ea8)
- fix(antigravity): scope schema sanitization (router-for-me#4571) (a4d18cb)
- fix(executor): keep tool_result blocks first when injecting the cloaking reminder (2940643)
- feat(runtime): implement derived session identity features and tests (f6c32ec)
- fix(translator/codex): keep single thinking block per reasoning item in streaming translator (router-for-me#4581) (94cf467)
- chore(pluginhost): refactor and remove unused interceptors and executor methods (fe4ae49)
- feat(home): add NewLifetime method and improve reconnect failover handling (7cb71ed)
- Merge PR router-for-me#4573: preserve tool_result ordering (42a00a2)
- Merge PR router-for-me#4546 into dev (fa42a9d)
- fix(sdk): preserve custom executors during auth sync (96f4b00)
- fix(executor): restore OAuth tool names from SSE responses (08e5515)
- Merge pull request router-for-me#4539 from stefandevo/add-claude-dialects (027428f)
- docs(readme): sync Claude Dialects translations (61db3a0)
- Merge pull request router-for-me#4588 from adityavkk/fix/preserve-sdk-executors (2135379)
- Merge pull request router-for-me#4591 from cyclopentadiene/fix/claude-oauth-sse-tool-names (411dc9a)
- fix(auth): replace return with break in filestore equality checks (22ec415)
- refactor(translator): enhance tool call handling for streaming responses (58ede93)
- fix(executor): add failure tracking and reporting for video execution (90c2ff9)
- feat(executor): implement local token counting for Claude requests (57ef784)
- fix(translator): handle
[DONE]and completion states for OpenAI responses (4d9bf91) - refactor(translator): improve tool name handling and resolve conflicts (6491ce3)
- feat(store): add PostgreSQL-backed cooldown state persistence (f329b9d)
- feat(executor): add configurable injection of x_search tool for xAI requests (8423cce)
- feat(util): add
NormalizeClaudeToolInputSchemafor input schema normalization (59aa35a) - feat(store): add guard for watcher-originated auth file deletions (e49b1cc)
- fix(auth): prefer native client session signals for affinity (a97b1ae)
- fix(auth): preserve live home alias groups (c702c9a)
- fix(session): reject edge control characters (c1f16b7)
- Merge pull request router-for-me#4554 from yinkev/fix/session-affinity-native-signals (02f15e3)
- feat(translator): enhance tool output parsing with support for
input_imagetypes (181242b) - feat(config): add support for disabling model list cloaking in Claude Code (6914478)
- feat(home): enhance client recovery and dispatch handling with new state management and error reporting (8eed5f1)
- feat(home): update concurrency release logic to include takeover eligibility state in error handling (3b4f4cf)
- refactor(translator): simplify token usage metadata extraction in OpenAI responses (27b4660)
- feat(home): improve error handling in cluster discovery and enhance GetConfig tests (f943926)
- feat(models): add metadata for Gemini 3.5 Flash Lite and Gemini 3.6 Flash models (3073dab)
- feat(models): add
minimalreasoning level to Codex client models (3d5ec86) - test(server): add
minimalreasoning level in Codex-supported levels test (7b233fa) - feat(models): add metadata for Gemini 3.1 Pro Preview, 3.5 Flash Lite, and 3.6 Flash models (61a6f08)
- feat(plugin): add request lifecycle plugin with interception and termination capabilities (30efd7c)
- feat(translator): map OpenAI
response_formatto Gemini structured output settings (20f83ca) - refactor(translator): rename
system_instructiontosystemInstructionfor consistency (cade44b) - fix: align Claude headers with upstream streaming (c405398)
- feat(home): add membership takeover eligibility handling and update related tests (bb43b7a)
- Merge pull request router-for-me#4621 from router-for-me/home (fbd77b4)
- feat(signature): validate Claude CAIS reasoning signatures (5b2890b)
- Merge pull request router-for-me#4624 from sususu98/feat/claude-cais-signature-validation (f894317)
- fix(antigravity): recover tool provenance instead of failing closed (router-for-me#4599) (e47c436)
- fix(antigravity): keep thought signatures when replay context drifts (d2c0c58)
- fix(antigravity): replay text thought signatures across context drift (a06e21b)
- feat(home): enhance membership protocol handling (7f2f4a5)
- Merge pull request router-for-me#4627 from router-for-me/home (31106e2)
- Merge pull request router-for-me#4626 from sususu98/fix/4599-tool-provenance-degradation (1161a4f)
- feat(auth): introduce weighted round-robin scheduler and credential weight validation (5dcca50)
- feat(logging): add client request metadata extraction and propagation (c9417c8)
- Merge pull request router-for-me#4596 from rdself/coder/claude-stream-accept-header-v2 (1778e8c)
- fix(home): use Home's CAS command instead of EVAL for replay compare-and-swap (20784c6)
- Merge pull request router-for-me#4645 from router-for-me/fix/home-cas-command (39031ef)
- refactor(executor): consolidate
thinking.ApplyThinkingintohelps.ApplyRequestThinking(f322914) - feat(models): remove Gemini 3.5 Flash Lite entry from models.json (a432d76)
- feat(util, executor, translator): enhance Antigravity schema handling and response formatting (5dedb30)
- feat(translator): add support for
cached_creation_tokensin usage details (74d38e0) - refactor(translator): overhaul function call handling in Codex response conversion (fecebcc)
- feat(translator): group consecutive tool results in Claude request conversion (4a2eb54)
- fix(codex-api): stop force-injecting built-in model IDs (2c8e5ba)
- Merge pull request router-for-me#4659 from router-for-me/fix/codex-api-configured-models-only (8cdd3f1)
- refactor(util): use structured options for JSON schema cleaning (2b63d6b)
- fix(xai): support Grok Imagine Video 1.5 GA (abaeb55)
- fix(xai): preserve preview alias auth routing (61d9a30)
- fix(xai): register video preview alias (8423274)
- feat(store): enhance repository handling and corruption recovery logic (a2ff691)
- fix(translator): correct handling of
json_schemaandjson_objectresponse formats (1c1d8ef) - fix(cliproxy): refine Codex model resolution and credential validation (b4d94d5)
- feat(auth): add support for credential weight parsing in auth file handling (e8e3952)
- fix(cliproxy): simplify Codex model resolution and enhance test coverage (928478e)
- fix(auth): refresh Home credentials before 401 retry (f179a0f)
- feat(codex): add
disable-codex-cloakingconfig option and refine header management (a80e808) - feat(thinking): preserve cross-protocol summary visibility (b3046d2)
- fix(thinking): avoid enabling Claude for hidden summaries (b63a38d)
- fix(thinking): decouple Interactions effort summaries (76008b4)
- docs(thinking): clarify Claude model defaults (92b6bc4)
- fix(thinking): close summary translation gaps (5d307c1)
- fix(thinking): honor provider visibility semantics (87ceaf8)
- feat(models): add Kimi K3 256K and extend Kimi K3 configuration (7d00936)
- fix: recover Home OAuth credentials after 401 (4db8e12)
- Merge pull request router-for-me#4687 from router-for-me/fix/home-401-refresh-recovery (4a31513)
- fix(thinking): honor normalized summary payloads (0c2ec7d)
- fix(thinking): respect final summary authority (c4dcd87)
- fix(thinking): drop disabled Interactions summaries (24323ee)
- Merge pull request router-for-me#4684 from sususu98/fix/thinking-summary-visibility (9d46c8d)
- chore: ignore root logs directory (3a995bd)
- Revert "Merge pull request router-for-me#4687 from router-for-me/fix/home-401-refresh-recovery" (a63da8a)
- feat: add sponser LMU (d9460a8)
- feat(executor): introduce Kimi Thinking Replay cache and continuity mechanisms (8c37dd9)
- feat(codex): add Alpha Search API key support with configurable endpoint (198a267)
- feat(translator): enhance OpenAI response handling for structured tool outputs (4d498ec)
- feat(executor): add conditional support for Claude fast mode beta (3d4e160)
- feat(config): add
support-prompt-cache-keyoption for OpenAI compatibility (08eb05a) - fix(codex): align websocket cloaking headers (91561df)
- Merge pull request router-for-me#4707 from sususu98/fix/codex-websocket-cloaking (bc71c77)
- fix(main): ensure safe closure of homeClient to prevent idle connections (4488932)
- Merge pull request router-for-me#4735 from router-for-me/home (bcebbad)
- fix(auth): add bounded timeouts to Codex and Claude token refresh paths (41fc5e1)
- feature(codex): Normalize invalid sub2api message item IDs during Codex input sanitization (8d675e6)
- feat(codex): support
max-context-lengthoverrides for configured models (a303fd8) - feat(executor): normalize OpenAI tool results for text-only compatibility models (13435c9)
- fix(translator): accept snake_case Gemini usage metadata in interactions conversion (abbb1c7)
- fix(translator): emit function_call_arguments.done and make function call stream events idempotent (0cc24b2)
- Handle encrypted collaboration message schemas (1cf9a45)
- fix(translator): preserve content block order when building non-stream Claude OpenAI responses (aea71c0)
- fix(translator): preserve non-object Claude tool inputs when building function call args (0879929)
- fix(translator): emit
response.completedon stream end whenfinish_reasonis missing (8720702) - Merge pull request router-for-me#4748 from patrick-fu/p/patrick/fix-codex-collaboration-message-encryption (ffdb9c9)
- fix(codex): hydrate missing
response.completedoutput item IDs (134a667) - Merge pull request router-for-me#4451 from madhavajay/add-alex (481c726)
- feat(claude): align OAuth wire identity and TLS with Claude Code 2.1.220 (f3e25ab)
- fix(claude): reconstruct cloaked system prompts like the real client (ef89c6a)
- fix(claude): preserve semantics in MCP tool aliases (afdd251)
- fix(claude): scope Anthropic beta and count_tokens policies (a2933c7)
- fix(claude): synchronize credential metadata and device pools (4fdf59c)
- fix(claude): keep a fast-mode refusal request-scoped (6912a74)
- fix(claude): send Anthropic header names with the real client's casing (a20626f)
- perf(claude): batch OAuth tool name rewrites (842dbe6)
- fix(claude): replay measured OAuth wire, Fast and diagnostic profiles (f63a925)
- fix(claude): decode stacked response encodings (fa6bc77)
- fix(claude): harden OAuth identity and native routing (b3ed702)
- fix(httpwire): retain request state after partial writes (05e7232)
- fix(claude): close the count_tokens cloaking gap (2228847)
- fix(claude): keep client cancellation availability-neutral (ce7fcd9)
- fix(claude): pass Fast errors through without retry (497cf49)
- fix(claude): align OAuth exchange and account inspection (2959f9e)
- test(claude): preserve adaptive thinking signatures (3c58d18)
- feat(claude): enable TLS session resumption (7079349)
- fix(claude): harden request lifecycle (a5f6390)
- fix(claude): align OAuth betas with native accounts (1214326)
- fix(claude): keep custom token counts local (3e70208)
- docs(claude): clarify exact fingerprint baseline (903e41b)
- Merge pull request router-for-me#4752 from sususu98/fix/claude-fingerprint-2.1.220 (43f8146)
- fix(claude): pair diagnostics with cache beta (56e533f)
- fix(antigravity): strip propertyNames inside a property named "properties" (3904c40)
- Merge pull request router-for-me#4757 from sususu98/fix/antigravity-strip-property-names (26609e0)
- fix(claude): preserve cloak system block boundaries (3fac4a0)
- fix: retry Home OAuth requests after unauthorized (1e38a3a)
- fix(home): reject disabled refreshed credentials (d952cb4)
- fix(auth): reprepare Home credentials after refresh (063f9d3)
- fix(usage): update token fingerprint after refresh (1df21b1)
- fix(auth): validate stream retry results (b437d87)
- fix(home): report every unauthorized attempt (a81b9e9)
- chore: exclude test changes from Home fixes (0fc0286)
- fix(claude): carry caller system inputs into Claude system blocks (6f8f11a)
- fix(claude): rebuild the Responses reasoning chain (9b11423)
- Merge pull request router-for-me#4698 from router-for-me/fix/home-401-refresh-recovery (a88197f)
- feat(codex): prepare multi-agent v2 tool definitions at the Responses boundary for Codex clients (7fe8473)
- fix(usage): account for Claude thinking tokens (8cf1d46)
- Merge pull request router-for-me#4767 from sususu98/fix/claude-thinking-tokens-usage (8d65350)
- fix(codex): set
multi_agent_versionto v2 when optimizeMultiAgentV2 is enabled (4f5ec10) - fix(codex): preserve base64 PDF document blocks when converting Claude requests to Codex (44d5e0b)
- fix: honor router skips for prepared stream routes (7ea5e3a)
- chore: add .pi to .gitignore (50e2a99)
- feat(api): add Grok Shell-aware
/v1/modelshandling with dedicated model response formatting (b782d43) - fix(responses): preserve original request model on response.created/response.in_progress payloads (9b8d974)
- fix(responses): always emit
response.usage.output_tokens_details.reasoning_tokens(82d6242) - Merge pull request router-for-me#4771 from FlameMida/fix/prepared-route-skip-recursion (f27be00)
- Merge pull request router-for-me#4668 from oscarbrey/fix/grok-imagine-video-1.5-ga (32f1069)
- feat(antigravity): obfuscate sensitive words in system instructions (42eef10)
- fix(openai): drop OpenAI stream chunks after
[DONE](690f93d) - feat(xai): bump client version to 0.2.120 and include Grok Shell auth headers on XAI requests (e400d71)
- fix(home): preserve requested usage metadata before auth preparation (076ec64)
- fix(claude): skip context management when thinking is disabled (533b69e)
- fix(responses): support custom tool calls and namespace collisions in request/response conversion (ea37d13)
- feat(codex): add model-level
is-compatflag to rewrite MultiAgentV2agent_messagefor Responses-compatible endpoints (e5ea945) - feat(codex): add model-level
is-compatflag to rewrite MultiAgentV2agent_messagefor Responses-compatible endpoints (7fef08e) - fix(responses): correct request wrapper detection in antigravity response conversion (94808f1)
- fix(responses): translate
text.formatintoresponse_formatin request conversion (2e91e99) - fix(auth): preserve session affinity across priorities (65fc536)
- feat(compat): preserve compat-mode thinking/signature blocks for API-key models (dcee14d)
- fix(responses): merge consecutive OpenAI response turns and align tool call/result blocks for Claude conversion (f1a21a9)
- fix(claude): accumulate consecutive role turns during request conversion (71e8711)
- fix(openai): expose only client-fault streaming errors (fe28d58)
- fix(auth): avoid penalizing credentials for client faults (c1d69e7)
- fix(auth): rotate credentials for unknown upstream failures (579f5e3)
- fix(api): escape the model name in the unroutable model error (b148af8)
- fix(cliproxy): canonicalize thinking-suffix model states for cooldown and scheduler sharing (1674aaf)
- fix(cliproxy): avoid credential cooldown for connection-lifecycle disconnect errors (8392b18)
- feat(docs): add Infistar.ai sponsorship information and logo to documentation (148eff2)
- fix(codex): normalize reasoning and function_call item IDs during input sanitization (5e25566)
- feat(compat): preserve Claude thinking/tool-call content for is-compat OpenAI compatibility models (0a95fa6)
- fix(xai): remap bad-credentials 403s to unauthorized (dd67f56)
- chore(.gitignore): add missing entries for AGENTS.override.md, .gocache, and .gitnexus (a4a8773)
- Merge branch 'docs/add-infistar-sponsor' into dev (9e9230a)
- fix(.gitignore): update .llm-wiki entry to exclude trailing slash (d40bd77)
- Prevent large Gemini payloads from being duplicated during normalization (34364ff)
- Reduce Codex request amplification for large payloads (c30e60a)
- Revert "docs: remove AICodeMirror sponsor section from all READMEs and delete its logo asset" (035f548)
- fix(cliproxy): preserve route model on built-in selector cooldown errors (31a4e9b)
- fix(claude): synthesize belated tool_use starts for empty-name calls (37609fa)
- fix(cliproxy): centralize client error status mapping and apply context cancellation/deadline HTTP codes (4b3cc55)
- fix(kimi): canonicalize K2.7 Code model aliases to official Kimi-For-Coding IDs (3693634)
- fix(codex): resolve credential-aware model before forwarding API-key alpha search requests (e64cdbf)
- fix(cliproxy): delegate OpenAI-compatible OAuth refresh to plugin auth providers (01a21b7)
- fix(cliproxy): stop non-streaming keep-alive after OpenAI handler execution (9829bd9)
- fix(codex): deduplicate Responses tools when converting to OpenAI Chat Completions (aff2095)
- feat(signature): identify Kimi thinking signatures by fixed size (8558f44)
- feat(signature): add Grok as a target-only provider family (4abb0e6)
- fix(codex): normalize
custom_tool_callIDs withctc_prefix during Codex input sanitization (197f520) - Add a no-copy GJSON parse helper (ea8882b)
- Reduce Antigravity request amplification for large payloads (b7a4415)
- Avoid copying large payloads in Antigravity reads (9992920)
- Make the payload-reuse guards able to fail (1737596)
- Review: tighten the in-place byte write guard (b921b5d)
- fix(openai): emit
response.failedstream errors for Codex requests (3522e48) - fix(claude): add Claude-compatible thinking replay persistence for multi-turn sessions (2e6b1d8)
- fix(openai): finalize open response items on
[DONE]when final chunk lacksfinish_reason(4906ead) - fix(openai,claude): normalize Responses custom tool-call identity with shared namespace handling (3741184)
- fix(codex): forward sequential cutoff reasoning summaries (5314b29)
- fix(codex): normalize
custom_tool_call_outputIDs withctco_prefix during Codex input sanitization (673bac5) - Merge pull request router-for-me#4865 from shoucandanghehe/fix/codex-sequential-cutoff-summary (6710a5a)
- fix(xai): normalize forced web_search
tool_choiceduring Responses request prep (a6825fe) - fix(claude): recover malformed OAuth MCP aliases when reverse-remapping Claude tool names (93c378b)
- fix(openai): preserve assistant content when converting Responses tool-call turns (ecc9aa7)
- fix(auth): rotate keys after DeepSeek insufficient balance (45ffd11)
- fix(auth): rotate DeepSeek authentication failures (d0d7718)
- fix(auth): prioritize rate-limit status over error body (9c8e4a0)
- feat(codex): add realtime hangup forwarding and local client-secret support (bd34cec)
- fix(runtime): close per-request uTLS HTTP/2 connections with request context (5d9b629)
- feat(plugin): add schema-v3 stream chunk contract to omit payload request bodies (ba5ab79)
- perf(antigravity): index reasoning replay requests (9eedbc2)
- refactor(antigravity): document replay index lifecycle and align empty-contents semantics (0e4c0da)
- refactor(antigravity): route replay merge through the request index (984836b)
- perf(antigravity): skip replay index rebuilds no item can observe (bb7278a)
- test(antigravity): clear credits state in place to fix a cleanup data race (177c761)
- perf(antigravity): batch pre-upstream JSON rewrites (d5f6885)
- perf(antigravity): translate each upstream request once (cf8c27f)
- fix(antigravity): preserve request plugin hook semantics (5fa6629)
- perf(antigravity): reuse native upstream connections (c33a33e)
- fix(antigravity): harden per-credential transport pooling (516ec3a)
- fix(claude): restore cloaked prompt-cache ownership and native shape (f0034ca)
- fix(claude): recognize and pass through native Haiku helpers (a8bbbea)
- fix(claude): drop auto context_management without eligible thinking (8638f28)
- fix(claude): validate legacy-model system turns before sending (189776a)
- fix(codex): make input ID sanitization collision-resistant and deterministic (db143ae)
- fix(kimi): treat
[reasoning unavailable]as unusable reasoning in message normalization (a59caeb) - fix(codex): fall back to current tool-call state when item IDs don’t match (e9c44ae)
- fix(openai): preserve structured and stringified custom tool outputs during Responses conversion (934da23)
- fix(openai): handle premature SSE stream termination with terminal error emission (522b4de)
- fix(codex): preserve multi-agent-v2 namespace handling across incremental websocket turns (b08fe3b)
- feat(management): add request-scoped proxy override for APICall (17a479a)
- fix(kimi): select upstream request format from source format (Claude/OpenAI) (a2337be)
- fix(openai): refactor websocket responses request merge/repair path (c845ce1)
- fix(codex): strip unsupported prompt_cache_options from OpenAI Responses requests (2ab25ea)
- fix(claude): recover OAuth tool names with duplicated server alias prefixes (5b5f428)
- fix(codex): clear multi-agent-v2 optimization state on namespace conflicts (133047d)
- fix(codex): normalize request session header to
Session-Idand preload codex headers (f43aad7) - perf(openai): reduce websocket transcript merge allocations (f9bd9de)
- test(openai): harden websocket transcript allocation coverage (f8bcd1c)
- fix(openai): preserve duplicate websocket input semantics (49b2f89)
- fix(openai): match websocket item metadata case-insensitively (baa11ed)
- fix(openai): avoid JSON copies in websocket responses tool-call repair path (75d2c4a)
- fix(translator): drop Gemini hidden thought parts during request conversion (8b54db3)
- feat(config): add per-credential request-retry override support (6f2cea9)
- feat(openai): add xAI Grok Imagine Image 2.0 image model support (db35b91)
- feat(registry): add model modality metadata to registry definitions (323b727)
- fix(docs): update FennoAI sponsorship details and links in README files (a40d0e6)
- fix(docs): update RunAPI registration links in README files (d757063)
- feat(registry): add Gemini 3.7 Flash High model definition (7ea9c67)
- fix(claude): recover OAuth tool aliases for repeated prefixes and malformed IDs (f2d272d)
- fix(gemini): skip zero-token usage placeholders and always finalize stream reporters (7cf9279)
- fix(claude): use BIP-39 words for OAuth MCP tool aliases (f6f03e4)
- fix(claude): pass through caller MCP tools on alias server collision (bdde638)
- fix(translator): make Gemini tool call IDs deterministic and robustly match responses (8d670b9)
- fix(auth): preserve custom auth-file metadata during token refresh and relogin (b90d8ee)
- fix(translator): strip nested
prompt_cache_breakpointfrom Codex Responses payloads (6edf9c4) - fix(claude): map refusal and sensitive stop reasons to
content_filter(fab077a) - fix(codex): cache multi-agent spawn-agent model data and invalidate on updates (98c98d6)
- fix(openai): mark truncated/filtered responses as incomplete and avoid finalizing partial tool calls (78f0c40)
- fix(gemini): preserve
additionalProperties:falsefor Antigravity response schemas (61c4fd8) - Merge pull request router-for-me#4928 from ramapitecusment/codex/websocket-transcript-allocations-v2 (8b02fed)
- Merge pull request router-for-me#4360 from router-for-me/perf/skip-inactive-request-interceptors (810d4dd)
- fix(auth): avoid cooldown for request-scoped 401 request-faults (203f5b1)
- fix(claude): keep tool_result blocks first when injecting currentDate (297139c)
- fix(claude): add Anthropic unified rate-limit parsing helpers (ac82bed)
- fix(openai): ensure Responses usage includes token detail fields (e0b4956)
- feat(models): add GPT-5.6 Sol Work Mode model registrations and Codex client config updates (dd21444)
- feat(models): add max_completion_tokens to model definitions and responses (046b59e)
- fix(auth): make session-affinity updates safe for rebound sessions (9169ad5)
- Merge pull request router-for-me#4994 from router-for-me/models (48d0218)
- fix(gemini): merge conditional schema branches during JSON schema cleanup (f53a2b6)
- fix(openai): propagate environment context and sanitize antigravity generation config in interaction adapters (10afcc8)
- chore(models): remove GPT-5.6 Sol Work Mode registrations from model registry config (c1ff55f)
- fix(claude): deduplicate duplicate tool outputs in OpenAI-to-Claude request conversion (1ecb7df)
- fix(claude,gemini,antigravity): centralize tool-call ID generation and harden signature sanitization (616d1b1)
- perf(translator): batch assemble response arrays and merge multi-choice parts (124dab6)
- fix(gemini): simplify OpenAI chat response content and choices serialization (a581838)
- perf(translator): batch assemble translation arrays before writing JSON (0c58c3c)
- perf(translator): switch response translators to batched raw-array insertion via
SetRawArrayItems(8b3b304) - pref(claude): keep raw Claude tool IDs for deduplication in request translation (7efe0a7)
- fix(claude,gemini,openai): preserve upstream stream errors when no data payload is emitted (92f03e6)
- feat(claude): map OpenAI
service_tierto Claudespeedin responses requests (7eefab9) - test(antigravity): cover schema sanitizer semantics (e23395a)
- fix(antigravity): preserve schema semantics (7d55d0d)
- Merge pull request router-for-me#5008 from shengyy/fix/antigravity-schema-semantics (361fe95)
- feat(auth): add request-scoped error action handling in conductor (aa10847)
- fix(auth): share session affinity across model variant suffixes (00c4377)
- docs(readme): remove obsolete ecosystem links for PPAP and Alex (75e2454)
- fix(auth): stop old selectors when replacing manager selector and harden cache stop concurrency (b8fbe70)
- Refactor cooling management across configuration and handlers (5bffd15)
- chore(models): update GPT-5.6 context limits in registry metadata (745fb38)
- Merge pull request router-for-me#5026 from router-for-me/cooling (856ddd8)
- fix(claude): keep Fable-only rate limits model scoped (a8f9814)
- add bestproxy sponser (7815449)
- fix(websocket): drop consumed compaction triggers (45c90e8)
- docs(readme): link Bestproxy free trial (628f535)
- fix(gemini): support mixed and structured
function_call_outputhandling in OpenAI→Gemini responses translation (20f84e7) - fix(claude): accept both
max_tokensandmax_completion_tokensin OpenAI→Claude request conversion (3230e37) - Merge pull request router-for-me#5043 from DragonFSKY/fix/consumed-compaction-trigger (d388a4b)
- Merge pull request router-for-me#5050 from router-for-me/sponsor/add-bestproxy (9826bd7)
- fix: update LMU registration links in README files (ee2c494)
- Merge pull request router-for-me#5033 from DEAN-Cherry/fix/claude-fable-model-scoped-cooldown (f985a5c)
- feat(claude): add fingerprint-profile=claude-code-cli for API keys and delegated providers (router-for-me#5047) (f1b0431)
- fix(claude): gate CCH signing by upstream origin and validate fingerprint-profile (aec70df)
- refactor(claude): deduplicate CLI identity application and tidy helpers (f3e836c)
- feat(executor): support
$-based custom headers from downstream request headers (e424bfa) - fix(claude): always send
stopas an array when convertingstop_sequencesin OpenAI requests (4ac37ed) - feat(antigravity): add
video_urlcontent part support to OpenAI request conversion (497673b) - fix: remove temporarily hidden sponsorship details from README files (55397bf)
- fix(executor): prepend empty user turn for model-first Gemini/Antigravity requests (router-for-me#4959) (router-for-me#5048) (62f5a27)
- fix(antigravity): attach sibling tool images to the nearest functionResponse (router-for-me#5075) (79ef361)
- fix(logging): exclude HTTP 499 and client cancellations from forced error logs (0f69f09)
- fix(claude): pass incoming headers when applying custom headers in caller-owned mode (5fef17e)
- fix(gemini): strip 'encrypted' metadata from tool parameters schemas (router-for-me#5065) (ac0d188)
- fix(codex): filter out
prompt_cache_retentionin OpenAI→Codex responses request conversion (2005788) - fix(cliproxy): handle
responses/compactauth cooldowns and fallback semantics (ec105da) - fix(claude): restore tool_search_tool_result references and recognize advisor/agent server tools (router-for-me#5044) (router-for-me#5082) (788e9b7)
- fix(claude): support setup-tokens and gracefully handle 403 OAuth profile errors (router-for-me#4983) (router-for-me#5083) (8aa6868)
- fix(claude): preserve native subagent and environment headers (router-for-me#4982) (router-for-me#5084) (85d2fad)
- feat(cliproxy): add OAuth request-scoped error rules support (9dc51b1)
- fix(cliproxy): add warn-level diagnostics for auth cooldown and upstream execution failures (4874971)
- feat(gemini): add namespace-aware OpenAI Responses tool resolution and custom tool call conversion (556328c)
- fix(cliproxy): support base_URL-only config credentials and skip stale auth headers (92d96e0)
- feat(codex): add opt-in stream bootstrap buffering and overload failover (router-for-me#5115) (4b9d404)
- fix(xai): treat response.incomplete as terminal success (router-for-me#5113) (9d6b5cd)
- fix(claude): avoid long global cooldowns for Fable-only 7d_oi rate limits (42d8e74)
- fix(claude): use
message.reasoning_contentfor converted thinking output (aa5dccc) fix(openai): fallback toreasoningwhenreasoning_contentis missing in response conversion(8eb3ac2)- fix(gemini): preserve Gemini thought signatures in non-stream Claude conversion (3db591e)
- fix(gemini): generate deterministic sequential IDs for Gemini tool call pairing in Codex/Claude conversions (5b232e3)
- fix(openai): map
max_completion_tokensto AntigravitymaxOutputTokens(68e96c2) - Merge pull request router-for-me#5124 from YogaSakti/fix/xai-response-incomplete (a8693c7)
- fix(gemini): include empty annotations/logprobs in
response.output_item.donemessage content (b1c0005) - fix(executor): sanitize thought signatures in Gemini and Gemini Vertex executors (router-for-me#5110) (4053c02)
- fix(cliproxy): add protocol-aware plugin executor usage parsing for response and streaming payloads (1d5b761)
- feat(models): add Gemini 3.7 Flash model registrations to model registry (85e7add)
- feat(auth): add credential retry round contract (601ca43)
- feat(auth): add retry round credential filtering (0a14eb7)
- feat(auth): normalize credential metadata keys (e04d620)
- fix(registry): detect gemini interactions changes (71c3c14)
- fix(xai): keep image_generation on grok-4.6+ conversation requests (dfdf183)
- fix(xai): drop orphaned tool_choice after compact strips tools (87fb01b)
- test(openai): expand reasoning fallback coverage in OpenAI responses non-stream conversion tests (d9869ed)
- test(claude): expand OpenAI conversion tests for
reasoning_contentand stream/non-stream parity (65071f7) - fix(antigravity): raise the fallback client version to 2.9.1 (router-for-me#5175) (a834917)
- fix(gemini): normalize Claude thinking signatures in Gemini request and response conversion (b3f72ce)
- fix(claude): derive stable request-scoped
metadata.user_idfor converters (ab8f00d) - feat(auth): enhance key deletion and patching with base URL validation (ebda750)
- Merge pull request router-for-me#5176 from router-for-me/auth (eeaa2e1)
- fix(openai): validate and filter thought signatures in responses conversion (d5b57a2)
- fix(codex): convert Grok client keepalive SSE frames to comments (4d68ca8)
- Merge pull request router-for-me#5174 from HuiCheng/fix/xai-keep-image-generation-grok-46 (7d5b23f)
- Merge pull request router-for-me#5177 from YogaSakti/fix/antigravity-fallback-version (1be8417)
- fix(gemini): normalize malformed schema nodes before cleanup (a7e3596)
- fix(xai): map image_generation tool_choice to required (d2742c5)
- fix(xai): preserve auto when rewriting image-only allowed_tools (fba1ff2)
- fix(xai): keep forced image_generation from other tools (6f4b6dc)
- Merge pull request router-for-me#5184 from HuiCheng/fix/xai-image-generation-tool-choice-required (3faf709)
- fix(gemini,antigravity): preserve function/tool results as raw strings (9d0a60b)
- docs(readme): add APIMart sponsor (cef351a)
- Merge pull request router-for-me#5210 from router-for-me/apimart-sponsor (b232394)
- docs(readme): add APIMart sponsor to Japanese README (85749db)
- Merge remote-tracking branch 'origin/dev' into apimart-sponsor (cd445f2)
- Merge pull request router-for-me#5212 from router-for-me/apimart-sponsor (dc3c3b1)
- feat: observe upstream provider quota signals (router-for-me#5211) (ca601db)
- fix(pluginhost): add plugin quiesce handling with safe rollback during hot reload (ba510f8)
- feat(github): resolve GitHub token for release checks and asset updates (e1bf893)
- fix(antigravity): remove cross-endpoint fallback (router-for-me#5209) (router-for-me#5228) (adf0529)
- fix: preserve multi-reference video durations (80de901)
- fix(gemini,antigravity): align parallel tool results with preceding tool calls (f2b1996)
- fix(antigravity): safely synthesize terminal finish reasons (router-for-me#5230) (998dcfe)
- fix(auth): keep credential rotation fair when candidates are filtered (1f53b2e)
- fix: update Infistar registration links in README files (ba200ae)
- fix(home): allow home config to override default port (1502ac8)
- fix(xai): inline local refs and broaden codex app tool normalization (2555cde)
- fix(xai): fold namespace tools and restore dispatcher tool calls (9b88808)
- fix(gemini): improve schema normalization for unions and unsupported constraints (adac1e5)
- fix(claude): use zero-based sequential index for streamed tool calls (cb8746f)
- feat(claude): support server-side web search translation for openai responses (4fa1de2)
- fix(gemini): map cached content tokens to claude cache read usage (6f6856e)
- fix(pluginhost): detach context and log rpc failures in usage handling (b7f6c15)
- feat(plugin): support observing upstream websocket response events (4b5f1ea)
- fix(codex): filter extended reasoning levels for older client versions (1cc72b9)
- fix(codex): use codex status error for websocket handshake rejections (fcea738)
- fix(gemini): cache trailing text thought signatures instead of emitting carriers (06997df)
- fix(claude): treat allowed_warning as allowed in unified rate limit checks (95f83a8)
- fix(claude): drop trailing assistant prefill for fable models (8ee9add)
- feat(codex): map claude output_config format to text format (f8c45c3)
- fix(test): improve cross-platform compatibility across unit tests (d36b776)
- fix(auth): preserve round-robin successor across ready view rebuilds (7bc16ee)
- Revert "fix(home): allow home config to override default port" (3e20d66)
- fix(gemini): add default items schema for tool array definitions (b5cde4b)
- fix(proxyutil): enforce HTTP/1.1 ALPN and configure TLS dial context for HTTPS proxies (8dd7804)
- fix(management): synthesize persisted auth record before invoking post-persist hook (3db0a86)
- Merge pull request router-for-me#5273 from esokullu/codex/add-webbrain-project (f0de1d0)
- fix(claude): emit message_delta when openai streaming finish reason is omitted (677dbe1)
- fix(claude): fallback to array index when tool call index is omitted (be1763e)
- feat(executor): measure effective TTFT with protocol-aware token classification (router-for-me#5313) (4b2beb3)
- fix(kimi): normalize tool and function parameter schemas (dd5f9e7)
- fix(claude): collapse consecutive thinking blocks in openai responses translation (07d8156)
- fix(claude): drop unsupported assistant prefill for opus-5 and sonnet-4-6 (6f25b9a)
- fix(claude): strip trailing thinking blocks from assistant messages (c350d3f)
- fix(auth): forward Home unauthorized upstream errors (9a2201c)
- fix(logging): enhance error diagnostics and logging for home refresh operations (e4a8f98)
- fix(runtime): log safe home refresh error types (bc918ab)
- fix(auth): prefer errors from upstream attempts (6a489fa)
- feat(claude): support advisor tool beta header (5ff4a31)
- Merge pull request router-for-me#5331 from router-for-me/fix-home-refresh-logging (c1f3b48)
- chore(codex): update codex client model definitions (02e3d33)
- fix(config): add NormalizeHomePort function and update home port handling (7ab999a)
- fix(auth): synchronize auth lifecycle and registry state with epochs and generations (12b88f3)
- fix(openai): ignore empty tool calls array in responses translation (6c6473f)
- fix(xai): use chat base url resolution for image and video requests (e4119f8)
- feat(executor): support token usage parsing for plugin executors (d31b159)
- fix(store): close git repos during recovery (b908ed5)
- Merge pull request router-for-me#5356 from router-for-me/store (9654894)
- docs(readme): remove LMU sponsor (81e1b53)
- feat(session): implement Merkle LCP session affinity, session tree, and distributed Home hierarchy (router-for-me#5202) (8211388)
- fix(session): harden nil fallback, normalize agent id, and support nested antigravity payloads (router-for-me#5202) (100c564)
- perf(test): eliminate physical sleeps and normalize mock timeouts in xai and home (router-for-me#5328) (c2021cd)
- fix(session): harden depth-cap index cleanup, bound lcp fingerprints, and support nested payloads (router-for-me#5202) (c99ce12)
- fix(claude): preserve tool pairing across intervening system messages (9fdc460)
- refactor(session): prune in-memory session tree store in favor of flat KV affinity and pure info extraction (5755d00)
- feat(usage): track streaming execution state in usage records (9721d99)
- fix(auth): isolate subagent session affinity for antigravity and gemini (ff81157)
- fix(auth): propagate upstream error causes in auth selection failures (f2e2d71)
- fix(auth): preserve upstream status codes in antigravity auth errors (7070785)
- feat(home): enhance homeDispatchConn with untrack method and improve connection closure handling (dbcc4ec)
- fix(tests): improve test reliability by avoiding wall-clock time in TTL and cache-eviction tests (22a5740)
- Merge pull request router-for-me#5373 from router-for-me/tests (9ca9384)
- Merge pull request router-for-me#5374 from router-for-me/home (ed37aa0)
- fix(session): support identity and subagent extraction from nested request payloads (fae57a3)
- fix(registry): remove defunct gemini-3-flash-agent model from antigravity provider (35e3d97)
- test(executor): update antigravity interactions test to use valid model (acc1500)
- fix(auth): optimize session cache LRU capacity eviction (5679bbf)
- fix(session): derive LCP session ID from rolling prefix keys and harden matcher (dc0f7a5)
- fix(codex): support reasoning_text in openai chat completion responses (17a65ee)
- feat(translator): support cache write tokens in claude responses (893abba)
- fix(antigravity): support native thinking signatures without prefixes in claude translator (15231e9)
- fix(antigravity): retry model fetching per endpoint and prioritize daily base url (c2834b6)
- fix(antigravity): preserve unsigned gemini thinking blocks with trailing carriers (8deeb4a)
- fix: harden concurrent session handling, listener lifecycle, and token accounting (02c02cd)
- fix(antigravity): strip tool config, labels, and session id in token counting (d0fb44c)
- fix(antigravity): bypass quota cooldowns and credit hints when cooling is disabled (272c1cf)
- feat(registry): add claude fable 5.1 and gemini 3.8 flash models (dacae58)
- chore(registry): remove "minimal" level from dynamic_allowed definitions in models (bdcccfb)
- fix(auth): validate access token expiration and retain valid credentials on refresh failure (9812b1e)
- fix(home): map user_credits_insufficient to 402 and user_period_limit_exceeded to 429 (f416175)
- fix(auth): enforce minimum cooldown floor and track attempted credentials on 429 (18e01a7)
- fix(claude): upgrade default Claude Code baseline and fingerprint to 2.1.258 (df7e04ea)
- fix(models): preserve home model capability metadata (1ecf0cb)
- feat(auth): use home model capabilities for thinking (6ff680e)
- refactor(kimi): use request thinking helper (c6dd821)
- fix(codex): clear unsupported reasoning levels (cdda333)
- Merge pull request router-for-me#5436 from router-for-me/models (63fdd77)
- feat(routing): make subagent session affinity configurable via session-affinity-subagents (d577e63)
- fix(auth): prevent individual model quota cooldowns from blocking credential (09471dd)
- feat(session): derive distinct branch session ID, parent lineage on Merkle LCP forks, and enhance Codex fork/subagent affinity (router-for-me#5418) (router-for-me#5454) (e899f0e)
- chore: remove sponsorship images for Claude API and Code0 from README files (ebbce50)
- feat: 添加 AxisNow 赞助信息及相关图像到 README 文件 (699b065)
- feat: add Swiftproxy Sponser (93f5266)
- feat(codex): support orphan delegation compatibility via orphan-delegation-compatibility (291cfb8)
- feat(openai): send periodic ping control frames during responses websocket streaming (2a6b87a)
- chore: add fork upstream sync workflow and DockerHub settings (d25aa5d)
- fix(ci): keep fork releases on patch tags (7ba1f49)
- Restore Codex prompt cache key synthesis (ee3fc2e)
- Fix EOF retry logic for network errors (#15) (c02e8f1)
Full Changelog: v6.9.6...v7.2.149-patch