Repository navigation
v1.1.0
v1.1.0 Release Notes
统一错误处理
消除静默忽略错误(_ =),统一 HTTP 错误响应格式为 JSON,新增 panic 恢复中间件。
基础设施: 新增 AppError 类型(domain/types.go)、writeError 统一 JSON 错误输出(handler/common.go)、WithRecovery panic 恢复中间件(handler/middleware.go,注册于 cmd/msp/main.go)。重构 writeJSON 为 buffer 模式,编码失败返回 500 JSON 而非空响应。
Handler 层: middleware.go、progress.go、stream.go(7 处)、subtitle.go(5 处)、auth.go 的 http.Error() 纯文本响应全部替换为 writeError() JSON 格式。
静默错误消除: media.go 的 BuildMediaResponse 改为返回 error;cache/media.go、scanner/scanner.go、scanner/subtitle.go、media/transcoder.go 失败路径改为记录日志;handler/media.go 的 parseLimitParam 负数修正。
Lint 修复: 清理未使用的 mock 和 import;WriteFile 权限 0644 → 0600(gosec G306)。
单元测试覆盖率大幅提升
新增约 1800 行测试代码,覆盖此前 0% 或极低覆盖率的核心包。新增 10 个测试文件(cache、media/store、media/media、media/probe、service/media、service/logger、handler/media、handler/stream、handler/subtitle、handler/progress),扩展 scanner 和 media/transcoder 已有测试。
覆盖率变化
| 包 | 变更前 | 变更后 |
|---|---|---|
cache |
0% | 已覆盖 |
media (store/media/probe) |
0% | 已覆盖 |
service (media/logger) |
0% | 已覆盖 |
handler (stream/subtitle/progress) |
0% | 已覆盖 |
handler (media) |
低 | 大幅提升 |
scanner |
73% | 进一步提升 |
media (transcoder) |
50% | 进一步提升 |
测试策略: SQLite 内存数据库(modernc.org/sqlite,无 CGO)、httptest 模拟 Handler 层、table-driven 模式、Mock 接口隔离 Service 层依赖、FFmpeg/FFprobe 依赖自动跳过。
构建脚本全面重构
重新设计 build.ps1 / build.sh,引入预设系统,消除中文兼容性问题。
参数简化: 单字母别名(PowerShell [Alias()]、Bash getopts),逗号分隔传参(-F linux,windows 替代 @() 语法)。PS 使用 -P(Preset) -F(Platforms) -A(Arch) -T(SkipTests) -L(SkipLint) -H(Help) -I(ListPresets);Bash 使用 -P/-p/-a/-t/-l/-h/-L(大小写区分,故 -P 和 -p 可共存)。
预设系统: 新增 scripts/build-profiles.json,内置 10 个预设(all、release、linux、macos/darwin、windows、arm、server、desktop、quick),用户可自定义。
中文兼容性: build.ps1、build.sh、build-profiles.json 全部改为英文,避免无 BOM UTF-8 中文在 PowerShell 5.1 下解析失败。
文档体系完善
新增 scripts/README.md(英文,默认)和 scripts/README_CN.md(中文)构建脚本文档,建立四向交叉引用(README.md ↔ scripts/README.md,docs/README_CN.md ↔ scripts/README_CN.md)。更新 README.md、docs/README_CN.md 的编译示例为 -P 预设语法,同步更新 AGENTS.md。
验证
go test ./...✅ 全部 15 个包通过go vet ./...✅ 无警告golangci-lint run ./...✅ 0 issues
影响评估
- HTTP 错误响应格式从纯文本变为 JSON(
{"error":{"message":"..."}}),前端需适配错误解析 BuildMediaResponse返回类型变更(新增error返回值),所有调用方已同步更新WithRecovery中间件新增运行时 panic 保护,不影响正常请求路径- 构建脚本参数体系变更,旧的长参数写法(如
-Platforms)仍兼容,但推荐使用单字母短参数 - 测试代码变更不影响运行时行为,无 API / 配置 / 破坏性变更
发布日期: 2026-05-04