Skip to content

v7.2.149-patch

Choose a tag to compare

@github-actions github-actions released this 04 Sep 07:07
· 445 commits to main since this release

Linux release assets

  • CLIProxyAPI_<version>_linux_<arch>.tar.gz is 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.gz is 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.gz is 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 helps package and update references (d2c7e4e)
  • Merge branch 'dev' of github.com:router-for-me/CLIProxyAPI into dev (b468ca7)
  • fix(codex): conditionally set Session_id header 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.usage for 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 HEAD requests to /healthz endpoint (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 n parameter in OpenAI image handlers (fd71960)
  • fix(handlers): remove references to unsupported n parameter 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 content field 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_choice for image_generation when disabled (4601841)
  • feat: add tri-state support for disable-image-generation configuration (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 GetUsage to GetUsageQueue and 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_cooling override support (0f0fcd2)
  • refactor(cliproxy): remove ClaudeCodeSessionAffinity support 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 disabled flag 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 count for home auth dispatch requests and enable usage statistics (66c3dae)
  • feat(auth): add shouldReturnLastErrorOnPickFailure helper 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_flag logic into main.go for 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 registry package (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 FormProtocol to FromProtocol across 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 newTestServerWithOptions and 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_models command for dynamic Codex model fetching (efa200e)
  • feat(logging): add RequestID support 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 SetTranslatedReasoningEffort to 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-free catalog (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-preview model (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-fast model (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 NewUtlsHTTPClient with 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_instruction key 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-certificates in Docker image for improved HTTPS support (d55f215)
  • feat(safemode): support /management.html route in ExampleAPIKeyWarningHandler (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 HasScheduler support 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 5 to 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 .dockerignore patterns 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_length for 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 Enabled behavior 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_text in 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 thinkingConfig for ModeNone with zero budget and no level (ac8fb97)
  • feat(translator): add test and logic to ensure object schemas include properties field (c13dbcc)
  • test(management): add concurrency test for Codex OAuth session handling (41c52b9)
  • feat(runtime): add support for gpt-image-1.5 and direct image API proxying (ae6c5ea)
  • fix(auth): classify transport errors as home_unavailable with retryable flag (052f193)
  • feat(config): improve config reload handling and introduce async management save hook (1d0551a)
  • feat(translator): drop apply_patch custom tool in OpenAI responses (c020e2d)
  • feat(translator): normalize service_tier in 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_choice in OpenAI response conversions (aed54ad)
  • feat(translator): preserve input_image details in OpenAI response conversion (aa2ad99)
  • Merge branch 'remove-gemini-cli' into dev (041a065)
  • feat(translator): attach reasoning_content to assistant and tool messages in OpenAI response conversion (1b849b6)
  • chore(deps): bump github.com/jackc/pgx/v5 from v5.7.6 to v5.9.2 (1581700)
  • feat(translator): preserve input_audio fields in OpenAI request conversions (51aa5ba)
  • feat(translator): defer Codex function call starts until function name is available (34639c3)
  • feat(schema): add removal of $comment and enumDescriptions in JSON schema processing (c44d4fc)
  • feat(auth): unify provider key handling with OpenAI compatibility support (4c78e40)
  • feat(executor): normalize parallel_tool_calls based on tools presence (75fa626)
  • feat(translator): add support for text.format conversion in OpenAI to Gemini requests (bc652c7)
  • feat(executor): add session isolation for grok-composer models (28e2f97)
  • feat(translator): add benchmarking for convertSystemRoleToDeveloper with large inputs (379167c)
  • feat(auth): add per-auth OAuth model alias support (f66376f)
  • feat(config): add support for rebuild_mid_system_message configuration (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 parametersJsonSchema in OpenAI to Gemini request handling (b4bec34)
  • feat(management): add ResetQuota endpoint 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_tiers to 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 unregisterOpenAICompatExecutor and 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().records with activeRecords for 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-cooling support 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_grant errors 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_big WebSocket 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 xhigh targeting 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_allowed thinking config to false in 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_tokens in 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-image and grok-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_api attribute support for API path toggle and enhance test coverage (e99a205)
  • feat(executor): enhance cache_tokens handling 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 GOARCH to TARGET_GOARCH in 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 SelectAuthByKind method 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_p is removed in normalizeClaudeSamplingForUpstream (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 applyClaudeHeaders and 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/sys to 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_tokens endpoint 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 JoinRawArray with SetRawArrayItems methods (7c61e98)
  • feat(executor): promote additional_tools to top-level tools in 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.SetBytes with optimized helpers for conditional payload updates (8b4fd28)
  • perf(util): introduce GetGJSONBytesNoCopy for 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.TranslateRequest with helps.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 NormalizeClaudeToolInputSchema for 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_image types (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 minimal reasoning level to Codex client models (3d5ec86)
  • test(server): add minimal reasoning 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_format to Gemini structured output settings (20f83ca)
  • refactor(translator): rename system_instruction to systemInstruction for 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.ApplyThinking into helps.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_tokens in 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_schema and json_object response 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-cloaking config 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-key option 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-length overrides 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.completed on stream end when finish_reason is 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.completed output 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_version to 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/models handling 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-compat flag to rewrite MultiAgentV2 agent_message for Responses-compatible endpoints (e5ea945)
  • feat(codex): add model-level is-compat flag to rewrite MultiAgentV2 agent_message for Responses-compatible endpoints (7fef08e)
  • fix(responses): correct request wrapper detection in antigravity response conversion (94808f1)
  • fix(responses): translate text.format into response_format in 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_call IDs with ctc_ 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.failed stream 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 lacks finish_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_output IDs with ctco_ 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_choice during 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-Id and 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_breakpoint from 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:false for 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_tier to Claude speed in 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_output handling in OpenAI→Gemini responses translation (20f84e7)
  • fix(claude): accept both max_tokens and max_completion_tokens in 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 stop as an array when converting stop_sequences in OpenAI requests (4ac37ed)
  • feat(antigravity): add video_url content 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_retention in OpenAI→Codex responses request conversion (2005788)
  • fix(cliproxy): handle responses/compact auth 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_content for converted thinking output (aa5dccc)
  • fix(openai): fallback to reasoningwhenreasoning_content is 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_tokens to Antigravity maxOutputTokens (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.done message 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_content and 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_id for 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