本项目的所有重要变更均记录于此文件。格式遵循 Keep a Changelog,版本号遵循 SemVer。
面向用户的发布说明(含完整特性叙述与安装指引)见
docs/releases/。
- 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,全量单测覆盖。
- 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.filterActivecontext 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 错误态。
- 开发依赖升级(#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,对扩展运行时零影响。
- 「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 挂起)。
- 作者名含正则元字符时过滤 0 命中:
git log --author缺省 POSIX BRE(非 ERE),旧实现把手输作者名原样作为正则传递——dependabot[bot]中的[bot]被解释为字符类,匹配 0 条(本仓库实测:不转义 0 命中)。现在从候选列表选中的作者身份按 BRE 语义转义(仅\ . [ * ^ $;+ ? | ( ) {在 BRE 中是普通字符,加反斜杠反成操作符)并锚定全行^Name <email>$(同名异邮箱不混淆)。
- 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,全量单测覆盖。
- 错误文本提取单一事实源(
gitErrorText):新增engine/git-state/git-error.ts统一「非空白 stderr 优先 → message → String 兜底」提取语义,remote-commands/history-commands两处内联拷贝改为引用;Push 对话框 / Update Project / Merge 对话框的失败通知随之升级为 stderr 优先(真实原因直达,不再只显通用串)。
- CI 状态与 Branches PR 徽标注入取数主机策略:仅 github.com 与已配置
github-enterprise.uri的实例主机发送取数请求;其余「GitHub 形态」远程(origin 指向任意第三方主机)视同非 GitHub(零徽标、零请求),杜绝把 GitHub/GHE token 发往任意主机的凭证外发面。
- 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/四模块 + 全量单测。详见 功能文档。
- 开发依赖批量升级(dependabot):
@vscode/vsce3.9.2 → 4.0.0(#131)、vitest4.1.10 → 5.0.1(#127)、ovsx1.1.1 → 1.2.0(#130)、typescript-eslint8.68.0 → 8.70.0(#129)、esbuild0.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 引发连环冲突」的复发源。
自 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。
- 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 的双路径),推送后刷新视图并提示。
- 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 切换范式),偏好移交 hostworkspaceState按仓库持久化(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 发布渠道重启双市场:
publishjob 增回 Open VSX 发布步骤(pnpm exec ovsx publish --packagePath ./*.vsix,由仓库变量ENABLE_OVSX_PUBLISH门控 +OVSX_PAT凭证,复用packagejob 的同一枚 VSIX、共享 production 审批门),覆盖 Cursor / Windsurf / VSCodium 等 Open VSX 系编辑器;README 安装渠道同步加回 Open VSX。发布决策沿革见 发布策略调研。
- 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把首行滚到吸顶行之下被遮挡。
.agents文档去重:移除仓库内docs/.agents/browser-validation.md与docs/.agents/reference-specifications.md两份副本,统一以全局~/.agents/docs/为单一事实源,并清理 知识索引 与 文档中心 中的索引死链。- 特性与调研文档同步标题栏迁移口径:Commit 视图整合(QuickPick 形态的 changelist 管理、
hyperGit.commit.dmode:<repo>持久化键、批量 Discard 验证步骤)、变更文件目录树;发布策略调研 §2.3 由「单市场」再次修订为「双市场」,保留完整决策沿革。
自 v0.0.16 以来的积累(PR #115 / #116)。核心变更:Log 提交详情由悬停浮层改为右侧常驻面板(三区可拖拽分割线、窄视图自适应堆叠),并全面对齐 VS Code 1.136 控件 / 交互 / API 最佳实践(修复 9 项缺陷、Webview 控件全面主题化、能力声明与设置治理);新增长时 git 操作进度反馈、入门导览与默认键位、Stash / Worktrees 批量操作、分支 / 标签名即时校验等体验增强。完整用户视角叙述见 Release Note v0.0.17。
- 长时 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/焦点圈禁/焦点还原。
- Webview 控件全面主题化:滚动条走
--vscode-scrollbarSlider-*、checkboxaccent-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 偏好随之移交 hostworkspaceState按仓库持久化(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 提交详情面板。
- 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 编辑器无注解、已关闭文档条目泄漏(订阅可见编辑器变化统一挂载/清理)。
- Graph 悬停浮层专用消息与死类型:移除
log/showCommitDetail(webview → host,随浮层消亡)与编辑器区 Commit 详情面板实验遗留、全仓零引用的CommitDetailHostToWebviewMessage/CommitDetailWebviewToHostMessage协议类型(src/shared/protocol.ts)。
- 新增 Log 提交详情面板(布局分栏 / 交互数据流 Mermaid、边缘 Case、
forHash守卫语义);移除被替代的docs/features/log-commit-tooltip.md,同步更新 知识索引、文档中心 与 变更文件目录树 表述。
自 v0.0.14 以来的全量积累(承载 0.0.15 版本号预置——该版本号已就位但未单独发布,本版一并发布)。核心新特性:多根工作区多仓库切换、Branches 按 / 前缀分组树、Agentic Git 偏好配置与 Claude Code 配置预置(M5 前置铺垫)、Diff 缺失端修复与面板默认布局调整;工程侧升级 pnpm 12 与一批开发依赖。完整用户视角叙述见 Release Note v0.0.16。
- 多根工作区仓库切换(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/选中/勾选集等 v2byRepo分区)。选取逻辑下沉纯函数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)
@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.jsoncontributes.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)
- 新增 / 删除 / 重命名文件的差异视图可正常打开:缺失端(新增文件无旧端、删除文件无新端)改用 git 空树 ref 构造 URI,跨 VS Code 版本稳定解析为空内容,修复新版
readFile对不存在具名 ref 抛FileNotFound致 Commit / Graph 视图差异打不开的问题。按状态正交分解:新增空树置旧端、删除空树置新端、重命名两端异路径;补齐 Graph 视图逐文件status/oldPath传参与干净路径,修复重命名点击崩溃;新增分类器与端点解析的单元 / 集成测试,并记录 issue #15。(#87)
- 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)。
- README 中英文版新增 Overview 概览图:Features / 核心能力章节引入架构总览图,一图速览六视图与 Agentic Git 能力版图。
修复 GRAPH 视图「All」范围下提交记录未按时间倒序排列的问题——取数参数由 --topo-order 改为 --author-date-order,令跨分支提交按作者日期正确交错、消除「日期回跳」。纯取数排序修复,不改数据协议、布局算法与任何视图交互。完整用户视角叙述见 Release Note v0.0.14。
- 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)
将 Hyper Git 视图容器从活动栏(Activity Bar / Primary Side Bar)迁移至底部面板(Panel),默认排在 Terminal 页签之后,提供与官方 Terminal / Output / Problems 一致的底部停靠体验。完整用户视角叙述见 Release Note v0.0.13。
- 视图容器 dock 迁移:
package.json的viewsContainers由activitybar改为panel,容器 idhyper-git与全部 7 个视图(Commit / Graph / Branches / Stash / Shelf / Worktrees / changesBadge)不变;.ts源码与图标无需改动(dock 类型与 views 归属、API 调用、图标规范完全解耦)。initialSize语义随之由侧边栏高度权重变为 Panel 主轴权重,值本身不改。
- 活动栏「始终可见」未提交角标消失:迁移后活动栏不再有 Hyper Git 入口图标,issue #10 修复的「面板未打开也持续显示」活动栏计数角标随之失效;未提交计数仅在 Panel 展开时可见(VS Code 平台行为)。详见 issue #13。
- 老用户需重置视图布局:VS Code 会记忆旧的 activitybar 位置,升级后需命令面板执行「View: Reset View Locations」或右键容器页签「Reset Location」才采用新默认(issue #12 同款平台行为)。
- 新增 Release Note v0.0.13;issue #13 记录 dock 迁移决策与 badge 权衡。
在 v0.0.11 基础上,将 Graph 提交详情悬浮卡重做为随光标浮现、逐项对齐 VS Code 官方 Source Control GRAPH 的形态(其间曾尝试迁移至右侧编辑器区面板,最终撤回、改回光标跟随浮层),并配套修复 CI / 提交两类 Tooltip 的定位、互斥、键盘触发与引用胶囊截断等一系列交互回归;同时优化侧边栏视图默认布局,并合入 TypeScript 6 / vitest 4 / vite 8 等依赖升级基线。完整用户视角叙述见 Release Note v0.0.12。
- Graph 提交详情改为「光标跟随 hover 悬浮卡」并逐项对齐官方:撤销中途「提交详情迁移至右侧编辑器区 WebviewPanel」的方案,改为随光标浮现的
#commit-tip悬浮卡(采用editorHoverWidget语义令牌、与 CI 状态浮层同款视觉语言);内容逐项对齐官方 Source Control GRAPH——变更文件 diffstat、作者 / 提交者邮箱、作者 / 提交时间(绝对 + 相对)、所在 branches / tags / remotes 引用胶囊与 Committer 行。新增 engine 纯函数format-time(绝对 + 相对时间格式化)作单一事实源,并扩展commit-filesdiffstat 解析与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)
- 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)
- 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),并将 dependabottarget-branch锚定至feature/1.x.x、4 项依赖升级改道版本演进分支。(#75)
- 文档口径同步为 VS Code Marketplace 单市场:移除文档中残留的 OpenVSX 记述,与 v0.0.11 起的单市场发布决策对齐。(#63)
首个 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。
- 发布渠道收敛为 VS Code Marketplace 单市场:移除 CI
publishjob 的 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)
- 提交 / CI 悬浮浮层被侧边栏 iframe 裁剪失效:抽出共用
positionFloat(锚右侧 → 越界翻左 → 再越界收进视口)彻底修复。(#53) - 活动栏未提交变更数角标更新不及时:角标承载由 Commit
WebviewView迁至隐藏 Treeview(hyperGit.changesBadge,when:false),activate即实例化、面板未打开也可靠;新增 engine 纯函数change-count作去重单一事实源。(#52) - 发布流水线预发布打包缺陷:
packagejob 对 rc tag 补--pre-release打包,与vsce publish --pre-release对齐,修复 Marketplace 预发布 publish 失败。详见 issue #11。
- README 真实性校准 + 中英双语重构:单测计数校正为 324、移除不存在的
ui/层描述、publisher 落实为ThreeFish-AI;根英文、中文迁入docs/i18n/zh-CN/README.md。(#51)
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。
- CI
packagejob 对 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)。在 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。
- 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)
- 提交 / CI 悬浮浮层被侧边栏 iframe 裁剪失效:#48 的浮层定位将横向定位改为
left = window.innerWidth + 8,误以为 webviewposition: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)
- 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。
- 变更文件目录树切换:Commit 视图活动 Changelist 文件列表、Log 视图选中提交的变更文件列表均支持「平铺 / 按目录分组(Group by Directory)」两态切换(工具栏 List/Tree 段控),偏好按视图
webview.setState记忆。目录树由纯逻辑engine/tree/file-tree.buildFileTreehost 侧构建随 payload 下发(复用 graph-layout「host 算、webview 渲」范式,规避内联脚本无法 import engine 的 Split-Brain),叶子以fileIndex回指扁平列表;支持单目录子链折叠(对齐 VS Codeexplorer.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)
- 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)
- 移除 CHANGES 树视图:其展示的活动 Changelist 与 Commit 视图的 Active Changelist 完全重复(同源
getChanges()+getGroups());全部独有能力已零回归平移入 Commit 视图(见 Changed),视图数由 7 降为 6。(#47)
- Log 提交/CI 浮层定位重做:原
positionTip/positionCommitTip把浮层锚定在所悬元素左沿并按 webview 宽度夹紧,420px 宽的浮层在 ~240px 窄侧边栏中从左沿一路铺到编辑器,既「撑满 LOG 视图」又方位怪异。改为横向固定到window.innerWidth + 8(侧边栏右沿外、编辑器区内),纵向与所悬行/图标顶部对齐并按视口高度夹紧;复用 webviewposition: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打包因 ESLintno-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。
- 按 Changelist 分组的 Changes 树视图:新建 / 重命名 / 删除 / 设活动列表 / 跨列表移动文件,
workspaceState持久化(重启恢复);文件状态色复用gitDecoration.*主题色;单击打开原生 Diff(HEAD ↔ Working)。 - 文件级操作:丢弃改动、加入
.gitignore、显示文件历史。
- 自绘提交面板(WebviewView):活动 Changelist 文件勾选 + 多行消息编辑器 + Amend / Signed-off-by / 跳过 Git Hooks + 提交 / 提交并推送;勾选集即提交权威范围(仅提交选中的文件集合);最近消息一键复用。
- Conventional Commits 实时校验(可配置)+ 内置
ConventionalCommitCheckCheckin Hook;CommitPipeline责任链设计参考 JetBrainsCheckinHandler(校验 → 暂存 → Hook 链 → 提交 → 可选推送)。
- 自绘 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。
- 四段分组(收藏 / 本地 / 远程 / 标签)+ ahead·behind·upstream 跟踪展示;新建 / 检出 / 删除 / 重命名 / 合并 / 变基 / 从选中新建并检出;收藏切换、与当前分支比较、任意两分支比较、复制引用、清理已合并分支。
- 多选批量操作:
createTreeView({ canSelectMany: true })支持框选,批量删除分支/标签、批量复制引用、批量收藏;删除前git branch --merged分类已合并/未合并并诚实分栏确认强制删除风险;仅单目标语义的操作经!listMultiSelection在多选时隐藏。 - 标签:新建(轻量/附注)、删除(多选)、检出(detached HEAD)。
- 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 显示于编辑器内,悬浮展示提交详情,文档编辑时自动清除。
- 全生命周期管理:新建(新分支 / 检出已有 / 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),设计参考 JetBrainsCheckinHandler提交生命周期,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 接线(enginetrailer已就绪,仅缺 webview 交互)。 - Partial 多文件选择 UX、行级 split chunks(按选定行拆分提交)。
- 目录 / folder diff(虚拟文档)、Submodules 管理。
- M5 AI Agent(5 个接缝已预埋 Null 实现,本版未启动)。