v6.9.37-patch
·
1750 commits
to main
since this release
Changelog
- faad8e3 Add CPA Usage Keeper to README ecosystem list
- 736018a Add GPT-5.5 Codex model support
- 03a751a Add PostForceRefreshTokens
- 29dba03 Comment out system message check in Qwen executor
- da268ce Fix EOF retry logic for network errors (#15)
- 65e9e89 Fix missing
response.completed.usagefor late-usage OpenAI-compatible streams - c10f8ae Fixed: router-for-me#2420
- 108895f Harden Responses SSE framing against partial chunk boundaries
- da3a498 Keep Claude Code compatibility work low-risk and reviewable
- 9b5ce8c Keep Claude builtin helpers aligned with the shared helper layout
- ab9ebea Merge PR router-for-me#2474
- b468ca7 Merge branch 'dev' of github.com:router-for-me/CLIProxyAPI into dev
- 3e78a8d Merge branch 'main' into dev
- a337ecf Merge branch 'router-for-me:main' into feat(vertex)/add-prefix-field
- d09dd4d Merge commit '15c2f274ea690c9a7c9db22f9f454af869db5375' into dev
- 0e4f189 Merge pull request router-for-me#1302 from dinhkarate/feat(vertex)/add-prefix-field
- c1818f1 Merge pull request router-for-me#1940 from Blue-B/fix/claude-interleaved-thinking-amp-gzip-budget
- ea43361 Merge pull request router-for-me#2121 from destinoantagonista-wq/main
- 000fcb1 Merge pull request router-for-me#2298 from snoyiatk/feat/add-gitstore-branch
- b851208 Merge pull request router-for-me#2332 from RaviTharuma/fix/claude-thinking-signature
- c422d16 Merge pull request router-for-me#2398 from 7RPH/fix/responses-sse-framing
- d267522 Merge pull request router-for-me#2403 from CharTyr/clean-pr
- 486cd4c Merge pull request router-for-me#2409 from sususu98/fix/tool-use-pairing-break
- 39dc455 Merge pull request router-for-me#2412 from sususu98/feat/signature-cache-toggle
- 7c3c2e9 Merge pull request router-for-me#2417 from CharTyr/fix/amp-streaming-thinking-regression
- faae9c2 Merge pull request router-for-me#2422 from MonsterQiu/fix/codex-compact-instructions
- b09b03e Merge pull request router-for-me#2424 from possible055/fix/websocket-transcript-replacement
- 1623194 Merge pull request router-for-me#2426 from xixiwenxuanhe/feature/antigravity-credits
- bc3a6e4 Merge pull request router-for-me#2434 from MonsterQiu/fix/codex-responses-null-instructions
- e783d0a Merge pull request router-for-me#2441 from MonsterQiu/issue-2421-alias-before-suspension
- b05f575 Merge pull request router-for-me#2444 from 0oAstro/fix/codex-nonstream-finish-reason-tool-calls
- 1c7003f Merge pull request router-for-me#2452 from Lucaszmv/fix-qwen-cli-v0.13.2
- 7170eee Merge pull request router-for-me#2454 from buddingnewinsights/add-proxypal-to-readme
- 66cd50f Merge pull request router-for-me#2468 from router-for-me/ip
- 474fb04 Merge pull request router-for-me#2476 from router-for-me/cherry-pick/pr-2438-to-dev
- e3eb048 Merge pull request router-for-me#2489 from Soein/upstream-pr
- a59e924 Merge pull request router-for-me#2490 from router-for-me/logs
- c3f8dc3 Merge pull request router-for-me#2491 from mpfo0106/feature/claude-code-safe-alignment-sentinels
- fcba912 Merge pull request router-for-me#2492 from davidwushi1145/main
- 42c062b Merge pull request router-for-me#2509 from adamhelfgott/fix-claude-thinking-temperature
- f389667 Merge pull request router-for-me#2513 from lonr-6/codex/fix-ws-custom-tool-repair-v2
- ae37ccf Merge pull request router-for-me#2520 from Arronlong/main
- 9eabdd0 Merge pull request router-for-me#2522 from aikins01/fix/strip-tool-use-signature
- 8430b28 Merge pull request router-for-me#2526 from rensumo/main
- 9f5bdfa Merge pull request router-for-me#2531 from jamestut/openai-vertex-token-usage-fix
- 2ee938a Merge pull request router-for-me#2535 from rensumo/main
- d1f6224 Merge pull request router-for-me#2569 from LucasInsight/fix/record-zero-usage
- 6a27bce Merge pull request router-for-me#2576 from zilianpn/fix/disable-cooling-auth-errors
- cad45ff Merge pull request router-for-me#2578 from LemonZuo/feat_socks5h
- 12b9671 Merge pull request router-for-me#2592 from router-for-me/tests
- b2c0cdf Merge pull request router-for-me#2621 from wykk-12138/fix/oauth-extra-usage-detection
- 2a97037 Merge pull request router-for-me#2670 from sususu98/feat/antigravity-prefer-prod-url
- 9ded75d Merge pull request router-for-me#2702 from AllenReder/docs/add-quota-inspector
- 26fd3ef Merge pull request router-for-me#2715 from sususu98/pr/antigravity-32mb-bypass-signatures
- 1dc3018 Merge pull request router-for-me#2716 from sususu98/pr/antigravity-bypass-log-noise
- 61e0447 Merge pull request router-for-me#2723 from sususu98/fix/drop-redacted-thinking-blocks
- c4459c4 Merge pull request router-for-me#2724 from sususu98/fix/skip-schema-cleanup-empty-tools
- 3dea1da Merge pull request router-for-me#2782 from sususu98/fix/strip-invalid-signature-thinking-blocks
- f56cf42 Merge pull request router-for-me#2800 from sususu98/fix/antigravity-max-output-tokens-cap
- d1508ca Merge pull request router-for-me#2816 from sususu98/feat/session-affinity
- ba454db Merge pull request router-for-me#2817 from sususu98/fix/antigravity-strip-billing-header
- 8ced7a5 Merge pull request router-for-me#2834 from muzhi1991/fix/openai-compat-host-header
- c6baa64 Merge pull request router-for-me#2892 from router-for-me/fix-provider
- e05abec Merge pull request router-for-me#2898 from octo-patch/fix/issue-2866-remove-obsolete-1m-beta-header
- 3444820 Merge pull request router-for-me#2939 from stringer07/fix/codex-stream-output-backfill
- 8eb56e5 Merge pull request router-for-me#2962 from MoYeRanqianzhi/feat/codex-image-generation-tool-injection
- 12195a2 Merge pull request router-for-me#2971 from sususu98/feat/antigravity-credits-fallback
- 1576d14 Merge pull request router-for-me#2989 from ben-vargas/gpt-5-5-support
- 36cc762 Merge pull request router-for-me#3007 from sususu98/fix-antigravity-credits-stream-fallback
- be0fe6f Merge pull request router-for-me#3022 from Willxup/main
- 96056d0 Merge remote-tracking branch 'upstream/main' into fix/oauth-extra-usage-detection
- f63cf6f Normalize Claude temperature for thinking
- abc293c Prevent malformed Responses SSE frames from breaking stream clients
- e166e56 Reconcile registry model states on auth changes
- 34339f6 Refactor websocket logging and error handling
- e31c76e Restore Codex prompt cache key synthesis
- e08f68e chore(auth): drop reconcile test file from pr
- 7b89583 chore(models): remove GPT-5.5 model entry from registry JSON
- a4c1e32 chore(models): remove outdated GPT-5 and related model entries from registry JSON
- 50a8b14 chore: add fork upstream sync workflow and DockerHub settings
- f5aa68e chore: add workflow to prevent AGENTS.md modifications in pull requests
- 70efd4e chore: add workflow to retarget main PRs to dev automatically
- 8fac296 chore: remove Qwen support from SDK and internal components
- f5dc648 chore: remove iFlow-related modules and dependencies
- f3ab8f4 chore: update antigravity UA version to 1.21.9
- 38f0ae5 docs(antigravity): document signature validation spec alignment
- 6f58518 docs(readme): remove redundant GITSTORE_GIT_BRANCH description in README files
- 04ba8c8 feat(amp): sanitize signatures and handle stream suppression for Amp compatibility
- 88dd9c7 feat(antigravity): add AI credits quota fallback
- 14d46a0 feat(antigravity): conductor-level credits fallback for Claude models
- cf24958 feat(antigravity): configurable signature cache with bypass-mode validation
- d801393 feat(antigravity): prefer prod URL as first priority
- 1716a84 feat(api): add support for
HEADrequests to/healthzendpoint - ada8e29 feat(api): enhance proxy resolution for API key-based auth
- 894baad feat(api): integrate auth index into key retrieval endpoints for Gemini, Claude, Codex, OpenAI, and Vertex
- 5bfaf80 feat(auth): add configurable worker pool size for auto-refresh loop
- d949921 feat(auth): add proxy URL override support to auth constructors and executors
- e6866ff feat(auth): add refresh backoff for ineffective token updates
- 09e4800 feat(auth): add support for managing custom headers in auth files
- a7e92e2 feat(auth): disallow free-tier Codex auth during selection process
- a583463 feat(auth): implement auto-refresh loop for managing auth token schedule
- 31934ae feat(codex): enable image generation for all Codex upstream requests
- f1ba615 feat(codex): pass base model to enable conditional image_generation tool injection
- 4ba1053 feat(docs): add Poixe AI sponsorship details to README files
- 8f4a4ea feat(docs): add VisionCoder sponsorship details and optimize external links
- 22a1a24 feat(executor): add tests for preserving key order in cache control functions
- c2d4137 feat(executor): enhance Qwen system message handling with strict injection and merging rules
- d2419ed feat(executor): ensure default system message in QwenExecutor payload
- 058793c feat(gitstore): honor configured branch and follow live remote default
- 25137b1 feat(logging): add AI API path support for image routes
- 3774b56 feat(misc): add background updater for Antigravity version caching
- 5dcca69 feat(models): add Claude Opus 4.7 model entry to registry JSON
- a824e7c feat(models): add GPT-5.3, GPT-5.4, and GPT-5.4-mini with enhanced "thinking" levels
- 7d5f6d9 feat(models): add GPT-5.5 model entry to registry JSON
- 4fc2c61 feat(models): add Kimi K2.6 model entry to registry JSON
- e935196 feat(models): add hardcoded GPT-Image-2 model support in Codex
- adb580b feat(security): add configuration to toggle Gemini CLI endpoint access
- 7c24d54 feat(session-affinity): add session-sticky routing for multi-account load balancing
- 86c856f feat(translator): add partial and full image generation support in Codex-GPT and Codex-Gemini flows
- 8435c3d feat(tui): show time in usage details
- fdeef48 feat(vertex): Add Prefix field to VertexCredentialStorage for per-file model namespacing
- 14cb2b9 feat(vertex): add --vertex-import-prefix flag for model namespacing
- 7ee37ee feat: add /healthz endpoint and test coverage for health check
- 3724933 feat: add opt-in experimental Claude cch signing
- 8d5e470 feat: dynamically fetch antigravity UA version from releases API
- 163d683 feat: support socks5h scheme for proxy settings
- 5f5d593 fix antigravity credits stream fallback
- b15453c fix(amp): address PR review - stream thinking suppression, SSE detection, test init
- 279cbbb fix(amp): don't suppress thinking blocks in streaming mode
- b0653ce fix(amp): strip signature from tool_use blocks before forwarding to Claude
- 727221d fix(antigravity): allow 32MB bypass signatures
- 8fecd62 fix(antigravity): cap maxOutputTokens using registry max_completion_tokens
- 41ae2c8 fix(antigravity): discard thinking blocks with non-Claude-format signatures
- 65158cc fix(antigravity): drop redacted thinking blocks with empty text
- a0bf33e fix(antigravity): preserve fallback and honor config gate
- 8ed290c fix(antigravity): reduce bypass mode log noise
- 30e94b6 fix(antigravity): refine 429 handling and credits fallback
- 4de5c29 fix(antigravity): remove credits fallback from CountTokens, fix gofmt
- 25feceb fix(antigravity): reorder model parts to prevent tool_use↔tool_result pairing breakage
- e75daa2 fix(antigravity): respect pinned auth in credits fallback, release deferred body on success
- f5ed5c7 fix(antigravity): skip full schema cleanup for empty tool requests
- d4a6a5a fix(antigravity): strip billing header from system instruction before upstream call
- 278a898 fix(antigravity): strip thinking blocks with empty signatures instead of rejecting
- 10b55b5 fix(antigravity): use E-prefixed fake signature in strict bypass test
- ad8e396 fix(auth): add retry logic for 429 status with Retry-After and improve testing
- f130846 fix(auth): break credits cold-start deadlock by keeping unknown-hint auths as fallback candidates
- 941334d fix(auth): handle OAuth model alias in retry logic and refine Qwen quota handling
- 0ea7680 fix(auth): honor disable-cooling and enrich no-auth errors
- 730809d fix(auth): preserve and restore ready view cursors during index rebuilds
- 07b7c1a fix(auth): resolve oauth aliases before suspension checks
- 17363ed fix(auth): skip downtime for request-scoped 404 errors in model state management
- f09ed25 fix(auth): tighten registry model reconciliation
- 5e81b65 fix(auth, executor): normalize Qwen base URL, adjust RefreshLead duration, and add tests
- 33c030c fix(ci): keep fork releases on patch tags
- 07d6689 fix(claude): add interleaved-thinking beta header, AMP gzip error decoding, normalizeClaudeBudget max_tokens
- 0f45d89 fix(claude): address PR review feedback for OAuth cloaking
- 5f58248 fix(claude): clamp max_tokens to model limit in normalizeClaudeBudget
- f780c28 fix(claude): map question/skill to TitleCase instead of removing them
- ac36119 fix(claude): preserve OAuth tool renames when filtering tools
- 7e8e222 fix(claude): reduce forwarded OAuth prompt to minimal tool reminder
- e8d1b79 fix(claude): remap OAuth tool names to Claude Code style to avoid third-party fingerprint detection
- f0c20e8 fix(claude): remove invalid cache_control scope from static system block
- 7cdf8e9 fix(claude): sanitize forwarded third-party prompts for OAuth cloaking
- d11936f fix(codex): add default instructions for /responses/compact
- bb8408c fix(codex): backfill streaming response output
- 105a215 fix(codex): centralize session management with global store and add tests for executor session lifecycle
- 330e12d fix(codex): conditionally set
Session_idheader for Mac OS user agents and clean up redundant logic - 39b9a38 fix(codex): normalize null instructions across responses paths
- d3b94c9 fix(codex): normalize null instructions for compact requests
- bd855ab fix(codex): normalize null instructions for responses requests
- 1734aa1 fix(codex): prioritize websocket-enabled credentials across priority tiers in scheduler logic
- ec77f4a fix(codex): set finish_reason to tool_calls in non-streaming response when tool calls are present
- 51fd58d fix(codex): use normalizeCodexInstructions to set default instructions
- 1267fdd fix(docker-build): improve argument handling and error messaging for usage option
- 91e7591 fix(executor): add transient 429 resource exhausted handling with retry logic
- f4eb161 fix(executor): drop obsolete context-1m-2025-08-07 beta header (fixes router-for-me#2866)
- c8b7e2b fix(executor): ensure empty stream completions use output_item.done as fallback
- 69b950d fix(executor): fix OAuth extra usage detection by Anthropic API
- 0ab1f54 fix(executor): handle 429 Retry-After header and default retry logic for quota exhaustion
- 5ab9afa fix(executor): handle OAuth tool name remapping with rename detection and add tests
- 65ce863 fix(executor): implement immediate retry with token refresh on 429 for Qwen and add associated tests
- 613fe67 fix(executor): inject full Claude Code system prompt blocks with proper cache scopes
- 754b126 fix(executor): remove commented-out code in QwenExecutor
- d54f816 fix(executor): update Qwen user agent and enhance header configuration
- e34b2b4 fix(gemini): clean tool schemas and eager_input_streaming
- 1dba2d0 fix(handlers): add base URL validation and improve API key deletion tests
- 7b03f04 fix(handlers): include execution session metadata and skip idempotency key when absent
- fd71960 fix(handlers): remove handling of unsupported
nparameter in OpenAI image handlers - a188159 fix(handlers): remove references to unsupported
nparameter in OpenAI image handlers - f32c8c9 fix(handlers): update listener to bind on all interfaces instead of localhost
- c26936e fix(management): stabilize auth-index mapping
- acf98ed fix(openai): add session reference counter and cache lifecycle management for websocket tools
- d1c07a0 fix(openai): add websocket tool call repair with caching and tests to improve transcript consistency
- a3e21df fix(openai): avoid developer transcript resets
- c1d7599 fix(openai): handle transcript replacement after websocket compaction
- caa529c fix(openai): improve client IP retrieval in websocket handler
- 1b44364 fix(qwen): update CLI simulation to v0.13.2
- 06405f2 fix(security): enforce stricter localhost validation for GeminiCLIAPIHandler
- a64141a fix(tests): remove obsolete config_auth_index_test file
- da43f63 fix(tests): update Gemini family test case numbers for consistency
- d9a3b3e fix(tests): update model lookup references and enhance Claude executor tests
- d390b95 fix(tests): update test cases
- fcc59d6 fix(translator): add unit tests to validate output_item.done fallback logic for Gemini and Claude
- eba561b fix(util): also keep Host in header map for synthetic requests
- 8f9e662 fix(util): forward custom Host header to upstream
- 36efcc6 fix(vertex): include prefix in auth filename and validate at import
- 249f969 fix: Claude API 请求使用 utls Chrome TLS 指纹
- c03883c fix: address responses SSE review feedback
- 9e0ab4d fix: build cache_control JSON manually to avoid sjson map marshaling
- 8783caf fix: buildTextBlock cache_control sjson path issue
- 66eb122 fix: clear stale thinking signature when no block is open
- 76b53d6 fix: finalize pending thinking block before next summary part
- 73b22ec fix: omit empty signature field from thinking blocks
- a34dfed fix: preserve Claude thinking signatures in Codex translator
- 134a9ea fix: preserve SSE event boundaries for Responses streams
- 15c2f27 fix: preserve cloak config defaults when mode omitted
- 8b9dbe1 fix: record zero usage
- e2e3c7d fix: remove invalid org scope and match Claude Code block layout
- b6c6379 fix: repair websocket custom tool calls
- 8f0e66b fix: repair websocket custom tool calls
- d1fd2c4 fix: repair websocket custom tool calls
- 5fc2bd3 fix: retain codex thinking signature until item done
- c31ae2f fix: retain previously captured thinking signature on new summary part
- 25d1c18 fix: scope experimental cch signing to billing header
- f73d55d fix: simplify responses SSE suffix handling
- 0fcc02f fix: tighten responses SSE review follow-up
- f6f4640 fix: use sjson to build system blocks, avoid raw newlines in JSON
- bb44671 fix: 修复反代检测对抗的 3 个问题
- 4045378 fix: 增强 Claude 反代检测对抗能力
- 7ad1900 perf(antigravity): async credits hint refresh for warm tokens
- b6781d6 perf(codex): avoid repeated output patch writes
- f611dd6 refactor(auth): dedupe route-aware model support checks
- 6c0a1ef refactor(auth): simplify auth directory scanning and improve JSON processing logic
- 828df80 refactor(executor): remove immediate retry with token refresh on 429 for Qwen and update tests accordingly
- 4f8acec refactor(logging): centralize websocket handshake recording
- 920b6ef refactor(logging): strip unrelated deferred body changes, keep credits-only logging
- 51a4379 refactor(openai): remove websocket body log truncation limit
- d2c7e4e refactor(runtime): move executor utilities to
helpspackage and update references - ca11b23 refactor(runtime, openai): simplify header management and remove redundant websocket logging logic
- ff7dbb5 test(amp): update tests to expect thinking blocks to pass through during streaming
- f5e9f01 test(amp): update tests to expect thinking blocks to pass through during streaming