What's Changed
- fix(channels): restore exact URL checkbox state (
b8f6ffc7) - fix(release): generate notes from git history (
fc73c424) - fix(update): unify release checks and avoid GitHub API (
4327f142) - docs(update): sync release check documentation (
83d81a55) - chore: rename release skill to ccload-release (
a932d3c9) - feat(release): auto-commit and push release revisions (
8cd2d88a) - fix(release): keep Beta versions on stable minor (
addde3d0) - perf(ci): parallelize release verification and builds (
1274f8c7) - fix(storage): batch debug log cleanup (
23bcc2bf) - feat(codex): add OAuth channel support (
1c96c433) - feat(codex): show OAuth plan metadata (
ee5e87af) - feat(codex): refresh and inspect OAuth credentials (
b0f74570) - fix(channels): show only Codex plan in list (
7a4e9dea) - feat(codex): import credentials in batches (
89fb37e1) - feat(codex): show channel quota usage (
e9768b0b) - feat(channels): refine Codex management filters (
6be68930) - fix: align channel editor and remove 88code remnants (
fd4b00b1) - fix(storage): make Codex credential schema MySQL-compatible (
65358d8c) - fix(storage): restore nullable Codex credentials (
f35bdfde) - feat(channels): add Antigravity OAuth support (
2d07946b) - fix(storage): repair legacy PostgreSQL migration fixture (
1288afab) - fix(proxy): return context overflow as client error (
5f8e3eb6) - feat(oauth): auto-detect imported credentials (
e3a31007) - fix(protocol): normalize Gemini thinking levels (
f6130b75) - feat(oauth): add Antigravity quota refresh (
fb49b7c7) - fix(oauth): assign import priorities by filename (
9ca9a04a) - feat(oauth): improve Antigravity credential handling (
d0b9ed35) - fix(protocol): normalize Codex chat responses (
3cc0c9d2) - fix(codex): align upstream headers with CLIProxyAPI (
6950462e) - fix(release): support manual tag dispatch (
b82669ff) - fix(antigravity): refresh expired credentials before import (
58309bce) - fix(models): correct OAuth model discovery (
3ff2d078) - feat(channels): expand batch management and OAuth imports (
3c6c67b9) - fix(logs): reduce debug cleanup lock contention (
98581f60) - fix(logs): preserve disabled debug log truncation (
72b6ae9d) - fix(channels): allow model discovery with cooling keys (
5b4b6a17) - feat(oauth): add archive imports and live progress (
ee3b34d9) - fix(update): retry release asset propagation failures (
c9bc4bb4) - feat(channels): add manual page size and batch quota refresh (
6328f7d7) - perf(selector): reduce large channel routing allocations (
c0d93b30) - fix(proxy): classify interrupted streams as 599 (
9364cede) - fix(proxy): preserve 499 and 598 stream error semantics (
38e01749) - refactor(selector): tighten slice ownership in routing hot path (
1bf84c8a) - feat(release): publish beta container images (
07d13053) - fix(update): manage container updates by image tags (
3b5aa9d2) - fix(channels): distinguish paid plans and retry EOL models (
bba3147c) - docs: document model retirement cooldown (
0d40c8b7) - fix(cooldown): honor upstream quota reset time (
010a1e4d) - fix(startup): load critical state before maintenance (
b435c2e3) - ci(release): gate tags on master verification (
d3a72b90) - feat(xai): add OAuth channel support (
9e465b48) - fix(app): handle interrupted responses and large OAuth imports (
c2fa8f9a) - feat(xai): complete OAuth channel integration (
048097c3) - fix(xai): generate OAuth links locally (
53036dc8) - fix(oauth): make credential imports resilient (
8f2ff18b) - feat(app): use uTLS for Codex HTTP traffic (
185fa5fd) - fix(xai): stabilize OAuth channel behavior (
729d4472) - fix(storage): migrate auth token restrictions to text (
c8c14d43) - fix(channels): support filtered OAuth CSV transfers (
71071fd6) - feat(oauth): add global upstream URL overrides (
a2bfdabc) - fix(xai): preserve encrypted reasoning and cache reuse (
92650c1f) - fix(channels): allow OAuth model imports (
a71f5aba) - fix(proxy): align OAuth fallback and search tools (
7885bee2) - fix(xai): honor free usage cooldown (
2cfc32f6) - fix(web): correct clipboard and selection feedback (
d7d3ff62) - feat(websocket): expose resource limit details (
077bf99c) - fix(settings): unify validation and reset behavior (
807232df) - fix(xai): align SSO imports and CLI requests (
5ee3ac24) - fix(antigravity): align SSO request handling (
406aceb9) - fix(codex): align model instructions and reasoning include (
777018f6) - fix(proxy): classify interrupted upstream streams as 599 (
3fbcf9e2) - feat(anthropic): add OAuth channel support (
288819b0) - feat(anthropic): align OAuth usage and Claude requests (
6b7e0898) - refactor(storage): make hybrid mode SQLite-first (
c519492a) - fix(web): align advanced settings theme and layout (
61c9e70d) - fix(codex): cool websocket targets after consecutive failures (
eb6c1c06) - test: prune low-value test cases (
6828f7e0) - feat(codex): persist passive quota from responses (
681e8554) - feat: improve Antigravity retries and channel batch limits (
706baea6) - feat(web): add request title alerts and test quota capture (
cfc30bc8) - feat(codex): persist quotas from rate limit events (
952211b5) - refactor: remove model fingerprint feature (
81de41d4) - fix(storage): import hybrid log tail on startup (
4e6c1d13) - style(web): 紧凑渠道批量高级选项布局 (
fb12382c) - fix(codex): 修复 HTTP 回退与输入项 ID 契约 (
ece821ff) - fix(oauth): persist quota snapshots and expose refresh errors (
414d89a6) - feat(channels): add Anthropic base URL and batch priority (
2287f278) - feat: align native Anthropic upstream handling (
e037614c) - feat: sync CLIProxy core and Antigravity adapters (
36a3080b) - refactor: remove dead code and low-value tests (
4074157b) - fix: normalize Antigravity thinking and log upstream errors (
b79a439f) - fix(codex): track interrupted replay as websocket failure (
4a63e9c7) - fix: stabilize Antigravity transport and retry logging (
434e6d02) - fix(settings): isolate restart callbacks per server (
2522daf5) - fix(tokens): keep channel restrictions consistent (
629ebb49) - fix(xai): stop injecting implicit search tools (
c8cdc93a) - feat(channels): add OAuth credential cleanup (
d7c71fb4) - fix(oauth): test current access token before refreshing (
9b5bdded) - fix(antigravity): stabilize sessions and unwrap responses (
5097dec0) - fix(stream): stop Anthropic streams at message_stop (
00b17b5f) - fix(sqlite): remove vacuum from delete paths (
fb0efddc) - feat(channels): improve batch actions, imports, and OAuth cleanup (
84fd577a) - feat(channels): stream batch OAuth quota refreshes (
deb92c1a) - fix(antigravity): cool capacity failures before retry (
db3b125c) - fix(cooldown): honor Antigravity quota model (
a17275d4) - ci: streamline test and release builds (
cc6c22b8) - fix: honor Anthropic rate limit reset headers (
09edaf95) - feat(oauth): import text and aggregate credentials (
dc6ec87b) - test(app): parallelize slow integration tests (
deaeb598) - fix(anthropic): surface OAuth upstream errors (
bcb8ebfd) - test: remove low-value test cases (
e8f086a1) - fix(web): raise channel priority limit (
2a7b5c1d) - feat(analytics): add client protocol filters (
4ef503f0) - fix(release): compare beta notes with previous beta (
4a3db94f) - fix(release): reset beta notes after stable (
8ce0d832) - sync cliproxy core to fork/v8.65.0 (
baf7d1f6) - fix: align OAuth runtime compatibility (
de763cd8) - fix: identify Codex OAuth users correctly (
cd23ba4f) - fix(web): use available advanced settings width (
7b6ae5a6) - feat(channels): support proxy and availability windows (
1bce74c3) - feat(codex): enable multi-agent v2 optimization by default (
2ca04d59) - fix: simplify Antigravity OAuth URL persistence (
b74c65f1) - feat(model-test): add channel key selection to model tests (
1330ae72) - fix(model-test): show OAuth credentials in key selector (
b8f08bea) - feat(providers): refine xAI and Antigravity routing (
42c7d80e) - feat(runtime): show comprehensive process and HTTP metrics (
34f4ee51) - feat(runtime): add process resource metrics with auto-refresh (
256b5da8) - test: prune low-value and redundant test cases (
f5aa3380) - docs: restructure CLAUDE.md and sync recent mechanisms (
5aac4ffc) - ci(release): promote beta image alias to newest stable (
bc3f58a3) - docs(readme): document OAuth channels, time windows, and per-channel proxy (
ce94f416) - feat(channels): export selected channels to CSV from batch menu (
2e942bb8) - fix(routing): remove direct TCP pre-probing (
94d26ee2) - fix(web): preserve custom token expiry timezone (
bb274bb6) - docs: add OpenAI-compatible upstream channel example (
628845b2) - fix(web): keep unchanged token expiry exact (
51a56a33) - docs: fix OpenAI-compatible channel example (
de8b4e44) - fix(csv): preserve channel websockets on round trip (
b7d801a9) - fix(proxy): isolate upstream sessions by thread (
04ea621c) - feat(antigravity): add Gemini 3.7 and dynamic Hub user agent (
f77a7b7e) - fix(antigravity): unify URL retries across proxy and admin (
1e4b9c7d) - fix(antigravity): remove production endpoint from fallback (
a245518b) - fix(settings): reject duplicated OAuth URL schemes (
ea977d36) - feat(codex): add quota overage replay and usage tracking (
708bc3cc) - feat(codex): optionally retry final upstream 429s (
04da6433) - feat(cliproxy): sync translator core to fork v8.67.0 (
535858b5) - feat(codex): support response path aliases (
93a997d5) - feat(cliproxy): sync translator core to fork v8.68.0 (
4dfa341e) - feat(codex): update client identity and forward turn state (
3410d117) - feat(model-test): add image generation tab (
b4b7c3f7) - fix(model-test): persist image prompt in browser (
fcb88789) - feat(codex): add personal access token authorization (
414510e8) - feat(oauth): disable channels with permanently rejected credentials (
05ceacb4) - feat(codex): add quota reset credits and manual reset (
b67ac307) - feat(oauth): track weekly and monthly standard costs (
48814758) - fix(oauth): track quota cost per upstream window slot (
7815e182) - fix(oauth): bootstrap quota cost windows from persisted usage snapshot (
57698dfd) - fix: end stalled websocket turns and keep oauth quota costs across reset jitter (
c089ba0d) - feat(zai): add Z.ai Coding Plan (ZCode) OAuth channels (
f98f978a) - fix(web): show greyscale rollout hint when Z.ai OAuth is unavailable (
c09fab8b) - feat(zai): discover the Coding Plan model catalog live (
eef6609a) - feat(zai): fall back to the models.dev Coding Plan catalog (
40612faf) - test(storage): wait for the sync queue to drain before asserting it is empty (
5b9229d2) - feat(zai): report Coding Plan quota on the channel card (
74b05f67) - feat(settings): make the downstream read timeout configurable (
522ef030) - feat(cliproxy): sync translator core to fork v8.69.0 (
8219642e) - feat(anthropic): apply the Claude Code CLI fingerprint to every /v1/messages channel (
46108508) - fix(header): Antigravity 渠道自定义 header 规则不再被凭证重建吞掉 (
aa661acb) - fix(admin-test): Z.ai Coding Plan 渠道测试补齐 body 指纹与 header 注入 (
ad06b013) - fix(anthropic): preserve exact beta header tokens (
9b6439e6) - fix(sse): Responses 元数据事件不再提前 commit 流 (
91c9f4cb) - feat(auth): add daily and monthly token cost limits (
580ec9bf) - fix(responses): recover upstream input and SSE errors (
7f5bb432) - docs: update recent settings and Z.ai labels (
f822652b) - chore(deps): upgrade project dependencies (
a09ea277) - chore(codex): 将官方客户端指纹升级到 0.148.0 (
52b0e6e4) - fix(sse): Responses 元数据计入上游首字节但不提交客户端流 (
4909ccd2) - feat(model-test): 按模型测试开关改为停用单模型并区分渠道禁用 (
83d6271d)
Full Changelog: v4.6.0...v4.7.0