Repository navigation
v2.4.7
JSecProbe v2.4.7 更新内容
本次是一个质量与稳定性版本:修复了一个会导致备份静默损坏的缺陷,为三条"坏了就丢数据、而且不会报错"的关键链路补齐了自动化测试,并完成了几项不改变功能的结构性优化。
修复
-
修复:备份加密中途失败会留下半个损坏的备份文件(静默数据损坏)
加密备份采用「先写
.enc-tmp临时文件、完成后再原子替换」的策略,以避免中途失败污染目标文件。但当加密过程中失败时(例如源文件缺失、读取出错),清理逻辑会尝试删除这个临时文件——而此时写入流仍持有文件句柄,Windows 下删除操作会因资源被占用而失败,该失败随后又被静默忽略,最终在磁盘上残留一个半个的.enc-tmp。这类残留物最危险的地方在于:它在备份列表里看得见,用户以为备份成功了,只有真正需要恢复时才会失败。现已改为先关闭写入流、释放句柄,再删除临时文件,确保任何失败路径都不会留下半成品。
-
修复:单元测试在本机无法稳定运行(开发侧)
Vitest 在本机环境下会因模块转换缓存写盘被拦截而以非 0 退出码结束,并随机跳过部分测试文件——这会让"改坏代码测试变红"这条最基本的保障失效。已定位到根因是缓存写盘路径与本机环境的兼容性问题,通过在模块加载期关闭该缓存解决;
npm test现在可稳定跑绿(5 个文件 59 个用例)。
质量保障
-
为三条关键链路补齐单元测试(共 5 个文件 59 个用例):
链路 覆盖要点 自动保存( useAutoSaveCore)脏数据兜底重试、停止之后不再触发、保存失败须保留数据 备份加解密 加密后明文 ZIP 必须删除、口令错误 / 密文篡改 / auth tag 篡改必须报错且不残留明文临时文件、相同明文两次加密的密文必须不同(salt / iv 每次随机) 内置标准与命令库入驻 seed 幂等性、数据版本一致时跳过加载 -
新增持续集成工作流:每次推送自动执行类型检查、版本号一致性检查、数据库结构漂移检查。
性能与体积
- 内置标准库与核查命令库由 TS 常量改为
*.seed.json惰性解析(standards.ts约 1.4 万行 → 99 行,commands.ts约 4 千行 → 39 行),源码总量约 8.6 万行降至约 6.6 万行,未使用到的数据不再进入启动路径。 - 七种采集连接器驱动改为动态 import 懒加载,未使用的数据库驱动不再随启动加载。
重构(无功能变更)
- 自动保存核心逻辑抽为
useAutoSaveCore,三个页面的 composable 共用同一套语义(编辑态与脏标记分离) - Markdown 渲染统一到
src/utils/markdown.ts(唯一入口),日期 / 时长格式化收进src/utils/format.ts - 项目内导航抽为
useProjectNav,项目下拉取数收进project-options - 路由守卫的登录态判断收敛到
useUserStore;4 处纯展示列表改用shallowRef
兼容性
数据库结构无变更,可直接覆盖升级;首次启动仍会自动备份数据文件。