Skip to content

v2.4.7

Choose a tag to compare

@SelinuxJXM SelinuxJXM released this 10 Oct 13:31
· 3 commits to main since this release

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

兼容性

数据库结构无变更,可直接覆盖升级;首次启动仍会自动备份数据文件。