Wesley Liddick
|
f218c8d40a
|
Merge pull request #6394 from qiujun8023/fix/account-stats-deepseek-peak
fix(billing): apply model pricing policies to account stats cost
|
2026-09-01 08:58:49 +08:00 |
|
Wesley Liddick
|
1cce2b38ee
|
Merge pull request #6417 from fengshao1227/fix/ws-ingress-capacity-shed-client-code
fix(openai): ctx_pool WS ingress 下发前改写上游容量降载错误码(Codex 会话被硬终止)
|
2026-09-01 08:54:00 +08:00 |
|
Wesley Liddick
|
9d9ed1cc62
|
Merge pull request #6415 from icebreaker-forked/fix/retry-transient-db-startup
fix(repository): PostgreSQL 恢复期间退避重试,避免首次启动退出
|
2026-09-01 08:53:25 +08:00 |
|
Wesley Liddick
|
2d7767eaf2
|
Merge pull request #6407 from wucm667/fix/issue-6402-delegation-bootstrap
fix(openai): accept delegation bootstrap without call id
|
2026-09-01 08:51:46 +08:00 |
|
Wesley Liddick
|
064d9b74e8
|
Merge pull request #6432 from okbexx/fix/codex-disabled-account-capabilities
fix(codex): ignore persistently disabled catalog accounts
|
2026-09-01 08:46:42 +08:00 |
|
Wesley Liddick
|
e87c47c957
|
Merge pull request #6435 from wucm667/fix/issue-6420-apikey-responses-instructions
fix(openai): avoid synthesized instructions for API keys
|
2026-09-01 08:45:58 +08:00 |
|
Wesley Liddick
|
bdedd6c544
|
Merge pull request #6433 from swjturay/codex/upstream-stale-ws-recycle
fix(openai-ws): recycle stale idle pool connections without reader liveness
|
2026-09-01 08:45:30 +08:00 |
|
Wesley Liddick
|
200602b41b
|
Merge pull request #6438 from Brisbanehuang/fix/codex-custom-provider-image-input
fix(codex): preserve known GPT image input capabilities
|
2026-08-31 21:57:09 +08:00 |
|
Brisbanehuang
|
e2624fb65c
|
fix(codex): preserve known image input capabilities
|
2026-08-31 09:42:58 -04:00 |
|
shaw
|
cc6a8e5174
|
chore: update sponsors
|
2026-08-31 21:29:13 +08:00 |
|
Ray
|
6d5f027848
|
fix(openai-ws): recycle stale idle pool connections
|
2026-08-31 21:04:29 +08:00 |
|
wucm667
|
e21b849a92
|
fix(openai): avoid synthesized instructions for API keys
|
2026-08-31 20:58:49 +08:00 |
|
Jarl
|
ba345f1052
|
fix(codex): ignore persistently disabled catalog accounts
|
2026-08-31 20:26:29 +08:00 |
|
github-actions[bot]
|
52374af940
|
chore: sync VERSION to 0.1.184 [skip ci]
|
2026-08-31 09:28:15 +00:00 |
|
ice breaker
|
b6a7b8b7df
|
fix(repository): allow eight transient database retries
|
2026-08-31 17:10:31 +08:00 |
|
li
|
1dc0a09009
|
fix(openai): ctx_pool WS ingress 下发前改写上游容量降载错误码
上游容量降载(server_is_overloaded / slow_down)被 ctx_pool 的 ingress 直写路径
原样转发给客户端。Codex CLI 按闭集判定,这两个码属致命集,客户端打印
"Selected model is at capacity" 并直接终止会话,不退避重试。
仓库已有 sanitizeOpenAICapacityShedErrorCodeForClient 处理这件事,且注释写明了
Codex 的闭集判定与"账号状态判定使用改写前原始 payload"的前提。它此前只在
HTTP/SSE(openai_gateway_response_handling.go)与 http_bridge
(openai_ws_http_bridge.go)两条路径被调用,ctx_pool ingress 直写路径是唯一漏掉
的一条——同一账号同一时刻切到 http_bridge 就能正常退避重试。
改写结果写入独立的 clientMessage,不动 upstreamMessage:写出点之后的
markOpenAIWSClientVisibleFailure 与 handleOpenAIWSTerminalTransientFailure
仍按原始 payload 判定账号状态,与 http_bridge 的写法一致。
新增用例覆盖改写生效与改写范围两侧(非容量类错误码必须原样下发)。
|
2026-08-31 16:53:57 +08:00 |
|
Wesley Liddick
|
e98ef32eb2
|
Merge pull request #6414 from fengshao1227/fix/anthropic-responses-stream-lifecycle
fix(apicompat): Anthropic→Responses 流式转换丢失助手文本(thinking 块顶掉未关闭的 message item + content_index 从不推进)
v0.1.184
|
2026-08-31 16:43:40 +08:00 |
|
ice breaker
|
863667ce67
|
fix: retry transient database startup errors
|
2026-08-31 16:25:13 +08:00 |
|
li
|
8f5451587e
|
fix(apicompat): Anthropic→Responses 流式转换在 thinking 块前关闭 message item 并推进 content_index
thinking 块开始时不关闭已打开的 message item,直接覆盖 CurrentItemType/
CurrentItemID,累积的助手文本既不进 state.Outputs 也拿不到 output_item.done,
response.completed 只带 reasoning——客户端收到「成功但无输出」。同 switch 的
tool_use 分支本来就先调 closeCurrentResponsesItem,只有 thinking 漏了。
content_index 只在 item 打开时置 0,从不推进。同一 message item 里第二个 text
块会再发一次 content_part.added(content_index=0),与第一个 part 撞在同一下标,
SDK 累积式 helper 按 content[content_index] 写入时后者覆盖前者。反方向
responses_to_anthropic.go 有三处 ContentBlockIndex++,正方向一处都没有。
新增用例覆盖两条坏顺序,外加一条生命周期不变式用例(output_item.added 与
output_item.done 必须配平、terminal 事件按announce 顺序逐项携带)。
|
2026-08-31 16:15:08 +08:00 |
|
Wesley Liddick
|
85b593fd2f
|
Merge pull request #6411 from Wei-Shaw/fix/openai-ttft-setting-ui
fix(openai): move TTFT metric mode to admin settings
|
2026-08-31 15:39:12 +08:00 |
|
shaw
|
0fcec63b68
|
test(openai): isolate visible TTFT fixture
|
2026-08-31 15:15:44 +08:00 |
|
shaw
|
8553c91c1a
|
test(api): update settings contract fixture
|
2026-08-31 15:05:39 +08:00 |
|
shaw
|
c66e700f05
|
fix(openai): move TTFT metric mode to admin settings
|
2026-08-31 14:52:07 +08:00 |
|
Wesley Liddick
|
fdf9751c12
|
Merge pull request #6378 from Ritel-T/fix/codex-oauth-service-tier-billing
fix(openai): preserve Codex OAuth Fast billing tier
|
2026-08-31 13:56:00 +08:00 |
|
wucm667
|
1be69e56aa
|
fix(openai): accept delegation bootstrap without call id
|
2026-08-31 12:57:06 +08:00 |
|
 qiujunandClaude Opus 5
|
e7c029875c
|
test(billing): 图片输出按 output 子集计价
上一条改用统一定价管线后,TestTryModelFilePricing_WithImageOutput 挂在 0.3 vs
0.28:原算式把 ImageOutputTokens 当 OutputTokens 之外的额外量叠加,等于按文本
output 价和图片价各收一次,测试固化了这个重复计费。
ImageOutputTokens 本就是 OutputTokens 的子集(Gemini 取自 candidatesTokensDetails
的 IMAGE 档,OpenAI 取自 output_tokens_details),统一管线先扣除再按图片单价计,
未配图片价时回退到 output 价、总额不变,正是这个语义。期望改为 0.28。
影响:涉及图片输出的模型,账号统计成本会降低"图片 token × 文本 output 单价"。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-31 12:33:06 +08:00 |
|
Wesley Liddick
|
0678b24d58
|
Merge pull request #6283 from okbexx/feat/usage-compaction-kind
feat(usage): track native compaction requests
|
2026-08-31 11:19:37 +08:00 |
|
Wesley Liddick
|
b369fbca15
|
Merge pull request #6395 from lylelllll/fix/account-expiry-timezone
fix(frontend): clarify local timezone for expiry inputs
|
2026-08-31 11:18:55 +08:00 |
|
Wesley Liddick
|
36ee193e3c
|
Merge pull request #6367 from qiujun8023/fix/usage-stats-cards-mobile-horizontal-scroll
fix(frontend): prevent hidden cache tooltip from causing horizontal scroll on mobile
|
2026-08-31 11:18:03 +08:00 |
|
Wesley Liddick
|
1dd0f2e5dc
|
Merge pull request #6384 from alfadb/fix/unify-usage-window-style
fix(frontend): unify usage window rendering and tighten alert thresholds
|
2026-08-31 11:17:09 +08:00 |
|
Wesley Liddick
|
f34735f462
|
Merge pull request #6388 from alfadb/feature/ollama-usage-cn-platforms
feat(ollama): 用量窗口支持挂在国产三家平台下的 Ollama Cloud 账号
|
2026-08-31 11:16:25 +08:00 |
|
Wesley Liddick
|
a2d7d41185
|
Merge pull request #6325 from 251392463/fix/grok-responses-vision-tool-output
fix(grok): preserve Responses vision tool output images
|
2026-08-31 11:15:33 +08:00 |
|
Wesley Liddick
|
03ab687686
|
Merge pull request #5866 from wucm667/fix/issue-5863-scope-monitor-groups
fix: scope channel monitor groups by user access
|
2026-08-31 11:15:13 +08:00 |
|
Wesley Liddick
|
2e756b71f2
|
Merge pull request #6198 from xuhaihan/fix/openai-reauth-refresh-token
fix(accounts): reauthorize OpenAI with refresh token
|
2026-08-31 11:14:12 +08:00 |
|
Wesley Liddick
|
fbc69322af
|
Merge pull request #6254 from wucm667/fix/issue-6249-configurable-image-cooldown
feat(openai): configure image tool cooldown
|
2026-08-31 11:13:52 +08:00 |
|
Wesley Liddick
|
414489d152
|
Merge pull request #5469 from wucm667/fix/issue-5467-passthrough-http-bridge
fix(openai-ws): bridge oversized passthrough requests
|
2026-08-31 11:13:35 +08:00 |
|
Wesley Liddick
|
50a9dd7a64
|
Merge pull request #6386 from wucm667/fix/issue-6383-isolate-passthrough-ws
fix(openai): isolate passthrough websocket sessions
|
2026-08-31 11:13:16 +08:00 |
|
Wesley Liddick
|
a4156eea10
|
Merge pull request #6385 from wucm667/fix/issue-6381-preserve-quota-limits
fix(admin): preserve quota limits on partial group updates
|
2026-08-31 11:12:56 +08:00 |
|
Wesley Liddick
|
e0ecb55d4b
|
Merge pull request #4872 from wucm667/fix/issue-4845-reset-scheduler-rate-limit
fix(account): clear rate limit on quota reset
|
2026-08-31 11:12:35 +08:00 |
|
wucm667
|
897faea333
|
fix(account): reset quota cooldown atomically
|
2026-08-31 09:12:09 +08:00 |
|
lylelllll
|
94edcd5d81
|
chore: remove second misplaced component copy
|
2026-08-30 23:31:59 +08:00 |
|
lylelllll
|
3673702af5
|
chore: remove misplaced uploaded component copy
|
2026-08-30 23:27:08 +08:00 |
|
lylelllll
|
5778739cdb
|
fix(frontend): use strict local expiry parsing for redeem codes
|
2026-08-30 23:20:59 +08:00 |
|
lylelllll
|
81e461f651
|
fix(frontend): parse local expiry datetimes strictly
|
2026-08-30 23:19:45 +08:00 |
|
lylelllll
|
b7aca87fd0
|
test(frontend): cover local datetime parsing across timezones
|
2026-08-30 23:17:11 +08:00 |
|
lylelllll
|
ae1bcdc25d
|
fix(frontend): clarify expiry timezone in Chinese labels
|
2026-08-30 23:15:54 +08:00 |
|
lylelllll
|
263605779c
|
fix(frontend): clarify expiry timezone in English labels
|
2026-08-30 23:13:52 +08:00 |
|
 qiujunandClaude Opus 5
|
9eabd2a5b7
|
fix(billing): apply model pricing policies to account stats cost
resolveAccountStatsCost 的优先级 3 维护了第二份"单价 × token 数"实现,每加一个
定价特性都要手工镜像:service tier 与长上下文分别由 9261dd77、25e6688a 补齐,
而 b5827cfd 引入的 DeepSeek 官方峰谷一直没有生效,高峰时段账号成本最多低估一半。
改为复用 CalculateCostWithServiceTier。channelPricing 仍为 nil,优先级 3 的语义
不变:只取模型定价文件、不引入渠道自定义定价;低谷时段结果与原算式完全一致。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-30 22:57:53 +08:00 |
|
lylelllll
|
d66bc88e68
|
fix(frontend): apply expiry input changes in source paths
|
2026-08-30 22:11:22 +08:00 |
|
lylelllll
|
8177f27aa3
|
fix(frontend): clarify local timezone for expiry inputs
|
2026-08-30 22:10:15 +08:00 |
|