release: 合入 feature/1.x.x —— 视图重构 / Graph 对齐官方 / v0.0.11 Marketplace 首个正式版 - #68
Merged
Conversation
- 视图整合:删除 CHANGES 树(changes-tree.ts),文件列表/单文件右键菜单/changelist 切换与管理/标题栏 Git 操作/未提交角标全量平移入 Commit webview;commands.ts 命令实参统一为 ChangeItem|path,由 resolveChange 回落 service.getChanges() 解析(单一事实源);package.json 视图与菜单迁移至 view==hyperGit.commit,移除 hyperGit.changes。 - 目录树切换:新增 engine/tree/file-tree.ts(compact 折叠、目录优先+数字感知稳定排序、叶子 fileIndex 回指扁平 files[]),Commit 与 Log 文件列表支持平铺↔树形切换,切换/折叠零 host 往返,偏好按视图各自记忆;新增 file-tree.test.ts(15 用例)。 - 提交悬浮详情:Log 行悬停展示本地/远程分支、标签、HEAD、完整消息(subject+body)、作者、(异于作者时的)提交者、绝对+相对时间、完整 SHA;LOG_GRAPH_FORMAT 扩展 %cn/%cI/%b(%b 置末字段,RS/NUL 边界),host 侧 capBody 截断控 1000 行 payload;与 CI 浮层互斥,滚动/重绘自动消隐,i 键开 Esc 关。 - 评审修复:提交浮层 mouseleave 复位 overCtRow,避免「行→浮层→空白」后浮层卡死;capBody 改用 Array.from 按码点截断,避免劈开 Unicode 代理对产生孤立代理位。 - 文档:新增三份特性文档(commit-view-consolidation / file-list-group-by-directory / log-commit-tooltip),更新 CHANGELOG、issue、knowledge-map。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
* chore(Release): 版本号 bump 至 0.0.9-rc.1,补 Release Note 与 CHANGELOG; 0.0.9 候选版(RC1),收敛本次 Commit/Log 视图重构三特性与两处评审修复: - 视图整合:移除 CHANGES 树,能力(文件 Diff/右键菜单/changelist 切换管理/工具栏/角标)零回归平移入 Commit webview。 - 文件列表目录树切换:新增 engine/tree/file-tree.ts(compact 折叠 + 数字感知稳定排序 + fileIndex 回指),Commit/Log 两视图平铺↔树形切换。 - Log 提交悬浮详情:LOG_GRAPH_FORMAT 扩 %cn/%cI/%b,浮层与 CI 互斥、滚动消隐、i/Esc 键控。 - 修复:提交浮层 mouseleave 复位 overCtRow 防卡死;capBody 改 Array.from 按码点截断防代理对劈开。 - CHANGELOG:原「[0.0.7] - 未发布」段(0.0.7/0.0.8 从未对外发布)合并改名为「[0.0.9-rc.1] - 2026-07-04」并补本次修复。 - Release Note:新增 docs/releases/v0.0.9-rc.1.md(CI body_path 闸门),同步 releases 索引与 knowledge-map。 🤖 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(Log): 提交/CI 浮层改为悬浮到侧边栏右侧(编辑器区内),不再压住 LOG 列表; 原 positionTip/positionCommitTip 把浮层锚定在所悬元素左沿并按 webview 宽度夹紧,导致 420px 宽的浮层在 ~240px 窄侧边栏中从左沿一路铺到编辑器,既「撑满 LOG 视图」又方位怪异。改为横向固定到 window.innerWidth+8(侧边栏右沿外、编辑器区内),纵向与所悬行/图标顶部对齐并按视口高度夹紧。复用 webview position:fixed 可越界渲染到编辑器区的特性(用户实测可见)。 🤖 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): 版本号 bump 至 0.0.9-rc.2,补 Release Note 与 CHANGELOG; rc.2 收敛 rc.1 的浮层定位修复(commit 7c46fc7):Log 提交/CI 浮层改为悬浮到侧边栏右侧(编辑器区内),不再压住 LOG 列表。 🤖 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>
…anner 深绿页头配色; (#49) - media-src/icon.svg: 源图标改为透明底 + #3FB950 圆环 + git-pull-request 字形(加粗保清晰) - media/icon.png: 无头 Chromium 重新栅格化为 256×256 带 alpha 的透明 PNG - package.json: 新增 galleryBanner (color #0E2A1C, theme dark) 使 Marketplace 页头与图标协调 - 活动栏单色图标(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)
- package.json:版本号 0.0.9-rc.2 → 0.0.9 - CHANGELOG.md:将 [0.0.9-rc.2] / [0.0.9-rc.1] 两段合并为单个综合条目 [0.0.9], 并回填自上一正式版 0.0.6 以来从未记录的变更(#40-#45 的 CI 状态/远程分支删除/ 清理已删远程分支/UI-UX 全局系统化 #43/Log All 修复 #45,及 #49 Emerald 图标); 底部引用链接同步更新(移除 rc 链接,新增 [0.0.9]) - docs/releases/v0.0.9.md:新建正式版发布说明,以 rc.1 结构为蓝本扩写为面向公开用户的 全量叙述,移除 Release Candidate 措辞,规模实证更新为 6 视图 / 97 命令 / 6 配置 / 324 单测 - docs/releases/{v0.0.9-rc.1,v0.0.9-rc.2}.md:删除 rc 发布说明(已发布 pre-release 正文已固化,删源无影响) - docs/releases/README.md、docs/.agents/knowledge-map.md:索引与知识地图收敛至 v0.0.9 单行 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
🤖 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(README): 校准 README 真实性并重构为中英双语,根用英文、中文迁入 i18n; - 真实性校正(经 3 路只读核验 + 单测运行取证): - 架构分层修正——移除不存在的 ui/ 层,改述为 engine/ → adapter/(含自绘 adapter/webview/ UI); - 单元测试计数以 vitest 实跑为准修正为 324 例(原 280 过时); - 行级提交 CodeLens 标签校准为运行时英文 "Commit this Hunk"; - vsce 段落理顺(避免 bash 围栏内伪标题),publisher 占位符落实为真实 ThreeFish-AI; - 顶部补入已核验能力规模行(6 视图 · 97 命令 · 6 配置项 · 324 单测)。 - 双语重构:根 README.md 改写为地道英文版;中文版迁入 docs/i18n/zh-CN/README.md 并重算相对链接;两版顶部互加语言切换。 - 补阙:README 补入既有但未引用的 CHANGELOG.md 链接;知识索引 knowledge-map.md 同步新增中文 README 条目。 🤖 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(Docs): 校正文档中心与知识索引两处过时陈述; - docs/README.md:发布说明「最新」指针由 v0.0.6 更新为 v0.0.9(与 releases/README.md 版本索引及 knowledge-map 口径统一); - docs/.agents/knowledge-map.md:agent/ 接缝清单据 agent/index.ts 权威导出校正——补入已实现的 ICommitMessageProvider、移除尚属规划的 IChatToolRegistrar(改注为规划中第 6 接缝并链至调研报告),并标注当前 5 接口均为 Null 实现。 🤖 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(Badge): 修复活动栏未提交数角标更新不及时; - 根因:角标挂在 Commit WebviewView 上,VS Code 在 resolveWebviewView(用户打开过面板)前无法显示 webview 角标(vscode#164974/#146330),故面板未打开时新变更不点亮、提交/撤销后不清除; - 承载迁移:改由隐藏 TreeView(hyperGit.changesBadge, when:false)承载,createTreeView 于 activate 即实例化,其 badge 无论面板是否打开都可靠聚合到容器图标; - 单一事实源:新增 engine 纯函数 change-count(toRelKey/countUniqueChanges)与 GitRepositoryService.getChangeCount(),getChanges 复用同一去重逻辑,避免双实现漂移; - 及时且高效:角标走独立 40ms 微防抖快路径,与 150ms 重刷新解耦、合并事件风暴;释放期清理悬挂定时器; - 熵减:移除 Commit webview 死代码(updateBadge/pendingBadge)杜绝容器求和 2× 计数;补充 change-count 单元测试锁定计数等值不变式。 🤖 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(Issue): 补录 #10 活动栏角标 WebviewView.badge resolve 前不显示的根因与处理; 留存本次角标更新不及时问题的表因/根因/处理/防范,并交叉引用 #8 关于 badge 承载与 pendingBadge 时序的预警。 🤖 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>
…H 视图 (#53) * fix(Graph): 修复提交悬浮详情浮层被 iframe 裁剪失效,并将 Log 视图更名 Graph、视觉对齐官方 Source Control; 根因:#48「浮层定位修复」将 positionTip/positionCommitTip 横向定位改为 left=window.innerWidth+8, 误以为 webview position:fixed 可越界渲染到编辑器。实则侧边栏 WebviewView 是沙箱 iframe,坐标系 为 iframe 自身视口,该值落到右边界外被裁剪不可见。抽出共用 positionFloat(锚触发元素右侧→越界翻 左→再越界收进视口),彻底修复 CI 与提交两处浮层。 同时按需求将面向用户的「Log」视图更名为「Graph」,并对齐 VS Code 官方 Source Control GRAPH 视图 样式(不改底层数据/协议/布局算法/CI 逻辑): - 泳道连线 <line> 直线改三次贝塞尔 <path> 平滑曲线(fromCol===toCol 自动退化直线); - 当前 HEAD 行节点渲染为空心环+内点(双环高亮),普通行保持实心点; - 引用胶囊改实心半透明底+同色描边+内联 SVG 图标前缀(分支/云/tag,因无 codicon 字体); - 工具栏 seg 按钮间距/圆角/hover 态贴近官方; - package.json 视图名与 Refresh/Filter/Clear Graph Filter 命令标题、CI 配置描述、aria-label 统一为 Graph(viewType hyperGit.log、log/* 消息前缀、类名等内部标识符不动)。 验证:check-types/lint/生产打包通过,324 单测全绿;贝塞尔几何与 HEAD 判定纯函数 11 项自测通过; 离线 harness 浏览器截图目视对齐官方 GRAPH 视图。 🤖 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> * style(Graph): 引用胶囊完全对齐官方 GRAPH——移至 message 右侧后缀、底色跟随泳道色、改全圆角实心 pill; Review 复核发现上一轮 chips 与官方 Source Control GRAPH 视图存在三处实质偏离,本次逐项对齐(截图逐行比对官方图确认): - 位置:chips 从 message 左侧前缀移到右侧后缀(列序 泳道图→message→chips→author→date→CI); - 颜色:底色改为跟随本行泳道色 laneColor(row.layout.node.colorIdx),类型靠图标区分而非颜色, 与官方一致(同名 origin 远程分支随所在行泳道呈多色);新增 onColor() 按底色亮度自适应深/白字保可读; - 形状:由半透明小圆角矩形(radius 3px)改为实心不透明全圆角 pill(radius 8px),保留分支/云/tag 图标前缀; - #commit-tip 浮层内胶囊同步同款样式,与行内保持一致。 仅渲染层调整:chipsHtml/rowHtml/buildCommitTip + CSS,未触碰数据/协议/布局算法/CI 逻辑。 验证:check-types/lint/生产打包通过,324 单测全绿;DOM 结构断言(chips 在 msg 后、颜色跟泳道、 HEAD 空心环)+ Chrome headless 截图与官方图 3 逐行比对确认对齐。 🤖 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>
…ELOG; (#58) - package.json version 0.0.9 → 0.0.10(方案 A:纯 major.minor.patch,由 --pre-release 标志发预发布,规避 VS Code Marketplace 不接受 -rc.N semver 后缀的限制); - 新增 docs/releases/v0.0.10-rc.1.md(文件名精确匹配 tag ref_name,作 GitHub Release 正文单一事实源),归纳 v0.0.9→HEAD 真实变更:Graph 视图对齐官方 (#53)、悬浮浮层 iframe 裁剪修复 (#53)、未提交角标承载迁移 (#52)、README 双语与真实性校准 (#51); - CHANGELOG 新增 [0.0.10-rc.1] 段(遵循 Keep a Changelog); - 本版作为 VS Code Marketplace 发布链路打通的验证版(首次以 vsce publish --pre-release 于 Marketplace/OpenVSX/GitHub Release 三渠道并发)。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
…ish 失败; (#61) - 根因:package job 以 vsce package(不带 --pre-release)打出正式版 VSIX,publish job 却对 rc tag 用 vsce publish --pre-release,vsce 强约束「以 pre-release 发布的 VSIX 必须打包时即带 --pre-release」,故 v0.0.10-rc.1 的 Marketplace 步骤报错失败、其后 OpenVSX 步骤被 skipped,三渠道仅 github-release 成功; - 修复:package 打包步骤改用与 publish/OpenVSX 同款 PRE_FLAG 判定(GITHUB_REF_NAME 含 rc 即追加 --pre-release),令同一枚预发布 VSIX 贯穿 github-release / Marketplace / OpenVSX 三渠道;正式版 tag 与分支/PR CI 行为不变; - 沉淀 issue.md #11;补 CHANGELOG [0.0.10-rc.2] 与 docs/releases/v0.0.10-rc.2.md,供 rc.2 重跑三渠道验证。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
- ci.yml:移除 publish job 的 OpenVSX 发布步骤及对 OVSX_PAT 的依赖,发布流水线收敛为 GitHub Release + VS Code Marketplace(ENABLE_MARKETPLACE_PUBLISH 门控,rc 标签走预发布通道); - README 双语:安装渠道与发布描述同步移除 OpenVSX; - package.json:version 0.0.10 → 0.0.11(0.0.10 已被预发布通道占用,正式版按 VS Code 官方规则顺延); - 补 CHANGELOG [0.0.11]、docs/releases/v0.0.11.md(正式版 Release Note)与发布索引 v0.0.11 行。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
- 前瞻策略文档改为单市场口径:文档中心与调研索引(docs/README、research/README)、工程蓝图(engineering-plan)、实施状态(implementation-status); - 循证报告 04-publishing-cicd 加「决策更新(2026-07-04)」注记:保留 §2 双市场分析为当时循证背景(已被决策取代),§2.3 决策改为 Marketplace 单市场,「下一步」action item 改为创建 Marketplace publisher; - 历史发布说明(v0.0.6 / v0.0.9 / v0.0.10-rc.1 / rc.2)最小订正:移除从未成立的 OpenVSX 安装指引;修正 rc.2「走通三渠道」失实表述(OpenVSX 实际因令牌无效未发布)为两渠道; - 与已移除 OpenVSX 的 ci.yml 及 README 双语保持一致。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
* fix(Views): 优化侧边栏视图默认布局,次要视图默认折叠并设初始高度权重; Stash/Shelf/Worktrees 默认 visibility:collapsed(仅占标题栏、点击即展开), Commit/Graph/Branches 及次要视图分别设 initialSize 高度权重,缓解视图挤占空间。 VS Code 侧边栏视图约 142px 最小展开高度为核心硬编码(官方 #123715 已 not planned), 无法经扩展解除;新默认仅对新安装或「View: Reset View Locations」后生效。 同步 CHANGELOG(Unreleased)与 docs/.agents/issue.md #12。 🤖 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(Views): Worktrees 默认保持展开(仅以 initialSize 收窄),同步文档; 依用户偏好将 hyperGit.worktrees 的 visibility 由 collapsed 改回 visible(保留 initialSize:1), 使其默认展开但占位收窄;Stash/Shelf 仍默认折叠。同步校正 CHANGELOG 与 issue #12 表述以对齐最终默认。 🤖 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>
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v4...v7) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Aurelius Huang <threefish.ai@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [prettier](https://github.com/prettier/prettier) from 3.9.3 to 3.9.4. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](prettier/prettier@3.9.3...3.9.4) --- updated-dependencies: - dependency-name: prettier dependency-version: 3.9.4 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Aurelius Huang <threefish.ai@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@types/vscode](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/vscode) from 1.85.0 to 1.125.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/vscode) --- updated-dependencies: - dependency-name: "@types/vscode" dependency-version: 1.125.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Aurelius Huang <threefish.ai@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…面板 (#65) * fix(Graph): 修复提交悬浮详情浮层被 iframe 裁剪失效,并将 Log 视图更名 Graph、视觉对齐官方 Source Control; 根因:#48「浮层定位修复」将 positionTip/positionCommitTip 横向定位改为 left=window.innerWidth+8, 误以为 webview position:fixed 可越界渲染到编辑器。实则侧边栏 WebviewView 是沙箱 iframe,坐标系 为 iframe 自身视口,该值落到右边界外被裁剪不可见。抽出共用 positionFloat(锚触发元素右侧→越界翻 左→再越界收进视口),彻底修复 CI 与提交两处浮层。 同时按需求将面向用户的「Log」视图更名为「Graph」,并对齐 VS Code 官方 Source Control GRAPH 视图 样式(不改底层数据/协议/布局算法/CI 逻辑): - 泳道连线 <line> 直线改三次贝塞尔 <path> 平滑曲线(fromCol===toCol 自动退化直线); - 当前 HEAD 行节点渲染为空心环+内点(双环高亮),普通行保持实心点; - 引用胶囊改实心半透明底+同色描边+内联 SVG 图标前缀(分支/云/tag,因无 codicon 字体); - 工具栏 seg 按钮间距/圆角/hover 态贴近官方; - package.json 视图名与 Refresh/Filter/Clear Graph Filter 命令标题、CI 配置描述、aria-label 统一为 Graph(viewType hyperGit.log、log/* 消息前缀、类名等内部标识符不动)。 验证:check-types/lint/生产打包通过,324 单测全绿;贝塞尔几何与 HEAD 判定纯函数 11 项自测通过; 离线 harness 浏览器截图目视对齐官方 GRAPH 视图。 🤖 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> * style(Graph): 引用胶囊完全对齐官方 GRAPH——移至 message 右侧后缀、底色跟随泳道色、改全圆角实心 pill; Review 复核发现上一轮 chips 与官方 Source Control GRAPH 视图存在三处实质偏离,本次逐项对齐(截图逐行比对官方图确认): - 位置:chips 从 message 左侧前缀移到右侧后缀(列序 泳道图→message→chips→author→date→CI); - 颜色:底色改为跟随本行泳道色 laneColor(row.layout.node.colorIdx),类型靠图标区分而非颜色, 与官方一致(同名 origin 远程分支随所在行泳道呈多色);新增 onColor() 按底色亮度自适应深/白字保可读; - 形状:由半透明小圆角矩形(radius 3px)改为实心不透明全圆角 pill(radius 8px),保留分支/云/tag 图标前缀; - #commit-tip 浮层内胶囊同步同款样式,与行内保持一致。 仅渲染层调整:chipsHtml/rowHtml/buildCommitTip + CSS,未触碰数据/协议/布局算法/CI 逻辑。 验证:check-types/lint/生产打包通过,324 单测全绿;DOM 结构断言(chips 在 msg 后、颜色跟泳道、 HEAD 空心环)+ Chrome headless 截图与官方图 3 逐行比对确认对齐。 🤖 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(Graph): 提交详情浮层迁移至右侧编辑器区面板,对齐官方 Source Control Graph; 需求:悬停 GRAPH 列表某 commit 时,在右侧编辑器区展示该提交详情面板(对齐官方 Source Control Graph 的 hover 面板位置)。原实现是侧栏 iframe 内 position:fixed 浮层——受浏览器沙箱限制,DOM 浮层无法渲染到 iframe 之外的编辑器区,此路架构上封死,故改用 WebviewPanel。 实现(仅渲染/呈现层,不改数据/协议既有分支/布局算法/CI 逻辑): - 新增 CommitDetailPanel(editor 区 WebviewPanel,ViewColumn.Beside + preserveFocus 不抢焦点): 单例复用,悬停切换只 postMessage 换数据 + reveal,不反复 create/dispose;reqSeq 竞态守卫 + lastHash 去重;onDidDispose 置空、下次悬停重建。面板内容 = 头像占位+作者+相对/绝对时间、完整 message、变更统计(N files changed/+ins/-del)、完整 hash + Open on GitHub。 - GRAPH 悬停 400ms 防抖 → 发 log/showCommitDetail;移除旧侧栏浮层 #commit-tip(CSS/DOM/JS 约 20 处),CI 浮层 #ci-tip 保持不动;i 键改为对选中提交打开面板(保留键盘可达)。 - engine 纯函数(零 vscode,可单测):parseShortStat(shortstat 解析)、commitWebUrl(GitHub 提交 页 URL)、format-time(相对/绝对时间,host 侧预格式化下发)。github-ci-service 暴露 public getGitHubRemote 复用远程解析缓存;Open on GitHub 走既有 openExternal(SSRF 白名单已放行 web 域)。 - protocol 扩展 CommitDetailVM/Stat + log/showCommitDetail + commitDetail/data、openExternal 消息。 验证:check-types/lint/生产打包通过;单测 341 全绿(新增 shortstat/commitWebUrl/format-time 17 例);panel 离线 harness 浏览器截图与官方图逐项比对对齐。注:编辑器区面板生命周期/悬停/不抢焦点 需真实 VS Code F5 端到端确认(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(CI): @types/vscode 降回 ~1.85.0 对齐 engines.vscode,修复 vsce package 失败; 根因:Dependabot #60 单方面把 @types/vscode 从 ~1.85.0 bump 到 ~1.125.0,未联动 engines.vscode (自 M0 起刻意固定 ^1.85.0 的广兼容基线,从未上调)。vsce package 强制要求 @types/vscode 的 major.minor ≤ engines.vscode,1.125 > 1.85 命中校验失败,连带令基于 feature/1.x.x 的下游 PR (含本 PR #65)Package vsix job 全部 fail。 修复(降级依赖,不动 engines): - @types/vscode ~1.125.0 → ~1.85.0(对齐 engines.vscode ^1.85.0);同步 pnpm-lock.yaml。 - .github/dependabot.yml 为 npm 生态加 ignore: @types/vscode,防 Dependabot 再次单方面 bump 破坏约束——该版本须与 engines 联动,属人工产品决策。 循证(Workflow 三路调研):代码未用任何 >1.85 的稳定 API(最新为 TreeView.badge,1.72 稳定), 降级不致 tsc 报错;升 engines 会不可逆抬高 Marketplace 安装门槛、收窄用户面,违背广兼容定位,不取。 验证(本地复现原失败点):check-types/lint 通过;vsce package 成功生成 vsix(原报错点解除); 单测 349 全绿。 🤖 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>
- typescript ^5.9.2 → ^6.0.3:TS 6 把 moduleResolution=node10("node")由告警升为硬错 TS5107(将在 TS 7 移除);且 bundler 解析下不再自动纳入 @types/node 全局 - tsconfig 迁移(tsc 仅做 --noEmit 类型检查,产物 CJS 由 esbuild 固定 format:'cjs' 输出,不受 module 变更影响): - module commonjs → esnext - moduleResolution node → bundler(现代 bundler 场景推荐,弃用 node10) - 显式 types:["node"]:恢复 @types/node 全局(setTimeout/clearTimeout/AbortSignal/URL/path/os/process/NodeJS 等);@types/vscode 经 import 消费,不受 types 限制 - 本地 CI 同款四闸门全绿:check-types / lint / package / test:unit(332/332) - 无源码改动;esbuild.js 的 format:'cjs' 硬编码保证 VS Code 扩展仍输出 CJS Closes #57。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
#66) - vitest ^2.1.8 → ^4.1.9:vitest 4 要求 vite ≥6,本仓无直接 vite 依赖、旧锁文件停留在 vite 5.4.21,导致 vitest run 启动即崩(vite/module-runner 子路径不存在);故伴随新增 devDependency vite ^7(解析到 7.3.6)作为必要 companion,Dependabot 原 #56 锁文件同样停留在 vite 5、即便无冲突也过不了 CI - typescript-eslint ^8.39.0 → ^8.62.1:补丁升级 - typescript 暂保 ^5.9.2:TS 6 把 moduleResolution=node10 升为硬错,且 src/extension.ts 的 setTimeout/clearTimeout 全局解析失败,需 tsconfig 迁移 + 全局类型修复,另起单独 PR 处理(Closes #57) - 重生 pnpm-lock.yaml(pnpm@11.9.0),消除与 feature/1.x.x 的锁文件漂移冲突 - 本地 CI 同款四闸门全绿:check-types / lint / package / test:unit(332/332) 整合 #56 #59;#57 由独立迁移 PR 承接。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist)
…赖升级基线 (#69) * fix(Graph): 修复提交悬浮详情浮层被 iframe 裁剪失效,并将 Log 视图更名 Graph、视觉对齐官方 Source Control; 根因:#48「浮层定位修复」将 positionTip/positionCommitTip 横向定位改为 left=window.innerWidth+8, 误以为 webview position:fixed 可越界渲染到编辑器。实则侧边栏 WebviewView 是沙箱 iframe,坐标系 为 iframe 自身视口,该值落到右边界外被裁剪不可见。抽出共用 positionFloat(锚触发元素右侧→越界翻 左→再越界收进视口),彻底修复 CI 与提交两处浮层。 同时按需求将面向用户的「Log」视图更名为「Graph」,并对齐 VS Code 官方 Source Control GRAPH 视图 样式(不改底层数据/协议/布局算法/CI 逻辑): - 泳道连线 <line> 直线改三次贝塞尔 <path> 平滑曲线(fromCol===toCol 自动退化直线); - 当前 HEAD 行节点渲染为空心环+内点(双环高亮),普通行保持实心点; - 引用胶囊改实心半透明底+同色描边+内联 SVG 图标前缀(分支/云/tag,因无 codicon 字体); - 工具栏 seg 按钮间距/圆角/hover 态贴近官方; - package.json 视图名与 Refresh/Filter/Clear Graph Filter 命令标题、CI 配置描述、aria-label 统一为 Graph(viewType hyperGit.log、log/* 消息前缀、类名等内部标识符不动)。 验证:check-types/lint/生产打包通过,324 单测全绿;贝塞尔几何与 HEAD 判定纯函数 11 项自测通过; 离线 harness 浏览器截图目视对齐官方 GRAPH 视图。 🤖 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> * style(Graph): 引用胶囊完全对齐官方 GRAPH——移至 message 右侧后缀、底色跟随泳道色、改全圆角实心 pill; Review 复核发现上一轮 chips 与官方 Source Control GRAPH 视图存在三处实质偏离,本次逐项对齐(截图逐行比对官方图确认): - 位置:chips 从 message 左侧前缀移到右侧后缀(列序 泳道图→message→chips→author→date→CI); - 颜色:底色改为跟随本行泳道色 laneColor(row.layout.node.colorIdx),类型靠图标区分而非颜色, 与官方一致(同名 origin 远程分支随所在行泳道呈多色);新增 onColor() 按底色亮度自适应深/白字保可读; - 形状:由半透明小圆角矩形(radius 3px)改为实心不透明全圆角 pill(radius 8px),保留分支/云/tag 图标前缀; - #commit-tip 浮层内胶囊同步同款样式,与行内保持一致。 仅渲染层调整:chipsHtml/rowHtml/buildCommitTip + CSS,未触碰数据/协议/布局算法/CI 逻辑。 验证:check-types/lint/生产打包通过,324 单测全绿;DOM 结构断言(chips 在 msg 后、颜色跟泳道、 HEAD 空心环)+ Chrome headless 截图与官方图 3 逐行比对确认对齐。 🤖 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(Graph): 提交详情浮层迁移至右侧编辑器区面板,对齐官方 Source Control Graph; 需求:悬停 GRAPH 列表某 commit 时,在右侧编辑器区展示该提交详情面板(对齐官方 Source Control Graph 的 hover 面板位置)。原实现是侧栏 iframe 内 position:fixed 浮层——受浏览器沙箱限制,DOM 浮层无法渲染到 iframe 之外的编辑器区,此路架构上封死,故改用 WebviewPanel。 实现(仅渲染/呈现层,不改数据/协议既有分支/布局算法/CI 逻辑): - 新增 CommitDetailPanel(editor 区 WebviewPanel,ViewColumn.Beside + preserveFocus 不抢焦点): 单例复用,悬停切换只 postMessage 换数据 + reveal,不反复 create/dispose;reqSeq 竞态守卫 + lastHash 去重;onDidDispose 置空、下次悬停重建。面板内容 = 头像占位+作者+相对/绝对时间、完整 message、变更统计(N files changed/+ins/-del)、完整 hash + Open on GitHub。 - GRAPH 悬停 400ms 防抖 → 发 log/showCommitDetail;移除旧侧栏浮层 #commit-tip(CSS/DOM/JS 约 20 处),CI 浮层 #ci-tip 保持不动;i 键改为对选中提交打开面板(保留键盘可达)。 - engine 纯函数(零 vscode,可单测):parseShortStat(shortstat 解析)、commitWebUrl(GitHub 提交 页 URL)、format-time(相对/绝对时间,host 侧预格式化下发)。github-ci-service 暴露 public getGitHubRemote 复用远程解析缓存;Open on GitHub 走既有 openExternal(SSRF 白名单已放行 web 域)。 - protocol 扩展 CommitDetailVM/Stat + log/showCommitDetail + commitDetail/data、openExternal 消息。 验证:check-types/lint/生产打包通过;单测 341 全绿(新增 shortstat/commitWebUrl/format-time 17 例);panel 离线 harness 浏览器截图与官方图逐项比对对齐。注:编辑器区面板生命周期/悬停/不抢焦点 需真实 VS Code F5 端到端确认(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(CI): @types/vscode 降回 ~1.85.0 对齐 engines.vscode,修复 vsce package 失败; 根因:Dependabot #60 单方面把 @types/vscode 从 ~1.85.0 bump 到 ~1.125.0,未联动 engines.vscode (自 M0 起刻意固定 ^1.85.0 的广兼容基线,从未上调)。vsce package 强制要求 @types/vscode 的 major.minor ≤ engines.vscode,1.125 > 1.85 命中校验失败,连带令基于 feature/1.x.x 的下游 PR (含本 PR #65)Package vsix job 全部 fail。 修复(降级依赖,不动 engines): - @types/vscode ~1.125.0 → ~1.85.0(对齐 engines.vscode ^1.85.0);同步 pnpm-lock.yaml。 - .github/dependabot.yml 为 npm 生态加 ignore: @types/vscode,防 Dependabot 再次单方面 bump 破坏约束——该版本须与 engines 联动,属人工产品决策。 循证(Workflow 三路调研):代码未用任何 >1.85 的稳定 API(最新为 TreeView.badge,1.72 稳定), 降级不致 tsc 报错;升 engines 会不可逆抬高 Marketplace 安装门槛、收窄用户面,违背广兼容定位,不取。 验证(本地复现原失败点):check-types/lint 通过;vsce package 成功生成 vsix(原报错点解除); 单测 349 全绿。 🤖 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(Graph): Commit 详情面板逐项对齐官方 Source Control Graph(diffstat/时间/邮箱); 对照官方截图逐字符核验三处真实偏差并修复(DOM 文本 ground truth,非图像识别): - diffstat:'3 files changed +86 -1'(简写)→ '3 files changed, 86 insertions(+), 1 deletion(-)' (完整文字、逗号分隔,绿/红着色覆盖数字+insertions(+)/deletions(-) 整段); - 时间:'7 hr ago · 2026/7/4 09:41'(缩写/数字日期/带秒)→ '7 hours ago (2026年7月4日 09:12)' (相对时间全拼 hours/minutes/days、括号包裹本地化绝对时间、去掉秒); - 作者区:邮箱从作者名旁尖括号移到第二行(与时间同色同行)。 formatRelative/formatAbsolute 同步改全拼/去秒并更新单测;check-types/lint/349 单测/vsce package 通过。 🤖 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(Graph): 提交详情撤掉 WebviewPanel tab,改为光标跟随 hover tooltip;CI 浮层同款统一; 撤回上一轮的 WebviewPanel(Beside) 方案(在编辑器区开 tab,与官方 hover tooltip 相悖),按方案 A 实现: - 提交详情浮层重回 webview 内(#commit-tip),但定位改为 cursor-anchored:mousemove 跟踪光标, 浮层锚在光标处、边沿自动翻转(右→左、下→上)、钳制视口。这是 sidebar webview iframe 限制下 最接近官方观感的做法(GitLens/Git Graph 同款限制,无法溢出到编辑器区像素)。 - 交互:400ms 防抖请求 → host 组装富数据 → 回包渲染(无空闪);hover bridge(移到浮层不消失, 方便点 Open on GitHub);mouseout/scroll/Escape 隐藏;i 键键盘可达(锚选中行 rect,无光标)。 - 富布局:头像+作者+邮箱·相对(绝对)时间/subject+body/diffstat(绿红 tabular-nums)/hash+Open on GitHub, 对齐前几轮已校准的官方字符级文案。 - 统一所有 tooltip:CI 浮层也用 positionAtCursor(替换原 rect 锚),共享 editorHoverWidget 语义 令牌/阴影/圆角,视觉语言一致。 实现:buildCommitDetail 移入 LogWebviewProvider 私有方法(复用 engine 纯函数 parseShortStat/ commitWebUrl/formatRelative/formatAbsolute);删除 commit-detail-panel.ts;protocol 新增 log/commitDetail(host→webview)。 验证:check-types/lint/生产打包/349 单测通过;harness 截图 DOM 核实浮层锚在光标右下、富布局完整。 🤖 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>
This was referenced Jul 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
背景
本 PR 将
feature/1.x.x开发线合入master,承载自 v0.0.6(首个 MVP 正式版)以来的全量迭代,并发布 v0.0.11 —— 第一个 VS Code Marketplace 正式版。聚合 18 个子 PR(#47–#67),净变更 49 文件 / +2602 / −993。核心变更
🏗️ 视图架构重构
ChangeItem | path经resolveChange解析(单一事实源)。(refactor(CommitLog): 移除 CHANGES 视图,整合提交/日志能力并新增目录树切换与提交悬浮详情; #47)engine/tree/file-tree(compact 折叠 + 目录优先 / 数字感知稳定排序 +fileIndex回指扁平列表),Commit 与 Graph 两视图文件列表支持 平铺 ↔ 按目录分组 切换,零 host 往返、偏好按视图各自记忆。(refactor(CommitLog): 移除 CHANGES 视图,整合提交/日志能力并新增目录树切换与提交悬浮详情; #47)initialSize权重缓解挤占(受限于 VS Code ~142px 硬性最小高度,仅对新安装或 Reset View Locations 生效)。(fix(Views): 优化侧边栏视图默认布局(次要视图默认折叠 + initialSize 高度权重) #64)🎨 Graph 视图更名并对齐官方 Source Control
viewType hyperGit.log等内部标识符不动,不触碰数据 / 协议 / 布局算法 / CI 逻辑)。(fix(Graph): 修复提交悬浮详情浮层失效,并将 Log 视图更名 Graph、完全对齐官方 Source Control GRAPH 视图 #53, feat(Graph): Log 视图更名 Graph、对齐官方 Source Control Graph 并将提交详情迁移至右侧编辑器区面板 #65)CommitDetailPanel(ViewColumn.Beside+preserveFocus不抢焦点,单例复用、reqSeq竞态守卫 +lastHash去重),悬停切换只postMessage换数据;新增 engine 纯函数parseShortStat/commitWebUrl/format-time(host 侧预格式化下发)。(feat(Graph): Log 视图更名 Graph、对齐官方 Source Control Graph 并将提交详情迁移至右侧编辑器区面板 #65)🐛 关键缺陷修复
WebviewView迁至隐藏 TreeView(hyperGit.changesBadge),activate即实例化、面板未打开也可靠聚合;新增 engine 纯函数change-count作去重单一事实源,走 40ms 微防抖快路径与重刷新解耦。(fix(Badge): 修复活动栏未提交变更数角标更新不及时(迁至隐藏 TreeView 承载) #52)positionFloat(锚右侧 → 越界翻左 → 再越界收进视口)彻底修复 CI 与提交两处浮层。(fix(Graph): 修复提交悬浮详情浮层失效,并将 Log 视图更名 Graph、完全对齐官方 Source Control GRAPH 视图 #53, feat(Graph): Log 视图更名 Graph、对齐官方 Source Control Graph 并将提交详情迁移至右侧编辑器区面板 #65)packagejob 对 rc tag 补--pre-release,与vsce publish --pre-release对齐,修复 Marketplace 预发布 publish 失败(issue #11)。(fix(CI): 修复 Marketplace 预发布 publish 失败(package job 对 rc tag 补 --pre-release),补 v0.0.10-rc.2 物料 #61)mouseleave卡死 &capBody劈开 Unicode 代理对:复位overCtRow;改用Array.from按码点截断。(refactor(CommitLog): 移除 CHANGES 视图,整合提交/日志能力并新增目录树切换与提交悬浮详情; #47)📦 发布物料与品牌
OVSX_PAT依赖,CI 现为 GitHub Release + Marketplace(ENABLE_MARKETPLACE_PUBLISH门控,rc 走预发布)。(chore(Release): 发布渠道收敛为 VS Code Marketplace 单市场,发布正式版 v0.0.11 #62, docs: 文档口径同步为 VS Code Marketplace 单市场(移除 OpenVSX 记述) #63)galleryBanner。(chore(Icon): 品牌图标改用透明底绿色圆环(Emerald)方案并新增 galleryBanner; #49)📚 文档
ui/层描述、publisher 落实为ThreeFish-AI、行级提交 CodeLens 标签校准;根英文、中文迁入docs/i18n/zh-CN/README.md。(docs(README): 校准 README 真实性并重构为中英双语(根英文 · 中文迁入 i18n) #51)🔧 依赖与工具链
tsconfig模块解析node→bundler、modulecommonjs→esnext,显式types:["node"]恢复@types/node全局。(build(Deps): 升级 TypeScript 6.0.3 并迁移 tsconfig 模块解析策略(Closes #57) #67)pnpm-lock.yaml消除漂移。(build(Deps): 整合升级 vitest 4 / vite 7 / typescript-eslint 8.62.1,解决 #56 #59 锁文件冲突 #66)@types/vscode升 1.125 后降回 ~1.85.0 对齐engines.vscode ^1.85.0,并为 Dependabot 加ignore防再次单方面 bump 破坏 vsce package 约束。(chore(deps-dev): bump @types/vscode from 1.85.0 to 1.125.0 #60, feat(Graph): Log 视图更名 Graph、对齐官方 Source Control Graph 并将提交详情迁移至右侧编辑器区面板 #65)actions/checkoutv4 → v7 (chore(deps): bump actions/checkout from 4 to 7 #54)、prettier3.9.3 → 3.9.4 (chore(deps-dev): bump prettier from 3.9.3 to 3.9.4 #55)。验证
CI 四闸门全绿:
check-types/lint/package(vsce 打包) /test:unit,三平台(Ubuntu / macOS / Windows)矩阵。规模实证:6 用户视图 / 97 命令 / 6 配置项。子 PR 索引