- 19 Dec, 2025 10 commits
-
-
dexcoder6 authored
- 修复移动端无法打开菜单栏的问题 - 在 app.ts 中添加 mobileOpen 状态管理 - 修复 AppHeader.vue 中移动端菜单按钮调用错误的方法 - 修复 AppSidebar.vue 使用本地 ref 而非全局状态的问题 - 添加移动端菜单自动关闭功能 - 点击菜单项后自动关闭侧边栏 - 添加 150ms 延迟以显示关闭动画 - 修复使用记录页面总消费卡片溢出问题 - 调整总消费卡片布局,将删除线价格移至说明行 - 添加 min-w-0 flex-1 防止内容溢出 - 保持与其他卡片高度一致
🤖 Generated with [Claude Code](https://claude.com/claude-code ) Co-Authored-By:Claude Sonnet 4.5 <noreply@anthropic.com>
-
shaw authored
batchInputHint 中的 @ 符号需要使用 {'@'} 转义 -
shaw authored
Setup Wizard 之前硬编码使用 8080 端口,现在支持从 config.yaml 或 环境变量 (SERVER_HOST, SERVER_PORT) 读取监听地址,方便用户在端口 被占用时使用其他地址启动初始化向导。
-
shaw authored
实现 Claude API 的 token 计数功能,支持 OAuth、SetupToken 和 ApiKey 三种账号类型。 特点: - 校验订阅/余额(不扣费) - 不计算用户和账号并发 - 不记录使用量 - 支持模型映射(ApiKey 账号) - 支持 OAuth 账号的指纹管理和 401 重试
-
shaw authored
前后端同时处理,防止因意外空格导致代理连接失败
-
shaw authored
转义 batchInputPlaceholder 中的 @ 符号,防止 Vue I18n 将其误解析为链接消息语法
-
shaw authored
-
shaw authored
将原本在nginx处理的遥测日志请求移至后端, 忽略Claude Code客户端发送的日志数据。
-
shaw authored
- 订阅模式下隐藏 Exclusive 字段并默认为开启状态 - 编辑分组时禁用计费类型字段,防止修改 - 移除编辑表单中无用的 subscription_type watch
-
Wesley Liddick authored
refactor(backend): 拆分 Wire ProviderSet
-
- 18 Dec, 2025 30 commits
-
-
Forest authored
-
shaw authored
将后端路由与前端API调用对齐: - /user/profile -> /users/me - PUT /user/password -> POST /users/me/password
-
shaw authored
-
Wesley Liddick authored
refactor(backend): 引入 Wire 重构服务启动与依赖组装
-
shaw authored
1. 版本号闪烁问题 - 将版本信息缓存到 Pinia store,避免每次路由切换都重新请求 - 添加加载占位符,版本为空时显示骨架屏 2. 管理员登录跳转问题 - 管理员登录后现在正确跳转到 /admin/dashboard - 普通用户仍跳转到 /dashboard 3. Dashboard 页面空白报错 - 修复 API 返回 null 时访问 .length 导致的 TypeError - 为 computed 属性添加可选链操作符保护 - 为数据赋值添加空数组默认值
-
Forest authored
-
shaw authored
- 前端添加更新和重启按钮,支持一键更新 Release 构建 - 修复条件判断优先级问题,确保错误/成功状态正确显示 - 后端使用原子文件替换模式,确保更新过程安全可靠 - 在可执行文件同目录创建临时文件,保证 rename 原子性 - 删除未使用的 copyFile 函数,保持代码整洁
-
shaw authored
- 修复 curl | bash 管道模式下无法交互式输入的问题 - 使用 /dev/tty 检测终端可用性替代 stdin 检测 - 所有 read 命令从 /dev/tty 读取用户输入 - 安装完成后自动启动服务和启用开机自启 - 使用 ipinfo.io API 获取公网 IP 用于显示访问地址 - 简化安装完成后的输出信息
-
shaw authored
使用 router.isReady() 等待路由器完成初始导航后再挂载应用, 避免 RouterView 在路由未就绪时渲染空的 Comment 节点。
-
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)
-
shaw authored
问题原因: - cmd.Start() 启动的子进程与父进程在同一会话中 - 当 systemctl restart 发送 SIGTERM 给父进程时 - 子进程可能也会被终止,导致重启命令无法完成 修复内容: - 使用 setsid 创建新会话,子进程完全独立于父进程 - 分离标准输入/输出/错误流 - 确保即使父进程被 kill,重启命令仍能执行完成
-
shaw authored
问题原因: - systemd 服务的 PATH 环境变量可能受限 - 直接使用 "sudo" 可能找不到可执行文件 修复内容: - 添加 findExecutable 函数动态查找可执行文件路径 - 先尝试 exec.LookPath,再检查常见系统路径 - 添加日志显示实际使用的路径,方便调试 - 兼容不同 Linux 发行版的路径差异
-
shaw authored
问题原因: - sudo 命令没有 -n 选项 - 在后台服务中,sudo 会尝试从终端读取密码 - 由于没有终端,命令静默失败 修复内容: - 添加 sudo -n 选项强制非交互模式 - 如果需要密码会立即失败并返回错误,而不是挂起
-
Wesley Liddick authored
fix: 修复并发请求时共享httpClient.Transport导致的竞态条件
-
shaw authored
问题原因: - install.sh 优先从 tar.gz 复制 sudoers 文件 - 旧版 Release 中的 sudoers 文件没有 /usr/bin/systemctl 路径 - 即使脚本更新了,仍然会使用旧的配置 修复内容: - 移除对 tar.gz 中 sudoers 文件的依赖 - 总是使用脚本中内嵌的最新配置 - 确保新版脚本立即生效,无需等待新 Release
-
shaw authored
问题原因: - sudoers 只配置了 /bin/systemctl 路径 - 部分系统(如 Ubuntu 22.04+)的 systemctl 位于 /usr/bin/systemctl - 路径不匹配导致 sudo 仍然需要密码 修复内容: - 同时支持 /bin/systemctl 和 /usr/bin/systemctl 两个路径 - 兼容 Debian/Ubuntu 和 RHEL/CentOS 等不同发行版
-
shaw authored
问题原因: - 服务用户 sub2api 的 shell 被设置为 /bin/false - 导致无法执行 sudo systemctl restart 命令 - 安装/升级后服务无法自动重启 修复内容: - 新安装时使用 /bin/sh 替代 /bin/false - 升级时自动检测并修复旧版本用户的 shell 配置 - 修复失败时给出警告和手动修复命令,不中断安装流程
-
江西小徐 authored
问题描述: 当多个请求并发执行且使用不同代理配置时,它们会同时修改共享的 s.httpClient.Transport,导致请求可能使用错误的代理(数据泄露风险) 或意外失败。 修复方案: 为需要代理的请求创建独立的http.Client,而不是修改共享的httpClient.Transport。 改动内容: - 新增 buildUpstreamRequestResult 结构体,返回请求和可选的独立client - 修改 buildUpstreamRequest 方法,配置代理时创建独立client - 更新 Forward 方法,根据是否有代理选择合适的client
-
shaw authored
-
shaw authored
-
shaw authored
-
shaw authored
-
shaw authored
-
shaw authored
-
shaw authored
The release workflow references ./deploy/DOCKER.md to update DockerHub description, but the file was missing causing ENOENT error.
-
shaw authored
- Extract complete tag message body in workflow using git format - Pass tag message via TAG_MESSAGE environment variable - Update goreleaser config to use .Env.TAG_MESSAGE instead of .TagBody - Fix release notes being truncated to first paragraph only
-
shaw authored
-
shaw authored
-
shaw authored
-
Wesley Liddick authored
-