shaw
f585a15eff
fix(billing): prevent channel_mapped override from reverting BillingModel when channel did not map
...
When a channel has no model mapping for the requested model, ChannelMappedModel
equals OriginalModel (the user's arbitrary input). Combined with the default
BillingModelSource="channel_mapped", this incorrectly overrides the BillingModel
set by the OpenAI format conversion layer (e.g., gpt-5.4 from DefaultMappedModel)
back to the unmapped original model (e.g., glm) which has no pricing — resulting
in zero-cost billing.
Add guard condition so the channel_mapped override only fires when the channel
actually changed the model (ChannelMappedModel != OriginalModel).
2026-04-05 17:31:18 +08:00
Wesley Liddick and GitHub
bf45581104
Merge pull request #1455 from touwaeriol/feat/channel-management
...
feat(channel): add channel management with multi-mode pricing and billing integration
2026-04-04 23:42:33 +08:00
Wesley Liddick and GitHub
b384570de3
Merge pull request #1439 from touwaeriol/feat/redeem-negative-value
...
feat(redeem): support negative values for refund/deduction
2026-04-03 22:22:54 +08:00
Wesley Liddick and GitHub
0507852a34
Merge pull request #1437 from DaydreamCoding/fix/openai-oauth-improvements
...
feat(openai): OpenAI OAuth 账号管理增强:订阅状态、隐私设置、Token 刷新修复
2026-04-03 09:22:10 +08:00
Wesley Liddick and GitHub
7b6ff135fb
Merge pull request #1424 from DaydreamCoding/fix/antigravity-batch-privacy
...
fix(antigravity): 修复批量刷新令牌不设置隐私模式的问题
2026-04-03 09:21:39 +08:00
Wesley Liddick and GitHub
055c48ab33
Merge pull request #1262 from InCerryGit/main
...
fix(openai): preserve bare gpt-5.3-codex-spark across forwarding paths
2026-04-01 08:31:12 +08:00
Wesley Liddick and GitHub
6663e1eda6
Merge pull request #1420 from YanzheL/fix/1202-gemini-customtools-404
...
Fix Gemini CLI 404s for gemini-3.1-pro-preview-customtools
2026-04-01 08:30:40 +08:00
Wesley Liddick and GitHub
83a16dec19
Merge pull request #1407 from DaydreamCoding/feat/cache-driven-rpm-buffer
...
feat(gateway): Cache-Driven RPM Buffer
2026-03-31 14:01:23 +08:00
Wesley Liddick and GitHub
820c531814
Merge pull request #1406 from DaydreamCoding/feat/group-account-filter
...
feat(group-filter): 分组账号过滤控制 — require_oauth_only + require_privacy_set
2026-03-31 14:01:05 +08:00
Wesley Liddick and GitHub
1727b8df3b
Merge pull request #1404 from DaydreamCoding/feat/antigravity-privacy-on-refresh-fail
...
feat(antigravity): 令牌刷新失败及创建账号时也设置隐私
2026-03-31 14:00:53 +08:00
shaw
a025a15f5d
feat: add refresh button to admin and user dashboard pages
2026-03-31 13:53:49 +08:00
shaw
318aa5e0d3
feat: add cache hit rate line to token usage trend chart
...
Add a purple dashed line showing cache hit rate percentage
(cache_read / (cache_read + cache_creation)) on a secondary
right Y-axis (0-100%). Applies to both user and admin dashboards.
2026-03-30 21:43:07 +08:00
shaw
1dfd974432
chore: update readme
2026-03-30 16:28:31 +08:00
shaw
cc396f59cf
chore: update readme
2026-03-30 16:24:29 +08:00
Wesley Liddick and GitHub
6a2cf09ee0
Merge pull request #1349 from touwaeriol/feat/antigravity-internal500-penalty
...
feat(antigravity): progressive penalty for consecutive INTERNAL 500 errors
2026-03-30 15:54:04 +08:00
Wesley Liddick and GitHub
c6fd88116b
Merge pull request #1354 from wucm667/fix/billing-use-requested-model
...
fix(billing): 计费始终使用用户请求的原始模型,而非映射后的上游模型
2026-03-30 15:52:31 +08:00
Wesley Liddick and GitHub
8f0dbdeaba
Merge pull request #1343 from yilinyo/fix/api-key-unique-conflict-after-soft-delete
...
fix(api-key):软删除apikey后key没有被释放后续无法再自定义相同的key
2026-03-30 15:47:28 +08:00
Wesley Liddick and GitHub
007c09b84e
Merge pull request #1338 from LvyuanW/fix/safari-ops-log-select
...
fix(admin): fix Safari system log select height
2026-03-30 15:45:35 +08:00
Wesley Liddick and GitHub
73f3c068ef
Merge pull request #1344 from 7836246/fix/i18n-sora-storage-missing-keys
...
fix(i18n): 修复 Sora 存储配置页面表格列头「存储桶」翻译缺失
2026-03-30 15:45:03 +08:00
Wesley Liddick and GitHub
9a92fa4a60
Merge pull request #1370 from YanzheL/fix/1320-openai-messages-gpt54-xhigh
...
fix(gateway): normalize gpt-5.4-xhigh for /v1/messages
2026-03-30 15:44:34 +08:00
Wesley Liddick and GitHub
576af710be
Merge pull request #1352 from StarryKira/feat/add-file-upload-oauth-scope
...
Feat/add file upload oauth scope
2026-03-30 15:41:18 +08:00
Wesley Liddick and GitHub
b5642bd068
Merge pull request #1377 from DaydreamCoding/fix/lifecycle-stop-duplicate-close
...
fix(lifecycle): TokenRefreshService Stop() 防重复 close
2026-03-30 15:38:39 +08:00
Wesley Liddick and GitHub
128f322252
Merge pull request #1376 from weak-fox/fix/privacy-without-refresh-token
...
修复缺少 refresh_token 时被临时停调度
2026-03-30 15:38:27 +08:00
Wesley Liddick and GitHub
17d7e57a2e
Merge pull request #1375 from weak-fox/fix/batch-reset-temp-unsched
...
修复重置状态时未清理临时停调度
2026-03-30 15:37:58 +08:00
shaw
50288e6b01
fix: 修复模型定价文件更新url
2026-03-30 15:36:53 +08:00
shaw
ab3e44e4bd
fix: 适配X-Claude-Code-Session-Id头
2026-03-30 11:43:07 +08:00
shaw
b65275235f
feat: Anthropic oauth/setup-token账号支持自定义转发URL
2026-03-30 09:10:57 +08:00
Wesley Liddick and GitHub
9398ea7af5
Merge pull request #1340 from DaydreamCoding/fix/privacy-and-system-prompt
...
fix(openai): OpenAI 隐私模式全场景覆盖 & 修复转发路径 system prompt 丢失
2026-03-27 15:03:57 +08:00
Wesley Liddick and GitHub
29dce1a59c
Merge pull request #1266 from eltociear/add-ja-doc
...
docs: add Japanese README
2026-03-27 14:51:37 +08:00
Wesley Liddick and GitHub
20544a4447
Merge pull request #1300 from xilu0/fix/forward-failed-log-missing-account-proxy-info
...
fix: add account and proxy details to forward_failed log
2026-03-27 14:47:51 +08:00
Wesley Liddick and GitHub
b688ebeefa
Merge pull request #1215 from weak-fox/fix/privacy-retry-failed-mode
...
fix: 允许 OpenAI privacy_mode修改失败后能在 token 刷新时重试
2026-03-27 14:46:38 +08:00
shaw
1854050df3
feat(tls-fingerprint): 新增 TLS 指纹 Profile 数据库管理及代码质量优化
...
新增功能:
- 新增 TLS 指纹 Profile CRUD 管理(Ent schema + 迁移 + Admin API + 前端管理界面)
- 支持账号绑定数据库中的自定义 TLS Profile,或随机选择(profile_id=-1)
- HTTPUpstream.DoWithTLS 接口从 bool 改为 *tlsfingerprint.Profile,支持按账号指定 Profile
- AccountUsageService 注入 TLSFingerprintProfileService,统一 usage 场景与网关的 Profile 解析逻辑
代码优化:
- 删除已被 TLSFingerprintProfileService 完全取代的 registry.go 死代码(418 行)
- 提取 3 个 dialer 的重复 TLS 握手逻辑为 performTLSHandshake() 共用函数
- 修复 GetTLSFingerprintProfileID 缺少 json.Number 处理的 bug
- gateway_service.Forward 中 ResolveTLSProfile 从重试循环内重复调用改为预解析局部变量
- 删除冗余的 buildClientHelloSpec() 单行 wrapper 和 int64(e.ID) 无效转换
- tls_fingerprint_profile_cache.go 日志从 log.Printf 改为 slog 结构化日志
- dialer_capture_test.go 添加 //go:build integration 标签,防止 CI 失败
- 去重 TestProfileExpectation 类型至共享 test_types_test.go
- 修复 9 个测试文件缺少 tlsfingerprint import 的编译错误
- 修复 error_policy_integration_test.go 中 handleError 回调签名被错误替换的问题
2026-03-27 14:33:05 +08:00
Wesley Liddick and GitHub
ef5c8e6839
Merge pull request #1231 from LvyuanW/bulk-openai-passthrough-worktree
...
Support bulk editing for OpenAI passthrough
2026-03-26 16:47:49 +08:00
shaw
d571f300e5
feat(rectifier): 请求整流器增加 API Key 账号签名整流支持
...
新增独立开关控制 API Key 账号的签名整流功能,支持配置自定义
匹配关键词以捕获不同格式的上游错误响应。
- 新增 apikey_signature_enabled 开关(默认关闭)
- 新增 apikey_signature_patterns 自定义关键词配置
- 内置签名检测规则对 API Key 账号同样生效
- 自定义关键词对完整响应体做不区分大小写匹配
- 重试二阶段检测仅做模式匹配,不重复校验开关
- Handler 层校验关键词数量(≤50)和长度(≤500)
- API 响应 nil patterns 统一序列化为空数组
- OAuth/SetupToken/Upstream/Bedrock 账号行为不变
2026-03-26 16:43:38 +08:00
Wesley Liddick and GitHub
ce96527dd9
Merge pull request #1302 from DaydreamCoding/fix/openai-error-handling
...
fix(ratelimit): OpenAI 401 token_invalidated/token_revoked 及 402 deac…
2026-03-26 11:30:52 +08:00
Wesley Liddick and GitHub
f8b8b53985
Merge pull request #1299 from DaydreamCoding/feat/antigravity-privacy-and-subscription
...
feat(antigravity): 自动隐私设置 + 订阅状态检测
2026-03-26 11:30:24 +08:00
shaw
b20e142249
feat: 网关请求头 wire casing 保持、转发行为开关、调试日志增强及 accept-encoding 恢复
...
- 新增 header_util.go,通过 setHeaderRaw/getHeaderRaw/addHeaderRaw 绕过
Go 的 canonical-case 规范化,保持真实 Claude CLI 抓包的请求头大小写
(如 "x-app" 而非 "X-App","X-Stainless-OS" 而非 "X-Stainless-Os")
- 新增管理后台开关:指纹统一化(默认开启)和 metadata 透传(默认关闭),
使用 atomic.Value + singleflight 缓存模式,60s TTL
- 调试日志从控制台 body 打印升级为文件级完整快照
(按真实 wire 顺序输出 headers + 格式化 JSON body + 上下文元数据)
- 恢复 accept-encoding 到白名单,在 http_upstream.go 新增 decompressResponseBody
处理 gzip/brotli/deflate 解压(Go 显式设置 Accept-Encoding 时不会自动解压)
- OAuth 服务 axios UA 从 1.8.4 更新至 1.13.6
- 测试断言改用 getHeaderRaw 适配 raw header 存储方式
2026-03-26 11:17:25 +08:00
Wesley Liddick and GitHub
0f03393010
Merge pull request #1234 from Zqysl/qingyu/fix-ops-runtime-log-controls-layout
...
fix(ops): prevent runtime log controls UI overflow
2026-03-24 19:13:47 +08:00
Wesley Liddick and GitHub
4b1ffc23f5
Merge pull request #1240 from Zqysl/qingyu/fix-openai-passthrough-429-rate-limits
...
fix(openai): persist passthrough 429 rate limits
2026-03-24 19:02:40 +08:00
Wesley Liddick and GitHub
c7137dffa8
Merge pull request #1218 from LvyuanW/openai-runtime-recheck
...
fix(openai): prevent rescheduling rate-limited accounts
2026-03-24 15:21:18 +08:00
Wesley Liddick and GitHub
5a3375ce52
Merge pull request #1227 from liruiluo/codex/dockerignore-deploy-data
...
Ignore deploy runtime data in Docker context
2026-03-24 15:20:10 +08:00
Wesley Liddick and GitHub
8e834fd9f5
Merge pull request #1204 from Eilen6316/fix/smtp-config-stability-and-refresh-test
...
fix(settings): prevent SMTP config overwrite and stabilize SMTP test after refresh
2026-03-24 15:19:24 +08:00
Wesley Liddick and GitHub
02046744eb
Merge pull request #1212 from alfadb/fix/filter-empty-text-blocks-nested
...
fix(gateway): 修复 tool_result 嵌套内容中空 text block 导致上游 400 错误
2026-03-24 15:19:01 +08:00
Wesley Liddick and GitHub
68d7ec9155
Merge pull request #1220 from weak-fox/feat/account-privacy-mode-filter
...
feat: 管理员账号列表支持按 Privacy 状态筛选
2026-03-24 15:18:30 +08:00
Wesley Liddick and GitHub
7537dce0f0
Merge pull request #1230 from LvyuanW/bulk-openai-oauth-ws-mode-pr
...
Add bulk OpenAI OAuth WS mode editing
2026-03-24 15:17:13 +08:00
Wesley Liddick and GitHub
5f41b74707
Merge pull request #1242 from Ethan0x0000/feat/anthropic-openai-endpoint-compat
...
支持 Anthropic Responses / Chat Completions 兼容端点并完善会话一致性与错误可观测性
2026-03-24 15:16:26 +08:00
Wesley Liddick and GitHub
25d961d4e0
Merge pull request #1252 from DaydreamCoding/feat/openai-mobile-rt
...
feat(openai): 支持 Mobile Refresh Token 导入,自动补全 plan_type
2026-03-24 15:12:25 +08:00
shaw
995bee143a
feat: 支持自定义端点配置与展示
2026-03-24 10:22:08 +08:00
Wesley Liddick and GitHub
bda7c39e55
Merge pull request #1196 from Eilen6316/fix/settings-form-url-validation
...
fix: prevent silent save failure in admin settings form
2026-03-21 20:55:23 +08:00
Wesley Liddick and GitHub
3583283ebb
Merge pull request #1197 from mutuyihao/fix/apicompat-array-content
...
fix(apicompat): support array content for system and tool messages
2026-03-21 20:53:27 +08:00
Wesley Liddick and GitHub
186e36752d
Merge pull request #1194 from Ethan0x0000/feat/requested-upstream-model-semantics
...
feat(usage): 统一使用记录中的请求模型与上游模型语义
2026-03-21 14:02:10 +08:00
Wesley Liddick and GitHub
421728a985
Merge pull request #1193 from xilu0/worktree-fix-thinking-block-log-level
...
fix: correct log levels for thinking block signature retry flow
2026-03-21 13:57:30 +08:00
Wesley Liddick and GitHub
39a5701184
Merge pull request #1182 from DaydreamCoding/fix/ops-alert-wg-race-and-context-leak
...
fix(ops_alert): wg.Add 竞态修复 + leader lock release context 泄漏
2026-03-21 13:52:14 +08:00
Wesley Liddick and GitHub
a225a241d7
Merge pull request #1162 from remxcode/main
...
feat(openai): 增加 gpt-5.4-mini/nano 模型支持与定价配置
2026-03-20 13:57:47 +08:00
Wesley Liddick and GitHub
553a486d17
Merge pull request #1171 from wucm667/fix/quota-display-stale-after-reset
...
fix: quota display shows stale cumulative usage after daily/weekly reset
2026-03-20 13:54:18 +08:00
Wesley Liddick and GitHub
c73374a221
Merge pull request #1176 from learnerLj/fix-bugs
...
fix: 修复 OpenAI 转发路径未应用分组默认模型映射
2026-03-20 13:53:20 +08:00
Wesley Liddick and GitHub
94e26dee4f
Merge pull request #1172 from alfadb/fix/openai-messages-effort-max-to-xhigh
...
fix(apicompat): 修正 Anthropic→OpenAI 推理级别映射
2026-03-20 13:48:41 +08:00
shaw
4f7629a4cb
fix: add max_claude_code_version to API contract test expected output
2026-03-20 09:17:32 +08:00
Wesley Liddick and GitHub
4015f31f28
Merge pull request #1157 from LvyuanW/fix-bulk-model-restriction-empty
...
fix: allow clearing model restriction in bulk edit when whitelist is empty
2026-03-20 09:13:44 +08:00
Wesley Liddick and GitHub
9dccbe1b07
Merge pull request #1169 from touwaeriol/pr/credits-exhausted-fix
...
fix(antigravity): correctly mark credits exhausted on "Resource has been exhausted" 429
2026-03-20 09:12:55 +08:00
Wesley Liddick and GitHub
9a88df7f28
Merge pull request #1167 from touwaeriol/pr/proxy-fast-fail
...
fix(antigravity): fast-fail on proxy unavailable, temp-unschedule account
2026-03-20 09:12:39 +08:00
Wesley Liddick and GitHub
a47f622e7e
Merge pull request #1159 from JerryFan626/fix/docker-compose-to-docker-compose-v2
...
docs: update docker-compose commands to Docker Compose V2 syntax
2026-03-20 09:12:14 +08:00
Wesley Liddick and GitHub
3529148455
Merge pull request #1151 from DaydreamCoding/feat/admin-user-group-filter
...
feat(admin): 用户管理新增分组列、分组筛选与专属分组一键替换
2026-03-20 09:10:38 +08:00
shaw
01d8286bd9
feat: add max_claude_code_version setting and disable auto-upgrade env var
...
Add maximum Claude Code version limit to complement the existing minimum
version check. Refactor the version cache from single-value to unified
bounds struct (min+max) with a single atomic.Value and singleflight group.
- Backend: new constant, struct field, cache refactor, validation (semver
format + cross-validation max >= min), gateway enforcement, audit diff
- Frontend: settings UI input, TypeScript types, zh/en i18n
- Add CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 to all Claude Code
tutorials on /keys page (unix/cmd/powershell/vscode settings.json)
2026-03-20 09:10:01 +08:00
Wesley Liddick and GitHub
0236b97d49
Merge pull request #1134 from yasu-dev221/fix/openai-compat-prompt-cache-key
...
fix(openai): add fallback prompt_cache_key for compat codex OAuth requests
2026-03-19 22:02:08 +08:00
Wesley Liddick and GitHub
26f6b1eeff
Merge pull request #1142 from StarryKira/fix/failover-exhausted-upstream-status-code
...
fix: record original upstream status code when failover exhausted (#1128)
2026-03-19 21:56:58 +08:00
Wesley Liddick and GitHub
dc447ccebe
Merge pull request #1153 from hging/main
...
feat: add ungrouped filter to account
2026-03-19 21:55:28 +08:00
Wesley Liddick and GitHub
7ec29638f4
Merge pull request #1147 from DaydreamCoding/feat/persisted-page-size
...
feat(frontend): 分页 pageSize 持久化到 localStorage,刷新后自动恢复
2026-03-19 21:53:54 +08:00
Wesley Liddick and GitHub
4c9562af20
Merge pull request #1148 from weak-fox/ci/sync-version-file-after-release
...
ci: sync VERSION file back to default branch after release
2026-03-19 21:46:45 +08:00
Wesley Liddick and GitHub
71942fd322
Merge pull request #1132 from touwaeriol/pr/virtual-scroll
...
perf(frontend): add virtual scrolling to DataTable
2026-03-19 21:46:16 +08:00
Wesley Liddick and GitHub
550b979ac5
Merge pull request #1146 from DaydreamCoding/fix/test-403-error-status
...
fix(test): 测试连接收到 403 时将账号标记为 error 状态
2026-03-19 21:44:57 +08:00
Wesley Liddick and GitHub
3878a5a46f
Merge pull request #1164 from GuangYiDing/fix/normalize-tool-parameters-schema
...
fix: Anthropic tool schema 转换时补充缺失的 properties 字段
2026-03-19 21:44:18 +08:00
shaw
525cdb8830
feat: Anthropic 账号被动用量采样,页面默认展示被动数据
...
从上游 /v1/messages 响应头被动采集 5h/7d utilization 并存储到
Account.Extra,页面加载时直接读取本地数据而非调用外部 Usage API。
用户可点击"查询"按钮主动拉取最新数据,主动查询结果自动回写被动缓存。
后端:
- UpdateSessionWindow 合并采集 5h + 7d headers 为单次 DB 写入
- 新增 GetPassiveUsage 从 Extra 构建 UsageInfo (复用 estimateSetupTokenUsage)
- GetUsage 主动查询后 syncActiveToPassive 回写被动缓存
- passive_usage_ 前缀注册为 scheduler-neutral
前端:
- Anthropic 账号 mount/refresh 默认 source=passive
- 新增"被动采样"标签和"查询"按钮 (带 loading 动画)
2026-03-19 17:42:59 +08:00
shaw
a6764e82f2
修复 OAuth/SetupToken 转发请求体重排并增加调试开关
2026-03-19 16:56:18 +08:00
Wesley Liddick and GitHub
9f6ab6b817
Merge pull request #1090 from laukkw/main
...
fix(setup): align install validation and expose backend errors
2026-03-18 16:23:06 +08:00
shaw
bf3d6c0e6e
feat: add 529 overload cooldown toggle and duration settings in admin gateway page
...
Move 529 overload cooldown configuration from config file to admin
settings UI. Adds an enable/disable toggle and configurable cooldown
duration (1-120 min) under /admin/settings gateway tab, stored as
JSON in the settings table.
When disabled, 529 errors are logged but accounts are no longer
paused from scheduling. Falls back to config file value when DB
is unreachable or settingService is nil.
2026-03-18 16:22:19 +08:00
Wesley Liddick and GitHub
241023f3fc
Merge pull request #1097 from Ethan0x0000/pr/upstream-model-tracking
...
feat(usage): 新增 upstream_model 追踪,支持按模型来源统计与展示
2026-03-18 15:36:00 +08:00
Wesley Liddick and GitHub
1292c44b41
Merge pull request #1118 from touwaeriol/worktree-fix/anti_mapping
...
feat: map claude-haiku-4-5 variants to claude-sonnet-4-6
2026-03-18 15:13:19 +08:00
Wesley Liddick and GitHub
b4fce47049
Merge pull request #1116 from wucm667/fix/inject-site-title-in-html
...
fix: 直接访问或刷新页面时浏览器标签页显示自定义站点名称
2026-03-18 15:12:07 +08:00
Wesley Liddick and GitHub
e7780cd8c8
Merge pull request #1117 from alfadb/fix/empty-text-block-retry
...
fix: 修复空 text block 导致上游 400 错误未被重试捕获的问题
2026-03-18 15:10:46 +08:00
shaw
62a566ef2c
fix: 修复 config.yaml 以只读方式挂载时容器启动失败 ( #1113 )
...
entrypoint 中 chown -R /app/data 在遇到 :ro 挂载的文件时报错退出,
添加错误容忍处理;同时去掉 compose 文件注释中的 :ro 建议。
2026-03-18 14:11:51 +08:00
Wesley Liddick and GitHub
21f349c032
Merge pull request #1095 from LvyuanW/lvyuan/dev
...
fix(admin/accounts): reset edit modal state on reopen
2026-03-18 11:37:07 +08:00
Wesley Liddick and GitHub
28e36f7925
Merge pull request #1096 from Ethan0x0000/pr/fix-idle-usage-windows
...
fix(ui): 会话窗口空闲时显示“现在”,避免重置时间缺失
2026-03-18 11:32:50 +08:00
Wesley Liddick and GitHub
6c02076333
Merge pull request #1106 from geminiwen/feat/subscription-platform-filter
...
feat: add platform type filter to subscription management
2026-03-18 11:32:35 +08:00
shaw
7414bdf0e3
fix: 修复 hotpath 测试中 metadata.user_id 格式不合法导致 CI 失败
...
测试数据使用的 session ID "abc-123" 不符合 ParseMetadataUserID
要求的 36 字符 UUID 格式,替换为合法 UUID。
2026-03-18 11:31:32 +08:00
Wesley Liddick and GitHub
e6326b2929
Merge pull request #1108 from DaydreamCoding/feat/admin-group-capacity-and-usage
...
feat(admin): 分组管理列表新增用量、账号分类与容量列
2026-03-18 11:12:43 +08:00
Wesley Liddick and GitHub
17cdcebd04
Merge pull request #1109 from GuangYiDing/feat/subscription-guide
...
feat(subscriptions): 订阅管理页面添加教程指南弹窗
2026-03-18 11:12:33 +08:00
shaw
a14babdc73
fix: 兼容 Claude Code v2.1.78+ 新 JSON 格式 metadata.user_id
...
Claude Code v2.1.78 起将 metadata.user_id 从拼接字符串改为 JSON:
旧: user_{hex}_account_{uuid}_session_{uuid}
新: {"device_id":"...","account_uuid":"...","session_id":"..."}
新增集中解析/格式化模块 metadata_userid.go:
- ParseMetadataUserID: 自动识别两种格式,提取 DeviceID/AccountUUID/SessionID
- FormatMetadataUserID: 根据 UA 版本输出对应格式(>= 2.1.78 输出 JSON)
- ExtractCLIVersion: 从 UA 提取版本号,消除与 ClaudeCodeValidator.ExtractVersion 的重复
修改消费者统一使用新模块:
- claude_code_validator: 用 ParseMetadataUserID 替代只匹配旧格式的 userIDPattern
- identity_service: RewriteUserID/WithMasking 增加 fingerprintUA 参数,
解析用 ParseMetadataUserID,输出用 FormatMetadataUserID(版本感知)
- gateway_service: GenerateSessionHash 用 ParseMetadataUserID 提取 session_id,
buildOAuthMetadataUserID 用 FormatMetadataUserID 输出版本匹配格式,
两处 RewriteUserIDWithMasking 调用传入 fp.UserAgent
- account_test_service: generateSessionString 改用 FormatMetadataUserID,
自动跟随 DefaultHeaders UA 版本
删除三个旧正则: userIDPattern, userIDRegex, sessionIDRegex
统一 hex 匹配为 [a-fA-F0-9],修复旧 userIDRegex 只匹配小写的不一致
2026-03-18 11:08:58 +08:00
Wesley Liddick and GitHub
045cba78b4
Merge pull request #1083 from StarryKira/fix/claude-code-version-pattern-validation
...
fix(settings): remove pattern attribute blocking Claude Code version save fix issue #1081
2026-03-17 14:49:34 +08:00
Wesley Liddick and GitHub
8989d0d4b6
Merge pull request #1085 from protondrift/main
...
feat: 个人资料弹窗 GitHub 链接仅对管理员可见
2026-03-17 14:49:07 +08:00
Wesley Liddick and GitHub
c521117b99
Merge pull request #1074 from StarryKira/fix/session-window-reset-from-header
...
fix(usage): use real reset header for 5h session window countdown fix issue #1064 #1065
2026-03-17 14:48:16 +08:00
Wesley Liddick and GitHub
07ab051ee4
Merge pull request #1078 from luxiang0412/main
...
fix(proxy): encode special chars in proxy credentials
2026-03-17 09:33:02 +08:00
Wesley Liddick and GitHub
f2d98fc0c7
Merge pull request #1077 from Clov614/main
...
fix(auto setup): 修复初始测试连接硬编码问题导致使用自定义数据库测试失败无法执行 auto setup流程
2026-03-17 09:32:52 +08:00
Wesley Liddick and GitHub
2b41cec840
Merge pull request #1076 from touwaeriol/pr/antigravity-test-connection-unify
...
refactor(antigravity): unify TestConnection with dispatch retry loop
2026-03-17 09:26:06 +08:00
Wesley Liddick and GitHub
6cf77040e7
Merge pull request #1075 from touwaeriol/feat/dashboard-user-breakdown
...
feat(dashboard): add per-user drill-down for distribution charts
2026-03-17 09:25:43 +08:00
Wesley Liddick and GitHub
20b70bc5fd
Merge pull request #1070 from StarryKira/fix/oauth-system-role-to-instructions
...
fix(oauth): extract system-role input items into instructions field fix issue #1066
2026-03-17 09:24:17 +08:00
Wesley Liddick and GitHub
4905e7193a
Merge pull request #1069 from Ethan0x0000/pr/codex-usage-single-source
...
fix(openai): use /usage as single source and zero expired codex windows
2026-03-17 09:09:16 +08:00
Wesley Liddick and GitHub
9c1f4b8e72
Merge pull request #1068 from Ethan0x0000/pr/frontend-last24h
...
feat(frontend): set last 24h as default range in Usage and Dashboard
2026-03-17 09:06:52 +08:00
Wesley Liddick and GitHub
9857c17631
Merge pull request #1067 from DaydreamCoding/feat/async-backup
...
feat(backup): 备份/恢复异步化,解决 504 超时
2026-03-17 08:59:36 +08:00
Wesley Liddick and GitHub
f42c8f2abe
Merge pull request #1062 from kunish/fix/antigravity-stream-keepalive
...
fix(antigravity): add stream keepalive to prevent connection drops
2026-03-16 19:57:13 +08:00