CoolCoolTomato
eb0b77bf4d
fix: 修复流水线golangci-lint 的 errcheck
2026-03-11 22:56:20 +08:00
CoolCoolTomato
fd8ccaf01a
fix: 修复gpt-5.2以上模型映射到gpt-5.2以下时verbosity参数引发的报错
2026-03-11 21:12:07 +08:00
Wesley Liddick
8dd38f4775
Merge pull request #926 from 7976723/feat/chat-completions-compat-v2
...
feat: 添加 OpenAI Chat Completions 兼容端点(基于 #648,修复编译错误和运行时 panic)
2026-03-11 17:42:03 +08:00
Wesley Liddick
6bbe7800be
Merge pull request #908 from wucm667/fix/ops-alert-group-account-metrics
...
fix: 补充缺失的组级和账户级运维告警指标
2026-03-11 15:04:07 +08:00
7976723
a17ac50118
fix: 修复 Chat Completions 编译错误和运行时 panic
...
1. 修复 WriteFilteredHeaders API 不兼容(2处):
将 s.cfg.Security.ResponseHeaders 改为 s.responseHeaderFilter,
因为 main 分支已将函数签名改为接受 *responseheaders.CompiledHeaderFilter
2. 修复 writer 生命周期导致的 nil pointer panic:
ChatCompletions handler 替换了 c.Writer 但未恢复,导致
OpsErrorLogger 中间件的 defer 释放 opsCaptureWriter 后,
Logger 中间件调用 c.Writer.Status() 触发空指针解引用。
通过保存并恢复 originalWriter 修复。
3. 为 chatCompletionsResponseWriter 添加防御性 Status() 和
Written() 方法,包含 nil 安全检查
4. 恢复 gateway.go 中被误删的 net/http import
2026-03-11 13:49:13 +08:00
7976723
656a77d585
feat: 添加 OpenAI Chat Completions 兼容端点
...
基于 @yulate 在 PR #648 (commit 0bb6a392 ) 的工作,解决了与最新
main 分支的合并冲突。
原始功能(@yulate):
- 添加 /v1/chat/completions 和 /chat/completions 兼容端点
- 将 Chat Completions 请求转换为 Responses API 格式并转换回来
- 添加 API Key 直连转发支持
- 包含单元测试
Co-authored-by: yulate <yulate@users.noreply.github.com >
2026-03-11 13:47:37 +08:00
Wesley Liddick
7455476c60
Merge pull request #918 from rickylin047/fix/responses-string-input
...
fix(openai): convert string input to array for Codex OAuth responses endpoint (fix #919 )
2026-03-11 08:54:39 +08:00
rickylin047
9f1f203b84
fix(openai): convert string input to array for Codex OAuth responses endpoint
...
The ChatGPT backend-api codex/responses endpoint requires `input` to be
an array, but the OpenAI Responses API spec allows it to be a plain string.
When a client sends a string input, sub2api now converts it to the expected
message array format. Empty/whitespace-only strings become an empty array
to avoid triggering a 400 "Input must be a list" error.
2026-03-10 23:43:52 +08:00
wucm667
e3cf0c0e10
fix: 补充缺失的组级和账户级运维告警指标
...
新增以下运维告警指标类型:
- group_available_accounts: 组内可用账户数
- group_available_ratio: 组内可用账户比例
- group_rate_limit_ratio: 组内限速账户比例
- account_rate_limited_count: 限速账户数
- account_error_count: 错误账户数
- account_error_ratio: 错误账户比例
- overload_account_count: 过载账户数
包含比例和计数类指标的评估逻辑,并注册新的百分比类指标用于阈值校验。
2026-03-10 11:29:31 +08:00
Wesley Liddick
3cc407bc0e
Merge pull request #900 from ischanx/feat/admin-bind-subscription-group
...
feat: 允许管理员为持有有效订阅的用户绑定订阅类型分组
v0.1.95
2026-03-10 11:20:47 +08:00
shaw
00a0a12138
feat: Anthropic平台可配置 anthropic-beta 策略
2026-03-10 11:20:10 +08:00
ischanx
b08767a4f9
fix: avoid admin subscription binding regressions
2026-03-10 10:53:54 +08:00
Wesley Liddick
ac6bde7a98
Merge pull request #872 from StarryKira/fix/oauth-linuxdo-invitation-required
...
fix: Linux.do OAuth 注册支持邀请码两步流程 (fix #836 )
2026-03-10 09:10:35 +08:00
Wesley Liddick
d2d41d68dd
Merge pull request #894 from touwaeriol/pr/startup-concurrency-cleanup
...
feat: cleanup stale concurrency slots on startup
2026-03-10 09:08:33 +08:00
Wesley Liddick
944b7f7617
Merge pull request #904 from james-6-23/fix-pool-mode-retry
...
fix: OpenAI临时性400错误支持池模式同账号重试 & HelpTooltip层级修复
2026-03-10 09:08:12 +08:00
Wesley Liddick
53825eb073
Merge pull request #903 from touwaeriol/fix/openai-responses-sse-max-line-size-v2
...
fix: use shared max_line_size config for OpenAI Responses SSE scanner
2026-03-10 09:06:48 +08:00
Wesley Liddick
1a7f49513f
Merge pull request #896 from touwaeriol/pr/fix-quota-badge-vertical-layout
...
fix(frontend): stack quota badges vertically in capacity column
2026-03-10 09:04:53 +08:00
Wesley Liddick
885a2ce7ef
Merge pull request #893 from touwaeriol/pr/iframe-lang-passthrough
...
feat(frontend): pass locale to iframe embedded pages via lang parameter
2026-03-10 09:04:37 +08:00
Wesley Liddick
14ba80a0af
Merge pull request #897 from DaydreamCoding/feat/batch-reset-and-openai-jwt
...
feat: OpenAI 账号信息增强 & 批量操作支持
2026-03-10 09:03:59 +08:00
kyx236
5fa22fdf82
fix: OpenAI临时性400错误支持池模式同账号重试 & HelpTooltip层级修复
...
1. 识别OpenAI "An error occurred while processing your request" 临时性400错误
并触发failover,同时在池模式下标记RetryableOnSameAccount,允许同账号重试
2. ForwardAsAnthropic路径同步支持临时性400错误的识别和同账号重试
3. HelpTooltip组件使用Teleport渲染到body,修复在dialog内被裁切的问题
2026-03-10 03:00:58 +08:00
erio
bcaae2eb91
fix: use shared max_line_size config for OpenAI Responses SSE scanner
...
Two SSE scanners in openai_gateway_messages.go were hardcoded to 1MB
while all other scanners use defaultMaxLineSize (500MB) with config
override. This caused Responses API streams to fail on large payloads.
2026-03-10 02:50:04 +08:00
ischanx
767a41e263
feat: 允许管理员为持有有效订阅的用户绑定订阅类型分组
...
之前管理员无法通过 API 密钥管理将用户绑定到订阅类型分组(直接返回错误)。
现在改为检查用户是否持有该分组的有效订阅,有则允许绑定,无则拒绝。
- admin_service: 新增 userSubRepo 依赖,替换硬拒绝为订阅校验
- admin_service: 区分 ErrSubscriptionNotFound 和内部错误,避免 DB 故障被误报
- wire_gen/api_contract_test: 同步新增参数
- UserApiKeysModal: 管理员分组下拉不再过滤订阅类型分组
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 00:51:43 +08:00
QTom
252d6c5301
feat: 支持批量重置状态和批量刷新令牌
...
- 提取 refreshSingleAccount 私有方法复用单账号刷新逻辑
- 新增 BatchClearError handler (POST /admin/accounts/batch-clear-error)
- 新增 BatchRefresh handler (POST /admin/accounts/batch-refresh)
- 前端 AccountBulkActionsBar 添加批量重置状态/刷新令牌按钮
- AccountsView 添加 handler 支持 partial success 反馈
- i18n 中英文补充批量操作相关翻译
2026-03-09 21:54:27 +08:00
QTom
7a4e65ad4b
feat: 导入账号时 best-effort 从 id_token 提取用户信息
...
提取 DecodeIDToken(跳过过期校验)供导入场景使用,
ParseIDToken 复用它并保留原有过期检查行为。
导入 OpenAI/Sora OAuth 账号时自动补充缺失的 email、
plan_type、chatgpt_account_id 等字段,不覆盖已有值。
2026-03-09 21:53:46 +08:00
QTom
a582aa89a9
feat: 从 OpenAI JWT 提取 chatgpt_plan_type 并在前端展示
...
OAuth 授权和 token 刷新时从 id_token 的 OpenAI auth claim 中
提取 chatgpt_plan_type(plus/team/pro/free),存入 credentials,
账号管理页面 PlatformTypeBadge 显示订阅类型。
2026-03-09 21:53:46 +08:00
erio
acefa1da12
fix(frontend): stack quota badges vertically in capacity column
...
QuotaBadge components (daily/weekly/total) were wrapped in a
horizontal flex container, making them visually inconsistent with
other capacity badges (concurrency, window cost, sessions, RPM)
which stack vertically. Remove the wrapper so all badges align
consistently.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 20:18:12 +08:00
erio
a88698f3fc
feat: cleanup stale concurrency slots on startup
...
When the service restarts, concurrency slots from the old process
remain in Redis, causing phantom occupancy. On startup, scan all
concurrency sorted sets and remove members with non-current process
prefix, then clear orphaned wait queue counters.
Uses Go-side SCAN to discover keys (compatible with Redis client
prefix hooks in tests), then passes them to a Lua script for
atomic member-level cleanup.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 19:55:18 +08:00
erio
ebc6755b33
feat(frontend): pass locale to iframe embedded pages via lang parameter
...
Embedded pages (purchase subscription, custom pages) now receive the
current user locale through a `lang` URL parameter, allowing iframe
content to match the user's language preference.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 19:38:23 +08:00
shaw
c8eff34388
chore: update readme
2026-03-09 16:25:56 +08:00
shaw
f19b03825b
chore: update docs
2026-03-09 16:11:44 +08:00
shaw
25178cdbe1
fix: 修复gpt->claude同步请求返回sse的bug
v0.1.94
2026-03-09 15:58:44 +08:00
shaw
a461538d58
fix: 修复gpt->claude转换无法命中codex缓存问题
2026-03-09 15:08:37 +08:00
Elysia
b43ee62947
fix CI/CD Error
2026-03-09 13:13:39 +08:00
shaw
ebe6f418f3
fix: gpt->claude格式转换对齐effort映射和fast
2026-03-09 11:42:35 +08:00
Wesley Liddick
391e79f8ee
Merge pull request #875 from mt21625457/fix/openai-fast-billing-clean
...
fix(billing): 修复 OpenAI fast 档位计费并补齐展示
2026-03-09 10:32:18 +08:00
shaw
c7fcb7a84b
feat: apikey限额支持查询重置时间
2026-03-09 10:22:24 +08:00
yangjianbo
87f4ed591e
fix(billing): 修复 OpenAI fast 档位计费并补齐展示
...
- 打通 service_tier 在 OpenAI HTTP、WS、passthrough 与 usage 记录中的传递
- 修正 priority/flex 计费逻辑,并将 fast 归一化为 priority
- 在用户端和管理端补齐服务档位与计费明细展示
- 补齐前后端测试,并修复 WS 限流信号重复持久化导致的全量回归失败
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 09:51:26 +08:00
shaw
440d2e28ed
fix: 恢复context-1m-2025-08-07在oauth账号中传递
2026-03-09 09:29:33 +08:00
Wesley Liddick
6cb8980404
Merge pull request #807 from touwaeriol/fix/openai-passthrough-v2
...
fix(openai): remove misplaced passthrough check from isModelSupportedByAccount
2026-03-09 09:06:35 +08:00
Wesley Liddick
fe752bbd35
Merge pull request #853 from touwaeriol/pr/swipe-select-admin-tables
...
feat(frontend): 为后台账号管理和 IP 管理增加拖筐选中能力
2026-03-09 09:04:02 +08:00
Wesley Liddick
c74d451fa2
Merge pull request #874 from touwaeriol/pr/increase-sse-max-line-size
...
fix: increase SSE scanner max line size from 40MB to 500MB
2026-03-09 09:03:39 +08:00
Wesley Liddick
12d743fb35
Merge pull request #868 from touwaeriol/pr/bump-antigravity-version
...
chore: bump Antigravity user agent version to 1.20.4
2026-03-09 09:03:25 +08:00
Wesley Liddick
6acb9f7910
Merge pull request #864 from StarryKira/fix/clear-thinking-context-management
...
[Fix] Fix issue #851
2026-03-09 09:02:58 +08:00
erio
eb6f5c6927
test: update UserAgent version assertion to match 1.20.4
2026-03-09 08:59:21 +08:00
erio
7ccb4c8ea3
chore: bump Antigravity user agent version to 1.20.4
2026-03-09 08:59:21 +08:00
erio
4ce986d47d
fix: also update viper default max_line_size from 40MB to 500MB
...
The viper config default (config.go) was overriding the constant
in gateway_service.go. Both must be updated to take effect.
2026-03-09 08:56:54 +08:00
erio
91ef085d7d
fix: increase SSE scanner max line size from 40MB to 500MB
...
4K image base64 data can exceed 40MB limit, causing "bufio.Scanner:
token too long" errors. Scanner is adaptive (starts at 64KB, grows
as needed), so increasing the cap has no impact on normal responses.
2026-03-09 08:56:54 +08:00
Wesley Liddick
97aaa24733
Merge pull request #858 from james-6-23/fix/pool-mode-03bf3485
...
支持 API Key 上游池模式的同账号重试次数配置与自定义错误策略
2026-03-09 08:48:53 +08:00
Wesley Liddick
faf6441633
Merge pull request #854 from james-6-23/main
...
feat(admin): 支持定时测试自动恢复并统一账号恢复入口
2026-03-09 08:48:36 +08:00
shaw
00c151b463
feat: gpt->claude格式转换支持图片识别
2026-03-09 08:44:09 +08:00