- 19 Mar, 2026 2 commits
-
-
Jerry Fan authored
The project prerequisites already require Docker Compose v2+, but command examples still used the legacy `docker-compose` (hyphenated) form. Replace all command invocations with `docker compose` (space-separated) while keeping file name references (docker-compose.yml, etc.) unchanged. Co-Authored-By:Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
shaw authored
-
- 18 Mar, 2026 28 commits
-
-
Wesley Liddick authored
fix(setup): align install validation and expose backend errors
-
shaw authored
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.
-
Wesley Liddick authored
feat(usage): 新增 upstream_model 追踪,支持按模型来源统计与展示
-
Wesley Liddick authored
feat: map claude-haiku-4-5 variants to claude-sonnet-4-6
-
Wesley Liddick authored
fix: 直接访问或刷新页面时浏览器标签页显示自定义站点名称
-
Wesley Liddick authored
fix: 修复空 text block 导致上游 400 错误未被重试捕获的问题
-
erio authored
Update model mapping target for claude-haiku-4-5 and claude-haiku-4-5-20251001 from claude-sonnet-4-5 to claude-sonnet-4-6. Includes migration script, default constants, and test updates.
-
alfadb authored
-
alfadb authored
Empty text blocks ({"type":"text","text":""}) cause Anthropic upstream to return 400: "text content blocks must be non-empty". This was not caught by the existing error detection pattern in isThinkingBlockSignatureError, nor handled by FilterThinkingBlocksForRetry. - Add empty text block stripping to FilterThinkingBlocksForRetry - Fix isThinkingBlockSignatureError to match new Anthropic error format - Add fast-path byte patterns to avoid unnecessary JSON parsing Co-Authored-By:Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
Ethan0x0000 authored
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent ) Co-authored-by:
Sisyphus <clio-agent@sisyphuslabs.ai>
-
wucm667 authored
-
shaw authored
entrypoint 中 chown -R /app/data 在遇到 :ro 挂载的文件时报错退出, 添加错误容忍处理;同时去掉 compose 文件注释中的 :ro 建议。
-
wucm667 authored
后端 HTML 注入时同步替换 <title> 标签为自定义站点名称, 前端 fetchPublicSettings 完成后重新设置 document.title, 解决路由守卫先于设置加载导致标题回退为默认值的时序问题。
-
Wesley Liddick authored
fix(admin/accounts): reset edit modal state on reopen
-
Wesley Liddick authored
fix(ui): 会话窗口空闲时显示“现在”,避免重置时间缺失
-
Wesley Liddick authored
feat: add platform type filter to subscription management
-
shaw authored
测试数据使用的 session ID "abc-123" 不符合 ParseMetadataUserID 要求的 36 字符 UUID 格式,替换为合法 UUID。
-
Wesley Liddick authored
feat(admin): 分组管理列表新增用量、账号分类与容量列
-
Wesley Liddick authored
feat(subscriptions): 订阅管理页面添加教程指南弹窗
-
shaw authored
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 只匹配小写的不一致 -
Rose Ding authored
在订阅管理页面工具栏添加教程指南按钮(? 图标),点击弹出模态框, 引导管理员完成订阅功能的完整使用流程: - 步骤一:创建订阅分组(含跳转分组管理链接) - 步骤二:分配订阅给用户(搜索用户、选择分组、设置有效期) - 步骤三:管理已有订阅(调整/重置配额/撤销操作说明表格) - 底部提示:说明下拉列表为空时的解决方案 弹窗样式参照 BackupView 的 R2 Guide 模态框实现,保持 UI 一致性。 Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Rose Ding authored
在 en.ts 中为订阅管理页面新增 guide 相关翻译词条, 与中文翻译保持结构一致,支持中英文切换。 Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Rose Ding authored
在 zh.ts 中为订阅管理页面新增 guide 相关翻译词条,包括: - 教程弹窗标题与副标题 - 三步操作引导文案(创建分组、分配订阅、管理订阅) - 操作说明表格(调整/重置配额/撤销) - 底部提示信息 Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Gemini Wen authored
Co-Authored-By:Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
QTom authored
复用 GroupCapacityService,在 admin 分组列表中添加容量列, 显示每个分组的实时并发/会话/RPM 使用量和上限。 Co-Authored-By:Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
QTom authored
分组管理列表增强: 1. 今日/累计用量列: - 新增独立端点 GET /admin/groups/usage-summary - 一次查询返回所有分组的今日费用和累计费用(actual_cost) - 前端异步加载后合并显示在分组列表中 2. 账号数区分可用/限流/总量: - 将账号数列从单一总量改为 badge 内多行展示 - 可用: active + schedulable 的账号数(绿色) - 限流: rate_limit/overload/temp_unschedulable 的账号数(橙色,无限流时隐藏) - 总量: 全部关联账号数 Co-Authored-By:Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
Gemini Wen authored
Co-Authored-By:Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
Gemini Wen authored
Add a platform filter dropdown to the admin subscriptions view, allowing filtering subscriptions by platform (Anthropic, OpenAI, Gemini, etc.) through the group association. Co-Authored-By:Claude Opus 4.6 (1M context) <noreply@anthropic.com>
-
- 17 Mar, 2026 10 commits
-
-
Ethan0x0000 authored
-
Ethan0x0000 authored
Show upstream model mapping (requested -> upstream) in UsageTable with arrow notation. Add requested/upstream/mapping source toggle to ModelDistributionChart with lazy loading — only fetches data when user switches tab, with per-source cache invalidation on filter changes. Include upstream_model column in Excel export and i18n for en/zh.
-
Ethan0x0000 authored
Cover IsValidModelSource/NormalizeModelSource, resolveModelDimensionExpression SQL expressions, invalid model_source 400 responses on both GetModelStats and GetUserBreakdown, upstream_model in scan/insert SQL mock expectations, and updated passthrough/billing test signatures.
-
Ethan0x0000 authored
Add model_source query parameter to GetModelStats and GetUserBreakdown handlers with explicit IsValidModelSource validation. Include model_source in cache key to prevent cross-source cache hits. Expose upstream_model in usage log DTO with omitempty semantics.
-
Ethan0x0000 authored
Support querying model statistics by 'requested', 'upstream', or 'mapping' dimension. Add resolveModelDimensionExpression for safe SQL expression generation, IsValidModelSource whitelist validator, and NormalizeModelSource fallback. Repository persists and scans upstream_model in all insert/select paths.
-
Ethan0x0000 authored
Propagate UpstreamModel through ForwardResult and OpenAIForwardResult in Anthropic direct, API-key passthrough, Bedrock, and OpenAI gateway flows. Extract optionalNonEqualStringPtr and optionalTrimmedStringPtr into usage_log_helpers.go. Store upstream_model only when it differs from the requested model. Also introduces anthropicPassthroughForwardInput struct to reduce parameter count.
-
Ethan0x0000 authored
Add nullable VARCHAR(100) column to record the actual model sent to upstream providers when model mapping is applied. NULL means no mapping — the requested model was used as-is. Includes migration, concurrent index for aggregation queries, Ent schema regeneration, and migration README correction (forward-only runner, not goose).
-
Ethan0x0000 authored
Use utilization-based idle detection instead of local request counts so newly imported OAuth accounts keep countdowns when usage is non-zero.
-
Wang Lvyuan authored
-
laukkw authored
Make setup password requirements consistent with backend rules and show API-provided error messages so install failures are actionable. Trim admin email before validation to avoid false invalid-email rejections from surrounding whitespace.
-