wucm667
4a4fd35e0c
fix(simple-mode): guard non-empty group deletion
2026-09-06 08:11:23 +08:00
wucm667
f46038820b
fix(simple-mode): enforce group capability allowlist
2026-09-06 08:11:23 +08:00
wucm667
05ad6b49a1
fix(simple-mode): enforce basic group capabilities
2026-09-06 08:10:41 +08:00
wucm667
a3675552bd
feat(simple-mode): allow basic account grouping
2026-09-06 08:10:41 +08:00
wucm667
7969751f1f
feat(openai): allow none as reasoning mapping source
2026-09-05 12:32:30 +08:00
wucm667
4aaf5cb73b
fix(openai): enable Astra messages prompt caching
2026-09-05 10:58:05 +08:00
wucm667
28f673e4cd
fix(gemini): honor custom native models list
2026-09-04 22:29:36 +08:00
wucm667
9ddf69698d
fix(ops): preserve zero-valued system metrics
2026-09-04 18:51:24 +08:00
wucm667
51631d0324
fix(apicompat): preserve discovered tools in chat fallback
2026-09-04 18:33:23 +08:00
wucm667
c7538cd256
fix(codex): advertise search capability for bridged routes
2026-09-04 16:43:15 +08:00
wucm667
f5ae32e53f
fix(gateway): normalize GLM-5.3 thinking effort
2026-09-04 08:15:41 +08:00
wucm667
28dde982cb
fix(openai): normalize automation heartbeat bootstrap
2026-09-03 17:29:04 +08:00
wucm667
78fc7b171e
test: skip live token comparison on network errors
2026-09-03 15:16:18 +08:00
wucm667
62198286e9
[verified] fix(handler): distinguish gateway admission rejections
2026-09-03 12:48:02 +08:00
wucm667
5e4958c889
fix(openai): schedule accounts with mapped model
2026-09-03 10:51:12 +08:00
wucm667
b6740c937f
fix(openai): recover unavailable continuation responses
2026-09-03 10:26:12 +08:00
wucm667
10c8f523c4
fix(openai): preserve passthrough reasoning effort
2026-09-03 09:42:50 +08:00
wucm667
504919a054
fix(openai): preserve API key chat cache identity
2026-09-01 19:10:37 +08:00
wucm667
e21b849a92
fix(openai): avoid synthesized instructions for API keys
2026-08-31 20:58:49 +08:00
wucm667
1be69e56aa
fix(openai): accept delegation bootstrap without call id
2026-08-31 12:57:06 +08:00
wucm667
897faea333
fix(account): reset quota cooldown atomically
2026-08-31 09:12:09 +08:00
wucm667
d5a0124637
fix(openai): isolate passthrough websocket sessions
2026-08-30 16:49:01 +08:00
wucm667
9f1effd71c
fix(admin): preserve quota limits on partial group updates
2026-08-30 16:36:13 +08:00
wucm667
a3bbf33c05
fix(monitor): scope groups by user access
2026-08-30 09:28:40 +08:00
wucm667
7c616db07a
fix(openai-ws): bridge oversized passthrough requests
2026-08-30 08:41:08 +08:00
wucm667
c037766040
fix(keys): preserve Claude attribution headers
2026-08-28 20:42:58 +08:00
wucm667
da10822d7d
fix(gateway): preserve Anthropic tool arguments
2026-08-28 19:08:26 +08:00
wucm667
5345881b1d
Merge remote-tracking branch 'upstream/main' into fix/issue-5843-antigravity-mixed-tools
...
# Conflicts:
# backend/internal/repository/group_usage_rollup_trigger_integration_test.go
2026-08-28 17:36:43 +08:00
wucm667
c5ff640dff
test(repository): pin rollup trigger session timezone
2026-08-28 17:34:42 +08:00
wucm667
02eee39ddf
fix(payment): show selected currency in recharge rate
2026-08-28 16:54:33 +08:00
wucm667
6ff771d3d3
feat(openai): configure image tool cooldown
2026-08-26 19:07:39 +08:00
wucm667
50ba146298
fix(openai): preserve multimodal client tool outputs
2026-08-26 15:04:17 +08:00
wucm667
3802268e2d
fix(kimi): keep concurrency 403 recoverable
2026-08-25 19:40:39 +08:00
wucm667
1a9898a6a4
fix(antigravity): clamp compatible token limits
2026-08-25 13:13:08 +08:00
wucm667
71aa6e3574
fix(antigravity): preserve explicit Sonnet 4.5 routing
2026-08-24 16:07:27 +08:00
wucm667
99ec347eaf
fix(antigravity): migrate legacy Sonnet tests to 4.6
2026-08-24 15:58:47 +08:00
wucm667
bc4a9ae432
fix: prevent duplicate Anthropic cache TTL billing
2026-08-24 11:05:57 +08:00
wucm667
616df479e8
fix(admin): show account priority by default
2026-08-23 19:03:59 +08:00
wucm667
19da0f240e
fix(gemini): sanitize unsupported tool schema fields
2026-08-23 18:38:11 +08:00
wucm667
4eadee1074
[verified] test(openai): update responses bridge signature
2026-08-23 08:45:04 +08:00
wucm667
31d5b67baa
fix(openai): restore namespaced custom tool aliases
2026-08-23 08:11:20 +08:00
wucm667
7498d8fdc8
fix(openai): enforce serial tool calls for Responses Lite
2026-08-22 19:40:19 +08:00
wucm667
7a09a2eaf7
fix(responses): remove orphan deferred tool flags
2026-08-22 16:42:56 +08:00
wucm667
3445485ebc
fix(frontend): prevent token refresh lock loop
2026-08-21 19:14:04 +08:00
wucm667
68653fb2cc
fix: allow messages dispatch for composite groups
2026-08-21 18:01:16 +08:00
wucm667
66808413df
fix(openai): drop orphan replay tool calls
2026-08-20 20:10:57 +08:00
wucm667
25da02dddd
fix(openai): avoid duplicate HTTP bridge replay
2026-08-20 20:10:57 +08:00
wucm667
6b0ec50f24
fix(ops): exclude model configuration errors from SLA
...
404 model_not_found remains unchanged while ops attribution becomes routing/business-limited.
2026-08-20 10:52:29 +08:00
wucm667
b1737cc841
fix(antigravity): preserve mixed built-in chat tools
2026-08-20 00:29:33 +08:00
wucm667
1b30a2d747
feat(accounts): support header overrides for CN providers
2026-08-19 19:03:39 +08:00
wucm667
4d3b300a25
test(scheduler): update CN platform expectations
2026-08-19 14:05:52 +08:00
wucm667
b171bb0e4a
fix(composite): support CN providers
...
Extend composite routing, pricing, migrations, and admin options for Kimi, GLM, and DeepSeek.
2026-08-19 13:01:25 +08:00
wucm667
b410c39133
fix(security): add nanoid audit exception for GHSA-2v37-7h3g-55p8
2026-08-19 10:17:52 +08:00
wucm667
971544570d
test(antigravity): check tool config assertions
2026-08-17 17:11:33 +08:00
wucm667
cb5e03a720
fix(antigravity): preserve mixed Gemini tool config
2026-08-17 12:36:58 +08:00
wucm667
1977810cf2
fix(frontend): isolate account helper data loading
2026-08-17 11:04:50 +08:00
wucm667
79c2eb5020
fix: skip expiry reminders without SMTP config
2026-08-17 10:59:43 +08:00
wucm667
5f19433103
fix(ops): avoid single-insert fallback after batch failure
2026-08-17 10:52:57 +08:00
wucm667
44ef88f659
fix(openai): restore API-key custom tools
2026-08-15 11:02:59 +08:00
wucm667
e7a3c1202e
fix(antigravity): route paid accounts to daily endpoint
2026-08-14 02:40:18 +08:00
wucm667
674570ca17
fix: preserve group pricing in auth snapshots
2026-08-14 00:25:55 +08:00
wucm667
a288bab73a
fix(gateway): align passthrough model discovery
2026-08-13 12:40:06 +08:00
wucm667
76a13a5a8d
fix(gateway): handle Anthropic SSE overload errors
2026-08-13 02:43:03 +08:00
wucm667
da283854f6
chore: retry CI after registry timeout
2026-08-12 02:25:00 +08:00
wucm667
c91fbeb0c0
chore: remove unrelated test refactors
2026-08-11 16:57:39 +08:00
wucm667
c3fc4331c1
fix(lint): make compatibility test assertions fatal
2026-08-11 16:57:39 +08:00
wucm667
e087f1b736
fix(lint): use fatal pointer assertions in usage tests
2026-08-11 16:57:39 +08:00
wucm667
145b0ac35e
fix(lint): make remaining pointer assertions explicit
2026-08-11 16:57:39 +08:00
wucm667
5ea03c178d
fix(lint): resolve remaining nil dereference warnings
2026-08-11 16:57:39 +08:00
wucm667
1afb8264e5
fix(lint): use require.NotNil for staticcheck SA5011
...
Replace if-then-t.Fatal nil checks with testify require.NotNil so
staticcheck can prove the pointer is non-nil before field access.
Fixes SA5011 in payment_handler_test, parse_test, and
openai_images_incomplete_test.
2026-08-11 16:57:38 +08:00
wucm667
2321c0e771
chore: retry CI checks
2026-08-11 16:57:38 +08:00
wucm667
0b35370a7a
fix(claude): support top-level deferred tools
2026-08-11 16:57:38 +08:00
wucm667
9c36b75a7d
fix(claude): strip cache control from deferred tools
2026-08-11 16:57:38 +08:00
wucm667
662444774f
test(gemini): check cleaned schema assertions
2026-08-11 16:19:18 +08:00
wucm667
e24cb99b79
fix(openai-ws): retain no-delta TTFT fallback
2026-08-11 16:01:34 +08:00
wucm667
6564d376e5
fix(audit): scope cyber policy events
2026-08-11 13:05:56 +08:00
wucm667
c8d9af6ce1
fix(gemini): normalize exclusive minimum tool schemas
2026-08-11 12:34:51 +08:00
wucm667
2d9920ba7d
fix(security-audit): restore websocket audit logs
2026-08-11 11:56:46 +08:00
wucm667
3e1674a060
fix(settings): cache unset scheduling thresholds
2026-08-11 04:34:49 +08:00
wucm667
3d3aee2e72
fix(openai): skip stale and reset Codex snapshots in scheduling threshold evaluator
2026-08-10 14:27:04 +08:00
wucm667
99b31067f7
fix(openai): preserve Codex usage percentages in scheduling threshold
2026-08-10 04:29:08 +08:00
wucm667
f5c108c836
fix(api-key): validate quota and expiry inputs
2026-08-09 22:42:51 +08:00
wucm667
9763765ebf
fix(openai): fail over OAuth image stream errors
2026-08-08 01:05:29 +08:00
wucm667
e01c917a97
fix(risk-control): block prompts when risk control backend fails
...
- Change loadRuntimeSnapshot failure from fail-open to fail-closed
- Return block decision with 500 status when config cannot be loaded
- Add regression test for snapshot failure scenario
- Fixes #5388
2026-08-07 20:29:17 +08:00
wucm667
9b54b46b06
fix(admin): enable image generation permission for Composite groups
...
- Add 'composite' to imagePricingPlatforms set in groupsImagePricing.ts
- Allow Composite groups to toggle allow_image_generation in admin UI
- Backend already supports allow_image_generation field for all platforms
- Add test case to verify Composite platform is included
Fixes #5369
2026-08-07 16:22:37 +08:00
wucm667
ab326c96eb
fix(openai-ws): exclude terminal events from TTFT
2026-08-07 00:25:37 +08:00
wucm667
e93f6b9953
fix: avoid cooling OAuth accounts for HTML count token errors
2026-08-06 20:31:56 +08:00
wucm667
5b7a64334f
fix(grok): support task IDs for video owner binding
2026-08-06 04:30:10 +08:00
wucm667
df249ee5d5
fix(scheduler): diagnose legacy OpenAI exclusions
2026-08-06 02:54:16 +08:00
wucm667
82ccc187cd
fix(ops): preserve custom range in error lists
2026-08-06 02:26:42 +08:00
wucm667
ce14983133
fix(antigravity): support Gemini 3.6 Flash models
2026-08-05 22:35:01 +08:00
wucm667
8aa425d22f
fix(apicompat): accept chat reasoning alias
2026-08-05 18:25:58 +08:00
wucm667
2f109e74ca
fix: emit response.failed when compact keepalive commits headers but no SSE payload
...
When OpenAI Responses streaming has compact keepalive commit 200 headers
but no semantic SSE event has been written, upstream 4xx errors were
silently swallowed, causing clients to hang until timeout.
The fix distinguishes between 'headers committed' and 'meaningful SSE
output written'. Compact keepalive may commit headers for heartbeat
purposes without writing actual SSE events. In that case, the Responses
stream still needs its protocol-correct terminal response.failed event.
Preserves existing behavior when a complete upstream response or
meaningful SSE payload was already communicated, and preserves image
keepalive semantics.
Fixes #5289
2026-08-05 16:28:16 +08:00
wucm667
d3b5703b55
fix(model-plaza): show composite group models
2026-08-04 19:14:28 +08:00
wucm667
80af44cad7
[verified] fix(dashboard): show usernames in spending ranking
2026-08-04 00:43:05 +08:00
wucm667
c418fd522f
[verified] fix(security-audit): deduplicate websocket turn audits
2026-08-03 20:35:56 +08:00
wucm667
2be047d1cd
[verified] test(subscription): update unit repository stubs
2026-08-03 17:22:18 +08:00
wucm667
db725a775a
[verified] fix(subscription): serialize concurrent renewals
2026-08-03 16:59:05 +08:00
wucm667
3c20f9a666
[verified] fix(payment): require force for insufficient refund balance
2026-08-02 23:11:17 +08:00
wucm667
0b9f40e230
fix(billing): retain usage logs on billing failure
2026-08-02 20:50:13 +08:00