Seefs
01da3a55f8
perf(relay): stop recompiling param override regexes on every request ( #8061 )
2026-10-28 00:16:57 +08:00
Seefs
f1569d1ea7
fix(pricing): classify dynamic per-request billing correctly ( #8010 )
...
* fix(pricing): classify dynamic per-request billing correctly
* fix(pricing): classify mixed billing as token-based
2026-10-25 20:41:57 +08:00
Seefs
33c61a2423
fix: prevent stale values when switching edit drawer records ( #7989 )
2026-10-23 14:31:23 +08:00
Seefs
7fb6e57a5f
fix(channels): preserve advanced custom body passthrough settings ( #7971 )
2026-10-23 00:23:08 +08:00
Seefs
7d8b91268d
fix: upgrade Go to 1.26.10 for CVE-2026-111943 ( #7942 )
2026-10-22 00:24:05 +08:00
Seefs
603a5ceb55
feat(dashboard): show cache usage alongside total tokens ( #7773 )
...
* feat(dashboard): show cache usage alongside total tokens
* fix(dashboard): align cache stat descriptions and fix typecheck
2026-10-20 15:42:31 +08:00
Seefs
c9179d38b7
fix(playground): support the reasoning field in chat responses ( #7831 )
2026-10-15 17:59:00 +08:00
Seefs
4013729f6a
fix: disable sensitive word filtering by default and clear the default word list ( #7814 )
2026-10-14 17:55:42 +08:00
Seefs
b4be2a7847
feat(ui): show newly added pricing groups at the top ( #7782 )
2026-10-13 12:35:05 +08:00
Seefs
2b85a8fc67
fix(auth): show legal consent warning on password login ( #7771 )
2026-10-12 18:25:54 +08:00
Seefs
2ed058795b
fix(ci): stabilize checks and configure Bun dependency updates ( #7765 )
2026-10-12 18:19:04 +08:00
Seefs
fc08b76f0f
fix(web): preserve recorded billing tiers in usage log previews ( #7763 )
2026-10-12 17:47:28 +08:00
Seefs
34b1942123
fix(pricing): allow root access when the model square is disabled ( #7761 )
2026-10-12 17:19:42 +08:00
Seefs
bbf60b49f6
fix(logs): vertically align billing source icons on mobile ( #7760 )
2026-10-12 16:54:24 +08:00
Seefs
04c597bf6c
feat: support regex conditions in advanced parameter overrides ( #7698 )
2026-10-08 16:07:03 +08:00
Seefs
56758edf95
fix(web): correct translations, chart ordering, and font loading ( #7628 )
2026-09-30 22:54:58 +08:00
Seefs
feefe09f27
fix: isolate TLS configs across HTTP transports ( #7627 )
2026-09-30 21:49:33 +08:00
Seefs
789c970199
fix(claude): preserve auto mode safeguards in native requests ( #7598 )
2026-09-28 20:48:08 +08:00
Seefs
972aed1972
fix(log): derive response model mismatch from names instead of a stored flag ( #7464 )
2026-09-19 13:51:18 +08:00
Seefs
ea336ed665
fix(log): hide funding source labels when subscriptions are not in play ( #7450 )
2026-09-19 00:39:38 +08:00
Seefs
3524fe0b15
fix issue template ( #7441 )
2026-09-18 13:34:53 +08:00
Seefs
ed7c4e35d4
feat(log): flag upstream response model mismatches ( #7418 )
...
* feat(log): flag upstream response model mismatches
* fix(log): refine response model mismatch warnings
* fix(log): skip model details when no mapping or response difference exists
* fix(log): omit redundant response model metadata
2026-09-18 11:35:03 +08:00
Seefs
9e905a83e1
refactor: show subscription deductions and improve cost display ( #7272 )
...
* fix: subscription log
* fix(usage-logs): hide wallet labels when subscriptions are unavailable
2026-09-18 11:31:51 +08:00
Seefs
57791e31c6
docs(github): tighten issue and PR templates for pass-through and unfiltered AI text ( #7438 )
2026-09-18 11:24:03 +08:00
Seefs
69a5002981
feat(channel): per-route pass-through for advanced custom channels ( #7386 )
2026-09-15 14:00:05 +08:00
Seefs
610334dbd7
fix(relay): request stream usage on every cross-protocol conversion to OpenAI chat ( #7389 )
2026-09-15 13:45:47 +08:00
Seefs
81336fc69b
fix(gemini): reject :countTokens as an unknown route instead of relaying it as generateContent ( #7388 )
2026-09-15 12:47:42 +08:00
Seefs
fa90b2312c
fix(gemini): accept case-insensitive thinkingLevel and log canonical effort ( #7387 )
2026-09-15 12:36:40 +08:00
Seefs
5caafd3d84
feat(ollama): add per-channel OpenAI-compatible chat switch ( #7382 )
2026-09-15 01:16:08 +08:00
Seefs
8529f209c8
feat: vllm channel && sglang channel ( #7332 )
...
* feat: vllm channel
* fix: vllm status i18n
* feat: sglang channel
* fix: sglang icon
* fix: prevent long SGLang metric labels from overlapping values
* fix: coerce SGLang responses created_at to integer
* fix: ExceedsMaxTokensLimit
2026-09-15 00:06:42 +08:00
Seefs
d926120384
fix: unify model provider detection and add Wan icon ( #7373 )
2026-09-14 13:03:42 +08:00
Seefs
bdef117505
fix: restore add split button in advanced custom routes ( #7289 )
2026-09-09 19:20:56 +08:00
Seefs
b7017c251b
fix(model): do not treat no-op system task state writes as lock loss ( #7135 )
2026-09-01 20:54:17 +08:00
Seefs
69a41eeadc
fix(model): drop leftover prefill_groups unique constraints before AutoMigrate ( #7100 )
2026-08-30 22:51:50 +08:00
Seefs
98d50d5383
fix(web): recheck setup status after page reload ( #6968 )
2026-08-29 19:24:14 +08:00
Seefs
e468b73915
docs: update PR template and remove PR Check workflow ( #7053 )
...
* docs: update PR template and remove PR Check workflow
* docs: add hidden agent issue and PR templates
2026-08-27 22:36:44 +08:00
Seefs
ba2e9287bb
feat(ollama): passthrough Claude Messages and OpenAI Responses ( #7051 )
2026-08-27 21:51:07 +08:00
Seefs
cae3676ec6
feat: glm chanel /v1/responses ( #7050 )
2026-08-27 21:25:35 +08:00
Seefs
8f6961c675
feat: vllm thinking_token_budget ( #7027 )
2026-08-26 21:06:22 +08:00
Seefs
a073f74b38
refactor: deprecate int32 ( #7025 )
...
* refactor: deprecate int32
* fix(db): reject legacy user quota schemas at startup
* fix(quota): enforce wallet bounds and saturating billing conversions
* fix(rate-limit): keep count*duration from wrapping int64
* fix: error message
2026-08-26 20:57:54 +08:00
Seefs
2d8e50bf36
refactor(web): prevent credential autofill in usage log filters ( #6966 )
2026-08-21 23:47:48 +08:00
Seefs
4add708ebe
feat: channel test ( #6917 )
...
* feat: channel test
* fix: code smell
2026-08-18 18:03:59 +08:00
Seefs
2b0efd8484
refactor: advanced custom channel route editor ( #6865 )
...
* refactor: advanced custom channel route editor
* fix(channels): show raw balance response from balance cell
2026-08-18 17:31:21 +08:00
Seefs
3dda1d50c6
fix(relaykit): preserve parameterless tools in Claude conversion ( #6862 )
2026-08-18 17:30:59 +08:00
Seefs
116255f076
fix(oauth): align custom binding response fields in frontend ( #6818 )
...
* fix(oauth): align custom binding response fields in frontend
* fix(oauth): restore custom access policy guidance
2026-08-15 13:56:06 +08:00
Seefs
e90a7c48e5
feat: add field passthrough controls for gateway channels ( #6847 )
2026-08-15 13:54:25 +08:00
Seefs
7d09c6954e
fix: prompt_cache_key openai chat -> openai responses ( #6861 )
2026-08-15 13:09:50 +08:00
Seefs
4eaeefbdf5
fix: mobile sidebar ( #6760 )
...
* fix: mobile sidebar
* fix(web): prevent iOS sidebar taps from being swallowed
2026-08-11 13:50:39 +08:00
Seefs
bb234ff418
refactor(responses): remove compact model suffix handling ( #6770 )
2026-08-11 13:42:32 +08:00
Seefs
9c97e78ace
fix(web): require confirmation before rotating access token ( #6749 )
2026-08-10 13:12:59 +08:00
Seefs
4cf9107f04
feat(billing): highlight matched conditional multipliers in logs ( #6561 )
...
* feat(billing): highlight matched conditional multipliers in usage logs
* fix(billing): make request rule tracing stable and type-safe
2026-08-10 12:50:27 +08:00
Seefs
d49160f0e5
fix: backend length validation ( #5548 )
2026-08-10 12:50:08 +08:00
Seefs
8ad159a3bb
fix(ollama): preserve reasoning and tool-call context ( #6605 )
2026-08-10 12:49:26 +08:00
Seefs
85feb7a345
feat(relay): expose user and group context to parameter overrides ( #6534 )
2026-08-10 12:49:06 +08:00
Seefs
eab18a8357
fix: record reasoning effort consistently in usage logs ( #6641 )
2026-08-10 12:48:14 +08:00
Seefs
7dd1000a19
perf(web): debounce server and large-list searches ( #6727 )
2026-08-10 12:47:55 +08:00
Seefs
5d3423bec1
feat(channels): add auto-disable-only channel test mode ( #6728 )
2026-08-10 12:47:44 +08:00
Seefs
823e26304a
fix(channels): classify Qwen TTS models correctly ( #6711 )
2026-08-08 14:31:29 +08:00
Seefs
b941253aea
fix: test Claude/Gemini endpoints with native request format ( #6698 )
2026-08-07 13:35:46 +08:00
Seefs
c9bc038649
feat(channels): refine fetched model categorization ( #6632 )
...
* feat(channels): refine fetched model categorization
* fix: channel category
* fix: hy3 category
2026-08-07 13:34:56 +08:00
Seefs
9724ef1b24
feat: deepseek responses api ( #6562 )
2026-07-31 15:23:13 +08:00
Seefs
8461e5339d
fix(relay): preserve multipart image edits for New API channels ( #6559 )
2026-07-31 13:46:13 +08:00
Seefs
84834eee85
feat(logs): expose stream status to log owners ( #6558 )
2026-07-31 13:29:07 +08:00
Seefs
0f9f668c60
feat: support zstd request decompression ( #6545 )
2026-07-31 11:17:55 +08:00
Seefs
cbd9b30aa4
fix(github): restore issue form visibility ( #6454 )
2026-07-24 13:53:56 +08:00
Seefs
cb96ab0208
chore(github): migrate issue templates to required forms ( #6452 )
2026-07-24 13:46:54 +08:00
Seefs and CaIon
a6cf42c0f1
feat: support upstream model fetch for advanced custom channels ( #5971 )
...
* feat: support upstream model fetch for advanced custom channels
* fix: add advanced custom routes as separate groups
* fix: select advanced custom route entry before adding
---------
Co-authored-by: CaIon <i@caion.me >
2026-07-18 13:39:53 +08:00
Seefs
57746fc972
feat(channel): support Codex upstream model discovery ( #6184 )
...
* fix(i18n): clarify Go regex and field passthrough copy
* feat(channel): support Codex upstream model discovery
* Revert "fix(i18n): clarify Go regex and field passthrough copy"
This reverts commit d63d7975db .
2026-07-18 13:04:16 +08:00
Seefs
b6b97a66e3
fix: purge authentication data on hard user deletion ( #6168 )
...
* fix: purge authentication data on hard user deletion
* fix: fail closed when 2FA status lookup fails
* fix: reject stale Telegram login callbacks
* fix(twofa): prevent concurrent backup code and lockout bypasses
* fix(auth): harden user deletion and Telegram verification
2026-07-14 14:25:54 +08:00
Seefs
dad57a6bb8
fix: sync codex field ( #6018 )
2026-07-11 11:04:15 +08:00
Seefs
4e570389dd
fix: use GORM v2 row locking for subscription resets ( #6057 )
...
* fix: use GORM v2 row locking for subscription resets
* docs: codify GORM row locking rules
2026-07-10 10:21:00 +08:00
Seefs
a72e5082e9
feat(system-info): add stale instance cleanup actions ( #5953 )
2026-07-07 21:22:49 +08:00
Seefs
9b93d61b7f
feat(subscription): add admin quota reset actions ( #5952 )
...
* feat(subscription): add admin quota reset actions
* fix(subscription): keep quota reset in plan row actions
* refactor(subscription): move user subscription actions into menu
2026-07-07 12:47:41 +08:00
Seefs
45f0484dc1
Fix/build date dns error ( #5945 )
...
* Revert "fix(classic): fix classic web build failures"
This reverts commit 997926bbe1 .
* fix(classic): use available Slack icon export
2026-07-06 22:32:26 +08:00
Seefs and CaIon
153d7f01a2
fix: avoid stale stream writes after client disconnect ( #5710 )
...
* fix: avoid stale stream writes after client disconnect
* fix: wait for stream ping goroutines before returning
* fix: log stream results after goroutine cleanup
* fix: broadcast stream stop signals
* fix: abort upstream on client disconnect and restore write error contracts
Keep the goroutine-lifecycle fix (unconditional wg.Wait before returning the
gin.Context, close resp.Body inside cleanup), but drop the drain-on-disconnect
behavior: when the client goes away, cleanup now runs immediately so the
upstream body is closed, the provider stops generating, and users are not
billed for tokens produced after they disconnected.
Also restore FlushWriter/StringData/PingData returning an error when the
request context is done, so non-scanner relay loops (ollama, fake-stream,
audio, image) keep their disconnect awareness instead of silently consuming
the upstream to completion. ResponseChunkData now propagates write errors.
Add a bounded per-write deadline (http.NewResponseController) before each
locked stream write so a slow-but-connected client cannot block a write
forever and hang the unconditional wg.Wait.
---------
Co-authored-by: CaIon <i@caion.me >
2026-07-06 21:40:23 +08:00
Seefs
4ae341756e
fix(channels): show field passthrough controls for Codex ( #5902 )
2026-07-04 19:50:15 +08:00
Seefs
c12e5db4f9
fix(ci): install classic workspace dependencies for releases ( #5719 )
2026-06-24 21:06:58 +08:00
Seefs
64eafc9414
fix: date-fns-tz classic theme build error ( #5676 )
2026-06-24 15:54:51 +08:00
Seefs
0b7ae4ea79
fix: StepFun -> Stepfun ( #5636 )
2026-06-21 12:20:14 +08:00
Seefs
3fcd741c6e
refactor: codex usage ui ( #5595 )
...
* refactor: codex usage ui
* feat: show Codex reset credit details
* feat: add Codex usage reset flow
2026-06-19 16:07:32 +08:00
Seefs
3f2c0aeda7
feat: advanced custom channel ( #5590 )
2026-06-18 18:00:27 +08:00
Seefs
97eadbefa6
fix(oauth): clear bindings when hard deleting users ( #5582 )
2026-06-18 12:16:23 +08:00
Seefs
8d87d5fd8b
test: clean up reward-hacking backend tests ( #5563 )
2026-06-17 16:47:52 +08:00
Seefs
b798e3496f
fix: aws ak/sk context management ( #5547 )
2026-06-17 16:17:07 +08:00
Seefs
43c7e30a47
fix: restore custom home iframe viewport height ( #5545 )
2026-06-16 23:15:39 +08:00
Seefs
9bc1a53dea
fix: fix CC Switch model selector ( #5515 )
2026-06-15 16:35:18 +08:00
Seefs
51475c8062
fix: only fetch deployment settings on deployments page ( #5466 )
2026-06-13 00:10:26 +08:00
Seefs
1507229238
fix: add deleted user status filter ( #5464 )
2026-06-13 00:03:28 +08:00
Seefs
1292b8b2d5
chore: update Codex channel ( #5461 )
2026-06-12 23:45:15 +08:00
Seefs
d2f7f9ee3a
fix: limit anonymous request body ( #5244 )
...
* fix: limit anonymous request body (env ANONYMOUS_REQUEST_BODY_LIMIT_KB = 512)
* fix: allow disabling anonymous request body limit
2026-06-05 11:39:29 +08:00
Seefs
933ea0cddc
fix: add relay idle connection timeout config ( #5309 )
2026-06-05 11:30:08 +08:00
Seefs
d17b566bcc
docs: refine issue templates ( #5271 )
2026-06-03 12:04:40 +08:00
Seefs
30025aeba3
fix: use actual user id for channel tests ( #5109 )
2026-05-26 12:32:20 +08:00
Seefs
c91ba0c4eb
fix: consolidate Waffo payment settings save flow ( #5110 )
2026-05-26 12:32:05 +08:00
Seefs
1288028181
fix: truncate oversized upstream error logs ( #5083 )
2026-05-25 23:10:30 +08:00
Seefs
49bc3a1175
fix(payment): hide classic Waffo Pancake settings ( #5085 )
2026-05-24 16:37:43 +08:00
Seefs
f2c7647ecf
fix: enforce Waffo subscription compliance and product ID update ( #5038 )
...
* fix: enforce Waffo subscription compliance and product ID updates
* fix: hide Waffo Pancake settings in classic UI
2026-05-22 11:48:32 +08:00
Seefs
ae6a03364d
perf: optimize request metadata extraction and disabled field filtering ( #5009 )
...
* perf: optimize request metadata extraction and disabled field filtering
* perf: optimize stream usage estimation path
2026-05-22 10:32:11 +08:00
Seefs
20d3e73734
fix: filter perf metrics summary by active groups ( #4976 )
2026-05-20 11:38:09 +08:00
Seefs
2d1ca15384
fix: respect dashboard content visibility settings ( #4975 )
2026-05-19 18:46:21 +08:00