Files
ai-diff-preview/测试.md
T
Gmarker689 dfa3a585c5 v0.2.0: VSCode内置Diff + QuickPick总览 + EditRecord粒度 + Bug修复
新增:
- VSCode内置Diff编辑器 (diffViewer.ts) 替代Webview,零保存提示
- EditRecord独立追踪: 每次Edit/Write不合并,支持逐次编辑Accept/Reject
- QuickPick文件列表总览,含Accept All / Reject All
- 智能Auto-Advance: Accept/Reject后自动推进,同文件多编辑智能停留
- 状态栏常驻显示  AI Diff,Diff模式下切换为操作按钮

修复:
- Accept后同文件再编辑不触发选项 (pending-priority匹配)
- Accept All / Reject All写入与状态顺序修复
- acceptFile/rejectFile改为先写入成功再标记状态
- 同文件多个FileChange孤儿编辑问题

变更:
- ChangeSetManager重构为EditRecord[] + FileChange聚合
- HookHandler精简,QuickPick移入hookHandler
- 移除InlineDecorator/CodeLens (主流程),ReviewPanel降级为备用
- package.json: publisher=YonHao Guo, repository, v0.2.0, 新配置项/快捷键

测试: 13/13通过 (7 diffEngine + 6 changeSetManager回归)
2026-06-18 19:37:21 +08:00

2.7 KiB

AI Diff Preview 测试文件

这是一个测试文件,用于验证 AI Diff Preview 插件的完整工作流程。

已完成功能

  • ✅ 快照管理(Base/Suggest 双版本隔离)
  • ✅ Diff 计算引擎(Myers 算法 + 变更块切割)
  • ✅ Accept/Reject 事务处理(原子化写入)
  • ✅ Claude Hooks 集成(PostToolUse 触发)
  • ✅ 内联装饰器渲染(红绿高亮)
  • ✅ CodeLens 按钮(逐块操作)

待实现功能

  • Diff 面板(多文件对比视图)
  • 冲突检测(用户手动修改检测)
  • 状态栏集成
  • 快捷键绑定

测试说明

修改此文件后,PostToolUse hook 会触发 VSCode 扩展, 自动创建快照并显示 Diff 预览,可通过 Accept/Reject 操作变更。

测试记录

  • 2026-06-17: 第一次测试 hook 触发链路
  • 2026-06-17: 第二次测试 - 改为原生 Diff Editor 方案
  • 预期效果: 对话结束后弹出通知,点击后打开 VSCode 原生双栏 Diff
  • 状态: 重启后测试

新增测试内容

这段文字用于验证 PostToolUse hook 能否正确收集变更, 并在对话结束后通过 VSCode 原生 Diff Editor 展示。

第三轮测试

  • 改为内嵌 Webview 悬浮窗
  • 双栏 Diff + Accept/Reject 按钮
  • 不弹系统窗口,全部在面板内操作
  • 时间: 2026-06-17 22:40

第四轮测试

  • 修复命令名: showReviewPanel → showDiffPanel
  • 修复 Reject: 拒绝时回写原始内容到磁盘
  • 新增 rejectFileChange 方法
  • 预期: 点击 Reject 后文件恢复原状

第五轮测试 - 内嵌悬浮窗验证

这次修改用于验证:

  1. Webview 面板能否正常弹出
  2. 双栏 Diff 是否正确显示新增/删除行
  3. Accept 按钮是否生效
  4. Reject 按钮是否回写原始内容

测试时间: 2026-06-17 23:00

第六轮测试

  • 修复了所有已知问题
  • 现在应该能正常工作
  • 验证: 面板弹出 + Accept/Reject + 文件回写

第七轮测试

改动内容:

  • 语法错误已修复
  • API 调用已优化
  • 新增错误处理逻辑

以下为原始代码(已删除):

function oldApi() {
  return fetch('/api').then(r => r.json());
}

替换为新的 async/await 写法:

async function newApi() {
  const res = await fetch('/api');
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  return res.json();
}

第八轮测试

  • 代码添加了错误处理
  • 验证 CodeLens 按钮和状态栏是否正常显示
  • 验证 Accept / Reject 快捷键是否生效

第九轮测试 - 多文件变更

同时修改了 3 个文件:

  1. 测试.md - 本文件
  2. test1.md - 新增功能模块
  3. test2.md - 新增 API 和模块

验证:

  • 状态栏显示 "3文件 N编辑"
  • 点击弹出 Webview 总览面板
  • 每个文件可展开查看详细 Diff
  • Accept/Reject 按钮正常生效