Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1036 commits
Select commit Hold shift + click to select a range
f5aa68e
chore: add workflow to prevent AGENTS.md modifications in pull requests
luispater Apr 8, 2026
70efd4e
chore: add workflow to retarget main PRs to dev automatically
luispater Apr 8, 2026
12b9671
Merge pull request #2592 from router-for-me/tests
luispater Apr 8, 2026
343a2fc
docs: update AGENTS.md for improved clarity and detail in commands an…
hkfires Apr 8, 2026
69b950d
fix(executor): fix OAuth extra usage detection by Anthropic API
wykk-12138 Apr 8, 2026
d54f816
fix(executor): update Qwen user agent and enhance header configuration
luispater Apr 8, 2026
941334d
fix(auth): handle OAuth model alias in retry logic and refine Qwen qu…
luispater Apr 8, 2026
ad8e396
fix(auth): add retry logic for 429 status with Retry-After and improv…
luispater Apr 8, 2026
613fe67
fix(executor): inject full Claude Code system prompt blocks with prop…
wykk-12138 Apr 9, 2026
f6f4640
fix: use sjson to build system blocks, avoid raw newlines in JSON
wykk-12138 Apr 9, 2026
8783caf
fix: buildTextBlock cache_control sjson path issue
wykk-12138 Apr 9, 2026
9e0ab4d
fix: build cache_control JSON manually to avoid sjson map marshaling
wykk-12138 Apr 9, 2026
e2e3c7d
fix: remove invalid org scope and match Claude Code block layout
wykk-12138 Apr 9, 2026
7cdf8e9
fix(claude): sanitize forwarded third-party prompts for OAuth cloaking
wykk-12138 Apr 9, 2026
f0c20e8
fix(claude): remove invalid cache_control scope from static system block
wykk-12138 Apr 9, 2026
7e8e222
fix(claude): reduce forwarded OAuth prompt to minimal tool reminder
wykk-12138 Apr 9, 2026
5e81b65
fix(auth, executor): normalize Qwen base URL, adjust RefreshLead dura…
luispater Apr 9, 2026
e8d1b79
fix(claude): remap OAuth tool names to Claude Code style to avoid thi…
wykk-12138 Apr 9, 2026
730809d
fix(auth): preserve and restore ready view cursors during index rebuilds
luispater Apr 9, 2026
1dba2d0
fix(handlers): add base URL validation and improve API key deletion t…
luispater Apr 9, 2026
cf24958
feat(antigravity): configurable signature cache with bypass-mode vali…
sususu98 Mar 31, 2026
38f0ae5
docs(antigravity): document signature validation spec alignment
sususu98 Mar 31, 2026
30e94b6
fix(antigravity): refine 429 handling and credits fallback
ZTXBOSS666 Apr 9, 2026
39dc455
Merge pull request #2412 from sususu98/feat/signature-cache-toggle
luispater Apr 9, 2026
ac36119
fix(claude): preserve OAuth tool renames when filtering tools
wykk-12138 Apr 9, 2026
f780c28
fix(claude): map question/skill to TitleCase instead of removing them
wykk-12138 Apr 9, 2026
96056d0
Merge remote-tracking branch 'upstream/main' into fix/oauth-extra-usa…
wykk-12138 Apr 9, 2026
0f45d89
fix(claude): address PR review feedback for OAuth cloaking
wykk-12138 Apr 9, 2026
f32c8c9
fix(handlers): update listener to bind on all interfaces instead of l…
luispater Apr 9, 2026
b2c0cdf
Merge pull request #2621 from wykk-12138/fix/oauth-extra-usage-detection
luispater Apr 10, 2026
d801393
feat(antigravity): prefer prod URL as first priority
sususu98 Apr 10, 2026
2a97037
Merge pull request #2670 from sususu98/feat/antigravity-prefer-prod-url
hkfires Apr 10, 2026
65ce863
fix(executor): implement immediate retry with token refresh on 429 fo…
luispater Apr 10, 2026
5ab9afa
fix(executor): handle OAuth tool name remapping with rename detection…
luispater Apr 10, 2026
5bb69fa
docs: refine CLIproxyAPI Quota Inspector description in all README lo…
AllenReder Apr 11, 2026
c585caa
docs: fix CLIProxyAPI Quota Inspector naming and link casing
AllenReder Apr 11, 2026
828df80
refactor(executor): remove immediate retry with token refresh on 429 …
luispater Apr 11, 2026
f135fdf
docs: clarify codex quota window wording in README locales
AllenReder Apr 11, 2026
9ded75d
Merge pull request #2702 from AllenReder/docs/add-quota-inspector
luispater Apr 11, 2026
0ab1f54
fix(executor): handle 429 Retry-After header and default retry logic …
luispater Apr 11, 2026
727221d
fix(antigravity): allow 32MB bypass signatures
sususu98 Apr 11, 2026
8ed290c
fix(antigravity): reduce bypass mode log noise
sususu98 Apr 11, 2026
a583463
feat(auth): implement auto-refresh loop for managing auth token schedule
luispater Apr 11, 2026
65158cc
fix(antigravity): drop redacted thinking blocks with empty text
sususu98 Apr 12, 2026
f5ed5c7
fix(antigravity): skip full schema cleanup for empty tool requests
sususu98 Apr 11, 2026
6c0a1ef
refactor(auth): simplify auth directory scanning and improve JSON pro…
luispater Apr 12, 2026
5bfaf80
feat(auth): add configurable worker pool size for auto-refresh loop
luispater Apr 12, 2026
26fd3ef
Merge pull request #2715 from sususu98/pr/antigravity-32mb-bypass-sig…
sususu98 Apr 12, 2026
1dc3018
Merge pull request #2716 from sususu98/pr/antigravity-bypass-log-noise
sususu98 Apr 12, 2026
61e0447
Merge pull request #2723 from sususu98/fix/drop-redacted-thinking-blocks
sususu98 Apr 12, 2026
c4459c4
Merge pull request #2724 from sususu98/fix/skip-schema-cleanup-empty-…
sususu98 Apr 12, 2026
278a898
fix(antigravity): strip thinking blocks with empty signatures instead…
sususu98 Apr 13, 2026
41ae2c8
fix(antigravity): discard thinking blocks with non-Claude-format sign…
sususu98 Apr 13, 2026
10b55b5
fix(antigravity): use E-prefixed fake signature in strict bypass test
sususu98 Apr 14, 2026
8fecd62
fix(antigravity): cap maxOutputTokens using registry max_completion_t…
sususu98 Apr 15, 2026
8fac296
chore: remove Qwen support from SDK and internal components
luispater Apr 15, 2026
3dea1da
Merge pull request #2782 from sususu98/fix/strip-invalid-signature-th…
luispater Apr 15, 2026
f56cf42
Merge pull request #2800 from sususu98/fix/antigravity-max-output-tok…
luispater Apr 15, 2026
a4c1e32
chore(models): remove outdated GPT-5 and related model entries from r…
luispater Apr 15, 2026
7c24d54
feat(session-affinity): add session-sticky routing for multi-account …
sususu98 Apr 14, 2026
d4a6a5a
fix(antigravity): strip billing header from system instruction before…
sususu98 Apr 14, 2026
d1508ca
Merge pull request #2816 from sususu98/feat/session-affinity
luispater Apr 15, 2026
ba454db
Merge pull request #2817 from sususu98/fix/antigravity-strip-billing-…
luispater Apr 15, 2026
1267fdd
fix(docker-build): improve argument handling and error messaging for …
hkfires Apr 16, 2026
8f9e662
fix(util): forward custom Host header to upstream
muzhi1991 Apr 16, 2026
7b03f04
fix(handlers): include execution session metadata and skip idempotenc…
luispater Apr 16, 2026
d949921
feat(auth): add proxy URL override support to auth constructors and e…
luispater Apr 16, 2026
f5dc648
chore: remove iFlow-related modules and dependencies
luispater Apr 16, 2026
5dcca69
feat(models): add Claude Opus 4.7 model entry to registry JSON
luispater Apr 16, 2026
d9a3b3e
fix(tests): update model lookup references and enhance Claude executo…
hkfires Apr 17, 2026
da43f63
fix(tests): update Gemini family test case numbers for consistency
hkfires Apr 17, 2026
eba561b
fix(util): also keep Host in header map for synthetic requests
muzhi1991 Apr 17, 2026
894baad
feat(api): integrate auth index into key retrieval endpoints for Gemi…
LTbinglingfeng Apr 18, 2026
c26936e
fix(management): stabilize auth-index mapping
LTbinglingfeng Apr 18, 2026
a64141a
fix(tests): remove obsolete config_auth_index_test file
LTbinglingfeng Apr 18, 2026
c6baa64
Merge pull request #2892 from router-for-me/fix-provider
LTbinglingfeng Apr 18, 2026
86c856f
feat(translator): add partial and full image generation support in Co…
luispater Apr 18, 2026
f4eb161
fix(executor): drop obsolete context-1m-2025-08-07 beta header (fixes…
octo-patch Apr 19, 2026
e05abec
Merge pull request #2898 from octo-patch/fix/issue-2866-remove-obsole…
luispater Apr 19, 2026
8f4a4ea
feat(docs): add VisionCoder sponsorship details and optimize external…
luispater Apr 19, 2026
e6866ff
feat(auth): add refresh backoff for ineffective token updates
luispater Apr 20, 2026
bb8408c
fix(codex): backfill streaming response output
stringer07 Apr 21, 2026
b6781d6
perf(codex): avoid repeated output patch writes
stringer07 Apr 21, 2026
1716a84
feat(api): add support for `HEAD` requests to `/healthz` endpoint
luispater Apr 21, 2026
3444820
Merge pull request #2939 from stringer07/fix/codex-stream-output-back…
luispater Apr 21, 2026
8ced7a5
Merge pull request #2834 from muzhi1991/fix/openai-compat-host-header
luispater Apr 21, 2026
4fc2c61
feat(models): add Kimi K2.6 model entry to registry JSON
luispater Apr 21, 2026
e935196
feat(models): add hardcoded GPT-Image-2 model support in Codex
luispater Apr 22, 2026
fd71960
fix(handlers): remove handling of unsupported `n` parameter in OpenAI…
luispater Apr 22, 2026
a188159
fix(handlers): remove references to unsupported `n` parameter in Open…
luispater Apr 22, 2026
31934ae
feat(codex): enable image generation for all Codex upstream requests
MoYeRanqianzhi Apr 22, 2026
14d46a0
feat(antigravity): conductor-level credits fallback for Claude models
sususu98 Apr 23, 2026
4d6457e
feat: support extracting X-Amp-Thread-Id header as session id for ses…
XYenon Apr 23, 2026
4de5c29
fix(antigravity): remove credits fallback from CountTokens, fix gofmt
sususu98 Apr 23, 2026
8e49c79
fix: forward HTTP headers to executor Options so session affinity can…
XYenon Apr 23, 2026
e75daa2
fix(antigravity): respect pinned auth in credits fallback, release de…
sususu98 Apr 23, 2026
920b6ef
refactor(logging): strip unrelated deferred body changes, keep credit…
sususu98 Apr 23, 2026
f130846
fix(auth): break credits cold-start deadlock by keeping unknown-hint …
sususu98 Apr 23, 2026
8eb56e5
Merge pull request #2962 from MoYeRanqianzhi/feat/codex-image-generat…
luispater Apr 23, 2026
7ad1900
perf(antigravity): async credits hint refresh for warm tokens
sususu98 Apr 23, 2026
25137b1
feat(logging): add AI API path support for image routes
luispater Apr 23, 2026
12195a2
Merge pull request #2971 from sususu98/feat/antigravity-credits-fallback
sususu98 Apr 23, 2026
7d5f6d9
feat(models): add GPT-5.5 model entry to registry JSON
luispater Apr 23, 2026
736018a
Add GPT-5.5 Codex model support
ben-vargas Apr 23, 2026
1576d14
Merge pull request #2989 from ben-vargas/gpt-5-5-support
luispater Apr 23, 2026
7b89583
chore(models): remove GPT-5.5 model entry from registry JSON
luispater Apr 23, 2026
f1ba615
feat(codex): pass base model to enable conditional image_generation t…
luispater Apr 23, 2026
5f5d593
fix antigravity credits stream fallback
sususu98 Apr 24, 2026
36cc762
Merge pull request #3007 from sususu98/fix-antigravity-credits-stream…
sususu98 Apr 24, 2026
4056c25
fix(codex): classify known upstream failures
Matthias319 Apr 24, 2026
a7e92e2
feat(auth): disallow free-tier Codex auth during selection process
luispater Apr 24, 2026
faad8e3
Add CPA Usage Keeper to README ecosystem list
Willxup Apr 24, 2026
cf043f6
docs:Add CPA Usage Keeper to README ecosystem list
Willxup Apr 24, 2026
be0fe6f
Merge pull request #3022 from Willxup/main
luispater Apr 25, 2026
28d7827
feat(api): implement protocol multiplexer and Redis queue for usage i…
luispater Apr 25, 2026
2c626ef
feat(security): implement IP ban for repeated management key and Redi…
luispater Apr 25, 2026
ea670ef
feat(models): add Codex Auto Review model entry to registry JSON
luispater Apr 25, 2026
0a7c6b0
feat(api): enhance model assignment logic in image handlers
luispater Apr 25, 2026
e707cf7
fix(claude): only reverse-remap OAuth tool names that were forward-re…
edlsh Apr 18, 2026
03ea4e5
perf(claude): pre-allocate reverseMap capacity
edlsh Apr 18, 2026
fc1ddf3
fix(claude): centralize oauth tool-name transform flow
edlsh Apr 19, 2026
95318ad
fix(amp): preserve lowercase glob tool name
edlsh Apr 13, 2026
fd45dec
fix(openai): repair empty responses stream output
edlsh Apr 24, 2026
d36e70e
fix(openai): preserve unindexed response output items
edlsh Apr 25, 2026
80eb037
fix(openai): preserve multiline repaired SSE data
edlsh Apr 25, 2026
32ef158
fix(test): remove free tier from GPT-5.5 inclusion test
philipbankier Apr 26, 2026
3857305
feat(config): add support for disabling OpenAI compatibility providers
luispater Apr 26, 2026
c7b28ba
feat(executor): add support for Codex image generation tool usage tra…
luispater Apr 26, 2026
c5bea6f
Merge pull request #3020 from Matthias319/fix/codex-error-classification
luispater Apr 26, 2026
736ae61
Merge pull request #3051 from philipbankier/fix/gpt55-free-tier-test
luispater Apr 26, 2026
6fc2356
logging: mark antigravity credits requests
sususu98 Apr 26, 2026
a325533
Merge pull request #2972 from XYenon/feat/amp-thread-id
luispater Apr 26, 2026
04a336f
fix(usage_helpers): skip zero-token usage in additional model records
luispater Apr 27, 2026
01e16a8
feat(codex): handle thinking-signature conversion for reasoning content
luispater Apr 27, 2026
d85e13b
fix(codex): include `content` field in reasoning item initialization
luispater Apr 27, 2026
c523101
Preserve Codex reasoning signatures for Claude
sususu98 Apr 27, 2026
34027da
Merge pull request #3088 from sususu98/codex-claude-reasoning-signature
luispater Apr 27, 2026
3ac39dc
feat: support Codex/PI session headers for session affinity
XYenon Apr 27, 2026
a992dee
fix(antigravity): use real antigravity UA when polling credits balance
Xbang0222 Apr 28, 2026
9fb6a49
test(api): add validation for unsupported models in OpenAI image hand…
luispater Apr 28, 2026
b34f3be
Merge pull request #3114 from Xbang0222/fix/antigravity-credits-ua
sususu98 Apr 28, 2026
e78d45a
fix antigravity user agent handling
sususu98 Apr 24, 2026
0e12351
fix antigravity client agent headers
sususu98 Apr 24, 2026
c4965be
Merge pull request #3117 from sususu98/fix/restore-antigravity-ua-han…
sususu98 Apr 28, 2026
f95ab4c
Merge pull request #3089 from XYenon/feat/session-affinity
luispater Apr 28, 2026
2ea8f77
feat(models): add GPT-5.5 to the registry with support for advanced t…
luispater Apr 29, 2026
4982512
fix: parse gemini cli usage metadata variants
sususu98 Apr 29, 2026
1c0c426
fix: align claude codex translation
sususu98 Apr 29, 2026
0d107dd
fix: respect declared claude web search tool names
sususu98 Apr 29, 2026
2c1539e
Merge pull request #3133 from sususu98/optimize/claude-codex-translator
luispater Apr 29, 2026
b3b92f3
Merge pull request #3125 from sususu98/fix/gemini-cli-usage-metadata-…
luispater Apr 29, 2026
a1f0ed9
Merge pull request #3071 from sususu98/fix/antigravity-credits-log
luispater Apr 29, 2026
359ec30
chore(docs): remove LingtrueAPI sponsorship section from README files
luispater Apr 29, 2026
e3e60f9
feat: support disabling image generation globally
luispater Apr 29, 2026
4601841
feat: remove `tool_choice` for `image_generation` when disabled
luispater Apr 30, 2026
f56a19e
feat: add tri-state support for `disable-image-generation` configuration
luispater Apr 30, 2026
6ba7c81
feat: apply image_generation filtering before payload rules
luispater Apr 30, 2026
243c582
feat: add unit tests for OpenAI responses request conversion
Apr 30, 2026
05ecfb6
feat: add local Docker build script and update compose configuration
Apr 30, 2026
aa70d13
docs: add CodexCliPlus to README ecosystem list
C4AL Apr 30, 2026
8b286e8
Merge pull request #3163 from C4AL/docs/add-codexclipplus-ecosystem
luispater Apr 30, 2026
4035abc
refactor(logging): replace gin-specific context handling with generic…
luispater Apr 30, 2026
6187919
feat: add support for recent request tracking in auth records
luispater May 1, 2026
b0dc9df
feat: add API key usage endpoint with provider and key grouping
luispater May 1, 2026
e37f3be
chore: update .goreleaser.yml to include custom archive naming with a…
luispater May 1, 2026
8c2f1a8
feat: enhance API key usage grouping with base URL inclusion
luispater May 1, 2026
b8bba05
feat: add tracking for auth request success and failure counts
luispater May 1, 2026
18bb9c3
chore: remove usage tracking and logging functionality
luispater May 1, 2026
79579c3
docs: update README to consolidate and clarify CPA Usage Keeper details
luispater May 2, 2026
2efa56d
docs: add Playful Proxy API Panel
daishuge May 2, 2026
85124f0
Merge pull request #3194 from daishuge/codex/add-daishuge-cpa-port-20…
luispater May 2, 2026
56df368
feat: add configurable retention period for Redis usage queue
luispater May 2, 2026
101b59c
docs: update Subtitle Translator project description
VjayC May 3, 2026
593995a
Merge pull request #3197 from VjayC/dev
luispater May 3, 2026
5fc6f66
docs: add CLIProxy Pool Watch project
May 3, 2026
81db7fd
Add CLIProxyAPI Usage Dashboard to statistics docs
May 3, 2026
7972130
Update README_CN.md
zhanglunet May 3, 2026
d2386a3
Update README_JA.md
zhanglunet May 3, 2026
054d0de
Merge pull request #3201 from murasame612/docs/add-cliproxy-pool-watch
luispater May 3, 2026
756b600
Merge pull request #3204 from zhanglunet/add-usage-dashboard-link
luispater May 3, 2026
af65908
feat: enhance tool mapping with namespace and web search support
luispater May 3, 2026
672fdd1
feat: filter and drop empty assistant messages in Kimi executor
luispater May 3, 2026
bf0e5c2
fix: prevent goroutine leaks in streaming executors via context-aware…
1137043480 May 3, 2026
2753d9f
feat: add validation for Claude streaming responses
luispater May 3, 2026
82ebe24
Merge pull request #2266 from DragonFSKY/fix/ws-compact-tool-output-m…
luispater May 3, 2026
a1487b0
fix(translator): handle non-string types in tools result processing
luispater May 3, 2026
8e6ef3f
fix(websocket): ensure state consistency on auth errors in streaming
luispater May 3, 2026
38dad2a
chore(docker): upgrade base image to alpine 3.23
luispater May 3, 2026
17be644
fix(translator): improve tool response handling for non-string content
luispater May 3, 2026
c19ae1d
Align Codex websocket protocol semantics
kdcokenny May 3, 2026
08b0fe6
Fix Codex websocket retry metadata
kdcokenny May 4, 2026
6b4bc0a
Align Codex default identity and docs
kdcokenny May 4, 2026
a1eba11
Merge pull request #2416 from kslamph/fix/gemini-cli-projectid
luispater May 4, 2026
89d80bf
fix(executor): adjust ApplyThinking order and add payload override test
luispater May 4, 2026
85c0150
feat(translator): add token usage tracking and improve usage handling
luispater May 4, 2026
bf6fa40
fix(executor): strip Vertex OpenAI response tool call IDs for consist…
luispater May 4, 2026
c1caa45
fix(translator): handle empty tool function names in OpenAI Claude re…
luispater May 4, 2026
162897e
Merge remote-tracking branch 'origin/pr/3205' into dev
luispater May 4, 2026
ecf1c25
fix: preserve Antigravity cancellation errors
luispater May 4, 2026
8262a03
Merge PR #2568: fix Claude refresh backoff
luispater May 4, 2026
e4a93c0
fix(executor): enhance parsing of OpenAI stream data lines
luispater May 4, 2026
bdc4240
Merge pull request #2896 from edlsh/fix/oauth-tool-rename-per-request…
luispater May 4, 2026
28b4b19
Merge pull request #3208 from kdcokenny/codex-websocket-protocol-parity
luispater May 4, 2026
ba5d8ca
feat(usage): add support for requested model alias handling
luispater May 4, 2026
61b39d4
feat(management): add usage record retrieval endpoint
luispater May 4, 2026
da6c599
refactor(management): rename `GetUsage` to `GetUsageQueue` and update…
luispater May 4, 2026
99dfbae
fix(executor): ignore null OpenAI stream usage chunks
mochenya May 5, 2026
ed1458a
chore(docs): update sponsor details in README
luispater May 5, 2026
17a1f53
fix:openai 2 kimi error Continuous function_call
May 6, 2026
ad3f4f2
📝 docs(readme): add CPA-Manager usage statistics recommendation
seakee May 6, 2026
a09a16e
Merge branch 'router-for-me:main' into my-fix
AhDEV-free May 6, 2026
fb08b92
feat(executor): add upstream disconnect handling for Codex WebSocket …
luispater May 6, 2026
0117174
fix(amp): proxy thread actors route
edlsh May 6, 2026
a034cf8
Merge pull request #3247 from edlsh/fix/amp-thread-actors-route
luispater May 7, 2026
785b00c
Merge pull request #3237 from seakee/docs/add-cpa-manager-usage-stati…
luispater May 7, 2026
e50caba
chore: upgrade CLIProxyAPI dependency to v7 across the project
luispater May 8, 2026
c883114
fix responses websocket tool output context
codex May 8, 2026
4071fde
fix: apply default auth-dir when config value is empty
lihan3238 May 8, 2026
4cbe172
refactor: extract DefaultAuthDir constant per review feedback
lihan3238 May 8, 2026
1721994
feat(management): expose additional OAuth and configuration helpers
luispater May 8, 2026
c67096b
feat(server): add support for loading configuration from a remote hom…
luispater May 8, 2026
0f0fcd2
feat(config): add per-auth `disable_cooling` override support
luispater May 9, 2026
0dcb8bd
refactor(cliproxy): remove `ClaudeCodeSessionAffinity` support and si…
luispater May 9, 2026
09ac8a1
Merge pull request #3221 from mochenya/main
luispater May 9, 2026
68fddaa
Merge pull request #3292 from lihan3238/fix-3272
luispater May 9, 2026
c69ff49
feat(auth): add support for persisting `disabled` flag in token storage
luispater May 9, 2026
41f4ee7
feat(auth): enhance auth index generation with improved file path han…
luispater May 9, 2026
3cbd587
Merge pull request #3283 from wuchulonly/fix/responses-ws-tool-output…
luispater May 9, 2026
1abf862
feat(logging): add home request-log forwarding support
luispater May 9, 2026
66c3dae
feat(home): implement `count` for home auth dispatch requests and ena…
luispater May 9, 2026
67fb4eb
feat(auth): add `shouldReturnLastErrorOnPickFailure` helper and impro…
luispater May 9, 2026
a44e5eb
Merge branch 'v7' into dev
luispater May 9, 2026
28dfcae
fix(api): prevent idle TCP connections from blocking the accept loop
lihan3238 May 9, 2026
dc1cc7f
feat(auth): add websocket session reuse for home auths with caching s…
luispater May 10, 2026
8300ee8
feat(auth): enhance home auth session reuse with scoped caching and r…
luispater May 10, 2026
15ac7fb
refactor(auth): simplify home auth session management and remove ref …
luispater May 10, 2026
5e5b1bc
feat(config): add detailed logging for home config changes
luispater May 10, 2026
c5596e0
fix(api): clear sniff deadline before entering Redis handler
lihan3238 May 10, 2026
1fca942
Merge remote-tracking branch 'origin/pr/3239'
luispater May 10, 2026
041ccf0
Merge pull request #3303 from lihan3238/fix-3267
luispater May 11, 2026
bd8c05a
feat(usage): add support for detailed token breakdown in usage tracking
luispater May 12, 2026
6bfcb0c
feat(auth): improve unauthorized error handling for refresh and auto-…
luispater May 12, 2026
bcbb949
feat(client): add cluster node failover and improve reconnection hand…
luispater May 13, 2026
437aa87
feat(api): add dynamic handler for Gemini models with home integration
luispater May 13, 2026
3a9fb37
fix(home): implement home dispatch headers and enhance Gemini model h…
luispater May 13, 2026
53e742f
fix: always write error logs and include cached tokens in Claude usage
May 10, 2026
3ce0668
ci: restore custom workflows for fork
May 10, 2026
fa32f2d
fix: show all request logs when request-log is enabled
May 10, 2026
15a56f8
fix(usage): include cache_creation tokens in Claude usage calculation
May 14, 2026
9ec6f63
docs: add project documentation files and ignore local tooling
May 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ bin/*
.agent/*
.agents/*
.opencode/*
.idea/*
.bmad/*
_bmad/*
_bmad-output/*
124 changes: 113 additions & 11 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
name: docker-image

on:
workflow_dispatch:
push:
tags:
- v*

env:
APP_NAME: CLIProxyAPI
DOCKERHUB_REPO: eceasy/cli-proxy-api
DOCKERHUB_REPO: ${{ secrets.DOCKERHUB_USERNAME }}/cli-proxy-api-plus

jobs:
docker:
docker_amd64:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Refresh models catalog
run: |
git fetch --depth 1 https://github.com/router-for-me/models.git main
git show FETCH_HEAD:models.json > internal/registry/models/models.json
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
Expand All @@ -26,21 +29,120 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Generate Build Metadata
run: |
echo VERSION=`git describe --tags --always --dirty` >> $GITHUB_ENV
echo "VERSION=${GITHUB_REF_NAME}" >> $GITHUB_ENV
echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV
echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV
- name: Build and push
- name: Build and push (amd64)
uses: docker/build-push-action@v6
with:
context: .
platforms: |
linux/amd64
linux/arm64
platforms: linux/amd64
push: true
build-args: |
VERSION=${{ env.VERSION }}
COMMIT=${{ env.COMMIT }}
BUILD_DATE=${{ env.BUILD_DATE }}
tags: |
${{ env.DOCKERHUB_REPO }}:latest
${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }}
${{ env.DOCKERHUB_REPO }}:latest-amd64
${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }}-amd64

docker_arm64:
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Refresh models catalog
run: |
git fetch --depth 1 https://github.com/router-for-me/models.git main
git show FETCH_HEAD:models.json > internal/registry/models/models.json
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Generate Build Metadata
run: |
echo "VERSION=${GITHUB_REF_NAME}" >> $GITHUB_ENV
echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV
echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV
- name: Build and push (arm64)
uses: docker/build-push-action@v6
with:
context: .
platforms: linux/arm64
push: true
build-args: |
VERSION=${{ env.VERSION }}
COMMIT=${{ env.COMMIT }}
BUILD_DATE=${{ env.BUILD_DATE }}
tags: |
${{ env.DOCKERHUB_REPO }}:latest-arm64
${{ env.DOCKERHUB_REPO }}:${{ env.VERSION }}-arm64

docker_manifest:
runs-on: ubuntu-latest
needs:
- docker_amd64
- docker_arm64
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Generate Build Metadata
run: |
echo "VERSION=${GITHUB_REF_NAME}" >> $GITHUB_ENV
echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV
echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV
- name: Create and push multi-arch manifests
run: |
docker buildx imagetools create \
--tag "${DOCKERHUB_REPO}:latest" \
"${DOCKERHUB_REPO}:latest-amd64" \
"${DOCKERHUB_REPO}:latest-arm64"
docker buildx imagetools create \
--tag "${DOCKERHUB_REPO}:${VERSION}" \
"${DOCKERHUB_REPO}:${VERSION}-amd64" \
"${DOCKERHUB_REPO}:${VERSION}-arm64"
- name: Cleanup temporary tags
continue-on-error: true
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
run: |
set -euo pipefail
namespace="${DOCKERHUB_REPO%%/*}"
repo_name="${DOCKERHUB_REPO#*/}"

token="$(
curl -fsSL \
-H 'Content-Type: application/json' \
-d "{\"username\":\"${DOCKERHUB_USERNAME}\",\"password\":\"${DOCKERHUB_TOKEN}\"}" \
'https://hub.docker.com/v2/users/login/' \
| python3 -c 'import json,sys; print(json.load(sys.stdin)["token"])'
)"

delete_tag() {
local tag="$1"
local url="https://hub.docker.com/v2/repositories/${namespace}/${repo_name}/tags/${tag}/"
local http_code
http_code="$(curl -sS -o /dev/null -w "%{http_code}" -X DELETE -H "Authorization: JWT ${token}" "${url}" || true)"
if [ "${http_code}" = "204" ] || [ "${http_code}" = "404" ]; then
echo "Docker Hub tag removed (or missing): ${DOCKERHUB_REPO}:${tag} (HTTP ${http_code})"
return 0
fi
echo "Docker Hub tag delete failed: ${DOCKERHUB_REPO}:${tag} (HTTP ${http_code})"
return 0
}

delete_tag "latest-amd64"
delete_tag "latest-arm64"
delete_tag "${VERSION}-amd64"
delete_tag "${VERSION}-arm64"
4 changes: 4 additions & 0 deletions .github/workflows/pr-test-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Refresh models catalog
run: |
git fetch --depth 1 https://github.com/router-for-me/models.git main
git show FETCH_HEAD:models.json > internal/registry/models/models.json
- name: Set up Go
uses: actions/setup-go@v5
with:
Expand Down
85 changes: 85 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: Build and Publish

on:
push:
branches: [main]
tags: ['v*']
workflow_dispatch:
inputs:
platforms:
description: 'Target platforms to build'
required: true
default: 'linux/amd64'
type: choice
options:
- 'linux/amd64'
- 'linux/arm64'
- 'linux/amd64,linux/arm64'

permissions:
contents: read
packages: write

env:
REGISTRY: ghcr.io
IMAGE_NAME: ${{ github.repository }}

jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up QEMU
if: contains(github.event.inputs.platforms || 'linux/amd64', 'arm64')
uses: docker/setup-qemu-action@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Generate Build Metadata
run: |
echo VERSION=`git describe --tags --always --dirty` >> $GITHUB_ENV
echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV
echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV

- name: Extract metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=semver,pattern={{version}}
type=sha
type=raw,value=latest

- name: Determine platforms
id: platforms
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "platforms=${{ github.event.inputs.platforms }}" >> $GITHUB_OUTPUT
else
# Default to amd64 only for push events (faster builds)
echo "platforms=linux/amd64" >> $GITHUB_OUTPUT
fi

- name: Build and push Docker image
uses: docker/build-push-action@v6
with:
context: .
push: true
platforms: ${{ steps.platforms.outputs.platforms }}
build-args: |
VERSION=${{ env.VERSION }}
COMMIT=${{ env.COMMIT }}
BUILD_DATE=${{ env.BUILD_DATE }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
11 changes: 8 additions & 3 deletions .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ on:
# run only against tags
tags:
- '*'
workflow_dispatch:

permissions:
contents: write
Expand All @@ -16,21 +17,25 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Refresh models catalog
run: |
git fetch --depth 1 https://github.com/router-for-me/models.git main
git show FETCH_HEAD:models.json > internal/registry/models/models.json
- run: git fetch --force --tags
- uses: actions/setup-go@v4
with:
go-version: '>=1.24.0'
go-version: '>=1.26.0'
cache: true
- name: Generate Build Metadata
run: |
echo VERSION=`git describe --tags --always --dirty` >> $GITHUB_ENV
echo "VERSION=${GITHUB_REF_NAME}" >> $GITHUB_ENV
echo COMMIT=`git rev-parse --short HEAD` >> $GITHUB_ENV
echo BUILD_DATE=`date -u +%Y-%m-%dT%H:%M:%SZ` >> $GITHUB_ENV
- uses: goreleaser/goreleaser-action@v4
with:
distribution: goreleaser
version: latest
args: release --clean
args: release --clean --skip=validate
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
VERSION: ${{ env.VERSION }}
Expand Down
9 changes: 8 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,25 @@ GEMINI.md

# Tooling metadata
.vscode/*
.worktrees/
.codex/*
.claude/*
.gemini/*
.serena/*
.agent/*
.agents/*
.agents/*
.opencode/*
.idea/*
.beads/*
.bmad/*
_bmad/*
_bmad-output/*

# macOS
.DS_Store
._*
.gocache/

scripts
.omc
.omx
5 changes: 5 additions & 0 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
version: 2

builds:
- id: "cli-proxy-api"
env:
Expand All @@ -6,6 +8,7 @@ builds:
- linux
- windows
- darwin
- freebsd
goarch:
- amd64
- arm64
Expand All @@ -16,6 +19,8 @@ builds:
archives:
- id: "cli-proxy-api"
format: tar.gz
name_template: >-
{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{- if eq .Arch "arm64" -}}aarch64{{- else -}}{{ .Arch }}{{- end -}}
format_overrides:
- goos: windows
format: zip
Expand Down
Loading
Loading