Skip to content

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 04 May 10:27
· 111 commits to main since this release

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