diff --git a/CHANGELOG.md b/CHANGELOG.md index a27bf85..edb208a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,17 +6,9 @@ ## [Unreleased] -### Fixed +## [0.0.17] - 2026-09-09 — Log 提交详情常驻面板 · VS Code 1.136 最佳实践对齐 · 稳定性与体验修复 -- **Merge 编辑器「保存→拒绝强制保存→取消」路径失效**:webview 回调内重复调用 `acquireVsCodeApi()`(每个 webview 仅允许调用一次,第二次抛异常),改为脚本顶部获取后全程复用;交互式 Rebase 确认执行同理([issue #17](./docs/.agents/issue.md))。 -- **Commit 草稿丢失**:视图隐藏销毁后 message/amend/signoff/skipHooks 全部丢失且模板重灌覆盖。webview state 升 v3 按仓库持久化草稿,输入即时落盘(消除 200ms 防抖尾丢),提交成功清空([issue #18](./docs/.agents/issue.md))。 -- **切换深浅主题后 Graph 泳道色/引用胶囊停留旧主题**:泳道色原为启动期一次性快照,补 `MutationObserver` 监听 body 属性热重算并重渲(webview 不随主题切换重载)。 -- **分支树文件夹节点出现分支级菜单**:11 处 `viewItem =~` 正则未锚定误匹配 `hyperGit.branchFolder`(含 `hyperGit.branch` 子串),全部补 `^…$` 锚定。 -- **CLI 通道失败不可诊断**:`execFile` 丢弃 stderr,现透传挂到错误对象并记入 Console(与 vscode.git API 通道的 GitError.stderr 提取对齐)。 -- **交互 Rebase 的 reword 可能拉起新 VS Code 窗口**:`GIT_EDITOR` 经 `process.execPath`(扩展宿主内为 Electron 二进制)运行 helper,补 `ELECTRON_RUN_AS_NODE=1`。 -- **窗口 reload 后 Rebase / Merge 面板空白**:两个 `retainContextWhenHidden` 面板补 `registerWebviewPanelSerializer`(Rebase 按 webview state 恢复用户编辑后的 todo,Merge 按 filePath 重拉冲突三阶段)。 -- **git 扩展不可用时 Branches/Stash/Shelf 视图报 "no tree view registered"**:补空 provider(viewsWelcome 正常触发),Commit/Graph 渲染静态占位说明页。 -- **Blame 注解**:悬浮信息换行折叠(改 MarkdownString);split 编辑器无注解、已关闭文档条目泄漏(订阅可见编辑器变化统一挂载/清理)。 +自 v0.0.16 以来的积累(PR #115 / #116)。核心变更:**Log 提交详情由悬停浮层改为右侧常驻面板**(三区可拖拽分割线、窄视图自适应堆叠),并全面对齐 VS Code 1.136 控件 / 交互 / API 最佳实践(修复 9 项缺陷、Webview 控件全面主题化、能力声明与设置治理);新增长时 git 操作进度反馈、入门导览与默认键位、Stash / Worktrees 批量操作、分支 / 标签名即时校验等体验增强。完整用户视角叙述见 [Release Note v0.0.17](./docs/releases/v0.0.17.md)。 ### Added @@ -35,17 +27,23 @@ - **确认对话框多行正文迁 `MessageOptions.detail`**(本地/远程分支删除、Worktree 删除/prune);用户可见文案统一英文(分支删除确认、Conventional Commits 校验提示)。 - **能力声明与设置治理**:补 `extensionKind: workspace` 与 `untrustedWorkspaces: unsupported`;11 项设置补 `scope`;5 个预留设置(`ai.enabled` + `agent.*`)描述标注 Reserved 且默认值清除个人化内容(**默认值变更**:agent 偏好默认由内置模板改为空,即内置默认——此前内嵌个人签名等内容不再分发);palette 补 when 限定(Graph scope/List-Tree 切换、Accept Ours/Theirs 按冲突态显隐)。 - **同步 IO 清理**:Shelf 服务全量迁 `fs.promises`(原 `listShelves` 同步读阻塞 UI 线程);Worktree 路径归一 realpath 记忆化。 - -### Docs - - - - **Graph 视图工具栏整体上移 VS Code 标题栏(省一整行竖直空间)**:scope(All / Current / Checkpoints)改为 `$(layers)` 图标下拉子菜单(`toggled` 勾选、默认 All,置于 Refresh Graph 图标左侧);仓库路径常驻 `WebviewView.description` 副标题(标题「Graph」同行右侧);多仓库态「切换仓库」`$(repo)` 图标按钮与 CI「登录 GitHub」`$(sign-in)` 图标按钮(授权后自动隐藏)条件显隐;Changed Files 的 List ⇄ Tree 切换改为 `$(list-tree)`/`$(list-flat)` 互斥图标(交互同 Branches 分组切换,文案适配为 "Group Changed Files by Directory" / "Show Changed Files as Flat List")。scope 与 List/Tree 偏好随之移交 host `workspaceState` 按仓库持久化(`hyperGit.log.scope:` / `hyperGit.log.dmode:`)——**原 webview state 中的旧偏好一次性重置为默认**(All / flat;选中与目录折叠不受影响)。 - **提交详情三区分割线可拖拽**:图 ⇄ 面板(横向面板 ≥200px 且图区 ≥280px、纵向 18%–75%)与面板内 Changed Files ⇄ Commit 信息(15%–85%)两根 gutter,实时调比例、按仓库记忆、键盘可达(方向键 ±2%、Home/End 归边界)。 - **再次点击已选中的提交行 = 反向操作**:收起该提交的 Changed Files 与 Commit 详情面板(300ms 内双击第二击豁免,保留「双击即打开」语义;方向键/Home/End 边界防抖不误触)。 - - **Log 提交详情由悬停浮层改为右侧常驻面板**:点击 Graph 提交行即在图右侧于 webview 内水平分栏打开详情面板(上半 **Changed Files**——List/Tree 切换、点击打开 Diff;下半**提交信息**——作者/时间、HEAD/分支/远程/标签引用分组、完整消息、提交者(异于作者时)、变更统计、完整 SHA、Open on GitHub),深浅主题自适应。面板可见性 ⟺ 选中态:`×` 或 `Esc` 取消选中即收起,刷新 / webview 重载按仓库记忆恢复选中与面板;`log/selectCommit` 一次并行触达文件 + 详情两路数据(沿用切库竞态守卫,迟到 / 失败回包按 `forHash` 丢弃或显式「Details unavailable」占位,见 [`src/shared/protocol.ts`](./src/shared/protocol.ts))。原 `#commit-tip` 悬停浮层与 `i` 快捷键整体移除,行悬停不再弹层;底部 Changed Files 区随之并入面板上半区。窄视图(`#main` < 560px)自动退化为上下堆叠(面板 45%、图区保 55%),避免面板 280px 下限把提交图挤成零宽;面板收起守卫同时校验选中态与可见性,切到无记忆选中的仓库不残留上一仓库的面板内容。完整叙述见 [Log 提交详情面板](./docs/features/log-commit-detail-panel.md)。 +### Fixed + +- **Merge 编辑器「保存→拒绝强制保存→取消」路径失效**:webview 回调内重复调用 `acquireVsCodeApi()`(每个 webview 仅允许调用一次,第二次抛异常),改为脚本顶部获取后全程复用;交互式 Rebase 确认执行同理([issue #17](./docs/.agents/issue.md))。 +- **Commit 草稿丢失**:视图隐藏销毁后 message/amend/signoff/skipHooks 全部丢失且模板重灌覆盖。webview state 升 v3 按仓库持久化草稿,输入即时落盘(消除 200ms 防抖尾丢),提交成功清空([issue #18](./docs/.agents/issue.md))。 +- **切换深浅主题后 Graph 泳道色/引用胶囊停留旧主题**:泳道色原为启动期一次性快照,补 `MutationObserver` 监听 body 属性热重算并重渲(webview 不随主题切换重载)。 +- **分支树文件夹节点出现分支级菜单**:11 处 `viewItem =~` 正则未锚定误匹配 `hyperGit.branchFolder`(含 `hyperGit.branch` 子串),全部补 `^…$` 锚定。 +- **CLI 通道失败不可诊断**:`execFile` 丢弃 stderr,现透传挂到错误对象并记入 Console(与 vscode.git API 通道的 GitError.stderr 提取对齐)。 +- **交互 Rebase 的 reword 可能拉起新 VS Code 窗口**:`GIT_EDITOR` 经 `process.execPath`(扩展宿主内为 Electron 二进制)运行 helper,补 `ELECTRON_RUN_AS_NODE=1`。 +- **窗口 reload 后 Rebase / Merge 面板空白**:两个 `retainContextWhenHidden` 面板补 `registerWebviewPanelSerializer`(Rebase 按 webview state 恢复用户编辑后的 todo,Merge 按 filePath 重拉冲突三阶段)。 +- **git 扩展不可用时 Branches/Stash/Shelf 视图报 "no tree view registered"**:补空 provider(viewsWelcome 正常触发),Commit/Graph 渲染静态占位说明页。 +- **Blame 注解**:悬浮信息换行折叠(改 MarkdownString);split 编辑器无注解、已关闭文档条目泄漏(订阅可见编辑器变化统一挂载/清理)。 + ### Removed - **Graph 悬停浮层专用消息与死类型**:移除 `log/showCommitDetail`(webview → host,随浮层消亡)与编辑器区 Commit 详情面板实验遗留、全仓零引用的 `CommitDetailHostToWebviewMessage` / `CommitDetailWebviewToHostMessage` 协议类型([`src/shared/protocol.ts`](./src/shared/protocol.ts))。 @@ -54,8 +52,7 @@ - 新增 [Log 提交详情面板](./docs/features/log-commit-detail-panel.md)(布局分栏 / 交互数据流 Mermaid、边缘 Case、`forHash` 守卫语义);移除被替代的 `docs/features/log-commit-tooltip.md`,同步更新 [知识索引](./docs/.agents/knowledge-map.md)、[文档中心](./docs/README.md) 与 [变更文件目录树](./docs/features/file-list-group-by-directory.md) 表述。 - -## [0.0.16] - 2026-09-01 — 多根工作区仓库切换 · 分支分组树 · Agentic Git 预置 · 面板布局与 Diff 修复 + - 2026-09-01 — 多根工作区仓库切换 · 分支分组树 · Agentic Git 预置 · 面板布局与 Diff 修复 自 v0.0.14 以来的全量积累(承载 0.0.15 版本号预置——该版本号已就位但未单独发布,本版一并发布)。核心新特性:多根工作区多仓库切换、Branches 按 `/` 前缀分组树、Agentic Git 偏好配置与 Claude Code 配置预置(M5 前置铺垫)、Diff 缺失端修复与面板默认布局调整;工程侧升级 pnpm 12 与一批开发依赖。完整用户视角叙述见 [Release Note v0.0.16](./docs/releases/v0.0.16.md)。 diff --git a/docs/.agents/knowledge-map.md b/docs/.agents/knowledge-map.md index 868e95f..ff492da 100644 --- a/docs/.agents/knowledge-map.md +++ b/docs/.agents/knowledge-map.md @@ -29,7 +29,7 @@ - [工程实施方案](../docs/architecture/engineering-plan.md) — 路径 B 架构 + M0-M5 里程碑(**开发蓝图**)。 - [Git 功能矩阵](../docs/requirements/idea-feature-matrix.md) — 56 功能点 / 8 组(**验收基线**,参考 IDEA 等成熟实现)。 - [调研报告](../docs/research/README.md) — SCM 集成 / 工程蓝图 / 发布 CI / AI 接缝四路循证报告。 -- [发布说明](../releases/README.md) — 各正式版 Release Notes(GitHub Release 正文单一事实源;最新 [v0.0.16](../releases/v0.0.16.md))。 +- [发布说明](../releases/README.md) — 各正式版 Release Notes(GitHub Release 正文单一事实源;最新 [v0.0.17](../releases/v0.0.17.md))。 ## 架构分层(src/) > 依赖方向单向:`UI → Adapter → Engine`;`Agent` 以接口注入 `Engine`/`CommitPipeline`,不反向依赖 UI。 diff --git a/docs/README.md b/docs/README.md index df1aeaf..e43d718 100644 --- a/docs/README.md +++ b/docs/README.md @@ -14,7 +14,7 @@ - [Agentic Git 偏好配置](./features/agentic-git-preferences.md) — Agentic Git 预置:Base Branch + Commit / Create PR / Review 三项 agent 指令偏好(多行文本域 + 内置默认模板;M5 前置铺垫)。 ## 发布说明 -- [Release Notes 目录](./releases/README.md) — 各正式版发布说明(GitHub Release 正文单一事实源);最新:[v0.0.16 多根工作区仓库切换 · 分支分组树 · Agentic Git 预置](./releases/v0.0.16.md)。 +- [Release Notes 目录](./releases/README.md) — 各正式版发布说明(GitHub Release 正文单一事实源);最新:[v0.0.17 Log 提交详情常驻面板 · VS Code 1.136 最佳实践对齐](./releases/v0.0.17.md)。 ## 调研报告(循证依据) - [02 · VS Code SCM API 与 vscode.git 集成路径](./research/02-vscode-scm-integration.md) — 路径 B 决策依据、SCM 稳定/proposed API 边界、changelist 模型映射。 diff --git a/docs/releases/README.md b/docs/releases/README.md index 2baf36a..6462bd7 100644 --- a/docs/releases/README.md +++ b/docs/releases/README.md @@ -8,6 +8,7 @@ | 版本 | 说明 | 日期 | |---|---|---| +| [v0.0.17](./v0.0.17.md) | Log 提交详情常驻面板 · VS Code 1.136 最佳实践对齐 · 稳定性与体验修复 | 2026-09-09 | | [v0.0.16](./v0.0.16.md) | 多根工作区仓库切换 · 分支前缀分组树 · Agentic Git 预置 · Diff 修复与面板布局优化 | 2026-09-01 | | [v0.0.14](./v0.0.14.md) | 修复 GRAPH 视图提交记录时间倒序(`--topo-order` → `--author-date-order`) | 2026-07-06 | | [v0.0.13](./v0.0.13.md) | 视图容器由活动栏迁移至底部 Panel(Terminal 之后) | 2026-07-05 | diff --git a/docs/releases/v0.0.17.md b/docs/releases/v0.0.17.md new file mode 100644 index 0000000..e38cbf0 --- /dev/null +++ b/docs/releases/v0.0.17.md @@ -0,0 +1,86 @@ +# Hyper Git - Agentic Git v0.0.17 — Log 提交详情常驻面板 · VS Code 1.136 最佳实践对齐 · 稳定性与体验修复 + +> 本版核心:**Log 提交详情由悬停浮层升级为右侧常驻面板**(三区可拖拽分割),并**全面对齐 VS Code 1.136 控件 / 交互 / API 最佳实践**——修复 9 项缺陷、Webview 控件全面主题化;新增长时 git 操作进度反馈、入门导览与默认键位、Stash / Worktrees 批量操作、分支 / 标签名即时校验等体验增强。 + +--- + +## ✨ 亮点速览 + +- **Log 提交详情常驻面板**:点击 Graph 提交行即在图右侧常驻打开详情面板——上半 **Changed Files**(List / Tree 切换、点击打开 Diff),下半**提交信息**(作者 / 时间、HEAD / 分支 / 远程 / 标签引用分组、完整消息、变更统计、完整 SHA、Open on GitHub)。`×` 或 `Esc` 取消选中即收起,刷新 / 重载按仓库记忆恢复;窄视图自动退化为上下堆叠。 +- **VS Code 1.136 最佳实践对齐(9 项缺陷修复)**:Merge 编辑器「保存 → 拒绝强制保存 → 取消」路径失效(`acquireVsCodeApi` 重复调用)、Commit 草稿丢失(按仓库持久化)、深浅主题切换后 Graph 泳道色停留旧主题、窗口 reload 后 Rebase / Merge 面板空白、git 扩展不可用时视图报错等全部修复。 +- **长时操作进度反馈**:pull / push / fetch / merge / rebase / cherry-pick / reset 等以 `withProgress` 呈现进度,失败通知附 "Show Output" 直达 Console。 +- **入门导览与默认键位**:新增 Get Started 五步导览(walkthroughs);`Alt+B` 切换 Blame 注解、`Alt+G` 打开 Graph 过滤。 +- **Stash / Worktrees 批量操作**:两视图支持多选批量 Drop / Remove(跳过 main 与当前打开项),操作后自动聚焦。 +- **Graph 工具栏上移标题栏**:scope 改图标下拉、仓库路径常驻副标题、多仓库切换与 GitHub 登录图标按钮——省一整行竖直空间。 +- **Webview 控件全面主题化**:滚动条 / checkbox / 下拉 / 阴影 / 字号全部走 VS Code 主题变量(随用户字号设置缩放);高对比度主题下 Graph 胶囊改描边呈现。 +- **文件状态字母标记**:`●` 色点改为 M / A / U / R / D / C 着色字母(色盲可辨,对齐官方 SCM)。 + +--- + +## 🧩 特性详述 + +### 1. Log 提交详情常驻面板(#115) + +原 `i` 悬停浮层整体升级为**右侧常驻面板**:点击 Graph 提交行即在图右侧于 webview 内水平分栏打开——上半 **Changed Files**(List ⇄ Tree 切换、点击打开 Diff),下半**提交信息**(作者 / 时间、HEAD / 分支 / 远程 / 标签引用分组、完整消息、提交者(异于作者时)、变更统计、完整 SHA、Open on GitHub),深浅主题自适应。 + +- **面板可见性 ⟺ 选中态**:`×` 或 `Esc` 取消选中即收起;刷新 / webview 重载按仓库记忆恢复选中与面板; +- **窄视图自适应**:`#main` < 560px 时自动退化为上下堆叠(面板 45% / 图区 55%),避免面板把提交图挤成零宽; +- **三区分割线可拖拽**:图 ⇄ 面板与面板内 Changed Files ⇄ 提交信息两根 gutter,实时调比例、按仓库记忆、键盘可达(方向键 ±2%、`Home` / `End` 归边界); +- **再次点击已选中的提交行 = 反向操作**:收起详情面板(300ms 内双击第二击豁免,保留「双击即打开」语义)。 + +原悬停浮层与 `i` 快捷键移除。完整叙述见 [Log 提交详情面板](../features/log-commit-detail-panel.md)。 + +### 2. VS Code 1.136 最佳实践对齐(#116,9 项缺陷修复) + +- **Merge / Rebase 编辑器路径失效**:webview 回调内重复调用 `acquireVsCodeApi()`(每个 webview 仅允许一次,第二次抛异常)——改为脚本顶部获取后全程复用; +- **Commit 草稿丢失**:视图隐藏销毁后 message / amend / signoff / skipHooks 全部丢失且模板重灌覆盖——webview state 升 v3 **按仓库持久化草稿**,输入即时落盘,提交成功清空; +- **主题热切换泳道色停留旧主题**:泳道色原为启动期一次性快照,补 `MutationObserver` 监听 body 属性热重算并重渲; +- **分支树文件夹节点出现分支级菜单**:11 处 `viewItem =~` 正则未锚定误匹配,全部补 `^…$` 锚定; +- **CLI 通道失败不可诊断**:`execFile` 丢弃 stderr,现透传挂到错误对象并记入 Console; +- **交互 Rebase 的 reword 可能拉起新 VS Code 窗口**:补 `ELECTRON_RUN_AS_NODE=1`; +- **窗口 reload 后 Rebase / Merge 面板空白**:补 `registerWebviewPanelSerializer`(Rebase 恢复编辑后的 todo,Merge 重拉冲突三阶段); +- **git 扩展不可用时视图报 "no tree view registered"**:补空 provider(viewsWelcome 正常触发); +- **Blame 注解**:悬浮信息换行折叠(MarkdownString);split 编辑器无注解、已关闭文档条目泄漏修复。 + +### 3. 体验增强 + +- **长时操作进度反馈**:pull / push / fetch / merge / rebase / cherry-pick / reset / updateProject 以 `withProgress` 呈现(默认标题栏非阻塞);git 操作失败通知附 "Show Output" 按钮直达 Console; +- **入门导览与默认键位**:Get Started with Hyper Git 五步导览(walkthroughs);`Alt+B` 切换 Blame 注解、`Alt+G` 打开 Graph 过滤(Commit 输入框 `Ctrl/Cmd+Enter` 提交原有内建保留); +- **Stash / Worktrees 批量操作**:多选批量 Drop(按 index 降序防位移)/ Remove(跳过 main 与当前打开项);新建后聚焦对应视图; +- **分支 / 标签名即时校验**:git check-ref-format 的 UI 子集纯函数挂接全部 8 处输入框; +- **QuickPick 体验**:提交选择器 hash 前缀可搜、Rebase / 标签目标分段 Separator、Commit 文件菜单 codicon 图标; +- **Commit 文件列表键盘导航**:ArrowUp / Down / Home / End / Enter / Escape 容器级焦点;Rebase 拖拽补 `Alt+↑/↓` 键盘替代。 + +### 4. 工程现代化 + +- **Webview 控件全面主题化**:滚动条走 `--vscode-scrollbarSlider-*`、checkbox `accent-color`、下拉统一 `--vscode-dropdown-*`、阴影 `--vscode-widget-shadow`;字号以 `--vscode-font-size` 为基准 calc 派生;高对比度主题 Graph 胶囊改描边;Graph 行高 / 泳道列宽常量单源化; +- **文件状态字母标记**:`●` 色点改为 M / A / U / R / D / C 着色字母;8 处 Unicode 字符图标全部 SVG 化; +- **日志通道现代化**:两 OutputChannel 迁 `LogOutputChannel`(自动时间戳与级别),懒创建并随扩展释放; +- **能力声明与设置治理**:补 `extensionKind: workspace` 与 `untrustedWorkspaces: unsupported`;11 项设置补 `scope`;palette 补 `when` 限定;确认对话框多行正文迁 `MessageOptions.detail`;Shelf 服务全量迁 `fs.promises`(消除同步 IO 阻塞 UI 线程)。 + +--- + +## ⚙️ 升级与兼容 + +- **agent 偏好默认值变更**:`hyperGit.agent.commitPreferences` / `createPrPreferences` / `reviewPreferences` 默认值由内嵌个人化模板改为**空(= 内置默认)**——此前默认值中的个人化内容不再分发;已自定义过的用户不受影响; +- **Graph scope / List-Tree 偏好一次性重置为默认**(All / flat):偏好自 webview state 移交 host `workspaceState` 按仓库持久化,旧偏好不迁移(选中与目录折叠不受影响); +- **悬停浮层与 `i` 快捷键移除**:提交详情统一走点击行的右侧常驻面板; +- **不信任工作区不激活**:补 `untrustedWorkspaces: unsupported` 能力声明(对齐官方安全基线); +- **无破坏性命令 / 视图变更**:全部命令、视图、配置项保留(悬停浮层消息通道为内部实现移除)。 + +--- + +## 📦 安装 + +- **VS Code Marketplace**:搜索 `Hyper Git - Agentic Git` 直接安装或更新。 +- **手动**:从 [Releases](https://github.com/ThreeFish-AI/hyper-git/releases/tag/v0.0.17) 下载 `hyper-git-agentic-git-0.0.17.vsix` → 命令面板 `Extensions: Install from VSIX`(Cursor / Windsurf / VSCodium 等用户可经此方式安装)。 + +**系统要求**:VS Code ≥ 1.85.0,且启用内置 Git 扩展(`vscode.git`,默认随附)。仅支持本地 git 仓库,不支持虚拟 / Web 工作区。 + +--- + +## 💬 反馈 + +欢迎在 [GitHub Issues](https://github.com/ThreeFish-AI/hyper-git/issues) 反馈问题与建议。完整工程视角变更记录见 [CHANGELOG](../../CHANGELOG.md)。 + +许可证:[MIT](https://github.com/ThreeFish-AI/hyper-git/blob/master/LICENSE)。 diff --git a/package.json b/package.json index 8c8bf14..0238a46 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "theme": "dark" }, "description": "Hyper Git brings IntelliJ IDEA's powerful Git & Commit modules to VS Code, enhanced with AI-powered autonomous agents for intelligent repository management. Experience Git in a higher dimension.", - "version": "0.0.16", + "version": "0.0.17", "publisher": "ThreeFish-AI", "license": "MIT", "preview": true,