v0.6.2
v0.6.2 — 缓存正确性与快路径修复
修复上一版 CI 门禁暴露的问题,并把内容寻址缓存升级为真正的 correctness cache。
CI
- 修复 CI 唯一红灯:无 traineddata 时 smoke:ocr 的缓存目录计数对 ENOENT 返回 0
- actions/checkout、setup-node 升级到 v7(消除 Node 20 runner 弃用告警),Node 20/22 双矩阵全绿
缓存正确性
- 缓存目录 id 从 8 hex 升到 16 hex(64 bit 碰撞空间);manifest.sourceHash 存完整 SHA-256,命中时严格相等——短 id 碰撞不再同时击穿两边
- 新增转换策略指纹 converterFingerprint(schema + 插件版本 + 引擎/OCR/doc-server 策略 + 外部二进制可用性):切换引擎或 OCR 配置后旧缓存自动失效、重跑当前引擎,不再吃到昨天的 tesseract 结果
- manifest 不再缓存索引卡字符串,只存结构化 metadata;缓存命中时永远用当前文件名重建索引卡——字节相同的不同文件不再显示串名
- schema 升到 v2,旧缓存自动失效重解析
性能与产品
- 小 PDF 快路径:直插结果不再先整本光栅化页面图;页面图惰性生成,只有走索引卡路径才渲染
- 2–16MB 的文本文件(工作区零拷贝未命中时)不再被浏览器 2MB 上限拒绝,直接交主机 text-cache 全量落盘;>16MB 才拒绝
- TTL 语义对齐「未访问」:cleanup 纳入主文档 atime/mtime,模型直接用 read 工具读 doc.md 也算访问;文案改为「约 7 天未访问」
工程化
- 消除 CacheSettings/AttachDock 的 React key 警告,smoke-client 新增 key 警告门禁
- engines 提升到 Node >=20,与 CI 验证矩阵一致
- 新增门禁:缓存身份(16 hex/完整哈希)、atime 续期、同字节换引擎不命中旧缓存