DaydreamCoding
ebbdc70311
feat(usage): 错误请求对齐用量明细(UI/排序/筛选/列设置)
...
错误请求列表(/admin/usage 错误 tab、Ops 弹窗、用户端 /usage 错误 tab)
对齐用量明细的交互与信息密度。Squash of:
- feat(usage): 错误请求全面对齐用量明细(UI/列序/排序/筛选/列设置/新列)
- refactor(usage): 错误表提取共享徽章工具与 IP 批量工具条,后端排序解析归并 SetSort
- feat(usage): /admin/usage 错误请求新增分类过滤
- fix(ops): 错误列表 phase=upstream 过滤生效,守卫豁免改为显式 opt-in
- fix(ops): 错误列表用户列回退显示已删除 KEY 所有者
- fix(usage): 错误请求状态码排序对齐展示/过滤,筛选项改固定常用码
2026-07-03 23:02:27 +08:00
Wesley Liddick
2649573b99
Merge pull request #3684 from Wei-Shaw/fix/usage-log-queue-silent-drop
...
fix: prevent silent usage_logs drops under queue overflow
2026-07-03 22:17:24 +08:00
shaw
a1b2b32e08
fix: prevent silent usage_logs drops under queue overflow ( #3656 )
...
高并发下扣费成功但 usage_logs 被双层异步队列静默丢弃(单用户实测丢失 49%),
导致消费排行与对账缺口。根因是 6a685727 为避免溢出时单行 INSERT 踩踏数据库,
把三处"队列满"改成了立即终态丢弃。
改为有界阻塞背压,兼顾数据不丢与批量写入模式不变:
- CreateBestEffort/createBatched 入队移除 default 立即丢弃分支,
队列满时阻塞等待(受 detached 15s ctx 期限约束)
- writeUsageLogBestEffort 收到 dropped 不再直接放弃,统一走
repo.Create 同步兜底(仍经批处理器;ctx 耗尽时换新 detached 窗口),
重复写入由 ON CONFLICT DO NOTHING 幂等防护
- worker 池默认溢出策略 sample→sync(viper 默认 + 池常量),
溢出时提交方内联执行(提交点在响应写出后,不阻塞客户端),
显式配置 sample/drop 的部署不受影响
- 附带修复 ensure*Batcher 的存量数据竞争:channel nil 检查移入 sync.Once
正常负载零行为变化;突发时短暂等待替代永久丢失;数据库只见批量 INSERT。
2026-07-03 21:02:32 +08:00
Wesley Liddick
28c2d20d9f
Merge pull request #3675 from wucm667/fix/antigravity-401-auto-recover
...
fix(antigravity): 401 认证失败可自动恢复,不再永久卡在 error 状态
2026-07-03 16:58:37 +08:00
wucm667
d0a1443a41
fix(antigravity): allow oauth 401 auto recovery
2026-07-03 15:21:53 +08:00
Wesley Liddick
87dfc66132
Merge pull request #3659 from jianjianai/fix/ops-realtime-stats-performance
...
fix: 优化运维实时账号统计接口性能
2026-07-03 10:45:24 +08:00
Wesley Liddick
5d7f213cbf
Merge pull request #3657 from jianjianai/fix/redeem-invitation-bad-request
...
修复邀请码误走普通兑换接口时返回 500
2026-07-03 10:44:22 +08:00
shaw
a5638a4e54
fix: match Codex session imports by chatgpt_user_id before shared account id
...
Members of the same ChatGPT team share chatgpt_account_id, so matching
imports by the account key first could overwrite another member's
account credentials. Identity keys are now ordered by strength
(user > email > access > account), and an account-key hit is rejected
when both sides carry different chatgpt_user_id values.
- Keep the account-key fallback when either side lacks a user id, so
legacy accounts without chatgpt_user_id are updated and backfilled
instead of duplicated
- Index all candidate accounts per shared key so a teammate's row can
no longer shadow a legacy account depending on row order
- Apply the same conflict check to in-batch dedup and emit a warning
when a legacy account is claimed via the shared account key
- Scope a 120s timeout to the Codex session import request instead of
raising the global client timeout
2026-07-03 10:13:51 +08:00
jianjian
3f2ef60468
fix: optimize ops realtime account stats
2026-07-02 20:04:47 +00:00
jianjian
372436323a
修复邀请码普通兑换错误
2026-07-02 16:38:42 +00:00
github-actions[bot]
0b8e5eec32
chore: sync VERSION to 0.1.143 [skip ci]
2026-07-02 11:48:20 +00:00
Wesley Liddick
9caa3c9c5e
Merge pull request #3635 from JRBaggins/hotfix/openai-oauth-count-tokens-latest
...
fix: handle OpenAI OAuth count_tokens scope errors
v0.1.143
2026-07-02 17:41:43 +08:00
Wesley Liddick
3020652fa1
Merge pull request #3565 from zy6p/zy6p/pr-openai-ws-http-bridge
...
feat(openai-ws): 支持 http_bridge ingress 模式
2026-07-02 17:40:32 +08:00
Wesley Liddick
537bd50469
Merge pull request #3638 from infinityf4p/show-reset-credit-expiration
...
feat(openai): show reset credit expiration
2026-07-02 17:39:17 +08:00
Wesley Liddick
6bc6998b0e
Merge pull request #3627 from alfadb/fix/ollama-anthropic-bearer-auth
...
fix(anthropic): 支持 API Key Bearer 认证方式
2026-07-02 17:37:30 +08:00
Wesley Liddick
4e23c77ece
Merge pull request #3626 from DanisJiang/fix/claude-code-stream-keepalive
...
fix: prevent Claude Code stream keepalive stalls
2026-07-02 17:35:48 +08:00
Wesley Liddick
821399ade1
Merge pull request #3622 from deqiying/feat/subscription-revoke-restore
...
支持恢复已撤销订阅
2026-07-02 17:34:20 +08:00
Wesley Liddick
441b8ec2e2
Merge pull request #3614 from heathermhuang/codex/grok-media-group-gate-fix
...
fix: enable Grok media generation groups
2026-07-02 17:34:09 +08:00
Wesley Liddick
fafdd8342f
Merge pull request #3641 from infinityf4p/fix/openai-plan-type-workspace
...
fix(openai): avoid inactive workspace plan type overrides
2026-07-02 17:33:59 +08:00
Wesley Liddick
50dff6762c
Merge pull request #3630 from seng1e/fix/codex-image-bridge-skip-compact
...
fix(openai): skip Codex image bridge injections for /responses/compact
2026-07-02 17:32:43 +08:00
Wesley Liddick
e63492090a
Merge pull request #3609 from phoenixikkifullstack/fix/antigravity-gemini-3.1-pro-high
...
fix: Handle invalid arguments correctly for Gemini reasoning models
2026-07-02 17:32:32 +08:00
Wesley Liddick
51b5142af7
Merge pull request #3612 from StarryKira/codex/fix-user-model-stats-requested-model
...
[codex] fix user model stats requested aggregation
2026-07-02 17:32:19 +08:00
Wesley Liddick
634b0eee48
Merge pull request #3430 from chaochaoweb3/codex/remove-claude-oauth-expires-in
...
fix: omit expires_in from Claude OAuth token exchange
2026-07-02 17:32:09 +08:00
Wesley Liddick
fd66ae1ecb
Merge pull request #3642 from infinityf4p/fix/openai-subscription-expiry-save
...
fix(openai): persist subscription expiration from OAuth
2026-07-02 17:31:58 +08:00
Wesley Liddick
a32196eedd
Merge pull request #3615 from DaydreamCoding/feat/usage-ip-geolocation
...
feat(usage): add IP geolocation lookup to usage tables
2026-07-02 16:42:06 +08:00
Wesley Liddick
3302146759
Merge pull request #3643 from bestony/feat/admin-group-column-settings
...
feat(admin): add group column settings
2026-07-02 16:40:59 +08:00
shaw
41af8e8e11
chore: update sponsors
2026-07-02 16:29:34 +08:00
shaw
11a3da65c0
fix(group): harden peak-rate config handling and label peak windows with server timezone
...
Follow-up fixes to #3569 based on code audit:
- Expose server_timezone / server_utc_offset in public settings (and the
__APP_CONFIG__ injection payload) and label every peak-window display
with the server UTC offset, so users don't misread the billing window
as browser-local time
- Unify CreateGroup/UpdateGroup peak-config sanitization via a single
NormalizePeakRateConfig chokepoint: non-subscription groups always get
peak fields cleared; unparseable window strings and negative
multipliers are scrubbed when peak is disabled
- Replace hot-path time.Parse in PeakMultiplierAt with a manual HH:MM
parser (accept set verified byte-for-byte identical to
time.Parse("15:04") by exhaustive fuzzing) and reuse it in validation
- Revert the zero-behavior CalculateCost indirection churn in
billing_service/gateway_service introduced by #3569
- Remove dead GetGroupPlatformMap and the duplicate deref helper in the
admin handler package
- Share frontend peak formatting via utils/peak-rate.ts, unify the ×N
label format, and move hardcoded Chinese tooltips to i18n keys
2026-07-02 16:11:07 +08:00
Heatherm Huang
99a8d8ad28
fix: normalize grok imagine image alias
2026-07-02 15:04:40 +08:00
Bestony@Homelab
5436d0bf10
feat(admin): add group column settings
2026-07-02 15:04:36 +08:00
Wesley Liddick
a632cb0050
Merge pull request #3569 from xueshiji/main
...
feat(group): 订阅分组新增可选的高峰时段倍率,以支持智谱等coding plan的高峰时段
2026-07-02 14:55:34 +08:00
infinityf4p
df59b8b966
fix: persist OpenAI subscription expiration
2026-07-02 14:38:08 +08:00
infinityf4p
d0b8760eb9
fix: preserve OpenAI plan type from inactive workspaces
2026-07-02 14:37:30 +08:00
zy6p
5fe4ee1da1
style(test): gofmt oauth passthrough tests
2026-07-02 14:33:55 +08:00
infinityf4p
dfb36e45f1
show reset credit expiration
2026-07-02 13:27:58 +08:00
JRBaggins
c4128580f2
fix: handle OpenAI OAuth count_tokens scope errors
2026-07-02 11:42:10 +08:00
seng1e
c797159bf5
fix(openai): skip Codex image bridge injections for /responses/compact
...
The Codex image_generation bridge block in Forward injects
tools:[image_generation] and tool_choice:"auto" (since #3498 ) into every
Codex request, including /responses/compact. The upstream compact endpoint
rejects tool_choice with 400 "Unknown parameter: 'tool_choice'", so every
remote compaction fails once the bridge is enabled. Guard the whole image
generation block with !isCompactRequest.
Fixes #3629
2026-07-02 11:09:50 +08:00
alfadb
7869b7fe38
fix(anthropic): 支持 API Key Bearer 认证方式
2026-07-02 10:43:08 +08:00
Yuhao Jiang
a5781fe31d
fix Claude Code stream keepalive stalls
2026-07-01 21:01:11 -05:00
deqiying
b26dcc3da2
feat(subscription): 支持恢复已撤销订阅
2026-07-01 22:19:21 +08:00
DaydreamCoding
0ff93aca7a
feat: add usage IP geolocation lookup
2026-07-01 21:49:49 +08:00
Heatherm Huang
9934bd2572
fix: default grok group media generation
2026-07-01 20:55:53 +08:00
Heatherm Huang
0435417f43
fix: enable grok media generation groups
2026-07-01 20:31:32 +08:00
github-actions[bot]
7dc7cfce1d
chore: sync VERSION to 0.1.142 [skip ci]
2026-07-01 11:06:15 +00:00
shaw
98be187d56
chore: update sponsors
2026-07-01 19:04:40 +08:00
Haruka
e236bff1ed
fix: aggregate user model stats by requested model
2026-07-01 19:01:30 +08:00
phoenix
45be32b254
fix: remove space lines
2026-07-01 18:51:33 +08:00
shaw
60da9ba178
fix(frontend): refine grok icon, palette and i18n
v0.1.142
2026-07-01 18:49:33 +08:00
xueshiji
be26e6ff2c
fix: test
2026-07-01 18:09:20 +08:00
phoenix
f5b2961270
fix: Handle invalid arguments correctly for Gemini reasoning models
2026-07-01 18:08:25 +08:00