ius
e97fd7e81c
test: align oauth passthrough stream expectations
2026-03-12 17:22:01 +08:00
kunish
cdb64b0d33
fix: remove SSE termination marker from DefaultStopSequences
...
The SSE stream termination marker string was incorrectly included in
DefaultStopSequences, causing Gemini to prematurely stop generating
output whenever the model produced text containing that marker.
The SSE-level protocol filtering in stream_transformer.go already
handles this marker correctly; it should not be a stop sequence for
the model's text generation.
2026-03-12 17:10:01 +08:00
ius
8d4d3b03bb
fix: remove unused gateway usage helpers
2026-03-12 17:08:57 +08:00
ius
addefe79e1
fix: align docker health checks with runtime image
2026-03-12 17:03:21 +08:00
ius
b764d3b8f6
Merge remote-tracking branch 'origin/main' into feat/billing-ledger-decouple-usage-log-20260312
2026-03-12 16:53:28 +08:00
ius
611fd884bd
feat: decouple billing correctness from usage log batching
2026-03-12 16:53:18 +08:00
Wesley Liddick
826090e099
Merge pull request #946 from StarryKira/antigravity-gemini-thought-signature-fix
...
fix Antigravity gemini thought signature fix
v0.1.96
2026-03-12 13:51:46 +08:00
Wesley Liddick
7399de6ecc
Merge pull request #938 from xvhuan/fix/account-extra-scheduler-pressure-20260311
...
精准收紧 accounts.extra 观测字段触发的调度重建
2026-03-12 13:51:00 +08:00
haruka
25cb5e7505
fix 第一次 400,第二次触发切账号信号
2026-03-12 11:30:53 +08:00
ius
5c13ec3121
Fix lint after rebasing PR #938 branch
2026-03-12 11:20:59 +08:00
ius
d8aff3a7e3
Merge origin/main into fix/account-extra-scheduler-pressure-20260311
2026-03-12 11:12:01 +08:00
haruka
f44927b9f8
add test for fix #935
2026-03-12 11:04:14 +08:00
Wesley Liddick
c0110cb5af
Merge pull request #941 from CoolCoolTomato/main
...
fix: 修复gpt-5.2以上模型映射到gpt-5.2以下时verbosity参数引发的报错
2026-03-12 09:35:09 +08:00
Wesley Liddick
1f8e1142a0
Merge pull request #932 from 0xObjc/codex/usage-view-charts
...
feat(admin): add metric toggle to usage charts
2026-03-12 09:32:40 +08:00
Wesley Liddick
1e51de88d6
Merge pull request #937 from lxohi/fix/anthropic-stream-keepalive
...
fix: 为 Anthropic Messages API 流式转发添加下游 keepalive ping
2026-03-12 09:30:18 +08:00
Wesley Liddick
30995b5397
Merge pull request #936 from xvhuan/fix/ops-write-pressure-20260311
...
降低 ops_error_logs 与 scheduler_outbox 的数据库写放大
2026-03-12 09:28:34 +08:00
Wesley Liddick
eb60f67054
Merge pull request #933 from xvhuan/fix/dashboard-read-pressure-20260311
...
降低 admin/dashboard 读路径压力,避免 snapshot-v2 并发击穿
2026-03-12 09:28:14 +08:00
Wesley Liddick
78193ceec1
Merge pull request #931 from xvhuan/fix/db-write-amplification-20260311
...
降低 quota 与 Codex 快照热路径的数据库写放大
2026-03-12 09:27:34 +08:00
Wesley Liddick
f0e08e7687
Merge pull request #930 from GuangYiDing/feat/gemini-25-flash-image-support
...
feat: 修复 Gemini 生图接口并新增前端生图测试能力
2026-03-12 09:27:19 +08:00
Wesley Liddick
10b8259259
Merge pull request #909 from StarryKira/feature/admin-reset-subscription-quota
...
Feature/管理员可以重置账号额度
2026-03-12 09:26:47 +08:00
CoolCoolTomato
eb0b77bf4d
fix: 修复流水线golangci-lint 的 errcheck
2026-03-11 22:56:20 +08:00
shaw
9d81467937
refactor: 重构 Chat Completions 端点,采用类型安全的 Responses API 转换
...
将 /v1/chat/completions 端点从 ResponseWriter 劫持模式重构为独立的
类型安全转换路径,与 Anthropic Messages 端点架构对齐:
- 在 apicompat 包新增 Chat Completions 完整类型定义和双向转换器
- 新增 ForwardAsChatCompletions service 方法,走 Responses API 上游
- Handler 改为独立的账号选择/failover 循环,不再劫持 Responses handler
- 提取 handleCompatErrorResponse 为 Chat Completions 和 Messages 共用
- 删除旧的 forwardChatCompletions 直传路径及相关死代码
2026-03-11 22:15:32 +08:00
CoolCoolTomato
fd8ccaf01a
fix: 修复gpt-5.2以上模型映射到gpt-5.2以下时verbosity参数引发的报错
2026-03-11 21:12:07 +08:00
ius
c9debc50b1
Batch usage log writes in repository
2026-03-11 20:29:48 +08:00
ius
2b30e3b6d7
Reduce scheduler rebuilds on neutral extra updates
2026-03-11 19:16:19 +08:00
amberwarden
6e90ec6111
fix: 为 Anthropic Messages API 流式转发添加下游 keepalive ping
...
Anthropic Messages API 的流式转发路径(gateway_service.go)在上游长时间
无数据时(如 Opus extended thinking 阶段)不会向下游发送任何内容,导致
Cloudflare Tunnel 等代理因连接空闲而断开。
复用已有的 StreamKeepaliveInterval 配置(默认 10 秒),在 select 循环中
添加 keepalive 分支,定时发送 Anthropic 原生格式的 ping 事件保活,与
OpenAI 兼容路径的实现模式保持一致。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-11 18:43:03 +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
ius
fbd73f248f
Fix ops write pressure integration fixture
2026-03-11 17:40:28 +08:00
Rose Ding
3fcefe6c32
feat: prioritize new gemini image models in frontend
2026-03-11 17:34:44 +08:00
ius
f740d2c291
Reduce ops and scheduler write amplification
2026-03-11 17:32:00 +08:00
Rose Ding
bf6585a40f
feat: add gemini image test preview
2026-03-11 17:12:57 +08:00
ius
8c2dd7b3f0
Fix dashboard snapshot lint errors
2026-03-11 16:57:18 +08:00
ius
4167c437a8
Reduce admin dashboard read amplification
2026-03-11 16:46:58 +08:00
Peter
0ddaef3c9a
feat(admin): add metric toggle to usage charts
2026-03-11 16:05:27 +08:00
ius
2fc6aaf936
Fix Codex exhausted snapshot propagation
2026-03-11 15:47:39 +08:00
Rose Ding
1c0519f1c7
feat: add gemini 2.5 flash image support
2026-03-11 15:21:52 +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
ius
2694149489
Reduce DB write amplification on quota and account extra updates
2026-03-11 13:53:19 +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
Elysia
36cda57c81
fix copilot review issue
2026-03-10 23:59: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
haruka
b41a8ca93f
add test
2026-03-10 11:33:25 +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
haruka
de18bce9aa
feat: add admin reset subscription quota endpoint and UI
...
- Add AdminResetQuota service method to reset daily/weekly usage windows
- Add POST /api/v1/admin/subscriptions/:id/reset-quota handler and route
- Add resetQuota API function in frontend subscriptions client
- Add reset quota button, confirmation dialog, and handlers in SubscriptionsView
- Add i18n keys for reset quota feature in zh and en locales
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-10 11:21:11 +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