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
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
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
Long Li and Cursor
bcc73f8d40
fix(openai): pass DeepSeek thinking-mode reasoning_content on chat fallback
...
Codex histories often replay encrypted-only reasoning items. After a
Responses→Chat Completions fallback, a cache miss left assistant
messages without reasoning_content and DeepSeek rejected the turn
with 400. Fill empty assistant fields with a single-space placeholder
for DeepSeek hosts, including openai-platform accounts whose base_url
points at api.deepseek.com. Existing plaintext and cache hits are
left unchanged.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-09-18 15:42:22 +09:00
feeeei
a9c7c6e8bf
ui(header): 手机竖屏顶栏保留模型广场图标入口
...
模型广场入口所有宽度都渲染,<640px 只保留图标,补 title/aria-label
2026-09-18 09:52:40 +08:00
HuntercodeT
0f4d8acaa8
fix(antigravity): Gemini 原生请求的裸模型名按 thinkingConfig 解析到 -low/-medium/-high 变体
...
Antigravity CLI / go-genai 发裸 Gemini 模型名(gemini-3.8-flash)并用
generationConfig.thinkingConfig 表达思考深度,而 Antigravity 上游目录只有
-low/-medium/-high/-tiered 变体。v0.2.5 起 resolveModelMapping 会给 antigravity
账号运行时补 gemini-3.x-flash 裸名自映射,裸名因此被当成显式透传直发上游,
上游回 404 "Requested entity was not found."。
在 ForwardGemini 取映射之前加 resolveGeminiThinkingVariant:
- 仅对 gemini- 前缀且不带后缀的裸名生效;
- 用户在 credentials.model_mapping 亲写的裸名条目一律不介入,运行时注入的
默认自映射不算用户意图;
- thinkingLevel 优先;否则 thinkingBudget <0→high,≤1024→low,≤8192→medium,
其余 high;未携带 thinkingConfig→high;所选变体不存在时按
high→medium→low→tiered 降级;一个变体都没有则回退原逻辑;
- thinkingConfig 仍原样透传,上游按 budget 决定实际思考量。
2026-09-18 09:03:40 +08:00
HuntercodeT
f79b8bf96c
fix(antigravity): Gemini 原生流对 go-genai / python-genai 客户端不发 SSE 注释心跳
...
Antigravity 账号的 Gemini 原生流式路径在上游空闲超过 gateway.stream_keepalive_interval
(默认 10s)时会向下游写 ":\n\n" 作为心跳。SSE 规范允许注释行,但 Google 官方 SDK 里
go-genai 与 python-genai 都不会忽略它:
- go-genai(Antigravity CLI 在用)api_client.go iterateResponseStream 对任何非 data: 前缀的
事件直接返回 "iterateResponseStream: invalid stream chunk: :",整个流中断;
- python-genai _api_client.py 把非 data: 行当作错误 JSON 拼接后 json.loads,同样抛错。
Google 官方 API 从不下发注释行,这两个 SDK 从未处理过这种输入。js-genai 用规范的
event-stream 解析器,不受影响。
现在按下游 User-Agent / X-Goog-Api-Client 识别这两类 SDK(形如
google-genai-sdk/1.71.0 gl-go/go1.28 …、google-genai-sdk/x gl-python/3.12),命中时该路径
不再发注释心跳;其他客户端(curl、js-genai、Gemini CLI)行为不变。
生产复现:Antigravity CLI 1.2.5 经网关(sub2api 0.2.5)跑长思考请求,上游首个 chunk 超过 10s
时客户端报 "agent executor error: … iterateResponseStream: invalid stream chunk: :"。
2026-09-17 19:41:55 +08:00
Wesley Liddick
efe9aab1e4
Merge pull request #7246 from laoxiechuzheng/fix/deepseek-native-responses-tool-output-media
...
fix(deepseek): lift Responses tool output images
2026-09-17 17:02:43 +08:00
Cai
d099c06945
fix: resolve Seedance lint and gRPC security checks
2026-09-17 17:51:03 +09:00
Wesley Liddick
aeab57b9b2
Merge pull request #7256 from zhudaguaneren/fix/antigravity-attribution-429
...
fix(antigravity): 过滤 Claude attribution 元数据,修复特定请求的 429
2026-09-17 16:44:09 +08:00
Wesley Liddick
18328aed05
Merge pull request #7212 from wucm667/feat/issue-7203-redemption-pagination
...
feat(redeem): paginate user redemption history
2026-09-17 16:43:06 +08:00
Wesley Liddick
48a86ec926
Merge pull request #7224 from HypoxanthineOvO/codex/upstream-chat-role-compat
...
fix(gateway): normalize developer roles for strict native Chat upstreams
2026-09-17 16:42:31 +08:00
Wesley Liddick
b4e560824a
Merge pull request #7177 from xO-ox-ai/codex/fix-openai-response-binding-context
...
fix(openai): 客户端断开后仍持久化 Responses 续聊绑定
2026-09-17 16:42:12 +08:00
Wesley Liddick
9efc167482
Merge pull request #7195 from bitnom/fix/refresh-paused-oauth-accounts
...
fix(account): keep refreshing OAuth tokens for paused accounts
2026-09-17 16:41:54 +08:00
Wesley Liddick
5050471822
Merge pull request #7239 from Liu8Can/fix/register-promo-code-flicker
...
fix: prevent promo code field flash on registration
2026-09-17 16:41:35 +08:00
Wesley Liddick
c84a3d50a3
Merge pull request #7215 from xz-dev/fix/manifest-double-parse
...
fix(openai): parse Codex models manifest envelope once
2026-09-17 16:41:12 +08:00
Wesley Liddick
cd1834e0a9
Merge pull request #7262 from ouchihao/codex/bug-refund-balance-warning
...
fix(payment): base refund balance warnings on the requested amount
2026-09-17 16:41:00 +08:00
Wesley Liddick
0932e8ce0a
Merge pull request #7266 from ouchihao/codex/bug-subscription-loading-reset
...
fix(subscriptions): reset loading when clearing state
2026-09-17 16:40:44 +08:00
Wesley Liddick
ffa43607e5
Merge pull request #7236 from ouchihao/codex/bug-payment-amount-input
...
fix(payment): restore accepted text after invalid amount input
2026-09-17 16:40:33 +08:00
Wesley Liddick
57e9f6a4b8
Merge pull request #7238 from ouchihao/codex/bug-model-tag-tab-navigation
...
fix(channels): allow tabbing out of an empty model input
2026-09-17 16:40:23 +08:00
Wesley Liddick
71c0eb5126
Merge pull request #7184 from ouchihao/codex/bug-totp-error-messages
...
fix(totp): display normalized API error messages
2026-09-17 16:40:07 +08:00
Wesley Liddick
10fd1ada28
Merge pull request #7182 from ouchihao/codex/bug-orders-filter-page
...
fix(payment): reset the order page when changing status
2026-09-17 16:39:53 +08:00
Wesley Liddick
53fd5f8351
Merge pull request #7183 from ouchihao/codex/bug-proxy-test-dedup
...
fix(proxies): reuse in-flight test guards during batch testing
2026-09-17 16:39:34 +08:00
Wesley Liddick
55bde0857f
Merge pull request #7185 from ouchihao/codex/bug-announcement-read-results
...
fix(announcements): preserve successful bulk read results
2026-09-17 16:39:16 +08:00
Wesley Liddick
5f75e0d2a7
Merge pull request #7186 from ouchihao/codex/bug-clipboard-fallback-error
...
fix(clipboard): report errors thrown by the copy fallback
2026-09-17 16:38:55 +08:00
Wesley Liddick
efd86c63e6
Merge pull request #7235 from ouchihao/codex/bug-totp-setup-input-sync
...
fix(auth): keep TOTP setup digits in sync with state
2026-09-17 16:38:37 +08:00
Wesley Liddick
ea68c0e82c
Merge pull request #7263 from ouchihao/codex/bug-dialog-title-ids
...
fix(ui): keep dialog title IDs unique across instances
2026-09-17 16:38:16 +08:00
Wesley Liddick
40e7ce7fbf
Merge pull request #7265 from ouchihao/codex/bug-payment-config-await
...
fix(payment): await in-flight configuration requests
2026-09-17 16:37:54 +08:00
Wesley Liddick
d52ab27def
Merge pull request #7173 from HuntercodeT/fix/gemini-native-mixed-model-listing
...
fix(gemini): discover Antigravity mappings in native model lists
2026-09-17 16:37:38 +08:00
Wesley Liddick
7e4164c1cf
Merge pull request #7207 from HuntercodeT/fix/group-usage-summary-seq-scan
...
fix: 分组用量汇总不再全表扫 usage_logs(48.7s → 34ms)
2026-09-17 16:37:21 +08:00
Wesley Liddick
44831bb854
Merge pull request #7261 from HuntercodeT/chore/bump-grpc-1.83.2
...
chore(deps): 升级 google.golang.org/grpc 到 v1.83.2,修复 govulncheck 报告的 GO-2026-6443 / GO-2026-6348
2026-09-17 16:36:57 +08:00
Wesley Liddick
131893e449
Merge pull request #7237 from ouchihao/codex/bug-platform-quota-negative
...
fix(admin): reject negative platform quota limits before saving
2026-09-17 16:36:34 +08:00
Wesley Liddick
4daabc3d84
Merge pull request #7234 from ouchihao/codex/bug-pagination-jump-number
...
fix(pagination): handle numeric jump input
2026-09-17 16:36:23 +08:00
laoxiechuzheng
acc05620cb
fix(deepseek): keep parallel Responses tool outputs contiguous
2026-09-17 15:45:56 +08:00
chihao.ou
406be7c518
fix(subscriptions): reset loading when clearing state
2026-09-17 14:59:43 +08:00
chihao.ou
b51f0759d4
fix(payment): await in-flight configuration requests
2026-09-17 14:58:46 +08:00
chihao.ou
be313735dc
fix(ui): keep dialog title IDs unique across instances
2026-09-17 14:56:58 +08:00
chihao.ou
017e9e98d1
fix(payment): base refund balance warnings on the requested amount
2026-09-17 14:56:33 +08:00
HuntercodeT
611c30f04f
chore(deps): 升级 google.golang.org/grpc 到 v1.83.2 修复 govulncheck 报告的两条公告
...
Security Scan / backend-security 自 2026-09-16 起在所有 PR 上失败,govulncheck 对
google.golang.org/grpc v1.82.1 报:
- GO-2026-6443 Server panic via missing authority or Host headers(修复于 v1.83.2)
- GO-2026-6348 Heap Memory Exhaustion via HTTP/2 DATA Frame Fragmentation(修复于 v1.83.1)
调用链在 pkg/pluginapi/v1/runtime.go 与 internal/service/plugin_runtime.go。
go get google.golang.org/grpc@v1.83 .2 && go mod tidy。最小版本选择连带抬升了
golang.org/x/{crypto,mod,net,sync,term,sys,text,tools}、genproto/googleapis/rpc 与
go.opentelemetry.io/otel* 的间接依赖,均为补丁级别。
2026-09-17 14:33:48 +08:00