feat(theme): 上传图片自动压缩并转换为 WebP (#130)#132
Conversation
新增图片优化设置模块,用户可在主题个性化设置中开启 WebP 自动转换。 开启后,编辑器内联图片和文章封面图在保存时自动转为 WebP 格式。 - 新增 webpconvert 包:独立的图片转 WebP 能力(chai2010/webp) - 新增 ImageOptimizeSetting 域模型、仓储和门面 - 注入 media_repo 和 post_repo 的图片保存流程 - 前端 PersonalizationSetting 新增 WebP 开关 - 12 个 locale 补全 webpConvert / webpConvertDesc 翻译
|
@claude review 代码,重点看下配置信息的存放问题。 |
|
Claude finished @Tespera's task in 5m 16s —— View job 代码评审1. 总体结论WebP 转换的核心逻辑( 2. 问题清单🟡 建议修改[1] 动画 GIF 转 WebP 静默丢失动画
[2]
[3]
if err := LoadJSONFile(settingPath, &setting); err != nil {
r.cache = &domain.ImageOptimizeSetting{} // 文件不存在 → 零值(功能关闭)
r.loaded = true
return nil // ← 无论是 "文件不存在" 还是 "JSON 损坏" 都走这里
}
if err := LoadJSONFile(settingPath, &setting); err != nil {
if !os.IsNotExist(err) {
log.Printf("[imageOptRepo] 读取配置失败,使用默认值: %v", err)
}
r.cache = &domain.ImageOptimizeSetting{}
r.loaded = true
return nil
}[4]
[5]
// getWebpSetting 获取 WebP 转换设置。设置不可用时返回关闭状态。
// getWebpSetting 获取 WebP 转换设置。imageOptRepo 为 nil 或读取失败时返回关闭状态。连续两行函数注释,应只保留第二行(内容更准确)。 🟢 可选优化[6] Facade 层错误未包装为中文
3. 重点维度核查维度 4 — Wails 绑定同步 关于配置存放(触发点) 当前实现将 需要确认一个设计选择:WebP 转换是"工具级偏好"(所有站点共享同一开关)还是"站点级配置"(每个站点独立)?
目前代码在 维度 5 — i18n 维度 6 — 双渲染器一致性 PR 描述核查:合格(描述完整覆盖了主要模块变更,功能默认关闭等行为均已说明) |
- 移除 .gif 的 WebP 转换支持,避免动画 GIF 静默丢失动画 - Quality 字段注释改为"保留字段,暂固定为 80,后续版本开放" - loadIfNeeded 区分文件不存在与 JSON 损坏,后者打 log - 提取 getWebpSetting 为包级公共函数,消除 media_repo/post_repo 重复 - 删除 post_repo.go 重复注释行 - 同步更新 webpconvert 测试用例
|
@Tespera 已经修改,麻烦再次审核,感谢! |
|
@claude 再次审查代码。 |
|
Claude finished @Tespera's task in 2m 26s —— View job 代码评审(第二轮)
1. 总体结论✅ 可合并 上轮提出的全部 5 项问题均已正确修复,修复质量整体不错,没有引入新问题。 2. 问题清单上轮问题核查
🟢 新发现(可选)
3. 重点维度核查维度 4 — Wails 绑定同步 维度 5 — i18n 维度 6 — 双渲染器一致性 PR 描述核查:合格(修复提交的 commit message 已简要列出 5 项修复内容) |
变更说明
上传图片时自动压缩并转换为 WebP 格式,减少网站加载卡顿。
功能默认关闭,用户手动开启后生效。
关联 Issue
Closes #130
自查清单