GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — hyper-git/CHANGELOG.md at master · ThreeFish-AI/hyper-git

Expand file tree

/

CHANGELOG.md

Copy path
More file actions
More file actions

Latest commit

 

History

History
History
335 lines (222 loc) · 61.2 KB
/

CHANGELOG.md

Copy path

File metadata and controls

335 lines (222 loc) · 61.2 KB
Raw
Copy raw file
Download raw file
Outline
Edit and raw actions

Changelog

本项目的所有重要变更均记录于此文件。格式遵循 Keep a Changelog,版本号遵循 SemVer。

面向用户的发布说明(含完整特性叙述与安装指引)见 docs/releases/。

[Unreleased]

[0.0.22] - 2026-10-24 — Graph 过滤持久化与激活指示 · Branches 就地更新 · 开发依赖升级

Added

  • Branches 视图分支就地更新(不 checkout):右键单个分支 Update Branch、多选批量更新、标题栏 Pull 按钮升级为选区感知(无选区保持原 Pull 语义,Commit 视图 Pull 不受影响)。底层原语 git fetch <remote> refs/heads/<upstream>:refs/heads/<branch>——git 原生 fast-forward-only,diverged / ahead-only 分支被安全拒绝(附真实 stderr 原因),永不改写本地提交(src 侧全限定防 + 前缀上游名被解析为 force);当前分支自动改走 repo.pull()(含冲突处理通道);无上游分支透明跳过;无 remote 配置提示 No remote repository configured 提前返回(不误报 no upstream)。五桶对账汇总(updated / already up to date / pulled / skipped / failed,选中数 = 各桶之和),up-to-date 经前后 objectname 短 sha 前缀比对判定(fetch 静默 no-op 无输出;缩写长度随对象数伸缩,全等比对会误报)。upstream 解析不信任树节点数据(API 路径 refToRaw 不填 upstream/head),统一以一次 for-each-ref 取新鲜快照;origin/x 拆分复用 resolveRemoteBranch 最长前缀匹配(remote 名可含 /)。engine 纯逻辑 planBranchUpdates / formatBranchUpdateResult / classifyFetchOutcome 落于 engine/ref/branch-update.ts,全量单测覆盖。

Fixed

  • Graph 视图过滤条件不再随重启 / 切库丢失(全部 7 个维度按仓库持久化):authors、File Path、Grep、Merge Mode、Date Filter、Message Regex 此前仅存于内存,重启 VS Code 或切换仓库后即被清空。现在沿用 scope/dmode 的按仓库 workspaceState 范式持久化——authors 独立 key(hyperGit.log.authors:<repoRoot>),其余 6 维组合 key(hyperGit.log.filter:<repoRoot>,单 key 原子读写防半恢复态,dateFrom/dateTo 经 ISO 串往返),重启与切库往返后自动恢复为上次设置;过滤生效期间标题栏过滤图标点亮为填充态(Graph Filter Active,$(filter-filled),经 hyperGit.log.filterActive context key 与常态图标互斥呈现)——恢复的过滤不再是无声约束;重开「Filter by Author…」即预勾选已选 exact 作者并继续增删(pattern 项不参与预勾选、重开后不可见,确认新选择会将其移除);空选确认与 Clear Filter 的「清除」同样持久化,重启不复活;脏持久化数据经 engine 纯函数逐字段校验免疫。附带行为变更:① SCM 变更列表右键「Show History」由整替过滤器改为与其余过滤命令一致的增量式——文件历史现与活跃过滤相交,而非静默清空后者(M3 期遗留不一致);② 任何过滤对话框(Filter Graph 聚合入口 / Author / Path / Grep / Merge Mode / Date / Message Regex)或 Commit 文件右键菜单打开期间发生切库后确认,不再把旧仓库语境的选择误写新仓库(rootAtStart 切库守卫全覆盖);③ issue #107 的「切库清空 host 级过滤」限制消除——每个仓库记忆自己的完整过滤条件;④ Filter by Path 选中当前仓库外的文件(多根工作区选他仓文件 / 单仓导航到仓外)时以告警拒绝,不再落入 ../… 垃圾 path 过滤——该垃圾 path 会随持久化成为跨重启的图加载 fatal 错误态。

Changed

  • 开发依赖升级(#153):eslint 10.12 → 10.13、typescript-eslint 8.71 → 8.72、vitest 5.0.4 → 5.0.5、ovsx 1.2 → 1.3——全部 devDependencies,对扩展运行时零影响。

[0.0.21] - 2026-10-23 — Filter by Author 候选建议 · 多选过滤 · 元字符作者修复

Added

  • 「Filter by Author…」升级为作者候选建议 + 多选过滤:候选经 git shortlog -sne 按当前 Graph 视图 scope 取数(按提交数降序、姓名/邮箱均可模糊匹配),输入前缀(如 Thr)即在下拉中建议对应提交者,勾选即选、无需完整手输;依次勾选多个提交者翻译为多条 --author(git 取 OR)直接过滤 Graph 视图,空选确认 = 清除该维度、Esc = 取消不变。输入不等于任何作者姓名时动态插入「Use pattern」逃生口(原样正则透传),完整保留旧 InputBox 的任意 pattern 能力。engine 侧 LogFilter.author 单值改为 authors: AuthorTerm[](exact 身份 / pattern 正则 tagged union,单一字段单一事实源);scopeRefs 提取为 scope → 引用范围参数的单一事实源(Graph 取数与作者候选共享);adapter 侧为仓库首个 createQuickPick 动态用法(busy 取数、勾选自维护回写、settle 幂等守卫、切库竞态守卫、空仓库降级)。新增 engine/log/author-suggest.ts(shortlog 取数参数 + 容错解析,current scope 显式 HEAD 防 stdin 挂起)。

Fixed

  • 作者名含正则元字符时过滤 0 命中:git log --author 缺省 POSIX BRE(非 ERE),旧实现把手输作者名原样作为正则传递——dependabot[bot] 中的 [bot] 被解释为字符类,匹配 0 条(本仓库实测:不转义 0 命中)。现在从候选列表选中的作者身份按 BRE 语义转义(仅 \ . [ * ^ $;+ ? | ( ) { 在 BRE 中是普通字符,加反斜杠反成操作符)并锚定全行 ^Name <email>$(同名异邮箱不混淆)。

[0.0.20] - 2026-10-17 — Delete Remote Branch 陈旧远程分支修复 · 删除失败可诊断

Fixed

  • Branches 视图「Delete Remote Branch」对陈旧远程分支误报失败且无原因:PR 合并后远端自动删除的分支,本地 remote-tracking ref 在下次 fetch --prune 前一直保留,视图仍列出;右键删除时 git push --delete 被服务端拒绝(remote ref does not exist),且 catch {} 吞掉真实报错,只回显笼统的「N failed」。现在「服务端已无此 ref」被识别为目标态已达成——按成功收尾并清理本地陈旧 tracking ref(通知如实标注 already gone on remote);真失败(保护分支拒绝 / 认证 / 网络)则经 stderr 优先提取,在通知中逐分支附上真实原因,并联动 Show Output 查看完整输出。engine 纯逻辑 isRemoteRefMissingError / formatRemoteDeleteResult 落于 engine/ref/remote-ref.ts,全量单测覆盖。

Changed

  • 错误文本提取单一事实源(gitErrorText):新增 engine/git-state/git-error.ts 统一「非空白 stderr 优先 → message → String 兜底」提取语义,remote-commands / history-commands 两处内联拷贝改为引用;Push 对话框 / Update Project / Merge 对话框的失败通知随之升级为 stderr 优先(真实原因直达,不再只显通用串)。

[0.0.19] - 2026-10-17 — Branches 视图 PR 状态徽标 · 取数安全加固 · 开发依赖升级

Fixed

  • CI 状态与 Branches PR 徽标注入取数主机策略:仅 github.com 与已配置 github-enterprise.uri 的实例主机发送取数请求;其余「GitHub 形态」远程(origin 指向任意第三方主机)视同非 GitHub(零徽标、零请求),杜绝把 GitHub/GHE token 发往任意主机的凭证外发面。

Added

  • Branches 视图远程分支行右侧显示关联 GitHub Pull Request 状态徽标(#138 Merged 形态 + 云图标按状态着色:Merged 紫 / Closed 红 / Open 绿 / Draft 弱化;悬停见 PR 号、标题与经反 SSRF 主机白名单校验的 Open on GitHub 链接)。分支 → PR 三级匹配(fork 全名 → 同仓 headRefName → 唯一兜底,歧义宁缺勿错);复用 CI 状态的 GitHub 认证与 remote/provider 单一事实源(getGitHubContext()),GraphQL 按 UPDATED_AT 倒序取最近 100 条全态 PR,TTL 60s 缓存 + 同实例引用相等守卫(无刷新循环、首轮无徽标先行不阻塞建树);未登录 / 非 GitHub 远程 / 配置关闭 → 零徽标零请求静默休眠。新增配置 hyperGit.branches.pr.enabled(默认开启);engine 纯逻辑 engine/pr/ 四模块 + 全量单测。详见 功能文档。

Build

  • 开发依赖批量升级(dependabot):@vscode/vsce 3.9.2 → 4.0.0(#131)、vitest 4.1.10 → 5.0.1(#127)、ovsx 1.1.1 → 1.2.0(#130)、typescript-eslint 8.68.0 → 8.70.0(#129)、esbuild 0.28.1 → 0.28.2(#128);两项 major 均把 Node 基线抬至 22(vitest 5 实际要求 ≥ 22.12),与 CI 的 node-version: 22 一致。五个 PR 共改 pnpm-lock.yaml,顺序合并必连环冲突,故合成单个 PR 只重生一次 lockfile,组合兼容性由 CI 在 feature/1.x.x 基线上一次验证。pnpm-workspace.yaml 的 allowBuilds 三项维持不变——[email protected] 仍传递依赖 @vscode/vsce@^3.7.1,keytar 与 @vscode/vsce-sign(现 2.0.9 / 2.1.0 双版本)继续在依赖树中,删任一项都会重现 ERR_PNPM_IGNORED_BUILDS。
  • dependabot 聚合升级 PR(根因修复):.github/dependabot.yml 为两个 ecosystem 补 groups——npm 的开发依赖 minor/patch 聚合为单个 PR(major 仍逐项单开,保留逐个评估与回滚的粒度),github-actions 全量聚合(爆炸半径限于工作流本身,且 major 升级属例行)。根除「每周多个 deps PR 共改 lockfile 引发连环冲突」的复发源。

[0.0.18] - 2026-09-10 — Commit / Branches 标题栏重构 · 批量 Discard Changes · 分支级 Push · 双市场发布重启

自 v0.0.17 以来的积累(PR #119 / #120 / #121)。核心变更:Commit 与 Branches 两视图的头部与标题栏整体重构——Commit 头部两行 UI(Active Changelist 选择器、List/Tree 段控)上移 VS Code 标题栏,净省两行竖直空间,并新增以文件勾选集为范围的批量 Discard Changes;Branches 的 Push 下放分支右键(按分支推送的显式 refspec / -u 双路径)、Prune 上移标题栏、Merge… 收入「…」菜单。同时修复无效 codicon 致 Compare with Current Branch 图标渲染空白与文件列表树的 A11y 语义回归,并重启 Open VSX 发布通道(与 Marketplace 对称门控),覆盖 Cursor / Windsurf / VSCodium 等编辑器。完整用户视角叙述见 Release Note v0.0.18。

Added

  • Commit 视图标题栏新增 Discard Changes(最左 $(discard) 图标,批量撤销勾选文件):以文件列表勾选集为范围,单次 modal 确认(列示目标文件,超 10 个截断)后批量执行——未跟踪文件 clean 删除、已跟踪改动 restore 还原,语义与单文件右键 Discard Changes 一致;勾选集自 webview 单向同步 host 镜像(webview 仍为事实源),无勾选时给出提示,视图刷新经 onDidChange → refreshAll 驱动。同时 Set Active Changelist… 与 New Changelist… 两入口由标题栏图标位收入「…」菜单(0_changelist 组,居同步组之前)。
  • Branches 视图分支右键新增 Push(推送指定分支):右键任一本地分支 → hyperGit.pushBranch——已配置上游时按显式 refspec 推送到追踪分支(本地名/上游名不一致亦正确),无上游时选定 remote 并以 -u 建立追踪(语义同全局 Push 的双路径),推送后刷新视图并提示。

Changed

  • Commit 视图头部两行 UI 上移 VS Code 标题栏(省两行竖直空间):① 「Active Changelist」下拉与 ⋯ 管理菜单合并为标题栏「…」菜单的 Set Active Changelist… 入口(New Changelist… 亦收入「…」)——点击弹出 QuickPick:各列表带文件计数、当前活动项预选,分隔线后并入 New / Rename / Delete Changelist… 操作(默认列表不可改名/删除);活动 changelist 名常驻视图副标题(标题「Commit」同行右侧,Default 活动列表时省略——无信息量不常驻)。② 文件列表 List ⇄ Tree 段控改为标题栏 $(list-tree)/$(list-flat) 互斥图标(交互同 Graph/Branches 切换范式),偏好移交 host workspaceState 按仓库持久化(hyperGit.commit.dmode:<repo>)——原 webview state 中的旧 List/Tree 偏好一次性重置为默认 flat(勾选集、目录折叠与提交草稿不受影响)。③ Select All 复选框吸顶于文件列表容器内首行(列表为空时随空态隐藏),原 .cl-bar 与 files-header 两行整体移除。
  • Branches 视图标题栏重排:① 原 Push 图标下放至分支右键菜单(见上 Added;全局 Push 仍可用 Commit 视图标题栏与命令面板)。② 「Prune Deleted Remote Branches」由「…」菜单上移至标题栏 $(sync-ignored) 图标(navigation@4,即原 Push 位;该图标全扩展唯一,既区别于同栏 $(refresh)/$(sync) 同步类,也不与右键删除类 $(trash) 混淆)。③ 「Merge…」由标题栏图标收入「…」菜单(同步组内,Update Project 与 New Tag… 之间),不再占用图标位。
  • 视图标题栏图标常驻引导:VS Code 默认仅在 hover/聚焦视图时显示标题栏动作(平台行为,ViewPane 依 workbench.view.alwaysShowHeaderActions 切换 CSS 类 actions-always-visible,扩展贡献点无法覆盖)。现提供双入口:命令面板 Hyper Git: Always Show View Toolbar Icons 随时开启,以及首次激活的一次性提示(Always Show 写入全局设置并即时生效、Don't Show Again 不再打扰;设置已为 true 时不提示)。
  • CI 发布渠道重启双市场:publish job 增回 Open VSX 发布步骤(pnpm exec ovsx publish --packagePath ./*.vsix,由仓库变量 ENABLE_OVSX_PUBLISH 门控 + OVSX_PAT 凭证,复用 package job 的同一枚 VSIX、共享 production 审批门),覆盖 Cursor / Windsurf / VSCodium 等 Open VSX 系编辑器;README 安装渠道同步加回 Open VSX。发布决策沿革见 发布策略调研。

Fixed

  • Compare with Current Branch 菜单图标渲染为空白方块:$(compare) 并非有效 codicon id(自 v0.0.17 起即如此),修正为 $(git-compare)。无效 codicon id 在 VS Code 中静默渲染为空白、无任何告警,现以 tests/unit/codicon-validity.test.ts 白名单护栏(取自 microsoft/vscode-codicons 的 mapping.json)全量校验命令与 submenu 图标,杜绝同类漏出——该护栏在本版开发期即拦下另一处新引入的 $(sync-ignore)(已修正为 $(sync-ignored),见 Changed 中的 Branches 视图标题栏重排)。
  • Commit 文件列表树语义回归:吸顶 Select All 行引入后打断了树语义——role="tree" 与 aria-label 回归保留于可聚焦的 #files 容器,吸顶行 #files-selectall 与行区容器 #files-rows 降为 role="presentation";并补 scroll-margin-top,避免键盘导航的 scrollIntoView 把首行滚到吸顶行之下被遮挡。

Docs

  • .agents 文档去重:移除仓库内 docs/.agents/browser-validation.md 与 docs/.agents/reference-specifications.md 两份副本,统一以全局 ~/.agents/docs/ 为单一事实源,并清理 知识索引 与 文档中心 中的索引死链。
  • 特性与调研文档同步标题栏迁移口径:Commit 视图整合(QuickPick 形态的 changelist 管理、hyperGit.commit.dmode:<repo> 持久化键、批量 Discard 验证步骤)、变更文件目录树;发布策略调研 §2.3 由「单市场」再次修订为「双市场」,保留完整决策沿革。

[0.0.17] - 2026-09-09 — Log 提交详情常驻面板 · VS Code 1.136 最佳实践对齐 · 稳定性与体验修复

自 v0.0.16 以来的积累(PR #115 / #116)。核心变更:Log 提交详情由悬停浮层改为右侧常驻面板(三区可拖拽分割线、窄视图自适应堆叠),并全面对齐 VS Code 1.136 控件 / 交互 / API 最佳实践(修复 9 项缺陷、Webview 控件全面主题化、能力声明与设置治理);新增长时 git 操作进度反馈、入门导览与默认键位、Stash / Worktrees 批量操作、分支 / 标签名即时校验等体验增强。完整用户视角叙述见 Release Note v0.0.17。

Added

  • 长时 git 操作进度反馈:pull/push/fetch/merge/rebase/cherry-pick/reset/updateProject 等以 withProgress 呈现(默认标题栏非阻塞,Update Project 与交互 Rebase 用通知位);git 操作失败通知附 "Show Output" 按钮直达 Console。
  • 入门导览与默认键位:新增 walkthroughs 贡献点(Get Started with Hyper Git,5 步导览);默认键位 Alt+B 切换 Blame 注解、Alt+G 打开 Graph 过滤(Commit 输入框 Ctrl/Cmd+Enter 提交原有内建保留)。
  • Stash / Worktrees 批量操作:两视图启用多选(批量 Drop 按 index 降序防位移、批量 Remove 跳过 main/当前打开项);新建 stash/worktree/shelf 后聚焦对应视图;provider 加载失败经 TreeView.message 内联呈现。
  • 分支/标签名即时校验:新增 engine/ref/ref-name.validateRefName 纯函数(git check-ref-format 的 UI 子集,9 组单测矩阵),挂接全部 8 处分支/标签名输入框。
  • QuickPick 体验:提交选择器补 matchOnDescription/matchOnDetail(hash 前缀可搜);Rebase base 与标签目标选择插 QuickPickItemKind.Separator 分段;Commit 文件菜单补 $(codicon) 图标。
  • Commit 文件列表键盘导航:容器级焦点 + ArrowUp/Down/Home/End/Enter/Escape(复刻 Graph 模式);Rebase 拖拽补 Alt+↑/↓ 键盘替代,确认层补 Escape/焦点圈禁/焦点还原。

Changed

  • Webview 控件全面主题化:滚动条走 --vscode-scrollbarSlider-*、checkbox accent-color、下拉统一 --vscode-dropdown-*(.hg-select 基类)、阴影 --vscode-widget-shadow;字号全线以 --vscode-font-size 为基准 calc 派生(随用户字号设置缩放);高对比度主题下 Graph 彩色胶囊改描边呈现;Graph 行高/泳道列宽常量单源化。
  • 文件状态点改字母标记:Commit 视图 ● 色点改为 M/A/U/R/D/C 着色字母(色盲可辨,对齐官方 SCM 与 Graph 面板);8 处 Unicode 字符图标全部 SVG 化(折叠箭头/省略号/关闭/导航/空态/merge 标记)。
  • 日志通道现代化:两 OutputChannel 迁 LogOutputChannel(自动时间戳与级别、统一日志视图),懒创建并随扩展释放。
  • 确认对话框多行正文迁 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 记忆化。
  • 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:<repo> / hyperGit.log.dmode:<repo>)——原 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)。原 #commit-tip 悬停浮层与 i 快捷键整体移除,行悬停不再弹层;底部 Changed Files 区随之并入面板上半区。窄视图(#main < 560px)自动退化为上下堆叠(面板 45%、图区保 55%),避免面板 280px 下限把提交图挤成零宽;面板收起守卫同时校验选中态与可见性,切到无记忆选中的仓库不残留上一仓库的面板内容。完整叙述见 Log 提交详情面板。

Fixed

  • Merge 编辑器「保存→拒绝强制保存→取消」路径失效:webview 回调内重复调用 acquireVsCodeApi()(每个 webview 仅允许调用一次,第二次抛异常),改为脚本顶部获取后全程复用;交互式 Rebase 确认执行同理(issue #17)。
  • Commit 草稿丢失:视图隐藏销毁后 message/amend/signoff/skipHooks 全部丢失且模板重灌覆盖。webview state 升 v3 按仓库持久化草稿,输入即时落盘(消除 200ms 防抖尾丢),提交成功清空(issue #18)。
  • 切换深浅主题后 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)。

Docs

  • 新增 Log 提交详情面板(布局分栏 / 交互数据流 Mermaid、边缘 Case、forHash 守卫语义);移除被替代的 docs/features/log-commit-tooltip.md,同步更新 知识索引、文档中心 与 变更文件目录树 表述。

[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。

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/<basename>.<sha1[:8]>/ 随活跃仓库动态求值,旧平铺数据一次性安全迁移:仅 rename、零删除零覆盖)、最近提交消息(per-repo key,旧全局 key 回落一次)、Graph/Commit webview 视图状态(scope/选中/勾选集等 v2 byRepo 分区)。选取逻辑下沉纯函数 engine/git-state/repo-selection.ts(持久化恢复 → folder0 匹配 → 首个仓库三级优先),三重顺序不变量保证 rebind 先于视图刷新;Blame 注解切库自清理;顺带修复激活竞态(repo 发现晚于 activate 时 memento key 落占位根)。集成测试新增 multi-root 双仓库 fixture 套件(tests/suite/multi-root.test.js,activate() 导出 { service } 程序化接缝)。完整叙述见 多根工作区仓库切换。(#108)
  • Agentic Git 偏好配置(Agentic Git 预置):新增 hyperGit.agent.* 四项配置为 M5 AI 接缝 铺路——① 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。仅落地配置与内置默认,agent/ 五接缝与 hyperGit.ai.enabled 行为不变、零破坏。README 指标行同步 7 → 11 配置项。完整叙述见 Agentic Git 偏好配置。(#89)
  • Claude Code 配置(Agentic Git 预置):新增两项与 Claude Code 相关的配置为 M5 AI 接缝 铺路——① 设置项 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(Vitest 可测),命令实现见 adapter/claude-commands.ts。仅落地配置与快捷入口,agent/ 五接缝与 hyperGit.ai.enabled 行为不变、零破坏。同步校正 README 指标行(6 视图 · 101 命令 · 7 配置项 · 372 单元测试,此前 97 命令 / 324 测试 已滞后 HEAD)。完整叙述见 Claude Code 配置。(#88)
  • Branches 视图按 / 前缀分组为文件夹树:Local / Remote / Tags 三段支持在平铺与按 / 前缀分组的可折叠文件夹树间切换——共享前缀的分支收拢到以前缀命名的文件夹下、叶子仅显示末段后缀(如 bak/2025、bak/master-2025-07 → 📁bak → 2025 / master-2025-07;远程整体收拢为 origin 文件夹并内嵌 feature)。新增纯逻辑引擎 buildRefTree(复用「变更文件目录树」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 与多选批量均零改动、零破坏。完整叙述见 分支前缀分组树。(#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 因 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 声明式护栏锁定顺序与各视图 visibility。平台约束:visibility 仅影响全新安装 / 干净 profile 的初始态——老用户升级后需命令面板「View: Reset View Locations」或右键容器页签「Reset Location」方采用新默认(同 issue #12 / #13 平台行为)。决策详见 issue #16。(#101)

Fixed

  • 新增 / 删除 / 重命名文件的差异视图可正常打开:缺失端(新增文件无旧端、删除文件无新端)改用 git 空树 ref 构造 URI,跨 VS Code 版本稳定解析为空内容,修复新版 readFile 对不存在具名 ref 抛 FileNotFound 致 Commit / Graph 视图差异打不开的问题。按状态正交分解:新增空树置旧端、删除空树置新端、重命名两端异路径;补齐 Graph 视图逐文件 status / oldPath 传参与干净路径,修复重命名点击崩溃;新增分类器与端点解析的单元 / 集成测试,并记录 issue #15。(#87)

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

  • README 中英文版新增 Overview 概览图:Features / 核心能力章节引入架构总览图,一图速览六视图与 Agentic Git 能力版图。

[0.0.14] - 2026-07-06 — 修复 GRAPH 视图提交记录时间倒序

修复 GRAPH 视图「All」范围下提交记录未按时间倒序排列的问题——取数参数由 --topo-order 改为 --author-date-order,令跨分支提交按作者日期正确交错、消除「日期回跳」。纯取数排序修复,不改数据协议、布局算法与任何视图交互。完整用户视角叙述见 Release Note v0.0.14。

Fixed

  • GRAPH 视图提交记录日期回跳:取数参数 --topo-order → --author-date-order。--topo-order 会把不同分支的提交「成块」输出,导致从较旧提交分叉但日期较新的旁支提交被整块挤到列表末尾,出现「前几行日期递减、中途回跳到最新日期」的反直觉乱序;--author-date-order 同样保证 lane 算法依赖的「子在父之上」不变量(graph-layout 仅依赖该拓扑约束、不依赖 topo-order 的「分支成块」特性),且按作者日期倒序跨支正确交错,并与视图日期列(row.authorDate)对齐(单一事实源)。同步更新 8 处 topo-order 注释澄清不变量真实要求、log-query.test.ts 断言与「不含 --topo-order」回归护栏。详见 issue #14。(#82)

[0.0.13] - 2026-07-05 — 视图容器由活动栏迁移至底部面板(Terminal 之后)

将 Hyper Git 视图容器从活动栏(Activity Bar / Primary Side Bar)迁移至底部面板(Panel),默认排在 Terminal 页签之后,提供与官方 Terminal / Output / Problems 一致的底部停靠体验。完整用户视角叙述见 Release Note v0.0.13。

Changed

  • 视图容器 dock 迁移:package.json 的 viewsContainers 由 activitybar 改为 panel,容器 id hyper-git 与全部 7 个视图(Commit / Graph / Branches / Stash / Shelf / Worktrees / changesBadge)不变;.ts 源码与图标无需改动(dock 类型与 views 归属、API 调用、图标规范完全解耦)。initialSize 语义随之由侧边栏高度权重变为 Panel 主轴权重,值本身不改。

Known Limitations

  • 活动栏「始终可见」未提交角标消失:迁移后活动栏不再有 Hyper Git 入口图标,issue #10 修复的「面板未打开也持续显示」活动栏计数角标随之失效;未提交计数仅在 Panel 展开时可见(VS Code 平台行为)。详见 issue #13。
  • 老用户需重置视图布局:VS Code 会记忆旧的 activitybar 位置,升级后需命令面板执行「View: Reset View Locations」或右键容器页签「Reset Location」才采用新默认(issue #12 同款平台行为)。

Docs

  • 新增 Release Note v0.0.13;issue #13 记录 dock 迁移决策与 badge 权衡。

[0.0.12] - 2026-07-04 — 提交详情光标跟随悬浮卡 · Tooltip 交互修复 · 布局优化 · 依赖升级基线

在 v0.0.11 基础上,将 Graph 提交详情悬浮卡重做为随光标浮现、逐项对齐 VS Code 官方 Source Control GRAPH 的形态(其间曾尝试迁移至右侧编辑器区面板,最终撤回、改回光标跟随浮层),并配套修复 CI / 提交两类 Tooltip 的定位、互斥、键盘触发与引用胶囊截断等一系列交互回归;同时优化侧边栏视图默认布局,并合入 TypeScript 6 / vitest 4 / vite 8 等依赖升级基线。完整用户视角叙述见 Release Note v0.0.12。

Changed

  • Graph 提交详情改为「光标跟随 hover 悬浮卡」并逐项对齐官方:撤销中途「提交详情迁移至右侧编辑器区 WebviewPanel」的方案,改为随光标浮现的 #commit-tip 悬浮卡(采用 editorHoverWidget 语义令牌、与 CI 状态浮层同款视觉语言);内容逐项对齐官方 Source Control GRAPH——变更文件 diffstat、作者 / 提交者邮箱、作者 / 提交时间(绝对 + 相对)、所在 branches / tags / remotes 引用胶囊与 Committer 行。新增 engine 纯函数 format-time(绝对 + 相对时间格式化)作单一事实源,并扩展 commit-files diffstat 解析与 protocol 提交详情载荷。(#65, #69)
  • 侧边栏视图默认布局优化:Stash / Shelf 两个次要视图默认折叠(visibility: "collapsed",仅占标题栏、点击即展开),Worktrees 保持默认展开、仅以 initialSize 收窄;并为各视图设置初始高度权重(initialSize:Commit / Graph 较高、Branches 居中、次要视图紧凑),缓解视图挤占空间的体感。注:VS Code 侧边栏视图存在约 142px 硬性最小展开高度(核心硬编码、官方特性请求 microsoft/vscode#123715 已 not planned),无法经扩展解除;上述默认仅对新安装或执行「View: Reset View Locations」后的布局生效。详见 issue #12。(#64)

Fixed

  • CI 与提交详情 Tooltip 定位更贴近光标:浮层与光标间距由 14 收窄至 8,并对纵向翻转做视口钳制,避免浮层超出可视区或与光标脱节。(#77)
  • CI 与提交详情 Tooltip 互斥 + 浮层内引用胶囊完整不截断:两类浮层不再同时显现互相遮挡;提交悬浮卡内的 branches / tags / remotes 引用胶囊改为完整显示、不再被省略号截断。(#76)
  • CI 状态 Tooltip 键盘触发丢失:positionTip 改为 rect / cursor 双模式定位,键盘(i 键)触发时以行 rect 锚定,恢复鼠标之外的可访问触发路径。(#74)
  • 恢复提交 Tooltip 丢失的 branches / tags / remotes 胶囊与 Committer 行:修复重做过程中的回归,提交悬浮卡重新完整呈现引用胶囊与(与作者不同时的)提交者行。(#74)

Build

  • TypeScript 5.9 → 6.0.3 升级并迁移 tsconfig 模块解析策略。(#67)
  • 测试与构建工具链升级:vitest 2 → 4.1.9、新增显式 vite ^8.1.3、typescript-eslint 8.39 → 8.62.1,并重生锁文件。(#66)
  • 其余开发依赖升级:@stylistic/eslint-plugin 2 → 5.10.0、@types/node 26.0.1 → 26.1.0、prettier 3.9.3 → 3.9.4。(#55)
  • 依赖治理:actions/checkout 4 → 7 (#54),并将 dependabot target-branch 锚定至 feature/1.x.x、4 项依赖升级改道版本演进分支。(#75)

Docs

  • 文档口径同步为 VS Code Marketplace 单市场:移除文档中残留的 OpenVSX 记述,与 v0.0.11 起的单市场发布决策对齐。(#63)

[0.0.11] - 2026-07-04 — 首个正式版(承载 0.0.10 内容)· 发布渠道收敛 Marketplace

首个 VS Code Marketplace 正式发布版本,承载 0.0.10 预发布通道(rc.1 / rc.2)已验证的全部内容——提交图更名 Graph 并对齐官方 Source Control GRAPH、悬浮浮层 iframe 裁剪修复、未提交角标承载迁移、README 真实性校准与中英双语;并将发布渠道收敛为 VS Code Marketplace 单市场。0.0.10 版位已被预发布通道占用,正式版按官方规则顺延至 0.0.11。完整用户视角叙述见 Release Note v0.0.11。

Changed

  • 发布渠道收敛为 VS Code Marketplace 单市场:移除 CI publish job 的 OpenVSX 发布步骤及对 OVSX_PAT 的依赖,README 双语安装渠道同步移除 OpenVSX;发布流水线现为 GitHub Release + VS Code Marketplace(由 ENABLE_MARKETPLACE_PUBLISH 变量门控,rc 标签走预发布通道)。
  • Log 视图更名为 Graph 并对齐官方 Source Control GRAPH:泳道连线改三次贝塞尔平滑曲线、HEAD 空心双环高亮、引用胶囊改全圆角实心 pill 并跟随泳道色、工具栏 seg 贴近官方;命令标题 / 视图名 / aria-label 统一为 Graph(内部标识符不动,不改数据 / 协议 / 布局算法 / CI 逻辑)。(#53)

Fixed

  • 提交 / CI 悬浮浮层被侧边栏 iframe 裁剪失效:抽出共用 positionFloat(锚右侧 → 越界翻左 → 再越界收进视口)彻底修复。(#53)
  • 活动栏未提交变更数角标更新不及时:角标承载由 Commit WebviewView 迁至隐藏 Treeview(hyperGit.changesBadge,when:false),activate 即实例化、面板未打开也可靠;新增 engine 纯函数 change-count 作去重单一事实源。(#52)
  • 发布流水线预发布打包缺陷:package job 对 rc tag 补 --pre-release 打包,与 vsce publish --pre-release 对齐,修复 Marketplace 预发布 publish 失败。详见 issue #11。

Docs

  • README 真实性校准 + 中英双语重构:单测计数校正为 324、移除不存在的 ui/ 层描述、publisher 落实为 ThreeFish-AI;根英文、中文迁入 docs/i18n/zh-CN/README.md。(#51)

[0.0.10-rc.2] - 2026-07-04 — 修复发布流水线预发布打包缺陷

rc.1 因 CI package job 未以 --pre-release 打包,致 publish job 的 Marketplace 步骤报「VSIX 未以 pre-release 打包」而失败(OpenVSX 步骤随之被 skipped),三渠道仅 GitHub Release 成功、Marketplace/OpenVSX 未发出。rc.2 修复该流水线缺陷后重新走通;产品内容与 rc.1 一致。完整叙述见 Release Note v0.0.10-rc.2。

Fixed

  • CI package job 对 rc tag 以 --pre-release 打包:VS Code 要求「以预发布方式发布的 VSIX 必须在打包时即带 --pre-release 标记」,否则 vsce publish --pre-release 报 Cannot use '--pre-release' flag with a package that was not packaged as pre-release。package 步骤改为与 publish / OpenVSX 同款 PRE_FLAG 判定(GITHUB_REF_NAME 含 rc 即追加 --pre-release),令同一枚预发布 VSIX 贯穿 GitHub Release / Marketplace / OpenVSX 三渠道;正式版 tag 与分支 / PR CI 行为不变。详见 issue #11。

[0.0.10-rc.1] - 2026-07-04 — Graph 视图对齐官方 · 浮层与角标修复 · 发布链路验证

面向 0.0.10 的首个预发布(RC)。在 v0.0.9 基础上将提交图视图更名为 Graph 并视觉对齐 VS Code 官方 Source Control GRAPH 视图,修复提交/CI 悬浮浮层被侧边栏 iframe 裁剪失效、活动栏未提交数角标更新不及时两处缺陷,并完成 README 真实性校准与中英双语重构。本版亦作为 VS Code Marketplace 发布链路打通的验证版(首次以官方预发布模型 --pre-release 发布 0.0.10)。完整用户视角叙述见 Release Note v0.0.10-rc.1。

Changed

  • Log 视图更名为 Graph 并对齐官方 Source Control GRAPH:泳道连线由直线改三次贝塞尔平滑曲线(同列自动退化直线);当前 HEAD 行渲染为空心环 + 内点(双环高亮);引用胶囊移至 message 右侧后缀、底色跟随本行泳道色、改全圆角实心 pill + 分支/云/tag 内联 SVG 图标前缀;工具栏 seg 按钮间距 / 圆角 / hover 态贴近官方。视图名与 Refresh / Filter / Clear Graph Filter 命令标题、CI 配置描述、aria-label 统一为 Graph(viewType hyperGit.log、log/* 消息前缀等内部标识符不动,不改底层数据 / 协议 / 布局算法 / CI 逻辑)。(#53)

Fixed

  • 提交 / CI 悬浮浮层被侧边栏 iframe 裁剪失效:#48 的浮层定位将横向定位改为 left = window.innerWidth + 8,误以为 webview position:fixed 可越界渲染到编辑器;实则侧边栏 WebviewView 是沙箱 iframe,坐标系为自身视口,该值落到右边界外被裁剪不可见。抽出共用 positionFloat(锚触发元素右侧 → 越界翻左 → 再越界收进视口),彻底修复 CI 与提交两处浮层。(#53)
  • 活动栏未提交变更数角标更新不及时:角标原挂 Commit WebviewView,VS Code 在 resolveWebviewView(用户打开过面板)前无法显示 webview 角标(vscode#164974 / #146330),致面板未打开时新变更不点亮、提交 / 撤销后不清除。改由隐藏 TreeView(hyperGit.changesBadge,when:false)承载,activate 即实例化、无论面板是否打开都可靠聚合到容器图标;新增 engine 纯函数 change-count(toRelKey / countUniqueChanges)与 GitRepositoryService.getChangeCount() 作单一事实源(getChanges 复用同一去重逻辑),角标走独立 40ms 微防抖快路径、与 150ms 重刷新解耦;移除 Commit webview 死代码(updateBadge / pendingBadge)杜绝容器 2× 计数,并补 change-count 单元测试锁定计数不变式。(#52)

Docs

  • README 真实性校准 + 中英双语重构:经 3 路只读核验 + 单测实跑取证修正——移除不存在的 ui/ 层(改述 engine/ → adapter/)、单元测试计数 280 → 324、行级提交 CodeLens 标签校准为 "Commit this Hunk"、publisher 占位符落实为真实 ThreeFish-AI;根 README.md 改写为地道英文版,中文版迁入 docs/i18n/zh-CN/README.md 并互加语言切换、补入 CHANGELOG 链接。同步校正文档中心「最新」发布指针与知识索引 agent 接缝清单。(#51)
  • 补充 vsce 发布用法说明并重构 README 底部 footer,修复链接渲染与协议措辞。

规模实证(README 校准后):6 视图 / 97 命令 / 6 配置项 / 324 单元测试(32 文件全绿)+ 集成测试,CI 三平台(Ubuntu / macOS / Windows)矩阵全程 GREEN。

0.0.9 - 2026-07-04 — 视图整合 · UI 系统化 · 分支与 CI 增强

自上一个正式版 0.0.6 以来的首个公开版本,聚合 0.0.7 / 0.0.8 / 0.0.9 三轮迭代:提交/日志视图内聚重构、UI/UX 全局系统化、分支与 CI 能力增强,以及一批工程修复。完整用户视角叙述见 Release Note v0.0.9。

Added

  • 变更文件目录树切换:Commit 视图活动 Changelist 文件列表、Log 视图选中提交的变更文件列表均支持「平铺 / 按目录分组(Group by Directory)」两态切换(工具栏 List/Tree 段控),偏好按视图 webview.setState 记忆。目录树由纯逻辑 engine/tree/file-tree.buildFileTree host 侧构建随 payload 下发(复用 graph-layout「host 算、webview 渲」范式,规避内联脚本无法 import engine 的 Split-Brain),叶子以 fileIndex 回指扁平列表;支持单目录子链折叠(对齐 VS Code explorer.compactFolders);Commit 树形附目录级三态复选框。详见 变更文件目录树。(#47)
  • Log 提交悬浮详情:鼠标悬停 Log 提交行以浮层展示完整信息——所在本地/远程分支、标签、HEAD、完整提交消息(subject + body)、作者 name <email>、(与作者不同时)提交者、作者/提交时间(绝对 + 相对)、完整 SHA;复用 CI 状态浮层范式(置于虚拟滚动容器外、与 CI 浮层互斥),i 键开、Esc 关,滚动/刷新自动消隐。git log 取数扩展 %cn/%cI/%b(body 置末,NUL/RS 分隔容多行),正文上限截断以控 payload。详见 Log 提交悬浮详情。(#47)
  • 清理已删远程分支入口:Branches 视图新增「Clean up Deleted Remote Branches」命令,一键剔除远端已删除却仍残留于本地的 remote-tracking 引用,根治 Log 视图残留已删分支提交的游离泳道。(#44)
  • 远程分支右键删除:Branches 视图远程分支支持右键删除(git push --delete <remote> <branch>),无需切到命令行。(#42)

Changed

  • Commit 视图承接全部变更管理能力(原 Changes 视图平移):活动 Changelist 文件单击看 Diff、右键(原生 QuickPick)执行 移动到 Changelist / 查看历史 / 暂存·撤销 Hunks / 加入 .gitignore / 丢弃改动;头部提供 Changelist 切换下拉 + ⋯ 管理菜单(新建 / 重命名 / 删除)。详见 Commit 视图整合。(#47)
  • Git 操作工具栏与未提交数角标迁至 Commit 视图:原挂在 Changes 视图标题栏的 refresh / push / pull / fetch / patch 等动作迁到 Commit 视图标题栏(去掉与 webview 内按钮重复的 commit / commitAndPush);活动栏未提交数角标改由 Commit WebviewView.badge 承载,首帧未 resolve 以 pendingBadge 兜底。(#47)
  • UI/UX 全局系统化:建立共享设计 Token 地基(spacing / radius / button,shared-styles.ts)并注入 Commit / Log / Merge / Rebase 四个 Webview;Log DAG 泳道色改读 --vscode-charts-* 主题令牌(深浅主题自适应);命令层去冗余(标题栏 ≤5 项、同步操作下沉溢出组、危险操作归入 9_dangerous、新增 hyperGit.logFilter 聚合过滤器);~94 项命令标题 / 配置 / viewsWelcome 统一英文并为高频与危险命令补齐 codicon;Webview 加固(空态、加载态、快捷键、ARIA)与 5 棵 TreeView 的 Markdown Tooltip 统一。(#43)
  • 品牌图标改用透明底 Emerald 绿环方案:源图标改为透明底 + #3FB950 绿色圆环 + git-pull-request 字形,重生成 256×256 透明 PNG(66KB→14KB);新增 galleryBanner(#0E2A1C 深绿、dark 主题)与 Marketplace 页头协调。(#49)

Removed

  • 移除 CHANGES 树视图:其展示的活动 Changelist 与 Commit 视图的 Active Changelist 完全重复(同源 getChanges() + getGroups());全部独有能力已零回归平移入 Commit 视图(见 Changed),视图数由 7 降为 6。(#47)

Fixed

  • Log 提交/CI 浮层定位重做:原 positionTip/positionCommitTip 把浮层锚定在所悬元素左沿并按 webview 宽度夹紧,420px 宽的浮层在 ~240px 窄侧边栏中从左沿一路铺到编辑器,既「撑满 LOG 视图」又方位怪异。改为横向固定到 window.innerWidth + 8(侧边栏右沿外、编辑器区内),纵向与所悬行/图标顶部对齐并按视口高度夹紧;复用 webview position:fixed 可越界渲染到编辑器区的特性,浮层不再压住 LOG 列表,自然悬浮于所悬行的右侧。(#48)
  • Log All 范围改用 --branches --tags --remotes:原 --all 遍历全部 refs,含宿主工具注入的 refs/conductor-checkpoints/* 与 refs/conductor-archive-heads/*,致游离提交仍可达、被画成游离泳道;改用三大标准命名空间根治污染(Checkpointer 页保留 --all 以见原始完整图)。(#45)
  • CI 状态图标防闪烁与准实时刷新:终态缓存避免重复请求以消除闪烁,轮询间隔优化实现准实时刷新,各检查项状态图标与 Tooltip 颜色按通过 / 失败 / 运行中语义对齐。(#41, #40)
  • 修复 vsce package 打包因 ESLint no-useless-assignment 阻断:engine/ci/remote-parser.ts 中 host/path 的空串初值为 dead store(hasScheme 真假两分支均无条件重赋、解析失败处先 return null),改为带类型标注的纯声明消除,由 TS 确定赋值分析接管,运行时行为不变。
  • 修复 Log 提交悬浮浮层「行→浮层→空白」后卡死不消失:commitTipEl.mouseleave 未复位 overCtRow,致 scheduleHideCommit 的 !overCtRow && !overCt 守卫恒不成立;在 mouseleave 一并复位 overCtRow 修复。
  • 修复 capBody 截断劈开 Unicode 代理对:String.prototype.slice(0, BODY_CAP) 按 UTF-16 码元计数,2000 边界落在 emoji 代理对中间会留下孤立高代理位(渲染为 �);改用 Array.from(t).slice(0, BODY_CAP).join('') 按码点截断。

0.0.6 - 2026-06-30 — 首个 MVP 正式版

首个对外正式版本,在 VS Code Marketplace / OpenVSX 上以 「Hyper Git - Agentic Git」 之名发布。为 VS Code 提供统一的 Git 变更管理与提交工作流(多变更分组、自绘提交面板、可视化提交图、Shelf、行级提交)。采用路径 B(消费 vscode.git 稳定 Repository API 为底座;稳定 API 未覆盖的能力经 GitRepositoryService.execGit 复用同一 git 二进制 api.git.path 的受控 CLI 通道实现),与原生 Source Control 平行共存、零冲突。规模:7 视图 / 93 命令 / 6 配置项,280 单元测试 + 集成测试,CI 三平台矩阵全程 GREEN。完整特性见 Release Note v0.0.6。

Added

变更与 Changelist

  • 按 Changelist 分组的 Changes 树视图:新建 / 重命名 / 删除 / 设活动列表 / 跨列表移动文件,workspaceState 持久化(重启恢复);文件状态色复用 gitDecoration.* 主题色;单击打开原生 Diff(HEAD ↔ Working)。
  • 文件级操作:丢弃改动、加入 .gitignore、显示文件历史。

Commit 提交窗口

  • 自绘提交面板(WebviewView):活动 Changelist 文件勾选 + 多行消息编辑器 + Amend / Signed-off-by / 跳过 Git Hooks + 提交 / 提交并推送;勾选集即提交权威范围(仅提交选中的文件集合);最近消息一键复用。
  • Conventional Commits 实时校验(可配置)+ 内置 ConventionalCommitCheck Checkin Hook;CommitPipeline 责任链设计参考 JetBrains CheckinHandler(校验 → 暂存 → Hook 链 → 提交 → 可选推送)。

Log 提交图与历史

  • 自绘 Graph DAG webview:基于父子关系自计算 lane 布局,彩色泳道 / 节点 / 分叉·合并连线 / HEAD·分支·标签徽标,--topo-order 保拓扑序,行宽随实际 lane 自适应;虚拟化滚动增量加载、↑↓ 键导航;选中提交内联展开变更文件并打开单文件 Diff。
  • 提交图 × CI 状态:每条提交行最右侧显示 GitHub CI 最终状态(绿勾/红叉/运行中),悬停 Tooltip 展示各项检查 + 未通过原因 + 跳转链接;复用 VS Code 内置 GitHub 认证(vscode.authentication,凭证不经 chat/日志/webview),仅取可见行懒加载、批量 GraphQL(≤100 oid)+ 限流冷却、终态缓存;非 GitHub 远程零图标零请求,支持 github.com 与 GitHub Enterprise;配置 hyperGit.log.ci.{enabled,remote,provider}。
  • Checkpointer 过滤:Log 视图新增 Checkpointer 选项,默认剔除 AI 编码工具产生的自动快照(checkpoint)提交,提交图更干净,可按需开启。
  • 7 个可组合过滤器:作者、路径、message(grep)、message(正则)、合并模式、日期、一键清除;复制 commit hash、刷新。
  • per-commit 操作:Reset 到此(soft/mixed/hard/keep)、从此新建分支 / 标签、查看包含此提交的分支、Cherry-Pick、Revert。

Branches 与 Tags

  • 四段分组(收藏 / 本地 / 远程 / 标签)+ ahead·behind·upstream 跟踪展示;新建 / 检出 / 删除 / 重命名 / 合并 / 变基 / 从选中新建并检出;收藏切换、与当前分支比较、任意两分支比较、复制引用、清理已合并分支。
  • 多选批量操作:createTreeView({ canSelectMany: true }) 支持框选,批量删除分支/标签、批量复制引用、批量收藏;删除前 git branch --merged 分类已合并/未合并并诚实分栏确认强制删除风险;仅单目标语义的操作经 !listMultiSelection 在多选时隐藏。
  • 标签:新建(轻量/附注)、删除(多选)、检出(detached HEAD)。

Stash 与 Shelf

  • Stash:创建、保留已暂存创建、应用、Pop、删除、从 Stash 创建分支、清空全部,按真实 stash@{n} 索引操作。
  • Shelf(基于 patch、独立于 git stash 的改动搁置机制):Shelve 暂存、静默 Unshelve、带 3-way 合并 Unshelve、删除;独立 TreeView。

远程与冲突

  • Pull / Push / Fetch(无上游分支自动选定 remote 并建立 -u 跟踪;GitError.stderr 优先暴露使失败可读)。
  • 对话框:Push…(normal / force-with-lease / force + 推送标签)、Update Project…(merge / rebase)、Merge…(ff-only / no-ff / squash + 自定义消息)。
  • 冲突兜底引导:merge/rebase/pull/cherry-pick/revert/stash-pop/unshelve 失败时检测冲突并弹「解决/中止」;自绘 3-way Merge Editor(OURS / RESULT 可编辑 / THEIRS + 写回 git add);冲突文件「采用 Ours / Theirs」。

历史编辑与高级操作

  • Cherry-Pick、Revert、Reset HEAD(soft/mixed/hard/keep)、交互式 Rebase(webview:pick/squash/fixup/drop + reword + 拖拽重排,经 GIT_SEQUENCE_EDITOR 非交互写入)、撤销最近提交(soft)、删除提交(rebase)、Fixup(autosquash)、改写最新提交信息。

编辑器内能力

  • 行内提交:每个未暂存 Hunk 上方渲染 CodeLens「提交此 Hunk」→ patch 重建 + git apply --cached 仅暂存该 Hunk → 提交(含他处已暂存内容的二次确认)。
  • 部分暂存 / 取消暂存、光标处暂存、Hunk 归属 Changelist(持久化 hunk→CL 映射)。
  • Blame 行内注解:逐行作者 / 日期 / hash 显示于编辑器内,悬浮展示提交详情,文档编辑时自动清除。

Worktrees

  • 全生命周期管理:新建(新分支 / 检出已有 / detached)、在新窗口打开、锁定 / 解锁、移动、复制路径、删除(安全 / 强制)、清理失效 Worktree、刷新。

工具与配置

  • 导出 / 应用 Patch、查看 Reflog、3-way Diff 概览(HEAD ↔ Staged ↔ Working)、Console 命令输出面板。
  • 配置项:hyperGit.commit.template、hyperGit.commit.conventional、hyperGit.ai.enabled(M5 预留,暂不生效)、hyperGit.log.ci.{enabled,remote,provider}(提交图 CI 状态)。

架构与质量

  • 正交分层:engine/(纯逻辑,零 vscode 依赖、Vitest 可测)、adapter/(唯一接触 vscode API)、agent/(AI 接缝)、ui/、shared/protocol.ts(Webview ↔ Host 契约单一事实源)、infra/。
  • AI 接缝预埋 5 接口 + Null 实现(ILlmProvider / ICommitMessageProvider / IPreCommitInspector / IChangelistGrouper / IConflictResolver),设计参考 JetBrains CheckinHandler 提交生命周期,M5 替换为真实实现。
  • 品牌图标统一为「Git Pull Request」造型(活动栏 SVG + Marketplace 徽标 + README 头图,字形改编自 Tabler Icons,MIT);活动栏图标实时显示未提交文件数角标。
  • CI 流水线:lint → 类型 → 构建 → 三平台测试矩阵(Ubuntu/macOS/Windows,Linux 经 xvfb)→ 打包 vsix;v* 标签触发 GitHub Release(附带可本地安装的 .vsix,正文取自 docs/releases/)+ OpenVSX 发布;VS Code Marketplace 由 ENABLE_MARKETPLACE_PUBLISH 变量门控。

已知限制

  • Commit 窗口的 Co-authored-by / Author 覆盖(--author)/ 撤销最近提交按钮 UI 接线(engine trailer 已就绪,仅缺 webview 交互)。
  • Partial 多文件选择 UX、行级 split chunks(按选定行拆分提交)。
  • 目录 / folder diff(虚拟文档)、Submodules 管理。
  • M5 AI Agent(5 个接缝已预埋 Null 实现,本版未启动)。
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.