diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2b0c438..4a23162 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -70,10 +70,13 @@ jobs: # rc tag 以 --pre-release 打包:VS Code 要求「预发布 VSIX」在打包时即标记, # 否则 publish job 的 `vsce publish --pre-release` 会报「未以 pre-release 打包」而失败。 # 与 publish 步骤同款 PRE_FLAG 判定,保证同一枚 VSIX 贯穿 GitHub Release 与 Marketplace。 + # vsce 经 `pnpm exec` 取项目锁定版本(devDependencies 已含 @vscode/vsce): + # pnpm 12 起 dlx 临时环境对未审批构建脚本(@vscode/vsce-sign/keytar)由警告升级为硬失败, + # 而项目自身的 allowBuilds 审批仅作用于项目安装。 - name: 打包 vsix(rc tag 自动带 --pre-release) run: | PRE_FLAG=$([[ "${GITHUB_REF_NAME}" == *rc* ]] && echo "--pre-release" || echo "") - pnpm dlx @vscode/vsce package --no-yarn $PRE_FLAG + pnpm exec vsce package --no-yarn $PRE_FLAG - uses: actions/upload-artifact@v7 with: name: vsix @@ -123,10 +126,11 @@ jobs: name: vsix # VS Code Marketplace 发布:由仓库变量 ENABLE_MARKETPLACE_PUBLISH 门控(=true 时发布)。 # 需配置 VSCE_PAT(Azure DevOps PAT,scope: Marketplace → Manage);rc tag 自动以 --pre-release 发预发布通道。 + # 与 package job 同款 `pnpm exec vsce`(项目锁定版本,规避 pnpm 12 dlx 对未审批构建脚本的硬失败)。 - name: 发布到 VS Code Marketplace if: ${{ vars.ENABLE_MARKETPLACE_PUBLISH == 'true' }} run: | PRE_FLAG=$([[ "${GITHUB_REF_NAME}" == *rc* ]] && echo "--pre-release" || echo "") - pnpm dlx @vscode/vsce publish --packagePath *.vsix $PRE_FLAG + pnpm exec vsce publish --packagePath *.vsix $PRE_FLAG env: VSCE_PAT: ${{ secrets.VSCE_PAT }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b13043..21f3b8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,20 +6,34 @@ ## [Unreleased] +## [0.0.16] - 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)。 + ### Added -- **多根工作区仓库切换(issue #107)**:多根工作区含多个 Git 仓库时,Graph 工具栏仓库名升级为**可切换按钮**(对标 Git Graph;单仓库退化为纯文本,多数用户零感知),Command Palette 亦可经 `Hyper Git: Select Repository…` 直达。切换**全局活跃仓库**——Graph / Branches / Commit(changelist)/ Stash / Shelf / Worktrees / 未提交角标七视图级联跟随,活跃仓库持久化于 `workspaceState`(`hyperGit.activeRepoRoot`,重开窗口回到上次操作的仓库)。**按仓库隔离记忆**:changelist 分配 / 分支收藏 / 分支分组偏好(`setRepoRoot` 重绑 + context key 同步)、Shelf 存储(`shelves/./` 随活跃仓库动态求值,旧平铺数据一次性安全迁移:仅 rename、零删除零覆盖)、最近提交消息(per-repo key,旧全局 key 回落一次)、Graph/Commit webview 视图状态(scope/选中/勾选集等 v2 `byRepo` 分区)。选取逻辑下沉纯函数 [`engine/git-state/repo-selection.ts`](./src/engine/git-state/repo-selection.ts)(持久化恢复 → folder0 匹配 → 首个仓库三级优先),**三重顺序不变量**保证 rebind 先于视图刷新;Blame 注解切库自清理;顺带修复激活竞态(repo 发现晚于 activate 时 memento key 落占位根)。集成测试新增 multi-root 双仓库 fixture 套件(`tests/suite/multi-root.test.js`,`activate()` 导出 `{ service }` 程序化接缝)。完整叙述见 [多根工作区仓库切换](./docs/features/multi-root-repo-selection.md)。 +- **多根工作区仓库切换(issue #107)**:多根工作区含多个 Git 仓库时,Graph 工具栏仓库名升级为**可切换按钮**(对标 Git Graph;单仓库退化为纯文本,多数用户零感知),Command Palette 亦可经 `Hyper Git: Select Repository…` 直达。切换**全局活跃仓库**——Graph / Branches / Commit(changelist)/ Stash / Shelf / Worktrees / 未提交角标七视图级联跟随,活跃仓库持久化于 `workspaceState`(`hyperGit.activeRepoRoot`,重开窗口回到上次操作的仓库)。**按仓库隔离记忆**:changelist 分配 / 分支收藏 / 分支分组偏好(`setRepoRoot` 重绑 + context key 同步)、Shelf 存储(`shelves/./` 随活跃仓库动态求值,旧平铺数据一次性安全迁移:仅 rename、零删除零覆盖)、最近提交消息(per-repo key,旧全局 key 回落一次)、Graph/Commit webview 视图状态(scope/选中/勾选集等 v2 `byRepo` 分区)。选取逻辑下沉纯函数 [`engine/git-state/repo-selection.ts`](./src/engine/git-state/repo-selection.ts)(持久化恢复 → folder0 匹配 → 首个仓库三级优先),**三重顺序不变量**保证 rebind 先于视图刷新;Blame 注解切库自清理;顺带修复激活竞态(repo 发现晚于 activate 时 memento key 落占位根)。集成测试新增 multi-root 双仓库 fixture 套件(`tests/suite/multi-root.test.js`,`activate()` 导出 `{ service }` 程序化接缝)。完整叙述见 [多根工作区仓库切换](./docs/features/multi-root-repo-selection.md)。(#108) +- **Agentic Git 偏好配置(Agentic Git 预置)**:新增 `hyperGit.agent.*` 四项配置为 M5 [AI 接缝](./docs/research/05-ai-agent-seams.md) 铺路——① `hyperGit.agent.baseBranch`(创建 PR 的基线分支,留空=仓库默认分支);②③④ `commitPreferences` / `createPrPreferences` / `reviewPreferences`(分别为点击 **Commit / Create PR / Review** 时发送给 agent 的自定义指令,均以 `editPresentation: "multilineText"` 多行文本域承载、**内置默认模板**)。其中 **Commit 模板由中文提交规约译为专业英文**(规约规定提交信息用中文,故示例与签名块原样保留);Create PR / Review 模板**逐字内置**(含 `${TARGET_BRANCH}` / `#{pr_number}` 等占位符)。采用**原生设置**承载(零新增 Webview / 命令 / TS / 测试),默认值内联于 [`package.json`](./package.json)。**仅落地配置与内置默认**,`agent/` 五接缝与 `hyperGit.ai.enabled` 行为不变、零破坏。README 指标行同步 `7 → 11 配置项`。完整叙述见 [Agentic Git 偏好配置](./docs/features/agentic-git-preferences.md)。(#89) +- **Claude Code 配置(Agentic Git 预置)**:新增两项与 Claude Code 相关的配置为 M5 [AI 接缝](./docs/research/05-ai-agent-seams.md) 铺路——① 设置项 `hyperGit.claudeCode.executablePath`(Claude Code CLI 可执行路径,**留空=从 `PATH` 自动探测 `claude`**;描述内嵌 `command:` 链接就地提供「浏览 / 打开 Claude 设置」);② 命令 `hyperGit.setClaudeCodePath`(QuickPick:Browse 文件选择器写回 / **Use system Claude Code** 清空覆盖)与 `hyperGit.openClaudeSettings`(打开 `~/.claude/settings.json`,缺失时经确认创建 `{}`)。采用**原生设置 + 命令**承载(零新增 Webview 面板),路径解析下沉纯函数 [`engine/agent/claude-path.ts`](./src/engine/agent/claude-path.ts)(Vitest 可测),命令实现见 [`adapter/claude-commands.ts`](./src/adapter/claude-commands.ts)。**仅落地配置与快捷入口**,`agent/` 五接缝与 `hyperGit.ai.enabled` 行为不变、零破坏。同步校正 README 指标行(`6 视图 · 101 命令 · 7 配置项 · 372 单元测试`,此前 `97 命令 / 324 测试` 已滞后 HEAD)。完整叙述见 [Claude Code 配置](./docs/features/claude-code-config.md)。(#88) +- **Branches 视图按 `/` 前缀分组为文件夹树**:Local / Remote / Tags 三段支持在**平铺**与**按 `/` 前缀分组的可折叠文件夹树**间切换——共享前缀的分支收拢到以前缀命名的文件夹下、叶子仅显示末段后缀(如 `bak/2025`、`bak/master-2025-07` → 📁`bak` → `2025` / `master-2025-07`;远程整体收拢为 `origin` 文件夹并内嵌 `feature`)。新增纯逻辑引擎 [`buildRefTree`](./src/engine/ref/ref-tree.ts)(复用「变更文件目录树」`buildFileTree` 的 trie 构建 + compact 折叠范式;叶子携完整 `RawRef`、命令定位不受影响;分支感知排序:当前 HEAD → 收藏 → 同档文件夹优先、名称数字感知升序),并**隐藏 `origin/HEAD` 符号引用**(对齐主流 Git UI,消除 `origin` 叶子与 `origin` 文件夹同名冲突)。工具栏提供「平铺 ⇄ 树」切换(`hyperGit.branchesGroupByPrefix` / `hyperGit.branchesFlatten`,context key 驱动按钮互斥),偏好按仓库持久化于 `workspaceState`(默认树形),文件夹默认展开、展开态跨刷新稳定。文件夹节点用独立 `contextValue` 且不登记任何右键命令,checkout / delete / rename / merge / rebase / compare / favorite 与多选批量均零改动、零破坏。完整叙述见 [分支前缀分组树](./docs/features/branch-tree-group-by-prefix.md)。(#86) ### Changed - **`@vscode/test-electron` 升级 3.0.0 → 3.1.0**:VS Code 1.110 起将 macOS 主二进制 `Electron` 更名为 `Code`(兼容符号链接于 2026-07 移除,microsoft/vscode#326502),3.0.0 启动 1.110+ 版本即 `spawn .../MacOS/Electron ENOENT` 崩溃;3.1.0 按 `Info.plist → CFBundleExecutable` 三级解析修复(microsoft/vscode-test#348)。此前 dependabot [PR #102](https://github.com/ThreeFish-AI/hyper-git/pull/102) 因 supply-chain 发布冷静期被 CI 拦截,现窗口已过正式合入。 -- **面板视图默认布局调整(显隐与顺序)**:`package.json` `contributes.views` 声明式微调六视图默认态——**Stash / Shelf** 由 `collapsed` 改为 `visibility:"hidden"`(VS Code schema 中 `hidden` 映射 `hideByDefault`:默认不出现在容器内,仍可经视图标题右键菜单勾选恢复);**Commit / Worktrees** 由 `visible` 改为 `collapsed`(显示但默认折叠、点击标题即展开);**Branches / Graph** 保持 `visible`;容器内声明顺序调整为 **Commit · Branches · Graph · Worktrees**(Stash · Shelf 隐藏排其后)。`initialSize` 权重不变,`src/` 零改动,命令 / 协议 / 菜单 / `viewsWelcome` / 交互零破坏。新增 [`tests/unit/views-layout.test.ts`](./tests/unit/views-layout.test.ts) 声明式护栏锁定顺序与各视图 `visibility`。**平台约束**:`visibility` 仅影响全新安装 / 干净 profile 的初始态——老用户升级后需命令面板「View: Reset View Locations」或右键容器页签「Reset Location」方采用新默认(同 [issue #12](./docs/.agents/issue.md) / [#13](./docs/.agents/issue.md) 平台行为)。决策详见 [issue #16](./docs/.agents/issue.md)。 +- **面板视图默认布局调整(显隐与顺序)**:`package.json` `contributes.views` 声明式微调六视图默认态——**Stash / Shelf** 由 `collapsed` 改为 `visibility:"hidden"`(VS Code schema 中 `hidden` 映射 `hideByDefault`:默认不出现在容器内,仍可经视图标题右键菜单勾选恢复);**Commit / Worktrees** 由 `visible` 改为 `collapsed`(显示但默认折叠、点击标题即展开);**Branches / Graph** 保持 `visible`;容器内声明顺序调整为 **Commit · Branches · Graph · Worktrees**(Stash · Shelf 隐藏排其后)。`initialSize` 权重不变,`src/` 零改动,命令 / 协议 / 菜单 / `viewsWelcome` / 交互零破坏。新增 [`tests/unit/views-layout.test.ts`](./tests/unit/views-layout.test.ts) 声明式护栏锁定顺序与各视图 `visibility`。**平台约束**:`visibility` 仅影响全新安装 / 干净 profile 的初始态——老用户升级后需命令面板「View: Reset View Locations」或右键容器页签「Reset Location」方采用新默认(同 [issue #12](./docs/.agents/issue.md) / [#13](./docs/.agents/issue.md) 平台行为)。决策详见 [issue #16](./docs/.agents/issue.md)。(#101) + +### Fixed + +- **新增 / 删除 / 重命名文件的差异视图可正常打开**:缺失端(新增文件无旧端、删除文件无新端)改用 git 空树 ref 构造 URI,跨 VS Code 版本稳定解析为空内容,修复新版 `readFile` 对不存在具名 ref 抛 `FileNotFound` 致 Commit / Graph 视图差异打不开的问题。按状态正交分解:新增空树置旧端、删除空树置新端、重命名两端异路径;补齐 Graph 视图逐文件 `status` / `oldPath` 传参与干净路径,修复重命名点击崩溃;新增分类器与端点解析的单元 / 集成测试,并记录 [issue #15](./docs/.agents/issue.md)。(#87) -### Added(既有未发布条目) +### Build + +- **pnpm 升级 11.9.0 → 12.2.1**:pnpm 12 为 Rust 重写版,命令 / flags / 配置 / 锁文件格式全部延续 pnpm 11(`allowBuilds` 与 `node-linker=hoisted` 沿用),CI 经 `pnpm/action-setup@v6` 从 `packageManager` 字段自动跟随;`pnpm-lock.yaml` 顶部新增 `packageManagerDependencies` 文档块,依赖解析零变化。 +- **开发依赖批量升级**(dependabot):prettier 3.9.5 → 3.9.6(#104)、@types/node 26.1.1 → 26.4.0(#112)、eslint 10.7.0 → 10.9.1(#111)、vite 8.1.5 → 8.2.2(#110)、vitest 4.1.9 → 4.1.10(#94)、typescript-eslint 8.64.0 → 8.68.0(#109)、actions/setup-node v6 → v7(#96);dependabot 忽略 typescript major 升级——TS7 工具链未适配,待 7.1 后人工重启(#100)。 + +### Docs -- **Agentic Git 偏好配置(Agentic Git 预置)**:新增 `hyperGit.agent.*` 四项配置为 M5 [AI 接缝](./docs/research/05-ai-agent-seams.md) 铺路——① `hyperGit.agent.baseBranch`(创建 PR 的基线分支,留空=仓库默认分支);②③④ `commitPreferences` / `createPrPreferences` / `reviewPreferences`(分别为点击 **Commit / Create PR / Review** 时发送给 agent 的自定义指令,均以 `editPresentation: "multilineText"` 多行文本域承载、**内置默认模板**)。其中 **Commit 模板由中文提交规约译为专业英文**(规约规定提交信息用中文,故示例与签名块原样保留);Create PR / Review 模板**逐字内置**(含 `${TARGET_BRANCH}` / `#{pr_number}` 等占位符)。采用**原生设置**承载(零新增 Webview / 命令 / TS / 测试),默认值内联于 [`package.json`](./package.json)。**仅落地配置与内置默认**,`agent/` 五接缝与 `hyperGit.ai.enabled` 行为不变、零破坏。README 指标行同步 `7 → 11 配置项`。完整叙述见 [Agentic Git 偏好配置](./docs/features/agentic-git-preferences.md)。 -- **Claude Code 配置(Agentic Git 预置)**:新增两项与 Claude Code 相关的配置为 M5 [AI 接缝](./docs/research/05-ai-agent-seams.md) 铺路——① 设置项 `hyperGit.claudeCode.executablePath`(Claude Code CLI 可执行路径,**留空=从 `PATH` 自动探测 `claude`**;描述内嵌 `command:` 链接就地提供「浏览 / 打开 Claude 设置」);② 命令 `hyperGit.setClaudeCodePath`(QuickPick:Browse 文件选择器写回 / **Use system Claude Code** 清空覆盖)与 `hyperGit.openClaudeSettings`(打开 `~/.claude/settings.json`,缺失时经确认创建 `{}`)。采用**原生设置 + 命令**承载(零新增 Webview 面板),路径解析下沉纯函数 [`engine/agent/claude-path.ts`](./src/engine/agent/claude-path.ts)(Vitest 可测),命令实现见 [`adapter/claude-commands.ts`](./src/adapter/claude-commands.ts)。**仅落地配置与快捷入口**,`agent/` 五接缝与 `hyperGit.ai.enabled` 行为不变、零破坏。同步校正 README 指标行(`6 视图 · 101 命令 · 7 配置项 · 372 单元测试`,此前 `97 命令 / 324 测试` 已滞后 HEAD)。完整叙述见 [Claude Code 配置](./docs/features/claude-code-config.md)。 -- **Branches 视图按 `/` 前缀分组为文件夹树**:Local / Remote / Tags 三段支持在**平铺**与**按 `/` 前缀分组的可折叠文件夹树**间切换——共享前缀的分支收拢到以前缀命名的文件夹下、叶子仅显示末段后缀(如 `bak/2025`、`bak/master-2025-07` → 📁`bak` → `2025` / `master-2025-07`;远程整体收拢为 `origin` 文件夹并内嵌 `feature`)。新增纯逻辑引擎 [`buildRefTree`](./src/engine/ref/ref-tree.ts)(复用「变更文件目录树」`buildFileTree` 的 trie 构建 + compact 折叠范式;叶子携完整 `RawRef`、命令定位不受影响;分支感知排序:当前 HEAD → 收藏 → 同档文件夹优先、名称数字感知升序),并**隐藏 `origin/HEAD` 符号引用**(对齐主流 Git UI,消除 `origin` 叶子与 `origin` 文件夹同名冲突)。工具栏提供「平铺 ⇄ 树」切换(`hyperGit.branchesGroupByPrefix` / `hyperGit.branchesFlatten`,context key 驱动按钮互斥),偏好按仓库持久化于 `workspaceState`(默认树形),文件夹默认展开、展开态跨刷新稳定。文件夹节点用独立 `contextValue` 且不登记任何右键命令,checkout / delete / rename / merge / rebase / compare / favorite 与多选批量均零改动、零破坏。完整叙述见 [分支前缀分组树](./docs/features/branch-tree-group-by-prefix.md)。 +- **README 中英文版新增 Overview 概览图**:Features / 核心能力章节引入架构总览图,一图速览六视图与 Agentic Git 能力版图。 ## [0.0.14] - 2026-07-06 — 修复 GRAPH 视图提交记录时间倒序 diff --git a/README.md b/README.md index 95dbf61..ff9a1f7 100644 --- a/README.md +++ b/README.md @@ -82,15 +82,15 @@ pnpm run watch # watch build (press F5 to launch the Extension Ho pnpm run test:unit # unit tests (pure engine logic, Vitest, 403 cases) pnpm run test:integration # integration tests (@vscode/test-electron) pnpm run package # production build -pnpm dlx @vscode/vsce package # package the .vsix +pnpm exec vsce package # package the .vsix ``` -Packaging and publishing with vsce (`@vscode/vsce`): +Packaging and publishing with vsce (`@vscode/vsce` is a devDependency; `pnpm exec` uses the locked project version — pnpm 12's `dlx` hard-fails on its unapproved native build scripts): ```bash -pnpm dlx @vscode/vsce package +pnpm exec vsce package # hyper-git-agentic-git-x.x.x.vsix generated -pnpm dlx @vscode/vsce publish +pnpm exec vsce publish # ThreeFish-AI.hyper-git-agentic-git-x.x.x published to VS Code Marketplace ``` diff --git a/docs/.agents/knowledge-map.md b/docs/.agents/knowledge-map.md index 035f4d4..4763135 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.14](../releases/v0.0.14.md))。 +- [发布说明](../releases/README.md) — 各正式版 Release Notes(GitHub Release 正文单一事实源;最新 [v0.0.16](../releases/v0.0.16.md))。 ## 架构分层(src/) > 依赖方向单向:`UI → Adapter → Engine`;`Agent` 以接口注入 `Engine`/`CommitPipeline`,不反向依赖 UI。 diff --git a/docs/README.md b/docs/README.md index 412cd87..d3cf858 100644 --- a/docs/README.md +++ b/docs/README.md @@ -13,7 +13,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.14 修复 GRAPH 视图提交记录时间倒序](./releases/v0.0.14.md)。 +- [Release Notes 目录](./releases/README.md) — 各正式版发布说明(GitHub Release 正文单一事实源);最新:[v0.0.16 多根工作区仓库切换 · 分支分组树 · Agentic Git 预置](./releases/v0.0.16.md)。 ## 调研报告(循证依据) - [02 · VS Code SCM API 与 vscode.git 集成路径](./research/02-vscode-scm-integration.md) — 路径 B 决策依据、SCM 稳定/proposed API 边界、changelist 模型映射。 diff --git a/docs/i18n/zh-CN/README.md b/docs/i18n/zh-CN/README.md index b9c00c1..e59576c 100644 --- a/docs/i18n/zh-CN/README.md +++ b/docs/i18n/zh-CN/README.md @@ -82,15 +82,15 @@ pnpm run watch # 监听构建(F5 启动 Extension Host 调试 pnpm run test:unit # 单元测试(engine 纯逻辑,Vitest,403 例) pnpm run test:integration # 集成测试(@vscode/test-electron) pnpm run package # 生产构建 -pnpm dlx @vscode/vsce package # 打包 .vsix +pnpm exec vsce package # 打包 .vsix ``` -使用 vsce(`@vscode/vsce`)打包与发布: +使用 vsce(`@vscode/vsce` 已列为 devDependency;`pnpm exec` 使用项目锁定版本——pnpm 12 起 `dlx` 临时环境对其未审批的原生构建脚本会硬失败)打包与发布: ```bash -pnpm dlx @vscode/vsce package +pnpm exec vsce package # 生成 hyper-git-agentic-git-x.x.x.vsix -pnpm dlx @vscode/vsce publish +pnpm exec vsce publish # ThreeFish-AI.hyper-git-agentic-git-x.x.x published to VS Code Marketplace ``` diff --git a/docs/releases/README.md b/docs/releases/README.md index fb400fe..2baf36a 100644 --- a/docs/releases/README.md +++ b/docs/releases/README.md @@ -8,6 +8,7 @@ | 版本 | 说明 | 日期 | |---|---|---| +| [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 | | [v0.0.12](./v0.0.12.md) | 提交详情光标跟随悬浮卡 · Tooltip 交互修复 · 侧边栏布局优化 · 依赖升级基线(TS6 / vitest4 / vite8) | 2026-07-04 | diff --git a/docs/releases/v0.0.16.md b/docs/releases/v0.0.16.md new file mode 100644 index 0000000..d60608b --- /dev/null +++ b/docs/releases/v0.0.16.md @@ -0,0 +1,70 @@ +# Hyper Git - Agentic Git v0.0.16 — 多根工作区仓库切换 · 分支分组树 · Agentic Git 预置 + +> 本版是自 v0.0.14 以来的全量积累(0.0.15 版本号已就位但未单独发布,本版一并发布)。四大新特性:**多根工作区多仓库切换**、**Branches 按前缀分组树**、**Agentic Git 偏好配置与 Claude Code 配置预置**(M5 前置铺垫),并修复新增 / 删除 / 重命名文件打不开差异的问题、优化面板默认布局。 + +--- + +## ✨ 亮点速览 + +- **多根工作区多仓库切换**:Graph 工具栏仓库名成为**可切换按钮**,一键在多根工作区的多个仓库间切换全局活跃仓库——Graph / Branches / Commit / Stash / Shelf / Worktrees / 未提交角标**七视图级联跟随**,且 changelist、分支收藏、Shelf、最近提交消息、视图状态全部**按仓库隔离记忆**,重开窗口回到上次操作的仓库。 +- **Branches 按前缀分组为文件夹树**:Local / Remote / Tags 三段支持「平铺 ⇄ 树」切换,共享前缀的分支收拢为可折叠文件夹(如 `feature/1.x.x`、`feature/2.x.x` → 📁`feature`),远程整体收拢为 `origin` 文件夹;默认树形、偏好按仓库记忆。 +- **Agentic Git 预置(M5 前置铺垫)**:新增 `hyperGit.agent.*` 四项偏好(PR 基线分支 + Commit / Create PR / Review 三项 agent 指令模板)与 `hyperGit.claudeCode.executablePath` 设置(留空自动探测 `claude`)+ 「浏览 / 打开 Claude 设置」快捷入口。 +- **Diff 修复**:新增 / 删除 / 重命名文件在 Commit 与 Graph 视图可正常打开差异(空树 ref 构造 URI),修复重命名点击崩溃。 +- **面板布局优化**:Commit / Branches / Graph / Worktrees 依序默认呈现(前两者折叠),Stash / Shelf 默认隐藏(可经视图右键菜单恢复)。 + +--- + +## 🧩 特性详述 + +### 1. 多根工作区仓库切换(#108 / issue #107) + +此前在含多个 Git 仓库的多根工作区中,Hyper Git 只能操作单一仓库。本版将 Graph 工具栏仓库名升级为**可切换按钮**(对标 Git Graph;单仓库退化为纯文本,多数用户零感知),Command Palette 亦可经 `Hyper Git: Select Repository…` 直达。 + +- **七视图级联**:切换后 Graph / Branches / Commit(changelist)/ Stash / Shelf / Worktrees / 未提交角标全部跟随新活跃仓库刷新; +- **按仓库隔离记忆**:changelist 分配、分支收藏、分组偏好、Shelf 存储(旧平铺数据一次性安全迁移:仅 rename、零删除零覆盖)、最近提交消息、Graph / Commit 视图状态(scope / 选中 / 勾选集)均按仓库分区; +- **持久化**:活跃仓库记于 `workspaceState`,重开窗口回到上次操作的仓库。 + +### 2. Branches 按前缀分组树(#86) + +Local / Remote / Tags 三段支持在**平铺**与**按 `/` 前缀分组的可折叠文件夹树**间切换(工具栏按钮,偏好按仓库持久化、默认树形)。共享前缀的分支收拢到以前缀命名的文件夹下、叶子仅显示末段后缀;远程整体收拢为 `origin` 文件夹。排序分支感知:当前 HEAD → 收藏 → 同档文件夹优先、名称数字感知升序;并**隐藏 `origin/HEAD` 符号引用**(对齐主流 Git UI)。checkout / delete / rename / merge / rebase / compare / favorite 等右键操作全部不受影响。 + +### 3. Agentic Git 预置(#88 / #89,M5 前置铺垫) + +- **偏好配置**:`hyperGit.agent.baseBranch`(创建 PR 的基线分支,留空=仓库默认分支)+ `commitPreferences` / `createPrPreferences` / `reviewPreferences`(点击 **Commit / Create PR / Review** 时发送给 agent 的自定义指令,多行文本域、内置默认模板); +- **Claude Code 配置**:`hyperGit.claudeCode.executablePath`(留空=从 `PATH` 自动探测 `claude`)+ 命令 `Set Claude Code Executable Path…`(QuickPick 浏览写回)与 `Open Claude Settings`(打开 `~/.claude/settings.json`,缺失时经确认创建)。 + +以上为配置层预置,`agent/` 接缝与 `hyperGit.ai.enabled` 行为不变、零破坏。 + +### 4. Diff 缺失端修复(#87 / issue #15) + +新增文件(无旧端)、删除文件(无新端)此前在新版 VS Code 上打不开差异(`readFile` 对不存在具名 ref 抛 `FileNotFound`)。本版改用 git **空树 ref** 构造 URI,跨 VS Code 版本稳定解析为空内容;重命名文件两端异路径正确呈现;同时修复 Graph 视图点击重命名文件崩溃的问题。 + +### 5. 面板默认布局调整(#101 / issue #16) + +六视图默认态微调:**Stash / Shelf** 默认隐藏(经视图标题右键菜单勾选恢复)、**Commit / Worktrees** 默认折叠、**Branches / Graph** 默认展开,顺序调整为 Commit · Branches · Graph · Worktrees。 + +--- + +## ⚙️ 升级与兼容 + +- **无破坏性变更**:全部特性均为增量新增或纯修复,未移除任何命令 / 配置 / 视图。 +- **布局默认仅影响新安装 / 干净 profile**:VS Code 会记忆旧布局——老用户升级后如需采用新默认,请执行命令面板「View: Reset View Locations」或右键 Hyper Git 容器页签「Reset Location」(平台行为,同 [issue #12](../.agents/issue.md))。 +- **多仓库数据迁移安全**:Shelf 旧平铺数据迁移仅 rename,零删除零覆盖。 +- **开发者**:包管理器升级 pnpm 11.9.0 → **12.2.1**(Rust 重写版,命令 / 配置 / 锁文件格式兼容 pnpm 11);CI 自动跟随,克隆后 `pnpm install` 即可。 + +--- + +## 📦 安装 + +- **VS Code Marketplace**:搜索 `Hyper Git - Agentic Git` 直接安装或更新。 +- **手动**:从 [Releases](https://github.com/ThreeFish-AI/hyper-git/releases/tag/v0.0.16) 下载 `hyper-git-agentic-git-0.0.16.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 7cfbc88..a92adef 100644 --- a/package.json +++ b/package.json @@ -7,12 +7,12 @@ "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.15", + "version": "0.0.16", "publisher": "ThreeFish-AI", "license": "MIT", "preview": true, "private": true, - "packageManager": "pnpm@11.9.0", + "packageManager": "pnpm@12.2.1", "repository": { "type": "git", "url": "https://github.com/ThreeFish-AI/hyper-git.git" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 442e565..0beeb75 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,3 +1,104 @@ +--- +lockfileVersion: '9.0' + +importers: + + .: + configDependencies: {} + packageManagerDependencies: + pnpm: + specifier: 12.2.1 + version: 12.2.1 + +packages: + + '@pnpm/exe.darwin-arm64@12.2.1': + resolution: {integrity: sha512-efC1yfz2xbyHiMLrQAYtnoo5XP20LeAiYYcyL1962qQagZrMXIB0BoQYeZoPTLggLh0Q4MD7jpZUInU5fWxCgQ==} + cpu: [arm64] + os: [darwin] + + '@pnpm/exe.darwin-x64@12.2.1': + resolution: {integrity: sha512-0bloFmxrvYY5LYex5V6SZySwg+egBk0pOW+YUeOm9fiG2U1wv+qRVLBOUvIzLAeJE7vBlAzxUwXkQAYtr12n+Q==} + cpu: [x64] + os: [darwin] + + '@pnpm/exe.linux-arm64-musl@12.2.1': + resolution: {integrity: sha512-AZl7apVZC4TV1/vTp/bS16XUsHeqx9AHsU4V55joiGR+iR6vl+WF0WlGvGCTjqjICS4q/kThpgNrtG8aqQ9seQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-arm64@12.2.1': + resolution: {integrity: sha512-S36+tMEGrPz3nwtfFU9kYxbHoi8sV7WJfMO9njEL4jRaShTNaLRERMAqyI2DUCiA5QCr6/a50lt4+pKCV2mCvw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-x64-musl@12.2.1': + resolution: {integrity: sha512-4MQClkAk1em55LFZJpeIqb7j+gEqCgX8yC42j9DFWL42q1uMX1e1tvTy2Dtd4NoWQqgdkLxOStZ+D9CYC+28ow==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-x64@12.2.1': + resolution: {integrity: sha512-A/AlR71Leph7qgB3ThSU9yU/vLfre4HmP6nbt3/qt51fzAjQ0xuq7j+cw0f1yDskzOsGzmo5uD6ruefCwLK5uQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.win32-arm64@12.2.1': + resolution: {integrity: sha512-TEGUmroT6NGfo2O2+tHK9Zr1lhP1zLzpwx+QAQV19l8V4ljUoMfz8Os5V9zzNCtIpzyKcK7SuG7fkVbxFgRMzg==} + cpu: [arm64] + os: [win32] + + '@pnpm/exe.win32-x64@12.2.1': + resolution: {integrity: sha512-V2Q+AF8fCsw8/CC3bWF8kopOmH0aAjgk9m7H7uAQNulOYIJs9YJBiAlgByswmt+igV9axc4dBI//ZlK2NKpDcw==} + cpu: [x64] + os: [win32] + + pnpm@12.2.1: + resolution: {integrity: sha512-9Vymiqy561q2nGb4KKmK+JoyKGcDrvH42hMcp+q01nfzS/qF4YZGepGcB5nfi29KokD33CkZszsycxkBBBYmFg==} + engines: {node: '>=18.*'} + hasBin: true + +snapshots: + + '@pnpm/exe.darwin-arm64@12.2.1': + optional: true + + '@pnpm/exe.darwin-x64@12.2.1': + optional: true + + '@pnpm/exe.linux-arm64-musl@12.2.1': + optional: true + + '@pnpm/exe.linux-arm64@12.2.1': + optional: true + + '@pnpm/exe.linux-x64-musl@12.2.1': + optional: true + + '@pnpm/exe.linux-x64@12.2.1': + optional: true + + '@pnpm/exe.win32-arm64@12.2.1': + optional: true + + '@pnpm/exe.win32-x64@12.2.1': + optional: true + + pnpm@12.2.1: + optionalDependencies: + '@pnpm/exe.darwin-arm64': 12.2.1 + '@pnpm/exe.darwin-x64': 12.2.1 + '@pnpm/exe.linux-arm64': 12.2.1 + '@pnpm/exe.linux-arm64-musl': 12.2.1 + '@pnpm/exe.linux-x64': 12.2.1 + '@pnpm/exe.linux-x64-musl': 12.2.1 + '@pnpm/exe.win32-arm64': 12.2.1 + '@pnpm/exe.win32-x64': 12.2.1 + +--- lockfileVersion: '9.0' settings: