1. 10 Jan, 2026 1 commit
    • Edric Li's avatar
      feat(settings): add home content customization and config injection · 5265b12c
      Edric Li authored
      - Add home_content setting for custom homepage (HTML or iframe URL)
      - Inject public settings into index.html to eliminate page flash
      - Support ETag caching with automatic invalidation on settings update
      - Add Vite plugin for dev mode settings injection
      - Refactor HomeView to use appStore instead of local API calls
      5265b12c
  2. 09 Jan, 2026 9 commits
    • Edric Li's avatar
      feat(api-key): add IP whitelist/blacklist restriction and usage log IP tracking · 90798f14
      Edric Li authored
      - Add IP restriction feature for API keys (whitelist/blacklist with CIDR support)
      - Add IP address logging to usage logs (admin-only visibility)
      - Remove billing_type column from usage logs UI (redundant)
      - Use generic "Access denied" error message for security
      
      Backend:
      - New ip package with IP/CIDR validation and matching utilities
      - Database migrations for ip_whitelist, ip_blacklist (api_keys) and ip_address (usage_logs)
      - Middleware IP restriction check after API key validation
      - Input validation for IP/CIDR patterns on create/update
      
      Frontend:
      - API key form with enable toggle for IP restriction
      - Shield icon indicator in table for keys with IP restriction
      - Removed billing_type filter and column from usage views
      90798f14
    • shaw's avatar
      f060db0b
    • IanShaw027's avatar
      feat(admin): 添加账号批量调度开关功能 · 5e936fbf
      IanShaw027 authored
      - 后端:支持批量更新账号的 schedulable 字段
        - 在 BulkUpdateAccountsRequest 中添加 schedulable 参数
        - 在 AccountBulkUpdate 中添加 schedulable 字段支持
        - 更新 repository 层批量更新 SQL 逻辑
      - 前端:在账号管理页面添加批量调度控制
        - 新增"批量启用调度"和"批量停止调度"按钮
        - 添加 handleBulkToggleSchedulable 处理函数
        - 显示具体的成功提示信息(包含操作账号数量)
      - 国际化:添加批量调度相关中英文翻译
      - 优化:添加 search 参数标准化和验证(account_handler)
      5e936fbf
    • IanShaw027's avatar
      fix(admin): 修复表格批量操作和搜索功能问题 · 38202322
      IanShaw027 authored
      1. 恢复账号管理批量操作栏缺失的功能按钮
         - 添加"本页全选"按钮支持批量选择当前页所有账号
         - 添加"清除已选"按钮快速清空已选账号列表
         - 在重构拆分组件时遗漏,现已恢复
      
      2. 修复分组管理搜索功能仅搜索当前页的问题
         - 前端:移除本地过滤逻辑,改用后端搜索
         - 后端:添加 search 参数支持,搜索名称和描述字段
         - 支持不区分大小写的模糊匹配
         - 统一所有管理页面的搜索体验
      38202322
    • admin's avatar
      feat(admin): 添加 LinuxDO OAuth 回调地址快速设置按钮 · 707061ef
      admin authored
      - 在设置页面添加"使用当前站点生成并复制"按钮
      - 自动填充回调地址并复制到剪贴板
      - 添加中英文国际化支持
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      707061ef
    • admin's avatar
      refactor(auth): 将 Linux DO OAuth 配置迁移到系统设置 · d1c2a61d
      admin authored
      - 将 LinuxDo Connect 配置从环境变量迁移到数据库持久化
      - 在管理后台系统设置中添加 LinuxDo OAuth 配置项
      - 简化部署流程,无需修改 docker-compose.override.yml
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      d1c2a61d
    • admin's avatar
      feat(auth): 添加 Linux DO Connect OAuth 登录支持 · 152d0cde
      admin authored
      - 新增 Linux DO OAuth 配置项和环境变量支持
      - 实现 OAuth 授权流程和回调处理
      - 前端添加 Linux DO 登录按钮和回调页面
      - 支持通过 Linux DO 账号注册/登录
      - 添加相关国际化文本
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      152d0cde
    • IanShaw027's avatar
      fix(fe): 修复中优先级表格功能问题 · 514f5802
      IanShaw027 authored
      修复的问题:
      
      1. **搜索和筛选防抖不同步**(AccountsView.vue)
         - 问题:筛选器使用 reload(立即),搜索使用 debouncedReload(300ms延迟)
         - 修复:统一使用 debouncedReload,避免多余的API调用
      
      2. **useTableLoader 竞态条件**(useTableLoader.ts)
         - 问题:finally 块检查 signal.aborted 而不是 controller 实例
         - 修复:检查 abortController === currentController
      
      3. **改进错误处理**(UsersView.vue)
         - 添加详细错误消息:error.response?.data?.detail || error.message
         - 用户可以看到具体的错误原因而不是通用消息
      
      4. **分页边界检查**(useTableLoader.ts, UsersView.vue)
         - 添加页码有效性检查:Math.max(1, Math.min(page, pagination.pages || 1))
         - 防止分页越界导致显示空表
      
      影响范围:
      - frontend/src/composables/useTableLoader.ts
      - frontend/src/views/admin/AccountsView.vue
      - frontend/src/views/admin/UsersView.vue
      
      测试:✓ 前端构建测试通过
      514f5802
    • IanShaw027's avatar
      fix(fe): 修复表格分页和基础功能问题 · ee9b9b39
      IanShaw027 authored
      修复的主要问题:
      
      1. **分页切换失效**(AccountsView.vue)
         - 修复 useTableLoader 未解构 handlePageSizeChange 函数
         - 添加 @update:pageSize 事件绑定到 Pagination 组件
      
      2. **内存泄漏修复**(多个文件)
         - UsersView.vue: 添加 searchTimeout 清理和 abortController.abort()
         - ProxiesView.vue: 添加 onUnmounted 钩子清理定时器
         - RedeemView.vue: 添加 onUnmounted 钩子清理定时器
      
      3. **分页重置问题**(UsersView.vue)
         - toggleBuiltInFilter: 切换筛选器时重置 pagination.page = 1
         - toggleAttributeFilter: 切换属性筛选时重置 pagination.page = 1
      
      影响范围:
      - frontend/src/views/admin/AccountsView.vue
      - frontend/src/views/admin/ProxiesView.vue
      - frontend/src/views/admin/RedeemView.vue
      - frontend/src/views/admin/UsersView.vue
      
      测试:✓ 前端构建测试通过
      ee9b9b39
  3. 08 Jan, 2026 4 commits
    • Edric Li's avatar
      feat(groups): add Claude Code client restriction and session isolation · a4210588
      Edric Li authored
      - Add claude_code_only field to restrict groups to Claude Code clients only
      - Add fallback_group_id for non-Claude Code requests to use alternate group
      - Implement ClaudeCodeValidator for User-Agent detection
      - Add group-level session binding isolation (groupID in Redis key)
      - Prevent cross-group sticky session pollution
      - Update frontend with Claude Code restriction controls
      a4210588
    • Edric Li's avatar
      feat(home): redirect admin users to admin dashboard · fd1b14fd
      Edric Li authored
      When clicking "Enter Console" button on home page, admin users are now
      redirected to /admin/dashboard instead of /dashboard.
      fd1b14fd
    • Edric Li's avatar
      feat(proxies): add account count column to proxy list · eb198e59
      Edric Li authored
      Display the number of accounts bound to each proxy in the admin proxy
      management page, similar to the groups list view.
      eb198e59
    • Edric Li's avatar
      feat(usage): add User-Agent column to usage logs · 70fcbd70
      Edric Li authored
      - Add user_agent field to UsageLog DTO and mapper
      - Display User-Agent column in admin and user usage tables
      - Add formatUserAgent helper to show friendly client names
      - Include user_agent in Excel export
      - Remove request_id column from admin usage table
      70fcbd70
  4. 07 Jan, 2026 2 commits
    • LLLLLLiulei's avatar
      feat: auto-pause expired accounts · 2b528c5f
      LLLLLLiulei authored
      2b528c5f
    • 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
  5. 06 Jan, 2026 3 commits
  6. 05 Jan, 2026 12 commits
    • 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
    • song's avatar
      feat: 图片生成计费功能 · d4c2b723
      song authored
      - 新增 Group 图片价格配置(image_price_1k/2k/4k)
      - BillingService 新增 CalculateImageCost 方法
      - AntigravityGatewayService 支持识别图片生成模型并按次计费
      - UsageLog 新增 image_count 和 image_size 字段
      - 前端分组管理支持配置图片价格(antigravity 和 gemini 平台)
      - 图片计费复用通用计费能力(余额检查、扣费、倍率、订阅限额)
      d4c2b723
    • Yuhao Jiang's avatar
      feat(前端): 用户管理页面添加 ID 列 · be60d1e7
      Yuhao Jiang authored
      在用户列表中添加可选的 ID 列,方便与其他页面(如订阅管理)
      显示的"用户 #ID"进行对照定位。
      
      - ID 列位于用户列之后
      - 支持排序
      - 可在列设置中隐藏
      
      🤖 Generated with [Claude Code](https://claude.ai/code
      
      )
      Co-Authored-By: default avatarClaude <noreply@anthropic.com>
      be60d1e7
    • ianshaw's avatar
      fix(frontend): 修复重构时遗漏的 SVG 图标,创建统一图标管理组件 · 471b1c3e
      ianshaw authored
      - 创建 Icon.vue 统一管理 SVG 图标(20+ 常用图标)
      - 修复 AccountActionMenu 中被错误替换为 emoji 的图标
      - 修复 ProfileView 和 GroupsView 中的 emoji 图标
      - 图标支持 size/strokeWidth 属性,便于复用
      471b1c3e
    • LLLLLLiulei's avatar
      feat: add account notes field · 94750fb6
      LLLLLLiulei authored
      94750fb6
    • ianshaw's avatar
    • ianshaw's avatar
      fix(frontend): 优化账号筛选工具条布局并修复IP管理表头翻译 · c52c47e1
      ianshaw authored
      - 筛选组件保持固定宽度,不再自动拉伸填充
      - 左右分布布局,中间自然留空
      - 修复 IP 管理页面表头缺失的中文翻译
      c52c47e1
    • ianshaw's avatar
      fix(frontend): 修复重构页面的遗漏问题 · ee29b942
      ianshaw authored
      - 添加 en.ts 中缺失的 admin.redeem.types 翻译
      - RedeemView 状态筛选器添加 expired 选项
      - SubscriptionsView 用量进度条添加 null/undefined 兜底
      - SubscriptionsView 添加 validity_days 表单校验
      - GroupsView/ProxiesView 搜索图标添加 dark mode 样式
      ee29b942
    • ianshaw's avatar
      fix(frontend): 完善表单校验并添加错误提示 · 85f53ef2
      ianshaw authored
      - UserEditModal: 添加 email 必填和 concurrency 最小值校验
      - UserAttributesConfigModal: 添加 key/name 必填和 options 非空校验
      - GroupsView: 添加 name 必填校验
      - ProxiesView: 添加 name/host 必填和 port 范围校验
      - UserBalanceModal: 添加 amount 有效性和余额充足性校验
      - RedeemView: 添加空兑换码错误提示
      - i18n: 添加所有新增校验的中英文翻译
      85f53ef2
    • ianshaw's avatar
      fix(frontend): 恢复使用记录图表功能并添加订阅分配表单校验 · 960c09cd
      ianshaw authored
      - UsageView: 恢复 ModelDistributionChart、TokenUsageTrend 图表和粒度选择器
      - SubscriptionsView: 添加分配订阅时的用户和分组校验提示
      - i18n: 添加 pleaseSelectUser/pleaseSelectGroup 翻译
      960c09cd
    • ianshaw's avatar
      fix(frontend): 修复账号管理页面组件拆分时遗漏的功能 · b05e90e4
      ianshaw authored
      - AccountTableFilters: 添加 Antigravity 平台选项、类型筛选器、inactive 状态
      - AccountActionMenu: 恢复重置状态和清除限速按钮,添加 dark mode 样式
      - AccountsView: 修正 handleClearRateLimit 调用正确的 API
      b05e90e4
  7. 04 Jan, 2026 9 commits
    • IanShaw027's avatar
      refactor(frontend): 统一管理页面工具条布局和操作列样式 · eef12cb9
      IanShaw027 authored
      ## 修复内容
      
      ### 1. 统一操作列按钮样式
      - 所有操作列按钮统一为"图标+文字"垂直排列样式
      - UsersView: 编辑和更多按钮添加文字标签
      - 与 AccountsView、GroupsView 等页面保持一致
      
      ### 2. 统一顶部工具条布局(6个管理页面)
      - 使用 flex + justify-between 布局
      - 左侧:模糊搜索框、筛选器(可多行排列)
      - 右侧:刷新、创建等操作按钮(靠右对齐)
      - 响应式:宽度不够时右侧按钮自动换行到上一行
      
      ### 3. 修复的页面
      - AccountsView: 合并 actions/filters 到单行工具条
      - UsersView: 标准左右分栏,操作列添加文字
      - GroupsView: 新增搜索框,左右分栏布局
      - ProxiesView: 左右分栏,响应式布局
      - SubscriptionsView: 新增用户模糊搜索,左右分栏
      - UsageView: 补齐所有筛选项,左右分栏
      
      ### 4. 新增功能
      - GroupsView: 新增分组名称/描述模糊搜索
      - SubscriptionsView: 新增用户模糊搜索功能
      - UsageView: 补齐 API Key 搜索筛选
      
      ### 5. 国际化
      - 新增相关搜索框的 placeholder 文案(中英文)
      
      ## 技术细节
      - 使用 flex-wrap-reverse 实现响应式换行
      - 左侧筛选区使用 flex-wrap 支持多行
      - 右侧按钮区使用 ml-auto + justify-end 保持右对齐
      - 移动端使用 w-full sm:w-* 响应式宽度
      
      ## 验证结果
      -  TypeScript 类型检查通过
      -  所有页面布局统一
      -  响应式布局正常工作
      eef12cb9
    • IanShaw027's avatar
      fix(frontend): 修复前端重构后的样式一致性和功能完整性 · 64b52c43
      IanShaw027 authored
      ## 修复内容
      
      ### 1. AccountsView 功能恢复
      - 恢复3个缺失的模态框组件:
        - ReAuthAccountModal.vue - 重新授权功能
        - AccountTestModal.vue - 测试连接功能
        - AccountStatsModal.vue - 查看统计功能
      - 恢复 handleTest/handleViewStats/handleReAuth 调用模态框
      - 修复 UpdateAccountRequest 类型定义(添加 schedulable 字段)
      
      ### 2. DashboardView 修复
      - 恢复 formatBalance 函数(支持千位分隔符显示)
      - 为 UserDashboardStats 添加完整 Props 类型定义
      - 为 UserDashboardRecentUsage 添加完整 Props 类型定义
      - 优化格式化函数到共享 utils/format.ts
      
      ### 3. 类型安全增强
      - 修复 UserAttributeOption 索引签名兼容性
      - 移除未使用的类型导入
      - 所有组件 Props 类型完整
      
      ## 验证结果
      -  TypeScript 类型检查通过(0 errors)
      -  vue-tsc 检查通过(0 errors)
      -  所有样式与重构前100%一致
      -  所有功能完整恢复
      
      ## 影响范围
      - AccountsView: 代码行数从974行优化到189行(提升80.6%可维护性)
      - DashboardView: 保持组件化同时恢复所有原有功能
      - 深色模式支持完整
      - 所有颜色方案和 SVG 图标保持一致
      
      Closes #149
      64b52c43
    • IanShaw027's avatar
      fix: 修复代码审查报告中的4个关键问题 · f60f943d
      IanShaw027 authored
      1. 资源管理冗余(ForwardGemini双重Close)
         - 错误分支读取body后立即关闭原始body,用内存副本重新包装
         - defer添加nil guard,避免重复关闭
         - fallback成功时显式关闭旧body,确保连接释放
      
      2. Schema校验丢失(cleanJSONSchema移除字段无感知)
         - 新增schemaCleaningWarningsEnabled()支持环境变量控制
         - 实现warnSchemaKeyRemovedOnce()在非release模式下告警
         - 移除关键验证字段时输出warning,包含key和path
      
      3. UI响应式风险(UsersView操作菜单硬编码定位)
         - 菜单改为先粗定位、渲染后测量、再clamp到视口内
         - 添加max-height + overflow-auto,超出时可滚动
         - 增强交互:点击其它位置/滚动/resize自动关闭或重新定位
      
      4. 身份补丁干扰(TransformClaudeToGemini默认注入)
         - 新增TransformOptions + TransformClaudeToGeminiWithOptions
         - 系统设置新增enable_identity_patch、identity_patch_prompt
         - 完整打通handler/dto/service/frontend配置链路
         - 默认保持启用,向后兼容现有行为
      
      测试:
      - 后端单测全量通过:go test ./...
      - 前端类型检查通过:npm run typecheck
      f60f943d
    • IanShaw027's avatar
      refactor(frontend): comprehensive architectural optimization and base component extraction · 99308ab4
      IanShaw027 authored
      - Standardized table loading logic with enhanced useTableLoader.
      - Unified form submission patterns via new useForm composable.
      - Extracted common UI components: SearchInput and StatusBadge.
      - Centralized common interface definitions in types/index.ts.
      - Achieved TypeScript zero-error status across refactored files.
      - Greatly improved code reusability and maintainability.
      99308ab4
    • IanShaw027's avatar
      refactor(frontend): final component split and comprehensive type safety fixes · d4d21d5e
      IanShaw027 authored
      - Completed modular refactoring of KeysView.vue and SettingsView.vue.
      - Resolved remaining TypeScript errors in new components.
      - Standardized prop types and event emitters for sub-components.
      - Optimized bundle size by eliminating redundant template code and unused script variables.
      - Verified system stability with final type checking.
      d4d21d5e
    • IanShaw027's avatar
      refactor(frontend): comprehensive split of large view files into modular components · e99063e1
      IanShaw027 authored
      - Split UsersView.vue into UserCreateModal, UserEditModal, UserApiKeysModal, etc.
      - Split UsageView.vue into UsageStatsCards, UsageFilters, UsageTable, etc.
      - Split DashboardView.vue into UserDashboardStats, UserDashboardCharts, etc.
      - Split AccountsView.vue into AccountTableActions, AccountTableFilters, etc.
      - Standardized TypeScript types across new components to resolve implicit 'any' and 'never[]' errors.
      - Improved overall frontend maintainability and code clarity.
      e99063e1
    • 墨颜's avatar
      refactor(keys): 优化分组选项显示与代码复用 · 6708f400
      墨颜 authored
      - 删除冗余的 vite.config.js,统一使用 TypeScript 配置
      - 创建 GroupOptionItem 组件封装分组选项 UI 逻辑(GroupBadge + 描述 + 勾选状态)
      - 在密钥页面的分组选择器中显示分组描述文字
      - 添加选中状态的勾选图标,提升交互体验
      - 优化描述文字左对齐和截断显示效果
      - 消除代码重复,简化维护成本
      6708f400
    • IanShaw027's avatar
    • IanShaw027's avatar
      fix(frontend): 优化前端组件和国际化支持 · 6c036d7b
      IanShaw027 authored
      - 添加 Accept-Language 请求头支持后端翻译
      - 优化账户状态指示器和测试模态框
      - 简化用户属性表单和配置模态框
      - 新增多个国际化翻译条目
      - 重构管理视图代码,提升可维护性
      6c036d7b