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
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
wucm667
0b26acac07
fix(payment): make Stripe refunds idempotent
2026-08-02 20:27:44 +08:00
wucm667
ddf4c6fd81
fix(openai): fail over Messages temporary account errors
2026-08-01 18:45:33 +08:00
wucm667
dfdbc27709
fix(openai): default missing passthrough instructions
2026-07-31 18:55:15 +08:00
wucm667
beeb2f989b
test(settings): include compact home in API contracts
2026-07-31 18:34:13 +08:00
wucm667
77d4df9544
test(grok): check filter body close error
2026-07-31 18:34:11 +08:00
wucm667
d6467f6eb0
fix(images): decode data URLs during task offload
2026-07-31 15:04:56 +08:00
wucm667
baaae8e121
fix(grok): filter billing ping response events
2026-07-31 12:31:45 +08:00
wucm667
739c0ff9c5
feat(home): add compact home page preset to avoid abuse classification
...
- Add compact_home_enabled setting to provide a minimal landing page
- Preserves custom home_content priority over compact mode
- Renders only site identity, navigation, and login/dashboard link
- Avoids marketing copy that triggers anti-fraud systems
- Includes focused backend/frontend tests and i18n support
Fixes #5065
2026-07-30 16:28:19 +08:00
wucm667
fb40211305
fix(frontend): correct subscription expiry labels
2026-07-30 12:47:05 +08:00
wucm667
7b6111f2f7
fix(subscription): align quota windows with subscription term
2026-07-30 02:37:14 +08:00
wucm667
352b21f4e2
fix(claude): relax marker to tolerate category element in classifier output
...
Real claude-cli/2.1.220 samples insert <category>...</category> between
</block> and <reason>, breaking the previous literal marker.
Also fix an unchecked type assertion in the test suite.
2026-07-29 23:25:02 +08:00
wucm667
7045f89de4
fix(openai): retry pool auth failures before failover
2026-07-29 18:47:07 +08:00
wucm667
ac90355a87
fix(account): skip unschedulable token refresh candidates
2026-07-29 18:35:56 +08:00
wucm667
54b1f8f6b3
fix(anthropic): recognize auto mode classifier
2026-07-29 16:55:42 +08:00
wucm667
3c62b5ca85
fix(openai): preserve web search for API-key Codex clients
2026-07-27 18:42:34 +08:00
wucm667
5c471485ab
fix(config): honor explicit CONFIG_FILE path
...
Make CONFIG_FILE select an explicit config for both full loading and lightweight address lookup, with regression tests.
2026-07-27 06:20:11 +08:00
wucm667
16dd3d8ee6
fix(frontend): adapt available channels for mobile
2026-07-26 16:26:25 +08:00
wucm667
56b5f0df68
fix(security-audit): reject unavailable prompt config
2026-07-26 14:33:59 +08:00
wucm667
0875143d98
fix: show optional affiliate code on registration
2026-07-26 02:47:35 +08:00
wucm667
d11b838702
fix: show routed user in usage filters
2026-07-26 02:25:54 +08:00
wucm667
30d146e8b5
fix(frontend): adapt affiliate copy controls for mobile
2026-07-25 04:27:19 +08:00
wucm667
41456b69dd
fix(frontend): upgrade postcss for security audit
2026-07-24 22:37:42 +08:00
wucm667
41f12e874d
fix(grok): drop orphaned Responses tool choice
2026-07-24 16:25:53 +08:00
wucm667
b5979050f3
fix(frontend): upgrade postcss for security audit
2026-07-24 08:33:58 +08:00
wucm667
8276fdf605
fix: resolve Gemini compat test lint
2026-07-24 03:00:26 +08:00
wucm667
4dc0aedbfe
fix(gemini): preserve image output in chat completions
2026-07-24 02:42:23 +08:00