1. 01 Jan, 2026 2 commits
    • Edric Li's avatar
      feat: 添加模型白名单选择器组件,同步 new-api 模型列表 · fb86002e
      Edric Li authored
      - 新增 ModelWhitelistSelector.vue 支持模型白名单多选
      - 新增 ModelIcon.vue 显示品牌图标(基于 @lobehub/icons)
      - 新增 useModelWhitelist.ts 硬编码各平台模型列表
      - 更新账号编辑表单支持模型白名单配置
      - 支持 Claude/OpenAI/Gemini/智谱/百度/讯飞等主流平台
      
      🤖 Generated with [Claude Code](https://claude.com/claude-code
      
      )
      Co-Authored-By: default avatarClaude Opus 4.5 <noreply@anthropic.com>
      fb86002e
    • ianshaw's avatar
      feat(gemini): 添加 Google One 存储空间推断 Tier 功能 · 7df914af
      ianshaw authored
      ## 功能概述
      通过 Google Drive API 获取存储空间配额来推断 Google One 订阅等级,并优化统一的配额显示系统。
      
      ## 后端改动
      - 新增 Drive API 客户端 (drive_client.go)
        - 支持代理和指数退避重试
        - 处理 403/429 错误
      - 添加 Tier 推断逻辑 (inferGoogleOneTier)
        - 支持 6 种 tier 类型:AI_PREMIUM, GOOGLE_ONE_STANDARD, GOOGLE_ONE_BASIC, FREE, GOOGLE_ONE_UNKNOWN, GOOGLE_ONE_UNLIMITED
      - 集成到 OAuth 流程
        - ExchangeCode: 授权时自动获取 tier
        - RefreshAccountToken: Token 刷新时更新 tier (24小时缓存)
      - 新增管理 API 端点
        - POST /api/v1/admin/accounts/:id/refresh-tier (单个账号刷新)
        - POST /api/v1/admin/accounts/batch-refresh-tier (批量刷新)
      
      ## 前端改动
      - 更新 AccountQuotaInfo.vue
        - 添加 Google One tier 标签映射
        - 添加 tier 颜色样式 (紫色/蓝色/绿色/灰色/琥珀色)
      - 更新 AccountUsageCell.vue
        - 添加 Google One tier 显示逻辑
        - 根据 oauth_type 区分显示方式
      - 添加国际化翻译 (en.ts, zh.ts)
        - aiPremium, standard, basic, free, personal, unlimited
      
      ## Tier 推断规则
      - >= 2TB: AI Premium
      - >= 200GB: Google One Standard
      - >= 100GB: Google One Basic
      - >= 15GB: Free
      - > 100TB: Unlimited (G Suite legacy)
      - 其他/失败: Unknown (显示为 Personal)
      
      ## 优雅降级
      - Drive API 失败时使用 GOOGLE_ONE_UNKNOWN
      - 不阻断 OAuth 流程
      - 24小时缓存避免频繁调用
      
      ## 测试
      -  后端编译成功
      -  前端构建成功
      -  所有代码符合现有规范
      7df914af
  2. 29 Dec, 2025 6 commits
    • shaw's avatar
      fix(frontend): 修复新手引导中Select下拉框无法点击的问题 · 4bbf71b7
      shaw authored
      - 使用 Teleport 将 Select 下拉菜单渲染到 body,避免 driver.js 遮罩层阻挡
      - 添加 pointer-events 和 @click.stop 确保下拉选项可点击
      - 移除 useOnboardingTour 中无效的 Select 组件处理代码
      - 清理未使用的 CSS 样式和 console 调试语句
      - 简化 Select 组件在引导期间的交互逻辑
      4bbf71b7
    • shaw's avatar
      chore(frontend): 移除未使用的新手引导组件残留代码 · ef22d6f6
      shaw authored
      删除开发过程中遗留的未使用文件:
      - TourDescription.vue: 未被使用的结构化描述组件
      - useTourStepDescription.ts: 步骤key映射,引用的组件从未创建
      - TourStepDescriptions/: 空的组件目录
      
      当前实现通过 i18n + HTML 字符串直接提供描述内容,无需这些文件。
      ef22d6f6
    • IanShaw027's avatar
      fix(frontend): 移除未使用的常量声明 · 6a55b153
      IanShaw027 authored
      6a55b153
    • IanShaw027's avatar
      fix(frontend): 优化新手引导交互体验 · e847cfc8
      IanShaw027 authored
      1. 移除重复的"不再提示"按钮
         - 只保留右上角的关闭按钮(X)
         - 简化用户操作,避免混淆
      
      2. 移除退出确认框
         - 点击关闭按钮直接退出并标记为已看过
         - ESC 键也直接退出,不再弹出确认框
         - 提升用户体验,减少打扰
      
      3. 修复 Select 下拉菜单被遮挡问题
         - 增加被高亮元素的下拉菜单 z-index
         - 确保下拉菜单在引导 popover 之上显示
         - 解决步骤 5/21 (平台选择) 无法操作的问题
      e847cfc8
    • IanShaw027's avatar
      fix(frontend): 简易模式下禁用新手引导并优化显示逻辑 · 337d9ad7
      IanShaw027 authored
      修复 Gemini 审查发现的潜在问题,并增强新手引导功能:
      
      1. 简易模式下完全禁用新手引导
         - useOnboardingTour: 添加 isSimpleMode 判断,简易模式下不自动启动
         - 只在标准模式的管理员第一次加载时自动弹出
      
      2. 动态过滤简易模式相关步骤
         - steps.ts: getAdminSteps 添加 isSimpleMode 参数
         - 简易模式下自动过滤分组管理和账号分组选择步骤
         - 避免引导找不到被隐藏的元素
      
      3. 优化引导按钮显示条件
         - AppHeader: 添加 showOnboardingButton computed
         - 只在标准模式的管理员下显示"重新开始引导"按钮
         - 非管理员或简易模式下不显示按钮
      
      4. 确保引导只在首次自动弹出
         - 关闭后不再自动出现
         - 只能从右上角手动重新打开
      337d9ad7
    • IanShaw027's avatar
      feat(frontend): 实现新手引导功能 · dd247e55
      IanShaw027 authored
      - 添加 Guide 组件和引导步骤配置
      - 实现 useOnboardingTour 和 useTourStepDescription composables
      - 添加 onboarding store 管理引导状态
      - 更新多个视图和组件以支持引导功能
      - 添加国际化支持(中英文)
      - 删除旧的实现指南文档
      dd247e55
  3. 28 Dec, 2025 1 commit
  4. 27 Dec, 2025 1 commit
  5. 26 Dec, 2025 4 commits
    • ianshaw's avatar
      feat(frontend): 添加 Gemini OAuth 能力查询 API · 1bec3599
      ianshaw authored
      - 添加 GeminiOAuthCapabilities 类型定义
      - 添加 getCapabilities API 函数
      - useGeminiOAuth composable 导出 getCapabilities 方法
      1bec3599
    • ianshaw's avatar
      feat(frontend): 支持 Gemini OAuth 类型选择 (Code Assist/AI Studio) · 09431cfc
      ianshaw authored
      - CreateAccountModal.vue: 新增 OAuth 类型选择 UI
      - ReAuthAccountModal.vue: 重授权支持选择类型
      - OAuthAuthorizationFlow.vue: 新增 Project ID 输入框
      - AccountTestModal.vue: Gemini 模型默认选择优化
      - useGeminiOAuth.ts: OAuth 逻辑参数变更
      - gemini.ts: API 调用更新
      09431cfc
    • ianshaw's avatar
      style(frontend): 统一核心模块代码风格 · 01f990a5
      ianshaw authored
      - Composables: 优化 OAuth 相关 hooks 代码格式
      - Stores: 规范状态管理模块格式
      - Types: 统一类型定义格式
      - Utils: 优化工具函数格式
      - App.vue & style.css: 调整全局样式和主组件格式
      01f990a5
    • ianshaw's avatar
      feat(frontend): 新增 Gemini OAuth 授权流程 · 0b30cc2b
      ianshaw authored
      - 新增 /admin/gemini API 接口封装(generateAuthUrl, exchangeCode)
      - 新增 useGeminiOAuth composable 处理 Gemini OAuth 流程
      - 新增 OAuthCallbackView 视图用于接收 OAuth 回调
      - 支持 code/state 参数提取和 credentials 构建
      0b30cc2b
  6. 22 Dec, 2025 1 commit
  7. 18 Dec, 2025 1 commit