v1.12.0
Highlights
本版本修复了一次全量代码 review 中发现的数据完整性、安全与正确性问题。
同步数据完整性
- 修复 AList 驱动压缩分页(返回条目数少于请求的 per_page)时静默丢失目录后半部分文件的问题
- 目录列表在任务中断时不再把"不完整列表"当作成功返回;服务端 total 与实际内容不一致时会显式报错,而不是悄悄漏文件
- 复制响应未返回任务 ID 时,会先验证目标文件确实存在才判定成功
- 远端复制任务状态改为显式映射(tache.State),不再依赖枚举数值巧合
安全
- 行为变更:
allow_internal_webhook默认值改为false。通知 Webhook 默认只能指向公网 HTTPS 地址;如需通知内网自建服务(ntfy / Bark / Home Assistant 等),请在data/config.ini或环境变量OPENSYNC_ALLOW_INTERNAL_WEBHOOK=true显式开启 data/secret.key写入失败时启动即报错退出,避免密钥静默轮换导致所有登录态与引擎令牌失效- 通知配置回显脱敏补齐:请求体模板、短 URL 路径 token 不再泄露;Server酱 sendKey 做 URL 转义
- 免认证路由前缀精确匹配;登录 Cookie 写入失败时如实返回错误
错误契约
- 删除/编辑不存在或重复的资源(通知、引擎、任务)时返回可操作的错误信息,不再是笼统的 internal server error
- 新增专用测试端点
POST /svr/notify/test;POST /svr/notify不再兼任测试发送
其他修复
config.ini重写时保留手工注释、未知键和其它分段;文档说明其与环境变量的优先级关系- HTTP/3 失败后不再透明重放复制/移动/删除等非幂等请求,避免远端重复执行
- 前端启用 TypeScript strict;修复历史任务列表翻页竞态、目录树加载失败静默、vuex 遗留 localStorage 双写等问题
- 移除未使用的依赖(echarts、js-cookie);新增 CI(go vet/test + 前端 test/build)
Full Changelog: v1.11.2...v1.12.0