feat: v0.11.0 导出报告全面增强 - 新增Patch标准差异第四格式(标准unified diff含hunk头/上下文3行/modified展开-旧+新/尾部无换行标记,产物可直接git apply;canBuildPatch逐行判定判等选项污染,不可导出时菜单禁用+title解释+App双保险拦截)、TXT/Markdown报告分块省略(复用buildSegments段间省略提示行,MD每段独立成表;完全一致保持全量留档语义)、报告元信息增强(版本号进尾部署名/文件夹报告忽略规则说明行超5条截断/快照基线内容对照导出附对照说明含保存时间/HTML文件卡行数修正为原始文本口径)、导出目录记忆(windowState新增lastReportDir独立于lastDir),新增33单测与2条E2E(666单测+32E2E全过覆盖率97.85/93.06/93.7/97.85),文档四件套同步

This commit is contained in:
2026-08-20 13:54:08 +08:00
parent 79ba3055cc
commit 4fd8506ffb
16 changed files with 705 additions and 84 deletions
+8 -1
View File
@@ -20,7 +20,7 @@ z = 补丁版本号(Patch
> **`x` 永远是 `0`,永远不要提升到 `1.0.0`。**
> 版本迭代**只允许修改 `y` 和 `z`**`x` 保持 `0` 不变。
当前基线版本:**`0.10.5`**
当前基线版本:**`0.11.0`**
---
@@ -156,6 +156,13 @@ z = 补丁版本号(Patch
- 换目录视图状态重置(确定性缺陷修复):重新选择新目录对后,旧搜索词/状态过滤/扩展名过滤/折叠集合/变迁过滤此前全部残留并静默生效(旧目录的折叠路径让新目录同名目录意外折叠、旧关键字继续过滤新列表)——现目录对变化即重置全部视图层状态;同目录重扫(leftDir/rightDir 不变)不触发,保留用户视图
- 跨模式搜索一致性:Ctrl+F 此前仅单文件模式生效——现文件夹模式聚焦文件名搜索框(App 分流 ref);文件夹搜索框补齐 Esc 清空与失焦(与单文件搜索框同款行为);两个搜索框均有内容时显示 × 一键清空按钮(清空后聚焦回输入框,鼠标流与键盘流双入口)
- 测试与文档:新增 19 单测(diffEngine 字符统计 7 / Toolbar 徽章与清空按钮 4 / FolderView 快照下拉与重置、Esc、ref、清空 5 / report 字符统计行 1 / App 集成 2,另有既有快照用例的下拉两步化改写)与 E2E 字符徽章断言(快照用例同步改写下拉交互),共 658 单测 + 30 E2E
0.11.0 ← 导出报告全面增强:Patch 标准差异 · TXT/MD 分块省略 · 报告元信息 · 导出目录记忆(已发布):
- Patch 标准差异导出(第四格式,报告从"人读"扩展到"机器可用"):单文件导出菜单新增「Patch 标准差异」——标准 unified diffgit diff 风格,`--- a/文件` / `@@ -l,c +l,c @@` hunk 头 / 上下文 3 行 / modified 行展开 -旧+新 / 尾部无换行 `\ No newline at end of file` 标记),产物可直接 git apply / patch 消费;默认文件名 DiffLens-patch-{时间戳}.patchhunk 结构复用 buildSegments 分块(段间省略天然由 hunk 行号跳转表达);无变更输出空 diff(仅文件头,与 git 行为一致)
- Patch 判等污染守卫:判等类比较选项(忽略大小写/所有空白/字符级)会把两侧实际不同的文本判为 unchanged(上下文行),此类 patch 无法正确应用——导出前逐行扫描 unchanged 行两侧文本一致性精确判定(canBuildPatch,碰巧未触发判等差异的场景仍可导出,比"有选项就禁用"宽松);不可导出时菜单项禁用并 title 解释原因,App 导出路径双保险拦截
- TXT/Markdown 报告分块省略(与 HTML 信息架构对齐):此前两格式全量输出全部行(5 万行文件报告数 MB 且相同行淹没差异)——现复用 buildSegments(上下文 3 行),段间以「⋯ 省略 N 行相同内容 ⋯」提示行替代(Markdown 每段独立成表重复表头,省略行作为段落间隔);完全一致场景保持全量展示(留档语义);HTML 明细的折叠语义不变
- 报告元信息增强:①生成器版本号进全部格式尾部署名("生成于 DiffLens vX.Y.Z",经 app:get-version 取 package.json 唯一来源;长期存档报告可追溯产出版本)②文件夹报告头部新增忽略规则说明行(有规则时,"忽略规则:node_modules/、*.log(命中项不参与对比)",超 5 条截断计数——脱离应用后可辨识条目缺失原因)③快照基线内容对照导出的报告头部新增对照说明("左侧为快照基线(保存于 …),右侧为当前文件"——脱离应用后可辨识数据来源,测试策略第 9 节"快照内差异内容的报告导出"演进方向落地)④HTML 文件卡行数修正为原始文本口径(此前按 rows 统计,忽略空行开启时空行被剔除致偏小)
- 导出目录记忆:file:save-report 保存对话框起始目录记忆上次成功导出位置(windowState 新增 lastReportDir 字段,与 lastDir 语义不同独立记忆;取消保存不记忆)——频繁导出无需每次从文档目录重新导航
- 测试与文档:新增 33 单测(report patch 构建器 8 / canBuildPatch 判定 5 / TXT·MD 分块 4 / 元信息 3 / folderReport 忽略规则与版本号 4 / Toolbar patch 菜单项 3 / windowState lastReportDir 1 / App 快照对照导出集成 1,另修复分块影响的既有 TXT 断言)与 2 条 E2E(patch 真实落盘断言 hunk 头与增删行 / 忽略大小写下 Patch 项禁用),共 666 单测 + 32 E2E
...
0.y.z ← 长期停留,永不进入 1.x
```