Repository navigation
FlashDir v3.5.2
FlashDir v3.5.2 Release Notes
自 3.5.1 以来的累积更新:缺陷修复 + 一轮全量性能优化(每项都有 release 实测前后对比;
测量口径、以及被实测证伪的尝试见 docs/perf.md)。
性能(release 实测,本机真实数据:全局索引 311 万条)
| 项目 | 结果 |
|---|---|
| 启动索引构建 | 2.27 s → 0.66 s(−70.8%) |
| 检索翻页(连续加载 10 页) | 215 ms → 1.16 ms;越界翻页 → 200 ns |
| 中文(CJK)包含匹配 | −28~38% |
| 全局索引常驻内存 | −50 MB(name_lower 内联;文本类查询同时 −10~19%) |
| 目录缓存 blob | 体积 −20.6%、解码 −33.3% |
| 索引载入期间目录缓存阻塞 | 1491 ms → 0.2 ms |
| 索引库体积 / 载入 / 首次启动冻结 | −19.3% / −14.5% / 53 s → 1.3 ms |
界面
- 索引构建期间可见"进行中":状态栏显示呼吸状态点 + "扫描中 · 已用 Ns",右下角进度卡
追加"已用 Ns"。此前状态栏只按条目数判断,构建期条目数仍为 0,于是整个过程都显示
"未建立",建完直接跳成"N 项"(只有两态);且首次启动时后端"开始构建"的事件可能早于
前端注册监听而被丢弃,导致界面完全看不到构建发生——现改为notLoaded也做有界轮询。
兼容性提醒(磁盘索引/缓存格式):本版把
global_index表从 9 列收拢为 4 列
(去掉name/name_lower/ext/drive/created_at这些只写不读的列)。
收拢只在用户主动"重建索引"时发生;启动路径不会改动老库结构,也不会再有首次启动的
长时间迁移(最初实现为启动期同步执行约 42s,已改掉:实测 53.3s → 1.31ms)。收拢后:
- 缓存库体积约 −19%、全局索引载入约 −15%;
- 旧版本(≤3.5.1)将无法再向全局索引写入(其 INSERT 引用了已删除的列),表现为
索引不再落盘、下次启动需重建;内存中的搜索不受影响。若要回退到旧版本,删除
%USERPROFILE%\.flashdir\cache_v2.db后用旧版本重建索引即可;- 收拢不可逆,没有回滚路径;
- 老库(未重建过)保持原样,读写行为与旧版本一致。
本轮为 3.5.2 的缺陷修复,主题分类如下(详细逐项验证结论见提交说明):
- 前端主题令牌:统一深/浅色设计令牌,修正主题切换后局部颜色未跟随的问题。
- 索引分桶正确性:修正包含匹配被首字符分桶截断、分桶快路径只适用于正向
前缀*条件。 - USN 一致性:修正取消代号、已校验 USN 与增量窗口失效后的回退路径,避免返回陈旧结果。
- 非 Windows 编译:补齐平台门控,避免在非 Windows 目标上引用 Windows 专有符号。
- MFT 解析边界:修正记录解析的边界与占位记录处理,避免脏数据进入结果与索引。
- 分析引擎正确性:重复文件、开发缓存与快照差异统计的口径与排序修正。
- MCP 加固:请求头与请求体上限、令牌常量时间比较与全方法校验、工具标注。
- 文档与 CI 校准:README 与 MCP 设计文档对齐当前实现;CI 增补生产嵌入构建与 MCP 自测。