shaw
dacf3a2a6e
fix: 去掉accept-encoding透传
2025-12-21 21:30:19 +08:00
shaw
e6add93ae3
fix(build): add -tags embed to ensure frontend is embedded
...
- Add -tags=embed flag to GoReleaser builds
- Add -tags embed flag to Dockerfile builds
- Fix Dockerfile COPY order to prevent frontend dist being overwritten
- Update README build instructions with embed tag explanation
2025-12-20 19:13:26 +08:00
NepetaLemon
b2273ec695
ci(backend): 修复 backend-ci
2025-12-20 16:52:38 +08:00
Forest
aa89777dda
ci(backend): 调整 embed server
2025-12-20 16:44:25 +08:00
Forest
1e1f3c0c74
ci(backend): 添加 gofmt 配置
2025-12-20 16:19:40 +08:00
Forest
1fab9204eb
ci(backend): 添加 unused 配置
2025-12-20 16:12:44 +08:00
Forest
dbd3e71637
ci(backend): 添加 staticcheck 配置
2025-12-20 16:01:24 +08:00
Forest
974f67211b
ci(backend): 添加 ineffassign 配置
2025-12-20 15:58:08 +08:00
Forest
0338c83b90
ci(backend): 添加 errcheck 配置
2025-12-20 15:52:13 +08:00
NepetaLemon
c6b3de1199
ci(backend): 添加 github actions ( #10 )
...
## 变更内容
### CI/CD
- 添加 GitHub Actions 工作流(test + golangci-lint)
- 添加 golangci-lint 配置,启用 errcheck/govet/staticcheck/unused/depguard
- 通过 depguard 强制 service 层不能直接导入 repository
### 错误处理修复
- 修复 CSV 写入、SSE 流式输出、随机数生成等未处理的错误
- GenerateRedeemCode() 现在返回 error
### 资源泄露修复
- 统一使用 defer func() { _ = xxx.Close() }() 模式
### 代码清理
- 移除未使用的常量
- 简化 nil map 检查
- 统一代码格式
2025-12-20 02:29:52 -05:00
shaw
f1325e9ae6
chore: 调整Turnstile设置跳转地址
2025-12-20 15:14:36 +08:00
shaw
587012396b
feat: 支持创建管理员APIKEY
2025-12-20 15:11:43 +08:00
shaw
adebd941e1
fix: 修复Oauth账号自动刷新token失败的bug
2025-12-20 13:01:58 +08:00
Wesley Liddick
bb500b7b2a
Merge pull request #9 from NepetaLemon/refactor/add-http-service-ports
...
refactor(backend): service http ports
2025-12-19 23:35:13 -05:00
Forest
cceada7dae
refactor(backend): service http ports
2025-12-20 11:57:02 +08:00
shaw
5c2e7ae265
fix: 调整订阅计费时间窗口为每日0点
...
- 窗口激活/重置时使用当天零点而非精确时间
- 使用服务器本地时区计算零点(支持 UTC+8 等时区)
- 窗口重置时失效 Redis 缓存,避免数据不一致
2025-12-20 11:33:06 +08:00
shaw
420bedd615
Merge PR #8 : refactor(backend): 添加 service 缓存端口
2025-12-20 11:05:01 +08:00
shaw
a79f6c5e1e
feat: 给所有表格页面增加刷新按钮
2025-12-20 10:48:42 +08:00
shaw
0484c59ead
feat: /admin/usage页面增加模型分布情况显示
2025-12-20 10:06:55 +08:00
Forest
7bbf621490
refactor(backend): 添加 service 缓存端口
2025-12-19 23:44:18 +08:00
shaw
ef81aeb463
fix: 修复dashboard页面用户名的显示bug
2025-12-19 22:41:26 +08:00
shaw
22414326cc
fix: 修复前端切换页面时logo跟标题闪烁的问题
2025-12-19 22:33:36 +08:00
Wesley Liddick
14b155c66b
Merge pull request #7 from NepetaLemon/refactor/ports-pattern
...
refactor(backend): 引入端口接口模式
2025-12-19 08:29:04 -05:00
Forest
e99b344b2b
refactor(backend): 引入端口接口模式
2025-12-19 21:26:19 +08:00
shaw
7fd94ab78b
fix: 修复usage页面未显示缓存写入的问题
2025-12-19 16:57:31 +08:00
shaw
078529e51e
chore: 更新docker的postgres版本为18
2025-12-19 16:42:03 +08:00
shaw
23a4cf11c8
fix: 设置默认logo作为favicon
2025-12-19 16:41:00 +08:00
shaw
d1f0902ec0
feat(account): 支持账号级别拦截预热请求
...
- 新增 intercept_warmup_requests 配置项,存储在 credentials 字段
- 启用后,标题生成、Warmup 等预热请求返回 mock 响应,不消耗上游 token
- 前端支持所有账号类型(OAuth、Setup Token、API Key)的开关配置
- 修复 OAuth 凭证刷新时丢失非 token 配置的问题
2025-12-19 16:39:25 +08:00
shaw
ee86dbca9d
feat(account): 账号测试支持选择模型
...
- 新增 GET /api/v1/admin/accounts/:id/models 接口获取账号可用模型
- 账号测试弹窗新增模型选择下拉框
- 测试时支持传入 model_id 参数,不传则默认使用 Sonnet
- API Key 账号支持根据 model_mapping 映射测试模型
- 将模型常量提取到 claude 包统一管理
2025-12-19 16:00:09 +08:00
Wesley Liddick
733d4c2b85
Merge pull request #6 from dexcoder6/main
...
fix(frontend): 修复移动端菜单栏和使用记录页面 UI 问题
2025-12-19 02:59:05 -05:00
dexcoder6
406d3f3cab
fix(frontend): 修复移动端菜单栏和使用记录页面 UI 问题
...
- 修复移动端无法打开菜单栏的问题
- 在 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 >
2025-12-19 15:55:42 +08:00
shaw
1ed93a5fd0
refactor: 提取 Claude 客户端常量到独立包
...
- 新增 internal/pkg/claude 包统一管理 Claude Code 相关常量
- 统一账号测试逻辑,所有账号类型使用相同的 Claude Code 风格请求
- 网关服务使用常量包替换硬编码的 beta header 字符串
2025-12-19 15:22:52 +08:00
shaw
463ddea36f
fix(frontend): 修复代理快捷添加弹窗的 i18n 解析错误
...
batchInputHint 中的 @ 符号需要使用 {'@'} 转义
2025-12-19 11:24:22 +08:00
shaw
e769f67699
fix(setup): 支持从配置文件读取 Setup Wizard 监听地址
...
Setup Wizard 之前硬编码使用 8080 端口,现在支持从 config.yaml 或
环境变量 (SERVER_HOST, SERVER_PORT) 读取监听地址,方便用户在端口
被占用时使用其他地址启动初始化向导。
2025-12-19 11:21:58 +08:00
shaw
52d2ae9708
feat(gateway): 添加 /v1/messages/count_tokens 端点
...
实现 Claude API 的 token 计数功能,支持 OAuth、SetupToken 和 ApiKey 三种账号类型。
特点:
- 校验订阅/余额(不扣费)
- 不计算用户和账号并发
- 不记录使用量
- 支持模型映射(ApiKey 账号)
- 支持 OAuth 账号的指纹管理和 401 重试
2025-12-19 11:12:41 +08:00
shaw
2e59998c51
fix: 代理表单字段保存时自动去除前后空格
...
前后端同时处理,防止因意外空格导致代理连接失败
2025-12-19 10:39:30 +08:00
shaw
32e58115cc
fix(frontend): 修复代理快捷添加弹窗的 i18n 解析错误
...
转义 batchInputPlaceholder 中的 @ 符号,防止 Vue I18n 将其误解析为链接消息语法
2025-12-19 10:32:22 +08:00
shaw
ba27026399
docs: 调整源码编译步骤的顺序
2025-12-19 09:47:17 +08:00
shaw
c15b419c4c
feat(backend): 添加 event_logging 接口直接返回200
...
将原本在nginx处理的遥测日志请求移至后端,
忽略Claude Code客户端发送的日志数据。
2025-12-19 09:39:57 +08:00
shaw
5bd27a5d17
fix(frontend): 优化分组表单中订阅模式的字段显示逻辑
...
- 订阅模式下隐藏 Exclusive 字段并默认为开启状态
- 编辑分组时禁用计费类型字段,防止修改
- 移除编辑表单中无用的 subscription_type watch
2025-12-19 08:41:30 +08:00
Wesley Liddick
0e7b8aab8c
Merge pull request #4 from NepetaLemon/refactor/backend-wire-provider-sets
...
refactor(backend): 拆分 Wire ProviderSet
2025-12-18 19:27:49 -05:00
Forest
236908c03d
refactor(backend): 拆分 Wire ProviderSet
2025-12-19 00:03:29 +08:00
shaw
67d028cf50
fix: 修复用户修改密码接口404问题
...
将后端路由与前端API调用对齐:
- /user/profile -> /users/me
- PUT /user/password -> POST /users/me/password
2025-12-18 22:59:49 +08:00
shaw
66ba487697
fix: 修复前端github项目地址
2025-12-18 22:47:42 +08:00
Wesley Liddick
8c7875aa4d
Merge pull request #3 from NepetaLemon/refactor/backend-wire-bootstrap
...
refactor(backend): 引入 Wire 重构服务启动与依赖组装
2025-12-18 09:12:15 -05:00
shaw
145171464f
fix: 修复前端多个 bug
...
1. 版本号闪烁问题
- 将版本信息缓存到 Pinia store,避免每次路由切换都重新请求
- 添加加载占位符,版本为空时显示骨架屏
2. 管理员登录跳转问题
- 管理员登录后现在正确跳转到 /admin/dashboard
- 普通用户仍跳转到 /dashboard
3. Dashboard 页面空白报错
- 修复 API 返回 null 时访问 .length 导致的 TypeError
- 为 computed 属性添加可选链操作符保护
- 为数据赋值添加空数组默认值
2025-12-18 22:11:29 +08:00
Forest
e5aa676853
refactor(backend): 引入 Wire 重构服务启动与依赖组装
2025-12-18 22:07:17 +08:00
shaw
9b4fc42457
feat: 实现后台在线更新功能
...
- 前端添加更新和重启按钮,支持一键更新 Release 构建
- 修复条件判断优先级问题,确保错误/成功状态正确显示
- 后端使用原子文件替换模式,确保更新过程安全可靠
- 在可执行文件同目录创建临时文件,保证 rename 原子性
- 删除未使用的 copyFile 函数,保持代码整洁
2025-12-18 21:15:10 +08:00
shaw
caae7e4603
feat: 改进安装脚本的交互体验和自动化流程
...
- 修复 curl | bash 管道模式下无法交互式输入的问题
- 使用 /dev/tty 检测终端可用性替代 stdin 检测
- 所有 read 命令从 /dev/tty 读取用户输入
- 安装完成后自动启动服务和启用开机自启
- 使用 ipinfo.io API 获取公网 IP 用于显示访问地址
- 简化安装完成后的输出信息
2025-12-18 20:53:29 +08:00
shaw
a26db8b3e2
fix: 修复前端页面刷新时偶发空白渲染的竞态条件问题
...
使用 router.isReady() 等待路由器完成初始导航后再挂载应用,
避免 RouterView 在路由未就绪时渲染空的 Comment 节点。
2025-12-18 20:45:56 +08:00