1. 28 Dec, 2025 2 commits
    • IanShaw027's avatar
      feat(全栈): 实现简易模式核心功能 · ecfad788
      IanShaw027 authored
      **功能概述**:
      实现简易模式(Simple Mode),为个人用户和小团队提供简化的使用体验,隐藏复杂的分组、订阅、配额等概念。
      
      **后端改动**:
      1. 配置系统
         - 新增 run_mode 配置项(standard/simple)
         - 支持环境变量 RUN_MODE
         - 默认值为 standard
      
      2. 数据库初始化
         - 自动创建3个默认分组:anthropic-default、openai-default、gemini-default
         - 默认分组配置:无并发限制、active状态、非独占
         - 幂等性保证:重复启动不会重复创建
      
      3. 账号管理
         - 创建账号时自动绑定对应平台的默认分组
         - 如果未指定分组,自动查找并绑定默认分组
      
      **前端改动**:
      1. 状态管理
         - authStore 新增 isSimpleMode 计算属性
         - 从后端API获取并同步运行模式
      
      2. UI隐藏
         - 侧边栏:隐藏分组管理、订阅管理、兑换码菜单
         - 账号管理页面:隐藏分组列
         - 创建/编辑账号对话框:隐藏分组选择器
      
      3. 路由守卫
         - 限制访问分组、订阅、兑换码相关页面
         - 访问受限页面时自动重定向到仪表板
      
      **配置示例**:
      ```yaml
      run_mode: simple
      
      run_mode: standard
      ```
      
      **影响范围**:
      - 后端:配置、数据库迁移、账号服务
      - 前端:认证状态、路由、UI组件
      - 部署:配置文件示例
      
      **兼容性**:
      - 简易模式和标准模式可无缝切换
      - 不需要数据迁移
      - 现有数据不受影响
      ecfad788
    • shaw's avatar
      fix: 修复安装脚本通过 pipe 执行时 root 权限检查失效的问题 · 9bbe468c
      shaw authored
      使用 `id -u` 替代 `$EUID` 进行 root 权限检查。
      `$EUID` 是 bash 内置变量,在通过 pipe 执行脚本时可能不可靠。
      9bbe468c
  2. 27 Dec, 2025 3 commits
  3. 26 Dec, 2025 6 commits
  4. 25 Dec, 2025 2 commits
  5. 24 Dec, 2025 1 commit
    • shaw's avatar
      feat(install): 添加安装指定版本和回退功能 · 870b2191
      shaw authored
      - 新增 rollback 命令支持回退到指定版本
      - 新增 list-versions 命令列出可用版本
      - 新增 -v/--version 参数指定安装版本
      - upgrade 命令支持升级到指定版本
      - 添加安装状态检查,未安装时给出明确提示
      - 版本切换仅替换二进制文件,保留配置和数据
      - 自动备份当前版本(带版本号或时间戳后缀)
      - 改进网络错误处理,添加超时和友好提示
      - 修复 grep -oP 兼容性问题,改用 grep -oE
      870b2191
  6. 19 Dec, 2025 1 commit
  7. 18 Dec, 2025 9 commits
    • shaw's avatar
      feat: 改进安装脚本的交互体验和自动化流程 · caae7e46
      shaw authored
      - 修复 curl | bash 管道模式下无法交互式输入的问题
        - 使用 /dev/tty 检测终端可用性替代 stdin 检测
        - 所有 read 命令从 /dev/tty 读取用户输入
      - 安装完成后自动启动服务和启用开机自启
      - 使用 ipinfo.io API 获取公网 IP 用于显示访问地址
      - 简化安装完成后的输出信息
      caae7e46
    • shaw's avatar
      refactor: 使用行业标准方案重构服务重启逻辑 · 8e81e395
      shaw authored
      重构内容:
      - 移除复杂的 sudo systemctl restart 方案
      - 改用 os.Exit(0) + systemd Restart=always 的标准做法
      - 删除 sudoers 配置及相关代码
      - 删除 sub2api-sudoers 文件
      
      优势:
      - 代码从 85+ 行简化到 47 行
      - 无需 sudo 权限配置
      - 无需特殊用户 shell 配置
      - 更简单、更可靠
      - 符合行业最佳实践(Docker/K8s 等均采用此方案)
      
      工作原理:
      - 服务调用 os.Exit(0) 优雅退出
      - systemd 检测到退出后自动重启(Restart=always)
      8e81e395
    • shaw's avatar
      fix: 修复 install.sh 优先使用旧 sudoers 文件的问题 · b66f97c1
      shaw authored
      问题原因:
      - install.sh 优先从 tar.gz 复制 sudoers 文件
      - 旧版 Release 中的 sudoers 文件没有 /usr/bin/systemctl 路径
      - 即使脚本更新了,仍然会使用旧的配置
      
      修复内容:
      - 移除对 tar.gz 中 sudoers 文件的依赖
      - 总是使用脚本中内嵌的最新配置
      - 确保新版脚本立即生效,无需等待新 Release
      b66f97c1
    • shaw's avatar
      fix: 修复 sudoers 中 systemctl 路径不兼容的问题 · b51ad0d8
      shaw authored
      问题原因:
      - sudoers 只配置了 /bin/systemctl 路径
      - 部分系统(如 Ubuntu 22.04+)的 systemctl 位于 /usr/bin/systemctl
      - 路径不匹配导致 sudo 仍然需要密码
      
      修复内容:
      - 同时支持 /bin/systemctl 和 /usr/bin/systemctl 两个路径
      - 兼容 Debian/Ubuntu 和 RHEL/CentOS 等不同发行版
      b51ad0d8
    • shaw's avatar
      fix: 修复服务用户 shell 导致无法执行 sudo 重启的问题 · 4eb22d8e
      shaw authored
      问题原因:
      - 服务用户 sub2api 的 shell 被设置为 /bin/false
      - 导致无法执行 sudo systemctl restart 命令
      - 安装/升级后服务无法自动重启
      
      修复内容:
      - 新安装时使用 /bin/sh 替代 /bin/false
      - 升级时自动检测并修复旧版本用户的 shell 配置
      - 修复失败时给出警告和手动修复命令,不中断安装流程
      4eb22d8e
    • shaw's avatar
      fix: 修复脚本的一些参数问题 · ef3199f0
      shaw authored
      ef3199f0
    • shaw's avatar
      20aee89d
    • shaw's avatar
      fix: add missing deploy/DOCKER.md for Docker workflow · 268f4d28
      shaw authored
      The release workflow references ./deploy/DOCKER.md to update DockerHub
      description, but the file was missing causing ENOENT error.
      268f4d28
    • shaw's avatar
      First commit · 642842c2
      shaw authored
      642842c2