haruka
8f6bbb59c7
test: stabilize Gemini keepalive test
2026-09-20 15:04:15 +08:00
Wesley Liddick
fbb9006ade
Merge pull request #7402 from Wei-Shaw/fix/7268-openai-http2-keepalive
...
fix(upstream): 恢复 OpenAI HTTP/2 保活容错期限
2026-09-20 14:57:35 +08:00
shaw
e009ea3036
fix(upstream): 恢复 OpenAI HTTP/2 保活容错期限
2026-09-20 14:46:25 +08:00
a408665321
63c079d873
fix(account): preserve settings on OAuth reauth
2026-09-20 14:39:36 +08:00
haruka
e509937382
docs: add Codex referral UI validation screenshots
2026-09-20 14:38:30 +08:00
haruka
5090ffe05e
feat(openai): show Codex credits and manage referral invitations
2026-09-20 14:38:29 +08:00
Wesley Liddick
bbdcfbac0a
Merge pull request #7304 from wucm667/fix/issue-7298-response-model-alias
...
fix(gateway): restore public response model aliases
2026-09-20 14:07:16 +08:00
Wesley Liddick
7403a01177
Merge pull request #7314 from wucm667/fix/issue-7306-keyword-reminder-bypass
...
fix(moderation): prevent reminder tags from bypassing keyword checks
2026-09-20 14:07:04 +08:00
Wesley Liddick
53b4bbe736
Merge pull request #7349 from wucm667/fix/issue-7348-preserve-client-version
...
fix(settings): preserve client version on invalid user agent
2026-09-20 14:06:48 +08:00
Wesley Liddick
8bb48622a3
Merge pull request #7362 from wucm667/fix/issue-7358-preserve-account-errors
...
fix(accounts): preserve refresh errors during usage queries
2026-09-20 14:06:36 +08:00
Wesley Liddick
f28adb6ddb
Merge pull request #7387 from Brisbanehuang/codex/upstream-content-audit-typesafe
...
feat: 内容审计接入 TypeSafe AI,支持双引擎切换与独立配置
2026-09-20 13:47:14 +08:00
Wesley Liddick
19794bc46a
Merge pull request #7397 from Wei-Shaw/feat/hostservice-account-metadata
...
feat(pluginapi): HostService 账号目录返回结构化只读元数据
2026-09-20 11:39:15 +08:00
shaw
29eead917f
feat(pluginapi): HostService 账号目录返回结构化只读元数据
...
纯宿主侧改动,向后兼容。
- 契约(pkg/pluginapi/v1/plugin.proto,已重新生成):ListAccounts 增补
repeated AccountInfo accounts(保留 account_ids 向后兼容),新增 metadata_json
只读快照字段。HostServiceAPIVersion 1→2(InitHostServices 运行时协商,加法式,
旧调用方忽略新字段即可)。
- 权限边界:可见范围由清单能力经 pluginCapabilityAccountScopeGrants 推导,
ListAccounts 与 ResolveOutboundIdentity 均以该范围为权威边界。
- metadata_json 采用 denylist:剥离 Credentials 与含反向引用的关联对象
Groups/AccountGroups(避免 encoding/json 循环引用),其余字段自动透传,
数据模型新增非机密字段无需改宿主。
测试:范围/元数据/无凭据泄漏用例、denylist 反射护栏 + 循环引用安全断言、纵深过滤用例;
build/vet/gofmt、-tags unit 与 -race 全绿。
2026-09-20 11:26:19 +08:00
zhuzhihaocool-bit
fabdfb8a5b
fix(frontend): ensure Codex base URLs include /v1
2026-09-20 11:07:29 +08:00
Achord Chan
1411b7eb7e
fix(gateway): recognize Baseten reasoning budget errors
2026-09-20 11:02:06 +08:00
Brisbanehuang
1bfe0d3728
fix: sync draft audit key status and threshold defaults
2026-09-19 20:52:31 -04:00
Brisbanehuang
783a0a9830
feat(content-audit): add independent TypeSafe engine profiles
2026-09-19 20:52:31 -04:00
chihao.ou
cd2a4357c2
fix(groups): reject negative custom rates before adding
2026-09-19 19:43:39 +08:00
chihao.ou
f3a2dcabba
fix(users): ignore superseded balance history requests
2026-09-19 19:43:23 +08:00
chihao.ou
7bf3d0b585
fix(search): wait for committed IME input before searching
2026-09-19 19:43:08 +08:00
chihao.ou
cb2bb6084c
fix(users): wait for group configuration before enabling save
2026-09-19 19:42:12 +08:00
chihao.ou
00591cbe9a
fix(settings): allow retrying failed initial admin settings loads
2026-09-19 19:41:56 +08:00
chihao.ou
ba26e543f9
fix(accounts): retry default mappings after a failed fetch
2026-09-19 19:26:59 +08:00
feeeei
f6eeed3d5a
ui(users): 禁用/启用用户后原地更新该行
...
管理端用户列表点「禁用/启用」后会重新拉取整个列表:表格先换成骨架屏,
再重新请求用户列表与用量、属性、平台限额三份附属数据,滚动位置随之丢失,
连续处理多个用户时每点一次都像整页刷新。
- 请求成功后按 id 找到当前列表中的那一行,只回写 status 与 updated_at;
更新接口的响应不含 current_concurrency、subscriptions 等列表专属字段,
不能整行替换
- 更新返回时若有列表请求在途,该请求可能读到更新前的状态,此时重新拉取列表
- 按状态筛选时,被切换的行留在原地并显示新状态,可当场撤回误操作;
总数在下次刷新前不变
- 新增三条用例:原地更新且不重载列表、请求失败时该行不变、并发列表请求时回退为重载
2026-09-19 18:14:27 +08:00
chihao.ou
3b0bb60ea3
fix(groups): require integer RPM overrides before adding
2026-09-19 17:56:42 +08:00
chihao.ou
26c09b7de6
fix(users): persist cleared custom attribute hints
2026-09-19 17:56:21 +08:00
chihao.ou
4d5a4ab0e5
fix(monitor): ignore stale template picker responses
2026-09-19 17:56:04 +08:00
chihao.ou
50f79e11fc
fix(users): show errors when group replacement fails
2026-09-19 17:54:43 +08:00
chihao.ou
6b09c74e35
fix(users): keep numeric custom attribute values as strings
2026-09-19 17:54:19 +08:00
wucm667
b252821c59
fix(accounts): preserve refresh errors during usage queries
2026-09-19 17:22:39 +08:00
wucm667
68aa26477f
feat(simple): make startup default group creation optional
2026-09-19 16:47:17 +08:00
Long Li and Cursor
7e530c9d4e
fix(openai): alias DeepSeek Responses input_image with url
...
Codex sends images as input_image.image_url. DeepSeek's live /responses
decoder requires a url field and returns 422 missing field url, including
on openai-platform accounts whose base_url host is api.deepseek.com.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-19 14:55:02 +09:00
github-actions[bot]
1a9d49e16f
chore: sync VERSION to 0.2.7 [skip ci]
2026-09-19 04:29:03 +00:00
Wesley Liddick
aea725f2ea
Merge pull request #7247 from Qiaogun/codex/seedance-native-api
...
feat: 支持 Seedance / Ark 原生视频任务 API
v0.2.7
2026-09-19 12:11:17 +08:00
Wesley Liddick
74431ffad8
Merge pull request #7258 from HuntercodeT/fix/antigravity-gemini-bare-model-thinking-variant
...
fix(antigravity): Gemini 原生请求的裸模型名按 thinkingConfig 解析到 -low/-medium/-high 变体
2026-09-19 12:01:22 +08:00
Wesley Liddick
0c9e83b59c
Merge pull request #7278 from HuntercodeT/fix/antigravity-gemini-sse-comment-keepalive
...
fix(antigravity): Gemini 原生流对 go-genai / python-genai 客户端不发 SSE 注释心跳
2026-09-19 12:00:18 +08:00
Wesley Liddick
09f88865e0
Merge pull request #7294 from feeeei/feat/model-plaza-icon
...
ui(header): 手机竖屏顶栏保留模型广场图标入口
2026-09-19 11:59:46 +08:00
Wesley Liddick
1b45d21328
Merge pull request #7340 from ye4241/fix/kimi-cn-quota-403-rate-limit-pause
...
fix(ratelimit): CN coding-plan 账号配额耗尽的 403 按限流暂停调度,而非永久禁用
2026-09-19 11:59:21 +08:00
Wesley Liddick
d5cea617a5
Merge pull request #7345 from laoxiechuzheng/fix/anthropic-root-union-schema
...
fix(apicompat): 摊平 Responses→Anthropic 工具 schema 顶层联合,修复 Codex 内置工具导致的 400
2026-09-19 11:59:00 +08:00
Wesley Liddick
4275047d16
Merge pull request #7313 from baryon/contrib/deepseek-chat-reasoning-content
...
fix(openai): pass DeepSeek thinking-mode reasoning_content on chat fallback
2026-09-19 11:57:55 +08:00
Wesley Liddick
4dbcdce43c
Merge pull request #7351 from Wei-Shaw/feat/plugin-host-services-status-bridge
...
feat(plugin): generic host services + read-only status bridge channel
2026-09-19 11:57:41 +08:00
shaw
6477143533
test(plugin): check type assertions to satisfy errcheck lint
2026-09-19 11:47:14 +08:00
shaw
c63bd14a02
feat(plugin): generic host services + read-only status bridge channel
...
Extend the local plugin system's host<->plugin contract with generic,
capability-neutral facilities, so transport plugins can be built on top
without embedding plugin-specific logic in the host.
Host services (plugin dials a broker-provided HostService gRPC):
- per-plugin namespaced KV store (key/value size and TTL bounded)
- account directory: ListAccounts + ResolveOutboundIdentity, restricted to
the accounts a plugin's declared capability already covers
- InitHostServices lifecycle hook; plugins that don't implement it run
unchanged and are simply offered no host services
Read-only runtime status channel:
- HealthResponse gains an opaque, plugin-defined status_json produced
passively (no config apply, no upstream call, no side effects)
- GET /admin/plugins/:id/status (ungated) and the plugin.status UI-bridge
verb map to Health, so a status UI can poll live state without a step-up
prompt or a "test" side effect
- config.test no longer force-shows a host success toast; the plugin UI owns
result presentation, so plugins that read status do not spam toasts
Document the UI-bridge verb taxonomy (read vs mutate/test gating) and the
status contract under pkg/pluginapi.
2026-09-19 11:25:56 +08:00
wucm667
2d37088bd9
fix(settings): preserve client version on invalid user agent
2026-09-19 10:36:51 +08:00
laoxiechuzheng
a8a1a3a958
fix(apicompat): flatten root union tool schemas for Anthropic
...
Codex 会把 codex_app 等内置工具的 parameters 根节点声明成对象分支的 oneOf/anyOf,Anthropic 拒绝工具 input_schema 顶层的 oneOf/anyOf/allOf,导致 /v1/responses -> /v1/messages 直接 400。
Responses->Anthropic 转换时摊平顶层联合:属性取各分支并集,同名属性用嵌套联合保留两侧约束,required 在 oneOf/anyOf 下取分支交集、allOf 下取并集;嵌套联合保持不变。
2026-09-19 07:34:21 +08:00
Rain
4ccdead2a2
fix(proxies): skip inactive fallback targets
2026-09-19 00:51:01 +08:00
Rain
f7280213f7
fix(proxies): skip expiry writes from stale snapshots
2026-09-19 00:51:01 +08:00
ye4241 and Claude Opus 4.8
db8692d679
fix(ratelimit): pause CN coding-plan accounts on quota-exhausted 403
...
Kimi reports Coding Plan window exhaustion (5h/weekly) as a 403 with
error.type=access_terminated_error instead of 429. It fell into the
generic handleOpenAI403 escalation, so three 403s within 180 minutes
permanently disabled accounts that recover by themselves at the window
reset.
Detect the quota-exhausted 403 for CN coding-plan accounts and cool it
down exactly like the 429 path: SetRateLimited until the earliest future
window reset from the quota snapshot, falling back to a short
temp-unschedulable window when the snapshot is missing. Non-coding-plan
accounts keep the generic 403 escalation since the rolling-window
recovery mechanism does not apply to them.
Also extract cooldownCNProviderToQuotaSnapshotReset and
setCNProviderTempUnschedulable so the 429 (OpenCodeGo / Coding Plan)
and 403 branches stop carrying three copies of the same sequence.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-09-19 00:00:57 +08:00
superman2003
37238c0985
fix(openai): honor error.status when classifying in-stream failures
...
OpenAI 兼容上游(含二级中转)常把流内 error / response.failed 事件的状态码写在
error.status 上,而不是 OpenAI 使用的 error.status_code。SSE 路径只读
status_code,于是这些上游的 401/403/429/529 全部被降级成通用 502:认证失败不
再判定为凭据故障、429 不再标记限流与配额窗口、error 帧丢掉 401/429/529 的
failover 快路径,运维日志也记成 502。WS 路径的 openAIWSPayloadTransientStatus
早已同时读这两种拼写,SSE 路径一直没跟上。
把状态码路径集合抽成共享常量,让 SSE 路径与 WS 路径对齐。5xx 仍按通用上游故障
处理,不改动既有的账号状态语义。
2026-09-18 23:51:08 +08:00
chihao.ou
7b282c4f1d
fix(announcements): ignore superseded fetch results
2026-09-18 16:39:25 +08:00