Wesley Liddick
11fd61458c
Merge pull request #3738 from wucm667/fix/subscription-confirm-amount-and-affiliate-base
...
fix(payment): 订阅确认页显示换算后 CNY 金额 + 邀请返利按 USD price 计算
2026-07-06 14:53:59 +08:00
shaw
d56e94b875
feat(payment): 订阅 CNY 换算改为独立汇率配置的显式 opt-in
...
- 新增 SUBSCRIPTION_USD_TO_CNY_RATE 配置(1 USD = X CNY,默认 0=关闭),
替代复用 balance_recharge_multiplier 的隐式换算,促销倍率与订阅定价解耦
- 未配置汇率时订阅保持 price 直付的存量行为,存量部署升级零影响
- 前端确认页/原价/手续费/方式限额与后端换算条件严格镜像(rate>0 且币种为 CNY)
- 管理后台新增汇率配置输入(zh/en 文案),checkout-info 透出 subscription_usd_to_cny_rate
- 单测锁定:汇率未配置时不换算、换算使用汇率而非余额倍率、余额订单不受影响、返利仍按 USD price
2026-07-06 14:34:17 +08:00
Turtle_Li
d73fa8eab2
fix: keep image generation migration immutable
2026-07-06 14:25:10 +08:00
shaw
d089c5789c
Merge branch 'pr-3738' into fix/subscription-cny-optin-rate
2026-07-06 14:14:19 +08:00
Turtle_Li
202c6989a1
fix: preserve immutable initial migration
2026-07-06 14:11:49 +08:00
Wesley Liddick
9fac6f15ce
Merge pull request #3739 from Wei-Shaw/fix/openai-advanced-scheduler-audit-fixes
...
fix(scheduler): 修复 OpenAI 高级调度器审计发现的正确性与性能问题
2026-07-06 13:45:15 +08:00
Turtle_Li
9703ca9d33
merge: sync batch image foundation with upstream main
2026-07-06 13:40:09 +08:00
Turtle_Li
d8e96f0f97
fix: bound batch image settlement retries
2026-07-06 13:33:53 +08:00
Turtle_Li
a3c5cc4578
test: add batch image QA reports
2026-07-06 12:44:59 +08:00
Turtle_Li
5553d83605
fix: localize antigravity image mapping labels
2026-07-06 12:31:27 +08:00
Turtle_Li
8fab636998
feat: complete batch image workflow
2026-07-06 12:22:04 +08:00
CHOS1N
e2326a7998
Format response format types
2026-07-06 12:14:30 +08:00
shaw
0fd2e9216d
fix(scheduler): 修复 OpenAI 高级调度器审计发现的正确性与性能问题
...
针对 #3692 合并后审计发现的问题集中修复:
- previous_response_id 剥离条件改为按 call_id 全覆盖校验,
部分可重建的工具续链不再被误剥离(不受开关门控的行为回归)
- 粘性加权回退路径补分组归属校验并清理失效绑定,杜绝跨分组账号泄漏
- 账号列表页:无 OpenAI 账号时跳过分数计算、过滤池限定 openai 平台、
负载批查合并为账号并集一次查询,消除全表扫描与 Redis N+1
- 订阅优先模式下常规池不可用时回退订阅池等待计划,
busy-but-waitable 的订阅账号不再导致请求硬失败
- TopK/权重 DB 覆盖显式受总开关门控,与兄弟子开关语义一致
- 前端未分组 OpenAI 账号回退展示基础分,不再显示 "-"
- ListAllWithFilters 等能力正式进入 AccountRepository/AdminService 接口,
移除匿名接口断言与静默降级;负载批查失败补 warn 日志
- SelectAccountWithSchedulerForCapability 增加显式 previousResponseCanMove
参数,移除 "previous_response_can_move" 魔法字符串哨兵
- 设置写入路径补"基础权重不得全为零"聚合校验;
运行时设置批量读取失败的降级路径覆盖全部键并留痕
2026-07-06 11:43:16 +08:00
Wesley Liddick
759332aa92
Merge pull request #3692 from linshuboy/codex/openai-advanced-scheduler-controls-squashed
...
[codex] add OpenAI advanced scheduler controls
2026-07-06 10:59:23 +08:00
wucm667
b408edf97b
fix(payment): convert subscription CNY pay amount
2026-07-06 10:56:43 +08:00
Wesley Liddick
f0f1f59a44
Merge pull request #3716 from wucm667/fix/antigravity-refresh-server-invalidated-token
...
fix(antigravity): 401 服务端失效的 token 触发主动刷新,修复 NeedsRefresh 仅看 expires_at 的死循环
2026-07-06 10:18:49 +08:00
Wesley Liddick
ac68d73f0c
Merge pull request #3717 from wucm667/fix/anthropic-models-honor-group-config
...
fix(gateway): Anthropic /v1/models 返回分组 models_list_config 自定义模型列表
2026-07-06 10:18:36 +08:00
Wesley Liddick
2e70ec0a15
Merge pull request #3714 from MoRanHuiShou-pug/fix-payment-nul-bytes
...
fix: sanitize payment response NUL bytes
2026-07-06 10:18:18 +08:00
Wesley Liddick
de15f29d1f
Merge pull request #3718 from wucm667/fix/usage-csv-export-utf8-bom
...
fix(usage): CSV 导出补 UTF-8 BOM,修复 Excel 打开中文列乱码
2026-07-06 10:12:27 +08:00
Wesley Liddick
809e1cf8ee
Merge pull request #3704 from feitianbubu/feat/sidebar-logo-home-link
...
feat: 点击侧边栏 Logo/站点名返回首页
2026-07-06 10:12:15 +08:00
Wesley Liddick
c9dda3c01f
Merge pull request #3734 from Yinr/patch-1
...
fix(i18n): correct misleading "irreversible" description for revoke action
2026-07-06 10:12:04 +08:00
shaw
6752cdc826
fix(i18n): 用量页费用明细提示将面向用户的"成本"措辞统一为"费用"
...
用户 /usage 页费用列悬浮提示中的成本明细/输入成本/输出成本/
缓存创建成本/缓存读取成本/图片输出成本 改为对应的"费用"表述;
成本是运营方视角的词,面向用户应称费用。管理端真正的账号成本
词条(accountCost 等)保持不变。
2026-07-06 09:36:21 +08:00
Yeyin Hu
ee90246aa5
Modify revokeDesc for subscription termination
...
Updated revokeDesc to indicate restoration option.
2026-07-06 08:23:43 +08:00
Yeyin Hu
2d2b6f0325
Update revokeDesc to allow subscription recovery
2026-07-06 08:12:09 +08:00
白喵喵喵喵
83455a3fee
fix(frontend): harden account data batch import
2026-07-05 19:31:06 +08:00
白喵喵喵喵
728bb1bc9d
feat(frontend): 支持账号数据拖拽和批量导入
2026-07-05 18:58:57 +08:00
linshuboy
f26ca5661e
feat: add OpenAI advanced scheduler controls
...
Related: #1089 , #408 , #123
2026-07-05 17:24:38 +08:00
CHOS1N
5fcbe7e307
Add response_format compatibility mapping
2026-07-05 13:58:08 +08:00
wucm667
aee9a7ba98
fix(usage): add UTF-8 BOM to CSV export
2026-07-05 08:36:15 +08:00
wucm667
41cdd438d7
fix(gateway): honor Anthropic custom models list
2026-07-05 08:35:34 +08:00
wucm667
b23475ac0c
fix(antigravity): refresh server-invalidated tokens
2026-07-05 08:34:34 +08:00
MoRanHuiShou-pug
e76e0499d7
fix: sanitize payment response NUL bytes
2026-07-05 03:55:40 +08:00
sweetcornna
cbfeab964e
fix(antigravity): default gateway forward base URL to the production endpoint
...
resolveAntigravityForwardBaseURL() used ForwardBaseURLs() (which reorders the
daily/sandbox endpoint to the front) and returned the first entry by default —
daily-cloudcode-pa.sandbox.googleapis.com. Every Antigravity gateway request
was therefore sent to Google's sandbox endpoint, which rejects production OAuth
tokens: the account is benched with "OAuth 401: Invalid bearer token" (native
paths surface it as 502) and never recovers. The dashboard "test connection"
uses the production endpoint (antigravity.BaseURL), which is exactly why the
test succeeds while the gateway 401s.
Default to production (antigravity.BaseURLs[0] = cloudcode-pa.googleapis.com),
matching the OAuth/test path; the daily/sandbox endpoint is now opt-in via
GATEWAY_ANTIGRAVITY_FORWARD_BASE_URL=daily|sandbox.
Fixes #3611 , #2962 . Supersedes the token-refresh self-heal approach (that
premise — token staleness — was disproven: a 30s-old freshly-authorized token
also 401s on the gateway while working on the test path).
Verified on a live instance with a freshly-authorized Antigravity account:
/antigravity/v1/messages and /v1/messages now return real completions
(claude-sonnet-4-6, claude-opus-4-6); the same account/token 401/502'd before.
2026-07-04 17:09:16 +08:00
shaw
498f010ec3
fix(部署): 统一 Docker 部署 URL 安全默认值为开发友好模式
...
docker-compose.yml / docker-compose.local.yml 中
SECURITY_URL_ALLOWLIST_ALLOW_INSECURE_HTTP 与
SECURITY_URL_ALLOWLIST_ALLOW_PRIVATE_HOSTS 的兜底值由 false 改为 true,
与代码默认值(0c7a58fc)保持一致,避免未配置 .env 的 Docker 部署
在测试账号连接时因 http base URL 报 "invalid url scheme: http"。
同步更新 README(三语)、.env.example、config.example.yaml 中
过时的"默认拒绝 HTTP"描述,改为默认允许并指导生产环境显式收紧。
2026-07-04 13:51:37 +08:00
feitianbubu
20008264fe
feat: 点击侧边栏 Logo/站点名返回首页
2026-07-04 13:33:53 +08:00
github-actions[bot]
b650bdd68d
chore: sync VERSION to 0.1.144 [skip ci]
2026-07-04 03:49:44 +00:00
Wesley Liddick
41def4ba03
Merge pull request #3699 from wucm667/fix/responses-billing-use-mapped-model
...
fix(openai): /v1/responses 计费使用映射后模型,修复按原始模型价格误计费
v0.1.144
2026-07-04 10:40:53 +08:00
Wesley Liddick
707b87a96f
Merge pull request #3676 from wucm667/fix/codex-import-refresh-token-missing-collision
...
fix(admin): Codex Session 导入 refresh_token 缺失时不再合并同 workspace 不同账号
2026-07-04 10:29:47 +08:00
shaw
cbe0c4665f
chore: update readme
2026-07-04 10:18:41 +08:00
shaw
dec709fb3a
chore: update sponsors
2026-07-04 10:06:11 +08:00
wucm667
4dd3aee5c2
fix(openai): use mapped billing model for responses
2026-07-04 10:04:42 +08:00
wucm667
6bd248fd1f
fix(admin): avoid merging Codex access-only imports
2026-07-04 09:53:01 +08:00
shaw
be297b90ce
refactor(frontend): merge Codex image bridge and tool policy into one four-state control
...
Replace the two adjacent account-level controls (3-state injection bridge
+ 2-state explicit tool policy) in EditAccountModal with a single
four-state selector: follow channel / force inject / no injection /
block all. The four states map onto the existing extra keys
(codex_image_generation_bridge, codex_image_generation_explicit_tool_policy)
with no backend change; strip already disables the bridge upstream, so
the effective decision space is exactly these four states.
- load: strip takes precedence and reads as "block all"; legacy
bridge_enabled key still recognized and cleaned up on save
- save: block writes policy=strip and drops the bridge override;
inherit clears both keys
- semantic accent colors per state (sky/emerald/amber/rose) with dark
mode support; state badge follows the same palette
- replace account-scope i18n keys in zh/en (channel-scope keys untouched)
- rewrite specs to cover all four states (25/25 passing)
2026-07-04 09:49:37 +08:00
Wesley Liddick
dfdb838ce4
Merge pull request #3690 from AndersonBY/feature/codex-image-tool-policy
...
feat: add Codex image tool strip policy
2026-07-04 09:27:37 +08:00
Wesley Liddick
be3aee1a4b
Merge pull request #3694 from zhaoteng45/fix/antigravity-gemini31-pro-agent
...
fix: normalize Antigravity Gemini 3.1 Pro routing
2026-07-04 09:23:46 +08:00
Wesley Liddick
588e02b29e
Merge pull request #3673 from heathermhuang/codex/grok-admin-issues-3545-3649
...
fix: preserve configured Grok OAuth concurrency
2026-07-04 09:22:18 +08:00
Wesley Liddick
659086861d
Merge pull request #3670 from weiness/feat/configurable-migration-timeout
...
feat: make setup migration timeout configurable
2026-07-04 09:21:14 +08:00
Wesley Liddick
0c53d4f334
Merge pull request #3661 from jianjianai/fix/group-capacity-batch-hotpath
...
fix: 优化用户组容量汇总批量统计性能
2026-07-04 09:20:02 +08:00
Wesley Liddick
8e07ec55db
Merge pull request #3685 from jianjianai/fix/optimize-slot-cleanup
...
fix: 优化并发槽位定时清理性能
2026-07-04 09:19:34 +08:00
Wesley Liddick
129d05258a
Merge pull request #3696 from jianjianai/codex/token-expired-nonretryable
...
fix:添加 token_expired 刷新不可重试判断
2026-07-04 09:18:43 +08:00