chihao.ou
213de0797e
fix(gateway): avoid duplicate Accept-Encoding headers
2026-09-11 19:19:40 +08:00
Wesley Liddick
4726bdd08b
Merge pull request #6890 from slovx2/feat/openai-images-75be
...
feat(openai): route OAuth image requests through native Codex Images
2026-09-11 17:29:54 +08:00
song
23eef9ecc3
test(openai): restore image model regression coverage
2026-09-11 16:44:56 +08:00
Wesley Liddick
cdb5cfaf6c
Merge pull request #6747 from DuskLin/feat/opencode-go-platform
...
feat(opencode): 增加 OpenCode 平台支持(Zen / GO)
2026-09-11 16:42:05 +08:00
Wesley Liddick
dfa83fbe93
Merge pull request #6986 from feeeei/feat/site-billing-mode
...
feat(settings): 新增「站点类型」开关(充值 & 订阅 / 仅充值 / 仅订阅)
2026-09-11 16:34:46 +08:00
Wesley Liddick
2dff7af0f9
Merge pull request #6954 from feeeei/fix/quota
...
fix(quota): 修复仪表盘默认会给所有人分配显示所有平台卡片的问题
2026-09-11 16:34:18 +08:00
song
1067e89fab
fix(openai): address image route review findings
2026-09-11 16:30:32 +08:00
song
04c45e9dc2
test: remove incompatible upstream image model assertions
2026-09-11 15:57:49 +08:00
song
5ee436d8a2
fix(pricing): set image cache fallback rate
2026-09-11 15:57:49 +08:00
song
fa565eafb1
fix(pricing): add image cache pricing field
2026-09-11 15:57:38 +08:00
song
eacff0a629
fix: retain upstream config and image pricing updates
2026-09-11 15:57:38 +08:00
song
c0d5119375
feat(openai): route OAuth image requests through native Codex Images
...
Use shared model routing for image forwarding and account tests, retain Luna orchestration for legacy models, and add Image 2.5 pricing and usage accounting.
2026-09-11 15:57:09 +08:00
刘佳林
22dffa1bb9
fix(opencode): apply De Morgan for staticcheck QF1001
...
golangci-lint failed on the CN/OpenCode billing-candidate guard.
2026-09-11 15:47:23 +08:00
刘佳林
efcc2252e5
fix(opencode): address review on dispatch, billing, session, and 402
...
Skip OpenAI messages-dispatch gpt-5.x defaults for OpenCode groups and
composite OpenCode targets. Filter unpriced claude-* billing candidates,
estimate count_tokens locally, sanitize body session IDs before setting
X-OpenCode-Session, and treat Zen 402 as recoverable payg cooldown.
Stop rewriting the inbound body before protocol routing so account
model_mapping applies once and usage_logs.model stays the client name.
2026-09-11 15:39:13 +08:00
刘佳林
981279c996
fix(opencode): rewrite mapped model onto all three upstream protocols
...
Apply account model_mapping to the request body before OpenCode
protocol routing so /v1/responses, /v1/chat/completions, and
/v1/messages all send the mapped ID as the real upstream model.
2026-09-11 15:07:43 +08:00
刘佳林
7c008bd8c1
fix(opencode): apply account model mapping in connection tests
...
Responses probes used the requested model as-is, so aliases like
opencode/muse-spark-* were sent upstream instead of the mapped ID.
2026-09-11 14:19:23 +08:00
Wesley Liddick
40cf3f50a6
Merge pull request #6968 from ouchihao/codex/issue-6903-deepseek-vision-modality
...
fix(codex): advertise DeepSeek vision image input
2026-09-11 14:01:36 +08:00
Wesley Liddick
75b7dd1e0b
Merge pull request #6969 from ouchihao/codex/issue-5882-peak-rate-validation
...
fix(groups): return bad request for invalid peak-rate settings
2026-09-11 14:01:14 +08:00
Wesley Liddick
642d20b8ac
Merge pull request #6988 from ZeroClover/fix/codex-manifest-display-name
...
fix(openai): keep Codex manifest display names in account model lists
2026-09-11 14:00:42 +08:00
Wesley Liddick
6254aba5e9
Merge pull request #6575 from doublepi123/feat/antigravity-gemini-3.8-flash
...
feat(antigravity): support Gemini 3.7 and 3.8 Flash models
2026-09-11 13:58:54 +08:00
Wesley Liddick
7145484fde
Merge pull request #6971 from ouchihao/codex/issue-1890-ttft-request-details
...
fix(ops): show first-token latency in TTFT request details
2026-09-11 13:58:37 +08:00
Wesley Liddick
fd300ab6f3
Merge pull request #6974 from alfadb/fix/deepseek-v41-flash-pricing
...
fix(billing): 适配 DeepSeek V4.1-Flash 新价与 pro→Flash 计费切换
2026-09-11 13:58:23 +08:00
Wesley Liddick
88011a6a2e
Merge pull request #6783 from asmoyou/fix/large-image-request-memory
...
perf(gateway): reduce memory amplification for large Responses image requests
2026-09-11 13:58:11 +08:00
Wesley Liddick
14029e50aa
Merge pull request #6661 from whhphd/fix/grok-media-slot-release
...
fix(grok): release abandoned media slots and preserve video ownership
2026-09-11 13:57:07 +08:00
Wesley Liddick
3fb03cdac1
Merge pull request #6960 from xlplbo/fix/openai-ws-exec-scope-preemption
...
fix(openai-ws): ctx_pool 会话抢占与会话状态按 codex 线程隔离
2026-09-11 13:56:52 +08:00
Wesley Liddick
8f9a9a255b
Merge pull request #6965 from xlplbo/fix/openai-ws-pool-reader-loop
...
fix(openai-ws): 连接池常驻读循环应答上游 ping,根治空闲连接 1011 keepalive ping timeout
2026-09-11 13:56:23 +08:00
xlplbo
4543ddc5c1
fix(openai): WS 执行作用域按 request_kind 分道
2026-09-11 13:37:59 +08:00
xlplbo
613722eee4
fix(openai): HTTP 转发的执行作用域改从原始请求计算
2026-09-11 11:36:29 +08:00
xlplbo
d0ca057ca4
fix(openai): WS 会话被抢占时先发关闭帧再取消
2026-09-11 10:25:50 +08:00
xlplbo
e4c369bd56
fix(openai): HTTP 经 WS 池转发按执行作用域取会话状态键
2026-09-11 10:25:50 +08:00
刘佳林
242907854d
feat(opencode): add OpenCode platform with Zen and GO account types
...
Keep the internal platform ID opencode_go. Product surface is OpenCode
with account_mode zen|go, model-aware routing across Chat Completions,
Responses, and Anthropic Messages, and X-OpenCode-Session derived from
prompt_cache_key / metadata.user_id so prompt cache can hit.
Unmatched models fall back to /v1/chat/completions. Related to #6742 .
2026-09-11 10:05:24 +08:00
Wesley Liddick
2493b0dc31
Merge pull request #6924 from smyyyyy2025/fix/codex-user-agent-validation
...
fix: validate Codex User-Agent before identity parsing
2026-09-11 09:33:19 +08:00
Wesley Liddick
e71d291b39
Merge pull request #6917 from ouchihao/codex/issue-2149-monitor-base-path
...
fix(monitor): support upstream base URL paths
2026-09-11 09:29:25 +08:00
Zero Clover
6feefb7aec
fix(openai): keep Codex manifest display names in account model lists
2026-09-11 03:18:00 +08:00
feeeei
9d475f9edb
feat(settings): 新增「站点类型」三态开关,关闭订阅后用户端收起所有「订阅」入口与文案
...
后台功能开关页新增「站点类型」单选:充值 & 订阅(默认,即现状)/ 仅充值 / 仅订阅。
它由两个后端开关派生并在保存时同时写回:
- subscription_enabled(新增;默认 true,缺省/空值视为开启,仅显式 false 关闭),按既有
开关模式贯通常量、公共设置、SSR 注入载荷、默认值、更新写入、DTO、审计 diff 与前端注册表;
- payment_balance_disabled(支付配置里既有的 BALANCE_PAYMENT_DISABLED,此前只能走接口/数据库
改),补进公共设置与注入载荷,让用户端在任何鉴权请求之前就能推导站点类型。
两者都关闭是接口层可表达但 UI 不提供的组合,前端归为「仅充值」,后台保存时会把余额充值重新打开。
「仅充值」时的表现:
- 用户侧边栏隐藏「我的订阅」,「充值/订阅」入口收窄为「充值」;管理端侧边栏隐藏「订阅管理」
入口(页面仍可通过地址访问);
- 购买页不再渲染「订阅」tab,只剩单个 tab 时顶部切换器随之隐藏;tab 列表变化时当前 tab
自动收敛到可用项(关闭订阅回到充值、仅订阅站点重新打开订阅进入订阅),列表为空时展示
「充值与订阅均暂未开放」而不是一个必定被后端拒绝的充值表单;
- /purchase 的页头标题/描述与 document.title 改走 resolveRouteMetaKeys 按站点类型切换;
- /subscriptions 路由新增 requiresSubscription 守卫,直达时重定向到仪表盘;
- 顶栏订阅进度徽章不再挂载,App.vue、PaymentView 与徽章组件都不再预加载/轮询订阅接口;
- 用量页隐藏「计费类型(余额/订阅)」筛选,Key 用量公开页「订阅类型」行改为「计费方式」。
「仅订阅」时侧边栏入口与页头显示为「订阅」,购买页只剩订阅 tab(余额下单由后端既有逻辑拒绝)。
购买订阅接口、已有订阅的计费、兑换码发放订阅与管理端订阅管理页面本身均不受影响。
featureFlags 抽出纯函数 resolveFeatureFlag,新增 utils/siteBillingMode 承载三态派生与反解,
PaymentView 测试改用响应式 store mock 覆盖开关双向切换。
2026-09-11 00:50:17 +08:00
alfadb
ab9bd9e877
fix(billing): 适配 DeepSeek V4.1-Flash 新价与 pro→Flash 切换
...
- flash 低谷价更新为 $0.15/$0.60/$0.003 per MTok(2026-09-10 官方降价)
- deepseek-v4-pro 自 2026-09-14 04:00 UTC 起按 Flash 价计费(上游路由变更)
- 计费时点显式驱动 pro→Flash 切换,定价展示与计费两条路径同源
- deepseek-flash 保留 reasoning_effort=max;补 Codex 模型清单与前端白名单
- 价表 JSON 新增 deepseek-flash 条目并同步 flash 系价格
2026-09-10 22:10:29 +08:00
chihao.ou
d3bd614ba7
test(groups): initialize a valid rate multiplier in peak validation case
2026-09-10 21:17:42 +08:00
chihao.ou
e9f5add97c
fix(ops): show first-token latency in TTFT request details
2026-09-10 21:13:17 +08:00
chihao.ou
ab3b398b5f
fix(groups): return bad request for invalid peak-rate settings
2026-09-10 21:05:47 +08:00
chihao.ou
5032d06697
fix(codex): advertise DeepSeek vision image input
2026-09-10 21:04:56 +08:00
xlplbo
bed1e3c362
fix(openai): 重试强制新建连接并放宽轮次预检超时
2026-09-10 20:35:53 +08:00
xlplbo
a5b07b2960
feat(openai): WS 连接池常驻读循环应答上游 ping
2026-09-10 20:35:53 +08:00
xlplbo
cd1ee1d1ad
fix(openai): WS 接入会话状态改用执行作用域键
2026-09-10 17:50:24 +08:00
xlplbo
9e7c2d713c
fix(openai): WS 会话抢占改用执行作用域键
2026-09-10 17:50:24 +08:00
xlplbo
06b61ba96f
feat(openai): 解析 codex 线程标识派生 WS 执行作用域
2026-09-10 17:50:23 +08:00
feeeei
4a4b50d807
fix(quota): 平台限额表只保存已配置限额的记录,仪表盘按用量与限额展示平台
...
user_platform_quotas 只保存至少配置了一档限额的记录;不存在的行等价于不限额。
- 注册播种只为配置了限额的平台建行,一个都没有时不写入
- IncrementUsageWithReset 无行时不再 fail-open 建行
- BatchSnapshotUsage 改为只更新既有活跃行,不再插入无限额的新行
- 仓储 BulkInsertInitial/UpsertForUser 把三档全空的记录视为未配置;
管理员全量替换接口同样剔除,清空限额即软删并放弃累计用量
- 迁移 238 删除三档全 NULL 的历史行
- 用户仪表盘平台卡片 = 有用量的平台 ∪ 配置了限额的平台,计数改为卡片数
- 管理员限额弹窗对未保存限额的平台禁用"重置窗口"
2026-09-10 16:41:58 +08:00
nekocode
a4edda36d5
fix(gateway): 不再剥离客户端 system 上的 cache_control
...
OAuth mimic 路径无条件删除 system[*].cache_control,不打日志也不报错。
把稳定前缀锚在 system 上的客户端因此拿到 cache_creation 与 cache_read
双 0 —— 不是没命中,是连写都没写。
这个动作是 46e5ac9 引进时「system 必然被整个重写」的配套:客户端的
system 内容都搬进 messages 了,残留断点指着空气,删它是对的。后来
system 注入变成可配置,于是长出了原设计里不存在的组合 —— system 没被
重写,断点照删。剥离失去了赖以成立的前提,代码却还在。
三处调用点里 count_tokens 那处还是硬编码 true,与另两处的
!systemRewritten 语义不一致。
直接移除该选项而不是再加一个开关:注入开启时 system 已被整个替换、
留在上面的断点是我们自己拼进去的稳定锚点;注入关闭时断点就是客户端的
缓存意图。两种情形都没有删它的理由,而需要开关的是有取舍的行为。
顺带补上 count_tokens 的 4 块上限兜底:五条出口里只有它没在自己的转发
路径上调过 enforceCacheControlLimit,原先那句 strip 是这条路上唯一压制
断点数量的东西。拿掉之后「客户端 system + 客户端 messages + 刚注入的
tools[-1]」实测顶到 5 块,而上游对超限是 400。
messages 层的同类改写见 #2369,那次只落地了 messages 一半。
此前该行为零测试覆盖(stripSystemCacheControl 在 _test.go 里零命中),
本次补 4 个用例,其中上限兜底那条撤掉修复即红。
Claude-Session: https://claude.ai/code/session_01WnTW52pmELGy3g7KPEUXj2
2026-09-10 15:48:17 +08:00
smyyyyy
4e5632c3e3
fix: validate Codex User-Agent before identity parsing
2026-09-10 03:18:31 +08:00
chihao.ou
21323c31f8
fix(monitor): support upstream base URL paths
2026-09-09 20:02:25 +08:00
hansnow
7ccc8a6f50
fix(openai): 支持 Image 2.5 并修复 OAuth 生图主控模型
2026-09-09 11:04:59 +08:00