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回归)
This commit is contained in:
2026-06-18 19:37:21 +08:00
parent fcda651760
commit dfa3a585c5
14 changed files with 1454 additions and 958 deletions
+20 -26
View File
@@ -1,46 +1,40 @@
# Changelog
All notable changes to this project will be documented in this file.
## [0.2.0] - 2026-06-18
### Added
- **VSCode 内置 Diff 编辑器**:不再使用自定义 Webview,直接调用 `vscode.diff` 展示差异
- **EditRecord 粒度**:每次 Edit/Write 创建独立 EditRecord,支持逐编辑 Accept/Reject
- **QuickPick 文件列表**:Stop 后弹出原生 QuickPick 文件列表,点击即打开内置 Diff
- **导航快捷键**:`Alt+↑/↓` 在变更文件间跳转
- **配置项**:`autoShowDiffPerEdit`(每次编辑自动弹 Diff)、`showAllDiffsOnStop`(Stop 后弹文件列表)、`floatingLabelMode`(浮动标签位置)
- **新命令**:`showCurrentFileDiff`、`acceptCurrentEdit`、`rejectCurrentEdit`、`nextDiff`、`prevDiff`
- **新快捷键**:`Alt+↑/↓`、`Ctrl+Shift+D`、`Ctrl+Shift+F`
- VSCode 内置 Diff 编辑器 (vscode.diff) — 零 Webview 依赖
- EditRecord 独立追踪 — 每次 Edit/Write 独立记录,不合并
- QuickPick 总览 — 文件列表 + Accept All / Reject All
- 智能 Auto-Advance — Accept/Reject 后自动推进,同文件多编辑智能停留
- 状态栏常驻 — $(diff) AI Diff 始终可见
- 零保存提示 — 临时文件方案自动清理
- 新命令: showCurrentFileDiff, acceptCurrentEdit, rejectCurrentEdit, nextDiff, prevDiff
- 新快捷键: Alt+↑/↓, Ctrl+Shift+D, Ctrl+Shift+F
- 新配置: autoShowDiffPerEdit, showAllDiffsOnStop, floatingLabelMode
### Fixed
- **Bug Fix**: Accept 后同文件再编辑不再触发 Accept/Reject 选项,且 Diff 合并的问题
- 根因:`recordEdit()` 对同文件多次编辑更新同一个 `FileChange` 对象
- 修复:已 accepted/rejected 的 `FileChange` 后再次编辑时自动创建新 `FileChange`,清除 `originalContents` 缓存
- Accept 后同文件再编辑不再触发选项 (FileChange pending-priority 匹配)
- Accept All / Reject All 写入与状态顺序修复
- accept/reject 后自动推进到下一个待处理文件
### Changed
- `ChangeSetManager` 重构为 `EditRecord[]` 独立记录模式
- `FileChange` 变为聚合视图(持有 `edits: EditRecord[]`)
- `HookHandler` 支持 `autoShowDiffPerEdit` / `showAllDiffsOnStop` 配置分支
- `ReviewPanel` Webview 降级为次要选项(保留兼容)
- 版本号升级至 `0.2.0`
- ChangeSetManager 重构为 EditRecord 独立记录 + FileChange 聚合模式
- HookHandler 精简为纯处理逻辑
- ReviewPanel 降级为备用, 主流程使用 QuickPick + 内置 Diff
- 版本号升级至 0.2.0
## [0.1.0] - 2026-06-17
### Added
- 项目初始化
- 核心架构搭建
- 快照管理器实现
- Diff 引擎实现(基于 Myers 算法)
- 快照管理器
- Diff 引擎 (Myers 算法)
- Webview Review 面板
- 内联装饰器渲染
- CodeLens 提供器
- Accept/Reject 事务处理
- Claude Hooks 集成
- 状态栏显示
- 基础测试用例
### Technical
- TypeScript + VSCode Extension API
- diff 库集成
- esbuild 构建流程
- Vitest 测试框架
- 基础测试用例