Wesley Liddick
9717699367
Merge pull request #4218 from chensunlai/fix/openai-image-generation-final-status
...
fix(openai): complete streamed image generation results
2026-07-14 11:00:40 +08:00
Wesley Liddick
2590b86e31
Merge pull request #4204 from jianjianai/codex/fix-scheduler-rebuild-coalescing
...
修复调度器并发触发重复全量重建
2026-07-14 11:00:09 +08:00
Wesley Liddick
24d908b257
Merge pull request #4203 from jianjianai/codex/fix-scheduler-pending-lag
...
修复调度器使用已消费事件计算 outbox 延迟
2026-07-14 10:59:57 +08:00
Wesley Liddick
9c3c560d49
Merge pull request #4206 from jianjianai/codex/fix-scheduler-proxy-expiry-event
...
修复代理到期改投触发全量调度重建
2026-07-14 10:59:43 +08:00
Wesley Liddick
8711882918
Merge pull request #4205 from jianjianai/codex/fix-scheduler-auto-pause-event
...
修复账号到期暂停触发全量调度重建
2026-07-14 10:59:34 +08:00
Wesley Liddick
27fcbace89
Merge pull request #4207 from hongheshan-svg/upstream-pr/http2-keepalive
...
fix(openai): 为 Codex HTTP/2 上游启用 PING 健康探测,剔除死连接
2026-07-14 10:59:22 +08:00
Wesley Liddick
5d1c577cb2
Merge pull request #4217 from jinfeijie/feat/grok-sso-device-oauth
...
feat(grok): 支持 Web SSO 批量导入并转换为 Build OAuth
2026-07-14 10:25:56 +08:00
shaw
d41a10111d
Merge remote-tracking branch 'origin/main' into feat/grok-sso-device-oauth
...
# Conflicts:
# frontend/src/api/admin/grok.ts
2026-07-14 10:19:16 +08:00
Wesley Liddick
93f2ccf3a5
Merge pull request #4188 from superman2003/fix/grok-free-quota-429-20260713
...
feat(grok): improve free quota probing and usage display
2026-07-14 10:14:41 +08:00
Wesley Liddick
a8927d8ec7
Merge pull request #4214 from bestony/agent/devbox-coding/25c66071-1783957460
...
feat: add opt-in Server-Timing for Admin UI APIs
2026-07-14 10:14:17 +08:00
Wesley Liddick
623a9647c0
Merge pull request #4110 from gebdalaoli-arch/agent/fix-codex-models-apikey-upstream
...
fix: proxy Codex model manifests through API key upstreams
2026-07-14 10:13:56 +08:00
Wesley Liddick
41c71a1528
Merge pull request #4216 from bestony/agent/devbox-coding/3ff3c99d
...
feat(ops): add Host filtering to system logs
2026-07-14 10:13:40 +08:00
Wesley Liddick
1847bdf9fd
Merge pull request #4179 from scientist-blockchian/fix/messages-exact-model-mapping
...
fix(openai): preserve exact messages dispatch mappings
2026-07-14 10:13:27 +08:00
Wesley Liddick
7358810659
Merge pull request #4180 from jianjianai/fix/openai-request-view-single-scan
...
fix(openai): avoid repeated request body scans
2026-07-14 10:13:11 +08:00
Wesley Liddick
029e5ce9f9
Merge pull request #4104 from gebdalaoli-arch/codex/fix-image-gen-hosted-tool-conflict
...
[codex] avoid duplicate hosted image tool injection
2026-07-14 10:13:00 +08:00
jjaw
9033e14bb7
修复账号到期暂停触发全量重建
2026-07-14 09:49:57 +08:00
jjaw
8f328d4ab3
修复代理到期改投触发全量重建
2026-07-14 09:23:02 +08:00
Wesley Liddick
74e78c3de0
Merge pull request #4115 from Arron196/fix/api-double-billing
...
fix: 按账号控制 OpenAI 长上下文计费
2026-07-14 08:38:57 +08:00
chensunlai
f2ca16577e
fix(openai): complete streamed image generation results
2026-07-13 21:24:53 +00:00
jinfeijie bot
6c441637b0
fix(grok): 移除账号类型页 SSO 卡片入口
...
SSO 仅作为 OAuth 流程内的输入方式,避免与 OAuth/API Key 卡片风格冲突。
2026-07-14 01:47:53 +08:00
bestony and multica-agent
0f2ec134b5
fix(ops): bound indexed log host length
...
Co-authored-by: multica-agent <github@multica.ai >
2026-07-14 01:29:47 +08:00
bestony and multica-agent
2c2e50ba58
feat(ops): add host filtering to system logs
...
Co-authored-by: multica-agent <github@multica.ai >
2026-07-14 01:29:46 +08:00
bestony and multica-agent
966afd1b4b
fix: preserve instrumented client contracts
...
Co-authored-by: multica-agent <github@multica.ai >
2026-07-14 01:29:30 +08:00
bestony and multica-agent
54d228dda5
feat(admin): add opt-in server timing metrics
...
Co-authored-by: multica-agent <github@multica.ai >
2026-07-14 01:29:30 +08:00
jinfeijie bot
ad4bf5c60d
feat(grok): 支持 Web SSO 批量导入并转换为 Build OAuth
...
新增 Grok Web SSO → xAI Device Flow → Grok Build OAuth 导入链路,
支持管理员批量粘贴 SSO key 创建 OAuth 账号。
- 后端:ConvertSSOToBuild、ConvertFromSSO、POST /admin/grok/sso-to-oauth
- 批量:3 worker 并发,失败跳过并汇总 created/failed,worker panic recover
- 无 refresh_token 时写入 expires_at 并强制 auto_pause_on_expired
- 前端:SSO Cookie 导入入口、动态超时、中英文案、部分成功不关弹窗
- 测试:pkg/service/handler/前端超时单测;本地 Docker 真实 SSO e2e 通过
2026-07-14 01:09:07 +08:00
benjamin
e9fb5983cd
fix(billing): 默认关闭 OpenAI 长上下文计费
2026-07-13 23:32:16 +08:00
hongheshan-svg and Claude Opus 4.8
98027cdded
fix(openai): enable HTTP/2 keep-alive PING to evict dead Codex connections
...
Codex/OpenAI upstream switched from a WebSocket pool to HTTP/2. The
outbound H2 transport set neither ReadIdleTimeout nor ResponseHeaderTimeout
(the OpenAI profile forces ResponseHeaderTimeout=0), so a pooled H2
connection silently killed by a proxy/NAT becomes a "dead connection":
both ends believe it is alive and a request assigned to it hangs until the
OS TCP retransmit timeout (minutes) before the first byte — observed as an
8m37s TTFT with an eventual 200. Occasional (only when a request lands on a
dead pooled conn) and across all groups (shared OpenAI transport); worse on
larger idle pools.
Explicitly configure http2 on the openai_h2 transport and enable active
PING health checks (ReadIdleTimeout=15s, PingTimeout=15s) so dead
connections are detected and evicted at the source, instead of relying on
ResponseHeaderTimeout as an after-the-fact backstop. Scoped to the
openai_h2 path only; Claude/Gemini (default) and h1 modes are untouched.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-13 23:31:18 +08:00
jjaw
831862b924
修复调度全量重建并发合并
2026-07-13 21:59:55 +08:00
jjaw
a0778e9a42
修复调度器使用已消费事件计算延迟
2026-07-13 21:56:47 +08:00
gebdalaoli-arch
3c68b2e369
fix: fail over Codex manifest accounts
2026-07-13 20:36:37 +08:00
superman2003
c896cacf6d
feat(grok): improve free quota probing and usage
2026-07-13 19:49:56 +08:00
gebdalaoli-arch
ed31a52424
fix: stabilize API key Codex manifest refreshes
2026-07-13 19:31:38 +08:00
benjamin
f63d168ae0
fix(billing): 检查长上下文开关类型断言
2026-07-13 18:45:06 +08:00
benjamin
3e4d48e010
Merge remote-tracking branch 'upstream/main' into fix/api-double-billing
...
# Conflicts:
# frontend/src/components/account/EditAccountModal.vue
2026-07-13 18:06:44 +08:00
zz80900
40ec74b9fc
fix(openai): preserve exact messages dispatch mappings
...
Treat a non-empty messages dispatch model as a caller-approved fallback after account-level mapping, without reclassifying the requested Claude family.\n\nAdd Fable forwarding and endpoint boundary regression coverage.\n\nFixes #4177
2026-07-13 17:57:08 +08:00
benjamin
a0ac5e0240
fix(billing): 默认开启 OpenAI 长上下文计费
2026-07-13 17:55:01 +08:00
jjaw
8d5bc448b5
fix(openai): avoid repeated request body scans
2026-07-13 17:43:59 +08:00
Wesley Liddick
7d239d62e8
Merge pull request #4173 from heathermhuang/codex/fix-grok-oauth-media-routing
...
fix(grok): keep OAuth media on the official API
2026-07-13 17:37:00 +08:00
Wesley Liddick
adb5106c1f
Merge pull request #4169 from bestony/fix/openai-oauth-model-capability-cooldown
...
fix(scheduler): cool down Codex plan-gated models per account
2026-07-13 17:19:59 +08:00
Heatherm Huang
bb73416733
fix(grok): route OAuth media through official API
2026-07-13 17:08:55 +08:00
github-actions[bot]
55ed0ab0da
chore: sync VERSION to 0.1.153 [skip ci]
2026-07-13 08:32:35 +00:00
Bestony
5aeb03018c
fix(scheduler): cool down Codex plan-gated models per account
...
OpenAI OAuth (ChatGPT) accounts deterministically reject plan-gated
models with 400 "The 'X' model is not supported when using Codex with
a ChatGPT account". Account selection had no capability filtering for
this, so the scheduler kept picking the same account for the same model
forever; every attempt burned an upstream call and surfaced to clients
as a retryable 502, sustaining client retry storms.
Treat this 400 like upstream model-not-found: mark the (account, model)
pair via SetModelRateLimit (30min cooldown) so
IsSchedulableForModelWithContext skips the account for that model
during selection, and return true so the in-flight request fails over
to another account through the existing UpstreamFailoverError path.
2026-07-13 16:29:18 +08:00
Wesley Liddick
a2bc133747
Merge pull request #4163 from bestony/fix/openai-ws-ingress-lifecycle
...
fix(openai-ws): bound ingress session lifecycle
v0.1.153
2026-07-13 16:07:53 +08:00
Wesley Liddick
540e90ca8b
Merge pull request #4162 from heathermhuang/codex/fix-grok-third-party-api
...
fix(grok): allow third-party API base URLs
2026-07-13 16:07:36 +08:00
Wesley Liddick
4bc7486c3b
Merge pull request #4161 from fengshao1227/fix/remove-payment-channels-endpoint
...
fix(payment): 删除泄露内部 AI 渠道配置的废弃接口
2026-07-13 15:39:32 +08:00
Wesley Liddick
664b7be30f
Merge pull request #4055 from iMouseWu/feat/account-plan-type-edit
...
feat(account): 账号编辑弹窗支持手动覆盖 OpenAI 订阅档位 plan_type(仅 OAuth)
2026-07-13 15:32:57 +08:00
Bestony@Homelab
c8cfc93632
fix(openai-ws): bound ingress session lifecycle
2026-07-13 15:32:42 +08:00
Wesley Liddick
b4aa3eb023
Merge pull request #4148 from feeeei/fix/retry_count
...
fix: 池模式同账号重试次数配置对 Anthropic/Gemini/通用转发路径生效
2026-07-13 15:32:40 +08:00
Wesley Liddick
0465540195
Merge pull request #4048 from iMouseWu/fix/datatable-scroll-jank
...
fix(frontend): 小数据量关闭 DataTable 虚拟化并按行主键缓存行高,消除账号列表滚动抖动
2026-07-13 15:32:08 +08:00
Wesley Liddick
b0d0de0547
Merge pull request #4045 from xiaopixiu2019/codex/upstream-gpt56-oauth-test
...
fix: normalize GPT-5.6 alias in OpenAI OAuth account tests
2026-07-13 15:31:44 +08:00