- 03 Feb, 2026 4 commits
-
-
song authored
-
liuxiongfeng authored
-
liuxiongfeng authored
- 后端 DTO 新增 scope_rate_limits 字段,从 extra 提取限流信息 - 前端状态列显示 scope 级限流徽章(Claude/Gemini/Image) - 清除速率限制时同时清除账号级和 scope 级限流(已有实现) Cherry-picked from slovx2/sub2api: 66f49b67
-
song authored
-
- 02 Feb, 2026 2 commits
- 29 Jan, 2026 1 commit
-
-
yangjianbo authored
新增功能: - 新增 Sora 账号管理和 OAuth 认证 - 新增 Sora 视频/图片生成 API 网关 - 新增 Sora 任务调度和缓存机制 - 新增 Sora 使用统计和计费支持 - 前端增加 Sora 平台配置界面 安全修复(代码审核): - [SEC-001] 限制媒体下载响应体大小(图片 20MB、视频 200MB),防止 DoS 攻击 - [SEC-002] 限制 SDK API 响应大小(1MB),防止内存耗尽 - [SEC-003] 修复 SSRF 风险,添加 URL 验证并强制使用代理配置 BUG 修复(代码审核): - [BUG-001] 修复 for 循环内 defer 累积导致的资源泄漏 - [BUG-002] 修复图片并发槽位获取失败时已持有锁未释放的永久泄漏 性能优化(代码审核): - [PERF-001] 添加 Sentinel Token 缓存(3 分钟有效期),减少 PoW 计算开销 技术细节: - 使用 io.LimitReader 限制所有外部输入的大小 - 添加 urlvalidator 验证防止 SSRF 攻击 - 使用 sync.Map 实现线程安全的包级缓存 - 优化并发槽位管理,添加 releaseAll 模式防止泄漏 影响范围: - 后端:新增 Sora 相关数据模型、服务、网关和管理接口 - 前端:新增 Sora 平台配置、账号管理和监控界面 - 配置:新增 Sora 相关配置项和环境变量 Co-Authored-By:Claude Sonnet 4.5 <noreply@anthropic.com>
-
- 27 Jan, 2026 1 commit
-
-
song authored
- 后端 DTO 新增 scope_rate_limits 字段,从 extra 提取限流信息 - 前端状态列显示 scope 级限流徽章(Claude/Gemini/Image) - 清除速率限制时同时清除账号级和 scope 级限流(已有实现)
-
- 23 Jan, 2026 1 commit
-
-
shaw authored
-
- 21 Jan, 2026 1 commit
-
-
song authored
-
- 19 Jan, 2026 2 commits
-
-
墨颜 authored
- 普通用户 Group DTO 移除 model_routing/account_count/account_groups,避免泄露内部路由与账号信息\n- 新增 AdminGroup DTO,并仅在管理员分组接口返回完整字段\n- 前端拆分 Group/AdminGroup,管理端页面与 API 使用 AdminGroup\n- 增加 /api/v1/groups/available 契约测试,防止回归
-
shaw authored
- 新增 session_id_masking_enabled 配置,启用后将在15分钟内固定 metadata.user_id 中的 session ID - TLS fingerprint 模块日志从自定义 debugLog 迁移到 slog - main.go 添加 slog 初始化,根据 gin mode 设置日志级别 - 前端创建/编辑账号模态框添加会话ID伪装开关 - 多语言支持(中英文)
-
- 18 Jan, 2026 3 commits
- 17 Jan, 2026 2 commits
-
-
nick8802754751 authored
- EditAccountModal 和 CreateAccountModal 使用 ConfirmDialog 组件 - 保存 pending payload 供确认后重试 - 添加 mixedChannelWarningTitle 翻译 Co-authored-by:factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
-
nick8802754751 authored
- 前端: EditAccountModal 和 CreateAccountModal 添加 409 mixed_channel_warning 处理 - 前端: 弹出确认框让用户确认混合渠道风险 - 后端: 过滤 OpenAI 请求中的 prompt_cache_retention 参数(上游不支持) - 添加中英文翻译 Co-authored-by:factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
-
- 16 Jan, 2026 2 commits
-
-
IanShaw027 authored
- 移除已弃用的 1.5 系列模型 - 调整模型优先级顺序(2.0 Flash > 2.5 Flash > 2.5 Pro > 3.0 Preview) - 同步前后端模型配置 - 更新相关测试用例和默认模型选择逻辑
-
shaw authored
- 支持Anthropic OAuth/SetupToken账号的5h窗口费用阈值控制 - 支持账号级别的并发会话数量限制 - 使用Redis缓存窗口费用(30秒TTL)减少数据库压力 - 费用计算基于标准费用(不含账号倍率)
-
- 15 Jan, 2026 1 commit
-
-
yangjianbo authored
-
- 14 Jan, 2026 1 commit
-
-
墨颜 authored
- 新增 accounts.rate_multiplier(默认 1.0,允许 0) - 使用 usage_logs.account_rate_multiplier 记录倍率快照,避免历史回算 - 统计/导出/管理端展示账号口径费用(total_cost * account_rate_multiplier)
-
- 12 Jan, 2026 2 commits
-
-
shaw authored
- 新增 AccountGroupsCell 组件优化分组列显示(最多4个+折叠) - 修复 Cookie 自动授权时 group_ids/notes/expires_at 字段丢失 - 修复 SettingsView 流超时配置前后端字段不一致问题
-
ianshaw authored
- 修改 HandleUpstreamError 逻辑,启用自定义错误码时所有在列表中的错误码都会停止调度 - 添加 handleCustomErrorCode 函数处理自定义错误码的账号停用 - 前端添加 429/529 错误码的警告提示,因为这些错误码已有内置处理机制 - 更新 EditAccountModal、CreateAccountModal、BulkEditAccountModal 的错误码添加逻辑
-
- 08 Jan, 2026 1 commit
-
-
IanShaw authored
* fix(gemini): Google One 强制使用内置 OAuth client + 自动获取 project_id + UI 优化 ## 后端改动 ### 1. Google One 强制使用内置 Gemini CLI OAuth Client **问题**: - Google One 之前允许使用自定义 OAuth client,导致认证流程不稳定 - 与 Code Assist 的行为不一致 **解决方案**: - 修改 `gemini_oauth_service.go`: Google One 现在与 Code Assist 一样强制使用内置 client (L122-135) - 更新 `gemini_oauth_client.go`: ExchangeCode 和 RefreshToken 方法支持强制内置 client (L31-44, L77-86) - 简化 `geminicli/oauth.go`: Google One scope 选择逻辑 (L187-190) - 标记 `geminicli/constants.go`: DefaultGoogleOneScopes 为 DEPRECATED (L30-33) - 更新测试用例以反映新行为 **OAuth 类型对比**: | OAuth类型 | Client来源 | Scopes | Redirect URI | |-----------|-----------|--------|-----------------| | code_assist | 内置 Gemini CLI | DefaultCodeAssistScopes | https://codeassist.google.com/authcode | | google_one | 内置 Gemini CLI (新) | DefaultCodeAssistScopes | https://codeassist.google.com/authcode | | ai_studio | 必须自定义 | DefaultAIStudioScopes | http://localhost:1455/auth/callback | ### 2. Google One 自动获取 project_id **问题**: - Google One 个人账号测试模型时返回 403/404 错误 - 原因:cloudaicompanion API 需要 project_id,但个人账号无需手动创建 GCP 项目 **解决方案**: - 修改 `gemini_oauth_service.go`: OAuth 流程中自动调用 fetchProjectID - Google 通过 LoadCodeAssist API 自动分配 project_id - 与 Gemini CLI 行为保持一致 - 后端根据 project_id 自动选择正确的 API 端点 **影响**: - Google One 账号现在可以正常使用(需要重新授权) - Code Assist 和 AI Studio 账号不受影响 ### 3. 修复 Gemini 测试账号无内容输出问题 **问题**: - 测试 Gemini 账号时只显示"测试成功",没有显示 AI 响应内容 - 原因:processGeminiStream 在检查到 finishReason 时立即返回,跳过了内容提取 **解决方案**: - 修改 `account_test_service.go`: 调整逻辑顺序,先提取内容再检查是否完成 - 确保最后一个 chunk 的内容也能被正确显示 **影响**: - 所有 Gemini 账号类型(API Key、OAuth)的测试现在都会显示完整响应内容 - 用户可以看到流式输出效果 ## 前端改动 ### 1. 修复图标宽度压缩问题 **问题**: - 账户类型选择按钮中的图标在某些情况下会被压缩变形 **解决方案**: - 修改 `CreateAccountModal.vue`: 为所有平台图标容器添加 `shrink-0` 类 - 确保 Anthropic、OpenAI、Gemini、Antigravity 图标保持固定 8×8 尺寸 (32px × 32px) ### 2. 优化重新授权界面 **问题**: - 重新授权时显示三个可点击的授权类型选择按钮,可能导致用户误切换到不兼容的授权方式 **解决方案**: - 修改 `ReAuthAccountModal.vue` (admin 和普通用户版本): - 将可点击的授权类型选择按钮改为只读信息展示框 - 根据账号的 `credentials.oauth_type` 动态显示对应图标和文本 - 删除 `geminiAIStudioOAuthEnabled` 状态和 `handleSelectGeminiOAuthType` 方法 - 防止用户误操作 ## 测试验证 -
✅ 所有后端单元测试通过 -✅ OAuth client 选择逻辑正确 -✅ Google One 和 Code Assist 行为一致 -✅ 测试账号显示完整响应内容 -✅ UI 图标显示正常 -✅ 重新授权界面只读展示正确 * fix(lint): 修复 golangci-lint 错误信息格式问题 - 将错误信息改为小写开头以符合 Go 代码规范 - 修复 ST1005: error strings should not be capitalized
-
- 07 Jan, 2026 1 commit
-
-
LLLLLLiulei authored
-
- 06 Jan, 2026 2 commits
-
-
yangjianbo authored
后端 API 返回 message 字段,但前端读取 detail 字段,导致无法显示具体错误信息。 现在优先读取 message 字段,兼容 detail 字段。
🤖 Generated with [Claude Code](https://claude.com/claude-code ) Co-Authored-By:Claude Opus 4.5 <noreply@anthropic.com>
-
shaw authored
-
- 05 Jan, 2026 3 commits
-
-
IanShaw027 authored
- 扩展 Icon.vue 组件,新增 60+ 图标路径 - 导航类: arrowRight, arrowLeft, arrowUp, arrowDown, chevronUp, externalLink - 状态类: checkCircle, xCircle, exclamationCircle, exclamationTriangle, infoCircle - 用户类: user, userCircle, userPlus, users - 文档类: document, clipboard, copy, inbox - 操作类: download, upload, filter, sort - 安全类: key, lock, shield - UI类: menu, calendar, home, terminal, gift, creditCard, mail - 数据类: chartBar, trendingUp, database, cube - 其他: bolt, sparkles, cloud, server, sun, moon, book 等 - 重构 56 个 Vue 组件,用 Icon 组件替换内联 SVG - 净减少约 2200 行代码 - 提升代码可维护性和一致性 - 统一图标样式和尺寸管理
-
LLLLLLiulei authored
-
ianshaw authored
- 修复FilterThinkingBlocksForRetry对空content数组的处理 - docker-compose添加SECURITY_URL_ALLOWLIST_UPSTREAM_HOSTS配置 - 更新Gemini使用指南链接:检查归属地、修改归属地、激活Gemini Web
-
- 04 Jan, 2026 8 commits
-
-
IanShaw027 authored
- 添加 Accept-Language 请求头支持后端翻译 - 优化账户状态指示器和测试模态框 - 简化用户属性表单和配置模态框 - 新增多个国际化翻译条目 - 重构管理视图代码,提升可维护性
-
IanShaw027 authored
- 后端:将 Smtp/Api/Doc 字段改为 SMTP/API/Doc(遵循 Go 命名规范) - 前端:添加 Gemini 帮助按钮,简化配额说明展示
-
IanShaw027 authored
主要改动: - 后端:重构 Gemini 配额服务,支持多层级配额策略(GCP Standard/Free, Google One, AI Studio, Code Assist) - 后端:优化 OAuth 服务,增强 tier_id 识别和存储逻辑 - 后端:改进用量统计服务,支持不同平台的配额查询 - 后端:优化限流服务,增加临时解除调度状态管理 - 前端:统一四种授权方式的用量显示格式和徽标样式 - 前端:增强账户配额信息展示,支持多种配额类型 - 前端:改进创建和重新授权模态框的用户体验 - 国际化:完善中英文配额相关文案 - 移除 CHANGELOG.md 文件 测试:所有单元测试通过
-
IanShaw027 authored
**修复内容:** 1. **统一徽标样式** - 所有徽标使用相同的 Tailwind 类 - Free: gray-100/600, Pro: blue-100/600, Ultra: purple-100/600 - 暗色模式统一使用 /40 透明度 - Client 和 AI Studio 都使用蓝色徽标 2. **修复 Google One 用量显示** - 后端已为所有 Gemini OAuth (GCP/Google One/Client) 返回用量数据 - 前端只要有用量数据就显示进度条(移除 isGeminiCodeAssist 限制) - Google One 现在也会显示 Pro/Flash 进度条 + 统计数据 - 只有自定义 Client OAuth 显示「无限流」(无追踪) **最终显示规则:** - AI Studio API Key: 「无限流」或「限流 XX」 - Client OAuth: 「无限流」(无追踪) - GCP OAuth: Pro/Flash 进度条 + 统计 - Google One OAuth: Pro/Flash 进度条 + 统计
-
IanShaw027 authored
- API Key 账户:显示「AI Studio」 - 自定义 OAuth Client 账户:显示「Client」 之前错误地将两者都显示为同一标签,现在已修正。
-
IanShaw027 authored
**统一后的格式:** - 第一行:授权方式简称 + 用户等级 - 后续行:有限额显示模型进度条+统计数据+窗口时间,无限额显示「无限流」 **四种授权方式:** 1. **AI Studio OAuth** - 第一行:「AI Studio」 - 后续:「无限流」 2. **GCP Code Assist OAuth** (原 CLI) - 第一行:「GCP Free/Pro/Ultra」 - 后续:Pro/Flash 进度条 + 统计数据(0 req 0 /bin/zsh.00)+ 窗口时间 3. **Google One OAuth** (原 G1) - 第一行:「Google One Personal/Free/Pro/...」 - 后续:「无限流」 4. **API Key** (原 Gemini) - 第一行:「Client」 - 后续:「无限流」或「限流 XX」 **修改内容:** - AccountUsageCell.vue: 标签改名(CLI→GCP,G1→Google One),模型标签简化(Pro/Flash),保留统计数据 - AccountQuotaInfo.vue: 标签改名(Gemini→Client)
-
IanShaw027 authored
**统一显示规则:** - 第一行:授权方式简称 + 用户等级(如有) - 后续内容: - 有分模型限额:显示各模型的用量进度条和窗口时间 - 无限额/无分模型:显示「无限流」 **具体改动:** 1. AI Studio OAuth - 第一行:「AI Studio」 - 后续:「无限流」 2. GCP Code Assist OAuth - 第一行:「CLI Free/Pro/Ultra」 - 后续:Pro/Flash 模型进度条(保持现状) 3. Google One OAuth - 第一行:「G1 Personal/Free/Pro/...」 - 后续:「无限流」(暂无配额追踪) 4. API Key - 第一行:「Gemini」徽章 - 后续:「无限流」或「限流 XX」 **文件修改:** - AccountUsageCell.vue: 区分 Code Assist 和其他类型的显示逻辑 - AccountQuotaInfo.vue: 改为两行布局,统一样式 - i18n: 添加 rateLimit.unlimited 翻译(中文「无限流」/英文「Unlimited」)
-
ianshaw authored
- AccountStatusIndicator: 状态文本使用 i18n - CreateAccountModal: TypeScript 类型修复 - TempUnschedStatusModal: 错误处理改进
-
- 03 Jan, 2026 2 commits
-
-
ianshaw authored
当账号触发特定错误码和关键词匹配时,自动临时禁用调度: 后端: - 新增 TempUnschedCache Redis 缓存层 - RateLimitService 支持规则匹配和状态管理 - 添加 GET/DELETE /accounts/:id/temp-unschedulable API - 数据库迁移添加 temp_unschedulable_until/reason 字段 前端: - 账号状态指示器显示临时不可调度状态 - 新增 TempUnschedStatusModal 详情弹窗 - 创建/编辑账号时支持配置规则和预设模板 - 完整的中英文国际化支持
-
ianshaw authored
主要改进: - 修复 google_one OAuth scopes 配置问题 - 添加 Gemini 账号配额展示组件 - 优化 Code Assist 类型检测逻辑 - 添加 OAuth 测试用例
-