Skip to content

feat: 合入 feature/1.x.x 首个完整 MVP(v0.0.8)——可视化提交图 DAG · GitHub CI 状态 · 分支批量操作 · 全局 UI/UX 系统性优化 - #46

Merged
ThreeFish-AI merged 23 commits into
masterfrom
feature/1.x.x
Jul 2, 2026
Merged

feat: 合入 feature/1.x.x 首个完整 MVP(v0.0.8)——可视化提交图 DAG · GitHub CI 状态 · 分支批量操作 · 全局 UI/UX 系统性优化#46
ThreeFish-AI merged 23 commits into
masterfrom
feature/1.x.x

Conversation

@ThreeFish-AI

@ThreeFish-AI ThreeFish-AI commented Jul 2, 2026

Copy link
Copy Markdown
Owner

概述

本 PR 将 feature/1.x.x 主线合入 master,交付 Hyper Git 首个完整 MVP(package.json v0.0.8,里程碑 M0–M4 全部达成 ✅,仅 M5 AI Agent 接缝预埋未启动)。

这不是单一特性,而是自研提交图、CI 集成、分支批量操作、全局 UI/UX 系统性优化、品牌与发布管线收敛等若干主题的合并集大成。变更规模:23 commits / +6578 −1756 / 96 文件

正文按主题归类(每条标注的 (#NN) 为本 PR 内 commit 已携带的关联 issue/PR)。


🌊 1. 可视化提交图(Log DAG)—— 核心重写

  • (feat(Log): Log 视图升级为 IDEA 风格提交图(Graph DAG) #34) Log 视图升级为自绘提交图:由原生 TreeView 迁移为 Webview,自研单遍增量 lane 状态机 DAG 布局引擎engine/log/graph-types|graph-color|graph-layout:nil-slot 复用保分支直顺、沿首父链继承色、相邻 lane 异色,覆盖 octopus 合并 / 多 root / 收敛 / 截断 dangling 边),渲染彩色泳道、节点、分叉·合并连线与 HEAD/分支/标签徽标,弃用 git log --graph 粗糙 ASCII;单次 git log --topo-order --all 取数 + for-each-ref 取引用,Webview 端虚拟化每行 SVG、主题调色板(--vscode- 令牌 + hex 回退)、滚动增量加载、↑↓ 键导航、选中提交内联变更文件、右键 per-commit 操作菜单。
  • (fix(Log): Graph 后文字自适应贴近以消除留白 #35) Graph 后文字自适应贴近:行宽改按「本行实际绘制最右列」计算(lane x 坐标仍全局一致),消除分支型仓库仅 1–2 条 lane 行的大片留白。
  • (feat(Log): Log 视图新增 Checkpointer 选项并默认剔除自动快照提交 #38) Checkpointer 选项:默认剔除 AI/工具自动快照提交(/^checkpoint:/ subject 过滤 + 客户端 keepCheckpoint 双保险)。
  • (fix(Log): All 范围改用 --branches --tags --remotes 根治游离泳道污染; #45) 根治游离泳道污染All 范围由 --all 改为 --branches --tags --remotes,仅遍历三大标准命名空间,排除宿主工具注入的 refs/conductor-checkpoints/*refs/conductor-archive-heads/* 内部引用(实证:本仓 --all 取 241 提交、三件套取 70);checkpointer Tab 保留 --all(其职责即原始完整视图)。

✅ 2. GitHub CI 状态集成

🌿 3. 分支管理增强

  • (feat(Branches): 视图支持多选与分支/标签批量删除等批量操作; #31) 视图多选与批量操作createTreeView({ canSelectMany: true }) 开启多选;批量化 branchDelete/tagDelete/copyBranchRef/toggleFavorite 作用于整个选区;删除仅一次 git branch --merged 分类已合并/未合并,单条确认弹窗分栏诚实呈现强制删除风险,逐个删除并汇总成功/失败;新增纯逻辑 engine/ref/selection.collectBranchRefs(选区归一化)与 engine/ref/cleanuppartitionByMerged/formatBranchDeleteConfirmpackage.json 对仅单目标命令追加 !listMultiSelection 多选时隐藏。
  • (feat(Branches): 远程分支支持右键删除(git push --delete) #42) 远程分支右键删除git push <remote> --delete <branch> 删服务端 + 成功项 branch -D -r 即时清理本地跟踪引用;新增纯逻辑 engine/ref/remote-ref.tsresolveRemoteBranch 最长前缀匹配,含斜杠 remote 名如 myorg/repo 亦安全,禁用朴素 split('/')[0]partitionRemoteByProtected 复用 isProtectedBranch 硬阻断 origin/main/master)。
  • (feat(Branches): 新增「清理已删远程分支」入口,解决 LOG 视图残留已删分支提交问题 #44) 清理已删远程分支:新增 hyperGit.pruneRemotes 命令(git fetch --prune),解决 LOG All 范围残留已删远程分支提交;prune 前后对 refs/remotes 快照、以 diffPrunedRefs 差集给出循证反馈;顺带修复 fetch/deleteRemoteBranch 遗漏 logTree.refresh() 的缺陷。

🎨 4. 全局 UI/UX 系统性优化 (#43)

  • 设计 Token 地基:新增 adapter/webview/shared-styles.ts 单一事实源(spacing/radius token + .hg-btn/.hg-input/.hg-row + 完整 hover/active/focus-visible/disabled/reduced-motion 交互态),统一 Commit/Log/Merge/Rebase 四个自绘 Webview;Log DAG 泳道色改读 --vscode-charts-* 主题令牌,引用 chip 配色校正语义错配。
  • 命令体系去冗余:标题栏瘦身至 ≤5 项(同步类操作下沉 1_sync 溢出组);新增 hyperGit.logFilter 聚合 QuickPick 分发到 6 个过滤器(复用 handler 零重复);危险操作归入 9_dangerous 分组(右键自动分隔线);~20 个高频/危险命令补 codicon 图标;94 命令标题/配置 markdownDescription/viewsWelcome 统一英文。
  • Webview 功能加固:Commit 加 Ctrl/Cmd+Enter 提交、空态、Advanced 折叠区降噪;Log 加错误态 + Retry(失败改 webview 内呈现替代模态弹窗)、详情关闭按钮;Merge 加冲突导航(Prev/Next + N/M 计数、逐冲突 Resolved/Unresolved 徽标);Rebase 加执行前确认对话框、操作摘要栏、drop 删除线。
  • TreeView 打磨:新增 adapter/tree/tree-tooltip.ts(MarkdownString + 相对时间),统一 5 棵树 Tooltip;Branches 加 (N) 计数徽标与活动分支高亮;Stash 改 --date=relative;Worktree emoji 改 codicon;Shelf 节点可折叠暴露包含文件。
  • 命令层全面英文清扫:~160 处 showXxx/QuickPick/InputBox/模态按钮统一英文(保留全部中文代码注释)。
  • 🐛 关键缺陷修复:3-way Merge Editor 此前实际不可用 —— renderHtmlescapeHtml(JSON.stringify(hunks)) 注入 <script>,而 <script> 为 raw-text 不解码 HTML 实体,导致 JSON.parse 抛错、冲突 hunks 从不渲染;改用 JS-string 上下文转义(\\/\" + <\\u003c</script> 破出)修复 round-trip。

🏷️ 5. 品牌、发布管线与文档

  • (feat(Icon): 统一 Hyper Git 品牌图标为 Git Pull Request 造型; #33) 统一品牌图标:以「分支 + 合并箭头」单一核心图形(精炼自 Tabler Icons MIT 造型)统一侧边栏 SVG(currentColor 由 VS Code 按主题着色)+ marketplace icon.png(256×256 蓝紫渐变)+ README Logo 头图;设计源沉淀至 media-src/.vscodeignore 排除)。
  • (ci(Publish): 门控 VS Code Marketplace 自动发布以消除 deployments 报错 #32) 门控 Marketplace 自动发布:未配置 VSCE_PATvsce 发布步骤鉴权失败会中断挂 environment: production 的 job、持续产生 error deployment;改为仓库变量 ENABLE_MARKETPLACE_PUBLISH 门控(默认 skipped),OpenVSX 保持无条件执行。
  • (发布 v0.0.1 首个 MVP:清理历史预发布、收敛版本与发布管线、重写发布说明/CHANGELOG/README #36 / chore(Release): 发布 v0.0.5 首个 MVP 正式版 #39) 版本收敛与发布管线:清理历史预发布(rc.1–rc.4 标签与 Release),将 Release Note 统一收敛至 docs/releases/ 作为 GitHub Release 正文单一事实源(body_path: docs/releases/${tag}.md);因「Hyper Git」名称在 Marketplace 被误删,扩展更名 hyper-git-agentic-git 重新上架(保留 hyperGit.* 命令/配置 key 不破坏用户配置);集成测试 extension ID 改为从 package.json 动态推导(单一事实源)。
  • CI 修复remote-parser host/path dead store(解 ESLint no-useless-assignment 对 vsce 打包的阻断);actions/checkout 前置于 pnpm/action-setup(v6 严格版本解析需读 packageManager 字段);.idea/ gitignore。
  • 文档:README 精简去版本耦合 + 引入 media/framework.png 架构图替换 Mermaid;.agents 协作文档目录迁移至 docs/.agents 统一归集;知识索引同步。
  • 版本:bump 至 0.0.8displayName 调整为 Hyper Git - Agentic Git,安装说明 vsix 版本号改占位符 x.x.x 避免陈旧引用。

规模与测试

  • 新增 engine 纯逻辑engine/ci/(5 文件)、engine/log/graph-types|graph-color|graph-layout + log-line + log-query)、engine/ref/remote-ref/selection + cleanup 扩展)。
  • 新增 Webview/Adapteradapter/webview/log-webview.ts(+979)、adapter/webview/shared-styles.tsadapter/ci/adapter/tree/tree-tooltip.tsadapter/branch-selection.ts
  • 删除:独立 showGraph 面板、graph-webviewgraph-parser(Log 视图已具完整 Graph,单一事实源去重)。
  • 单测:新增 ci-graphql-query/ci-model/ci-remote-parser/ci-rolluplog-graph-layout/log-line/log-queryref-cleanup/ref-remote 等,总单测 306 例。
  • 验证基线pnpm run compile GREEN;check-types / lint / 306 单测 / production package 全绿;集成测试三平台冒烟通过(exit 0)。

关联

ThreeFish-AI and others added 23 commits June 29, 2026 21:30
- 视图改用 createTreeView({ canSelectMany: true }) 开启多选(registerTreeDataProvider 不支持);
- 批量化 branchDelete/tagDelete/copyBranchRef/toggleFavorite:作用于整个选区;删除仅一次 git branch --merged 分类已合并/未合并,单条确认弹窗分栏诚实呈现强制删除风险,逐个删除并汇总成功/失败、末尾单次刷新;
- 新增纯逻辑 engine/ref/selection.collectBranchRefs(选区归一化 + 点击在选区之外则以点击项为准)与 engine/ref/cleanup 的 partitionByMerged/formatBranchDeleteConfirm/truncateNames,单测全覆盖;
- package.json 对仅单目标命令(检出/合并/变基/重命名/比较)追加 !listMultiSelection 在多选时隐藏;同步更新 README/CHANGELOG/issue.md;

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
未配置 VSCE_PAT 时, publish job 的 vsce 发布步骤鉴权失败会中断整个 job; 因该 job 挂 environment: production, 导致仓库 /deployments 页持续产生 error 状态的 deployment 记录。

改为用仓库变量 ENABLE_MARKETPLACE_PUBLISH 门控该步骤 (默认未设即 skipped, 不致 job 失败), OpenVSX 发布步骤保持无条件执行; 日后配好 VSCE_PAT 后, 在仓库 Variables 设 ENABLE_MARKETPLACE_PUBLISH=true 即恢复, 无需改代码或发 PR。

同步在 docs/research/04-publishing-cicd.md 增设 3.2.2 节, 说明该特性开关、OpenVSX 不受影响及历史 deployment 清理方式。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
* feat(Icon): 统一 Hyper Git 品牌图标为 Git Pull Request 造型;

以单一核心图形(分支 + 合并箭头,精炼自 Tabler Icons MIT 造型)统一各处图标露出,替换原先无 Git 语义的纯蓝圆点,使侧边栏与 marketplace 视觉一致、专业:
- 侧边栏 activity bar:media/hyper-git-icon.svg 改为该图形的单色 currentColor 版本(由 VS Code 按主题以 alpha 蒙版着色,深/浅色与 active/inactive 均清晰);
- marketplace:media/icon.png 重生成为 256×256 蓝紫渐变圆角底板 + 白色图形(RGBA,Retina 清晰);
- README 顶部新增居中品牌 Logo 头图,统一对外形象;
- 设计源沉淀至 media-src/(已被 .vscodeignore 排除,不进 VSIX)。
未改动 package.json(图标路径 media/icon.png 与 media/hyper-git-icon.svg 不变)。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* fix(Icon): 修复品牌图标评审反馈(License 绝对链接、补充 CHANGELOG、移除冗余镜像);

- README:License 徽章改用绝对 URL,避免 Marketplace 上相对 <a href> 链接 404(vsce 不重写 HTML <a href>)
- CHANGELOG:在 [Unreleased] 下补充 ### Changed 条目,记录品牌图标统一
- 移除 media-src/hyper-git-icon.svg 冗余镜像,以 shipped media/hyper-git-icon.svg 作为单一事实源(消除 Split-Brain 风险)

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
* feat(LogGraph): 新增自计算 DAG lane 布局引擎及解析/查询纯逻辑;

- graph-types/color/layout:单遍增量 lane 状态机(nil-slot 复用保证分支直顺、沿首父链继承色 + 相邻 lane 异色),覆盖 octopus 合并 / 多 root / 收敛 / 截断 dangling 边;
- log-line:git log NUL/RS 全字段解析(%H %P %an %ae %aI %s);
- log-query:--topo-order 保拓扑序 + author/grep/path 服务端翻译(pathspec 置尾);
- log-filter:下沉 LogFilter 单一事实源 + toClientFilter 抽取客户端维度;
- 单测 29 例覆盖各拓扑场景、解析与查询构造。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* feat(Log): Log 视图升级为 IDEA 风格提交图 Webview 并移除独立 Graph 面板;

- hyperGit.log 由原生 TreeView 迁移为 Webview:基于父子关系自计算 DAG lane 布局,渲染彩色泳道 / 节点 / 分叉·合并连线 / HEAD·分支·标签标签,完整复刻 IDEA Git Log,弃用 git log --graph 粗糙 ASCII;
- 单次 git log --topo-order --all 取数 + for-each-ref 取引用标签;Webview 端虚拟化「每行 SVG + 文本列」、主题调色板(--vscode- 令牌 + hex 回退)、All/Current 切换、滚动增量加载、↑↓ 键导航、选中提交内联变更文件、右键 per-commit 操作菜单(复用既有 9 个命令);
- 新增 LogFilterControl 接口使 4 个命令注册器零行为改动迁移;新增 protocol Log 消息契约;
- 移除独立 showGraph 面板、graph-webview、graph-parser(单一事实源去重)。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* test(Log): 移除集成测试中对已删除 showGraph 命令的断言;

showGraph 独立面板在前序提交中按「单一事实源去重」移除(Log 视图本身已具备完整 Graph),集成冒烟测试仍断言该命令注册导致 CI 失败;同步移除断言,并已校验列表中其余 61 个命令全部注册。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
原实现每行 Graph SVG 宽度取全局 maxLanes(基于已加载全部提交),分支型仓库中仅用 1-2 条 lane 的行仍预留整宽,导致节点与文字间大片留白。改为按「本行实际绘制的最右列」计算行宽,文字随即向左贴近本行 Graph(lane x 坐标仍全局一致,竖线跨行衔接不变)。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
* chore(Release): 版本收敛至 0.0.1 并对齐发布管线;

清理历史预发布(删除 rc.1–rc.4 标签与 rc.1/rc.4 两个 GitHub Release)后,将首个 MVP 正式版收敛为单一 v0.0.1:

- package.json: version 0.0.4 → 0.0.1。
- ci.yml(github-release): 新增 actions/checkout,并将 generate_release_notes 改为 body_path: docs/releases/${tag}.md——Release 正文取自版本控制的 Release Note(单一事实源、版本留痕、CI 与具体版本解耦)。
- ci.yml(publish): OpenVSX 发布步骤加 continue-on-error——历史 0.0.1–0.0.4 已占用且不可覆盖,隔离该步报错以保 GitHub Release + .vsix 正常产出、首发 workflow 不标红。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* docs(Release): 重写 v0.0.1 发布说明、CHANGELOG 与 README;

面向用户与开发者重写三份文档,特性与 package.json contributes 逐项对齐实证(7 视图 / 92 命令 / 3 配置项 / 218 单测):

- docs/releases/v0.0.1.md(新增): 首个 MVP 正式版 Release Note,覆盖全部真实特性,作为 GitHub Release 正文单一事实源;docs/releases/README.md 为发布说明索引。
- CHANGELOG.md: 删除 [Unreleased] 与 rc.1–rc.4 多段,收敛为单一 [0.0.1] 正式版条目(按域分组、去重)。
- README.md: 能力总览升级为 v0.0.1 全量,据实校准已过时的「cherry-pick/revert/reset/分支重命名不可用」表述(均已经 execGit CLI 通道实现),新增路径 B Mermaid 架构图,补开发者构建/测试/文档导航。
- docs/README.md & knowledge-map.md: 登记 docs/releases/;修正失效的 .agents 相对链接。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
- 新增 engine/ci(纯逻辑):GitHub 远程解析、GraphQL 批量查询构造、状态归一化与聚合、响应解析
- 新增 adapter/ci:复用 VS Code 内置 GitHub 认证、按 oid 缓存、批量 + 限流冷却、openExternal 反 SSRF
- 扩展协议:log/requestCi、log/ciData、log/ciMeta、log/openExternal、log/ciSignIn
- Log webview:提交行最右侧 CI 图标(懒加载仅取可见行)+ 自定义 Tooltip 浮层(明细 + 失败原因 + 跳转链接)
- 配置 hyperGit.log.ci.{enabled,remote,provider} 与命令 hyperGit.ci.signIn
- 新增单测 53 项覆盖 engine 层(ci-remote-parser/graphql-query/rollup/model)

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
* feat(Log): 新增 checkpoint 提交识别与 Checkpointer 范围过滤;

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* feat(Log): Log 视图新增 Checkpointer 选项并默认剔除自动快照提交;

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
tipGlyph 此前返回裸 SVG,缺少 .g-{state} 包裹,导致 Tooltip 内每项检查图标
继承前景色呈单色(仅头部图标上色)。现统一包裹:绿=通过、红=失败、黄=运行中、
灰=未知,与头部及 Log 行图标语义一致。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
* chore(Release): 发布 v0.0.5 首个 MVP 正式版:版本号/发布说明/CHANGELOG/文档引用全链路收敛;

- package.json 版本号 0.0.1 → 0.0.5(唯一权威版本源)
- Release Note 重命名为 docs/releases/v0.0.5.md 并重写:升级叙事、更新规模口径、补入提交图 CI 状态(#37)与 Checkpointer 过滤(#38)两特性
- CHANGELOG.md 仅保留 v0.0.5 段,含全部特性介绍
- 同步 README/docs/knowledge-map/implementation-status 版本引用,消除 0.0.1 与 0.5.0 残留

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* docs(Branding): 全仓措辞去「复刻 IDEA」产品定位,改为功能化专业描述;

- 用户可见/发布文案(package.json、README、CHANGELOG、Release Note v0.0.5、log-ci-status):
  「完整复刻 IntelliJ IDEA Git 工具窗口/Commit 窗口」改为「提供统一的 Git 变更管理与提交工作流」;
  「IDEA 风格提交图/Commit 窗口」改为「可视化提交图(DAG)/自绘提交面板」
- 内部调研/架构/需求/里程碑文档:产品定位句功能化,机制佐证动词软化为「参考/借鉴 JetBrains」,
  完整保留 JetBrains 源码 URL、CheckinHandler/ChangeListManager 等客观技术对照与证据链
- src/ 与 tests/ 代码注释(32 src + 1 test):去「复刻/IDEA 风格/IDEA 等价」定位,
  机制佐证软化为参考 JetBrains,仅改注释不动逻辑
- 验证:pnpm run compile GREEN;test:unit 280/280 全绿;全仓无活跃产品定位措辞残留

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* chore(Release): 扩展更名为 Hyper Git - Agentic Git 并发布 v0.0.6 重新上架;

因 VS Code Marketplace 上「Hyper Git」名称被误删不可用,将扩展以新发布名重新上架:
- package.json:name hyper-git → hyper-git-agentic-git(extension ID,Marketplace 唯一标识);
  displayName → Hyper Git - Agentic Git;version 0.0.5 → 0.0.6
- 保留 publisher、viewsContainers id(hyper-git)/title(Hyper Git)、228 处 hyperGit.* 命令与配置 key 不变,不破坏用户既有配置
- Release Note 重命名为 docs/releases/v0.0.6.md 并更新标题/导语/安装段(新 vsix 名 hyper-git-agentic-git-0.0.6.vsix + 新搜索名)
- CHANGELOG 仅保留 [0.0.6] 段并注明改名上架;README/docs 版本与安装引用同步 v0.0.6
- 验证:pnpm run compile GREEN;vsce package 产出 hyper-git-agentic-git-0.0.6.vsix;全仓无遗留 0.0.5 引用

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* fix(Test): 集成测试 extension ID 改为从 package.json 动态推导,修复改名后冒烟测试失败;

扩展更名为 hyper-git-agentic-git 后,tests/suite/extension.test.js 中硬编码的旧 ID
`threefish-ai.hyper-git` 导致 getExtension 返回 undefined,三平台集成测试断言「扩展未找到」
失败,进而 Package/GitHub Release/Publish 全部 skipped、v0.0.6 未发布。

改为从 package.json 的 publisher + name 动态拼接 EXT_ID(单一事实源),
未来任何改名都不再需要同步改测试。本地集成测试验证 3 passing(exit 0)。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
- 闪烁根因:log/ciData 每次触发整块 innerHTML 重建、且 graphData 刷新清空 CI 缓存
  导致重拉循环 → 全列图标反复消失重现。
- 就地补丁:新增 applyCiData 仅改受影响行 .ci 槽位(状态类不变时保留元素,旋转
  动画不重启、零重绘),不再 renderedFirst=-1 重建可见行。
- 稳定缓存:graphData 不再清空 ciByHash(CI 状态以不可变 hash 为键),仅重置请求
  去重集合,杜绝每次 git 状态变化引发的重拉。
- 准实时刷新:新增 20s 定时器仅复拉可见行中 pending(运行中)提交(host 30s TTL
  网络门控),转终态后停拉;响应经 applyCiData 就地补丁,不闪烁。
- Tooltip 子项颜色:tipGlyph 包裹 .g-{state}(绿/红/黄/灰),与头部及行图标语义一致。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
- 新增 hyperGit.deleteRemoteBranch 命令,挂载到远程分支右键菜单(与本地「删除分支」同槽位 1_branch@2,视觉对称),commandPalette 以 when:false 隐藏
- 经 git push <remote> --delete <branch> 删除服务端分支,并对成功项执行 branch -D -r 即时清理本地 remote-tracking ref,使视图立即同步
- 新增纯逻辑 src/engine/ref/remote-ref.ts:
  · resolveRemoteBranch 用已知 remotes 做最长前缀匹配拆分 {remote, branch},remote 名含斜杠(如 myorg/repo)亦安全,禁用朴素 split('/')[0]
  · partitionRemoteByProtected 复用 isProtectedBranch(SSOT),硬阻断 origin/main、origin/master
  · formatRemoteDeleteConfirm 诚实传达「服务器端不可逆 + 影响协作者」,支持单/多选与当前分支上游软警示
- 复用 selectedBranchRefs(多选归一化)/ execGit / 统一 modal 确认范式,零重定义;不调用 handleGitConflict(删除不产生合并冲突)
- 新增 tests/unit/ref-remote.test.ts(16 个用例,覆盖斜杠安全/歧义/受保护分桶/确认文案)

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
* style(Webview): 建立共享设计 Token 地基并统一 4 个自绘 Webview 的按钮与语义色;

- 新增 src/adapter/webview/shared-styles.ts 作为单一事实源:spacing/radius token + .hg-btn/.hg-btn--secondary/.hg-btn--sm/.hg-input/.hg-row,统一 hover/active/focus-visible/disabled/reduced-motion 交互态
- Commit/Log/Merge/Rebase 四个 Webview 注入 getBaseStyles(),按钮迁移至 .hg-btn(消除 Commit 的 :last-child 脆弱选择器、补齐缺失的 hover 与 focus ring)
- Log DAG 泳道色改为启动期读取 --vscode-charts-* 主题令牌(缺失或撞色回落 DEFAULT_LANE_PALETTE),深/浅主题自适应
- Log 引用 chip 配色校正:localBranch=charts-blue / remoteBranch=descriptionForeground / tag=charts-yellow(修正原先误用 stageModified/conflicting/modified token 的语义错配)
- 移除无意义 opacity 衰减,改用 --vscode-descriptionForeground 表达弱化文本
- 新增 shared-styles 单元测试(5 用例),全量 301 用例通过

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* refactor(Commands): package.json 去冗余 + 统一英文文案 + 危险操作分隔;

- 标题栏瘦身至 ≤5 项:Changes/Branches/Log 的同步类操作(fetch/pushDialog/updateProject/createPatch/applyPatch 等)下沉到 1_sync 溢出组;Log 移除 6 个独立过滤器图标
- 新增 hyperGit.logFilter「Filter Log…」聚合命令(QuickPick 分发到既有 6 个过滤器,复用 handler 零重复),6 个原过滤器收敛到命令面板仅 Log 聚焦时可达
- 危险操作归入 9_dangerous 分组(discardChanges/branchDelete/deleteRemoteBranch/tagDelete/stashDrop/deleteShelf/worktreeRemove),右键菜单自动生成分隔线
- 命令面板卫生:隐藏依赖光标上下文的 stageHunkAtCursor
- 为 ~20 个高频/危险命令补齐 codicon 图标(branchCheckout/delete/discard/merge/rebase/rename/ignore/stashApply/stashPop/stashDrop/undoLastCommit/dropCommit/cleanupBranches/startRebase/showConsole/rewordCommit/ci.signIn/logClearFilter/tagDelete/stashClear 等);消歧 showReflog 由 $(history) 改为 $(clock)
- 配置润色:ci.provider 补 enumDescriptions;ai.enabled 去内部里程碑「M5」措辞
- 94 命令标题、配置 markdownDescription、viewsWelcome 统一英文;新增 Branches/Shelf 的空态 welcome;displayName 统一为 Hyper Git

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* feat(Webview): 4 个自绘 Webview 功能/UX 加固 + 统一英文 chrome;

- Commit:文件列表空态、提交中 spinner、Ctrl/Cmd+Enter 提交、全选/全不选、Amend/Sign-off/Skip-hooks 折进 Advanced 折叠区降噪、toast/validation aria-live
- Log:新增错误态 + Retry(协议增量 log/error + log/retry,失败改 webview 内呈现替代模态弹窗)、详情面板关闭按钮、双击改为「打开提交」(选中+展开详情,不再触发菜单,菜单保留在右键+Enter)、Checkpoints scope 加 tooltip、富空态、scope 切换 aria-pressed、viewport role=tree
- Merge:冲突导航栏(Prev/Next + N/M 计数)、逐冲突 Resolved/Unresolved 徽标(前端检测残留标记)、冲突顺序编号、Save 旁剩余未解决计数、ARIA、只读列长代码行横向滚动
- Rebase:执行前确认对话框(HTML 覆盖层,改写历史防误操作)、操作摘要栏(pick/reword/squash/drop 计数)、盲文 ⠿ 拖拽柄改为 SVG grip、hash 中性色、密集 hint 改图例、新增 Cancel、drop 行删除线 + squash/fixup 视觉分组、select 加宽
- 4 个 Webview 的 chrome 文案统一英文(html lang=en);Merge/Rebase 宿主消息(showInformationMessage/showWarningMessage/QuickPick)一并英文化

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* refactor(Tree): TreeView 打磨 + Markdown Tooltip + 命令层全面英文清扫;

- 新增 src/adapter/tree/tree-tooltip.ts(mdTooltip MarkdownString 构造器 + relativeDate 相对时间),统一 5 棵树 Tooltip
- Changes:活动 changelist 用 folder-opened 区分;文件 Tooltip 转 Markdown(英文);消费 status-decoration 的 strikeThrough 位(Deleted→tooltip ~~删除线~~);更新 JSDoc 诚实说明 TreeItem 稳定 API 无 opacity/strikethrough 字段
- Branches:分组头显示 (N) 计数徽标;活动分支高亮 charts.blue(与 Log 本地分支 chip 全局一致)、收藏分支 charts.yellow;移除行内原始 SHA 与 ★ 字符;Tooltip 转 Markdown(英文)
- Stash:描述改相对时间(git stash list --date=relative)、截断加 …、Tooltip 转 Markdown(英文);新增只读 stashView 命令(单击查看 stash diff,比 apply 安全)
- Worktree:🔒/⚠ emoji 改为 codicon(locked→lock 图标、Prunable 文字);当前 worktree 高亮 charts.blue;main 图标 home→root-folder-opened;Tooltip 转 Markdown(英文)
- Shelf:节点可折叠暴露包含文件(ShelfFileNode);inbox→library 图标;描述改相对时间;升级为 createTreeView 获 badge 能力
- 命令层全面英文清扫(~160 处 showXxx/QuickPick/InputBox/模态按钮 + 抛出错误),保留全部中文代码注释;同步修正 commit-service 单测断言为新英文文案
- 提交快捷键由 Commit Webview 内 Ctrl/Cmd+Enter 承载(Phase 2),不引入全局键绑定以免冲突(commit 状态位于 webview,无宿主命令可绑定)

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* fix(Merge): 修复 <script> 内 JSON 注入转义错误(escapeHtml 致 JSON.parse 失败);

- 预存隐患:renderHtml 此前用 escapeHtml(JSON.stringify(hunks)) 注入 <script>,产出 &quot;;
  而 <script> 为 raw-text,HTML 实体不被解码,导致 JSON.parse 在浏览器侧抛 SyntaxError,
  冲突 hunks 从不渲染、Save 无法收集结果——3-way Merge Editor 实际不可用。
- 修复:改用 JS-string 上下文转义(\\ 与 \" 转义 + < → \\u003c 防 </script> 破出),JSON.parse 正确 round-trip。
- 本次 UI 系统性优化的对抗性复核(code-reviewer)发现;Phase 2 新增的冲突导航/徽标依赖 HUNKS 渲染,故一并修复。
- 已用 node 实证 round-trip(含 <、&、引号、</script> 防护)。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
合并 master 最新变更:CI Actions 版本升级(checkout@v7、setup-node@v6、pnpm/action-setup@v6、upload/download-artifact、action-gh-release@v3)、devDependencies 升级(eslint 10、esbuild 0.28、@types/node 26、prettier 等)及命令层去除冗余变量初始化;冲突文件 .github/workflows/ci.yml 已解决。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
…ss-assignment 对 vsce 打包的阻断;

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
…,无语义变更);

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
* feat(Branches): 新增「清理已删远程分支」入口,解决 LOG 视图残留已删分支提交问题;

- 新增 hyperGit.pruneRemotes 命令(Branches 视图工具栏,icon=clear-all):
  执行 git fetch --prune 清理陈旧 refs/remotes/* 跟踪引用,使 LOG 的 All 范围
  不再经其触达已删远程分支的提交(根因:分支在远端删除后本地跟踪引用未 prune)
- prune 前后对 refs/remotes 各快照一次,以 diffPrunedRefs 差集给出循证反馈,
  规避 [deleted] 明细走 stderr 而 execGit 仅回传 stdout 的解析限制
- 修复 hyperGit.fetch / hyperGit.deleteRemoteBranch 仅刷新 branchesTree、
  遗漏 logTree.refresh() 导致 LOG 不能即时反映引用变更的缺陷
- 补 diffPrunedRefs 纯函数单元测试(ref-cleanup)

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>

* fix(CI): checkout 前置于 pnpm/action-setup,解除 v6 严格版本解析阻断;

pnpm/action-setup@v6(135f509 由 v4 升级引入)为破坏性变更:严格要求解析 pnpm 版本,
不再隐式回退 latest。原步骤序 action-setup 先于 checkout,致 package.json 未就绪、
无法读取 packageManager 字段,CI 在 setup 阶段即报 "No pnpm version is specified"。

将 actions/checkout 前置于 pnpm/action-setup,使其从检出的 package.json 读取
packageManager: pnpm@11.9.0(单一事实源,无需在 workflow 重复声明 version)。
lint-build / test / package / publish 四个 job 同步修正。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
- 移除「为什么需要 Hyper Git」引言段、版本号绑定文案与规模描述,降低版本耦合维护成本;
- 以 media/framework.png 实操架构图替换原 Mermaid 流程图,提升深色模式可读性;
- 规范化路线图表格对齐,简化许可证脚注。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
…Git 并重写英文描述;

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
Co-Authored-By: Aurelius Huang<threefish.ai@gmail.com>
)

- 根因:buildLogArgs 对 all/checkpointer 下 `git log --all`,--all 遍历 refs/ 全部引用(不止 heads/remotes/tags),含宿主工具注入的 refs/conductor-checkpoints/*(会话快照)与 refs/conductor-archive-heads/*(已删/被取代分支头归档),使游离提交仍可达、画成游离泳道。客户端 /^checkpoint:/ subject 过滤拦不住作为其祖先的游离业务提交,故泄漏;git fetch --prune 仅清 refs/remotes/*,对此类非远端跟踪引用无效(即「prune 后依旧存在」之因)。
- 修复:all 范围由 --all 改为 --branches --tags --remotes(仅三大标准命名空间,排除一切工具注入内部引用);checkpointer 保留 --all(该 Tab 职责即原始完整视图、需触达内部 checkpoint 快照)。客户端 keepCheckpoint 过滤作双保险保留。
- 实证:本仓 --all 取 241 提交、--branches --tags --remotes 取 70;refs 命名空间 135 conductor-checkpoints + 17 conductor-archive-heads,远多于 3 heads/3 remotes/2 tags。
- 测试:更新 tests/unit/log-query.test.ts 断言(all 含三件套且不含 --all;checkpointer 含 --all 且不叠三件套)作回归护栏;check-types/lint/306 单测/production package 全绿。
- 经验沉淀:docs/.agents/issue.md #9。

🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
@ThreeFish-AI ThreeFish-AI changed the title Feature/1.x.x feat: 合入 feature/1.x.x 首个完整 MVP(v0.0.8)——可视化提交图 DAG · GitHub CI 状态 · 分支批量操作 · 全局 UI/UX 系统性优化 Jul 2, 2026
@ThreeFish-AI
ThreeFish-AI merged commit e6b000f into master Jul 2, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant