1. 07 Jan, 2026 6 commits
    • Xu Kang's avatar
      fix: 修复 Go 版本、包管理器和技术栈文档 (#195) · f6dd4752
      Xu Kang authored
      - backend/Dockerfile: Go 版本从 1.21 更新到 1.25.5(与 go.mod 一致)
      
      - Makefile: 使用 pnpm 替代 npm(与 pnpm-lock.yaml 和 CI 一致)
      
      - README.md/README_CN.md: 技术栈从 GORM 修正为 Ent
      f6dd4752
    • Xu Kang's avatar
      fix(i18n): use correct translation key for dashboard redeem code description (#194) · b19c7875
      Xu Kang authored
      Changed dashboard.addBalance to dashboard.addBalanceWithCode to match the existing translation key in locale files.
      b19c7875
    • shaw's avatar
      fix(gateway): 修复账号跨分组调度问题 · d99a3ef1
      shaw authored
      问题:账号可能被调度到未分配的分组(如 simon 账号被调度到 claude_default)
      
      根因:
      - 强制平台模式下分组查询失败时回退到全平台查询
      - listSchedulableAccounts 中分组为空时回退到无分组查询
      - 粘性会话只检查平台匹配,未校验账号分组归属
      
      修复:
      - 移除强制平台模式的回退逻辑,分组内无账号时返回错误
      - 移除 listSchedulableAccounts 的回退逻辑
      - 新增 isAccountInGroup 方法用于分组校验
      - 在三处粘性会话检查中增加分组归属验证
      d99a3ef1
    • shaw's avatar
      fix(keys): 修复代码框第一行多余空格问题 · fc8fa83f
      shaw authored
      pre 标签会原样保留内部空白字符,导致 code 标签前的模板缩进
      被渲染为实际空格。将 pre/code 标签写在同一行消除此问题。
      fc8fa83f
    • shaw's avatar
      fix(gateway): 修复 cache_control 块超限问题并优化 Claude Code 检测 · 6dcd9946
      shaw authored
      问题:
      - OAuth/SetupToken 账号注入 system prompt 后可能导致 cache_control
        块超过 Anthropic API 的 4 个限制
      - Claude Code 检测使用精确匹配,无法识别 Agent SDK 等变体
      
      修复:
      - 新增 enforceCacheControlLimit 函数,强制执行 4 个块限制
      - 优先从 messages 移除,再从 system 尾部移除(保护注入的 prompt)
      - 改用前缀匹配检测 Claude Code 系统提示词,支持多种变体:
        - 标准版、Agent SDK 版、Explore Agent 版、Compact 版
      6dcd9946
    • shaw's avatar
      fix(admin/usage): 恢复成本 Tooltip 明细并优化账号筛选 · d5ba7b80
      shaw authored
      问题修复:
      - 恢复 Cost Tooltip 的成本分项明细 (input_cost, output_cost, cache 成本)
      - 修复 Token Tooltip 双分隔线显示问题
      - 修复 Tooltip 翻译键缺失问题,新增 costDetails/tokenDetails
      - 恢复 Excel 导出格式化 (aoa_to_sheet + 翻译列头)
      
      功能优化:
      - 账号筛选从前端搜索改为后端搜索,避免一次加载 1000 条数据
      - 行为与用户/API Key 筛选保持一致 (debounce + 后端分页)
      d5ba7b80
  2. 06 Jan, 2026 22 commits
  3. 05 Jan, 2026 12 commits
    • shaw's avatar
      fix: 数据迁移时长增加到10分钟 · 3956819c
      shaw authored
      3956819c
    • shaw's avatar
      fix(ci): 修复前端构建使用 pnpm 而非 npm · 168aa578
      shaw authored
      168aa578
    • shaw's avatar
      Merge branch 'fix/account-filters-menu-missing-features' · 706af292
      shaw authored
      ## Summary
      - 修复账号管理页面组件拆分时遗漏的功能
      - 统一所有内联 SVG 为 Icon 组件
      - 修复 ProxySelector 选择"无代理"时发送错误值的问题
      
      ## Changes
      - AccountTableFilters: 添加 Antigravity 平台选项、类型筛选器、inactive 状态
      - AccountActionMenu: 恢复重置状态和清除限速按钮
      - AccountsView: 修正 handleClearRateLimit 调用正确的 API
      - ProxySelector: 修复选择"无代理"时发送 null 而不是 0
      
      ## Conflict Resolution
      - ProxySelector.vue: 采用 PR 分支的正确逻辑(发送 null 而不是 0)
        这是正确的修复,因为后端使用 *int64 类型,nil 会触发 ClearProxyID()
      706af292
    • shaw's avatar
      fix(admin): 修复零值字段无法保存的问题 · 4d078a88
      shaw authored
      - 用户允许分组:前端发送空数组而非 null 表示"允许全部"
      - 账户代理:前端发送 0 而非 null 表示"无代理"
      - 后端 UpdateAccount/BulkUpdate 正确处理 ProxyID=0 为清除代理
      4d078a88
    • IanShaw027's avatar
      fix(frontend): 修复账号调度按钮使用错误的API端点 · b6a41829
      IanShaw027 authored
      将 handleToggleSchedulable 从 PUT update() 改为 POST setSchedulable(),
      后端 PUT 接口不处理 schedulable 字段,导致切换无效。
      b6a41829
    • IanShaw027's avatar
      refactor(frontend): 完成所有组件的内联SVG统一替换为Icon组件 · 4251a5a4
      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 行代码
        - 提升代码可维护性和一致性
        - 统一图标样式和尺寸管理
      4251a5a4
    • IanShaw027's avatar
      fix(backend): 删除未使用的 sleepAntigravityBackoff 函数 · 34aa77e4
      IanShaw027 authored
      修复 golangci-lint unused 检查失败
      34aa77e4
    • longgexx's avatar
      c27d5117
    • longgexx's avatar
      fix(billing): 修复计费漏洞 · d6f8ac02
      longgexx authored
          - 允许余额透支策略
      
         ## 问题
         - 扣费失败时只记录日志,不阻止请求完成
         - 用户可以用极少余额无限次免费使用服务
         - 数据库层使用 BalanceGTE 条件防止余额变负,导致余额不足时扣费失败
      
         ## 修复
         - 移除 DeductBalance 方法中的 BalanceGTE 条件,允许余额变为负数
         - 修改错误返回:用户不存在时返回 ErrUserNotFound
         - 实现透支策略:余额不足时允许本次请求完成,余额变负后阻止后续请求
      
         ## 测试
         - 更新 TestDeductBalance_InsufficientFunds 测试,验证透支功能
         - 更新 TestDeductBalance_NotFound 测试,验证正确的错误类型
         - 新增 TestDeductBalance_AllowsOverdraft 测试,专门测试透支场景
         - 所有测试通过 
      d6f8ac02
    • ianshaw's avatar
    • song's avatar
      fix: Antigravity 账户刷新 token 500 错误 · 6fa704d6
      song authored
      AccountHandler.Refresh 方法缺少对 Antigravity 平台的处理分支,
      导致刷新时错误地走进 Claude 刷新逻辑。
      6fa704d6
    • song's avatar