100 Commits
Author SHA1 Message Date
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
SeefsandCaIon 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
SeefsandCaIon 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