Skip to content

chore(Release): 合入 0.0.9-rc.1/rc.2 发布物料 + Log 浮层定位修复; - #48

Merged
ThreeFish-AI merged 3 commits into
feature/1.x.xfrom
ThreeFish-AI/release-0.0.9-rc
Jul 4, 2026
Merged

chore(Release): 合入 0.0.9-rc.1/rc.2 发布物料 + Log 浮层定位修复;#48
ThreeFish-AI merged 3 commits into
feature/1.x.xfrom
ThreeFish-AI/release-0.0.9-rc

Conversation

@ThreeFish-AI

Copy link
Copy Markdown
Owner

背景

#47(CHANGES 视图移除 + Commit/Log 重构 + Log 悬浮详情)已 squash-merge 进 feature/1.x.x。本 PR 把squash 之后在发布分支上新增的 3 个 commit 同步回 feature/1.x.x,让主线版本号与发布物料与已发布的 tag 对齐。

包含的提交

  • chore(Release):版本号 bump 至 0.0.9-rc.1,补 docs/releases/v0.0.9-rc.1.md 与 CHANGELOG。
  • fix(Log):提交/CI 浮层定位重做——横向固定到 window.innerWidth + 8(侧边栏右沿外、编辑器区内),不再压住 LOG 列表;纵向与所悬行/图标顶部对齐并按视口高度夹紧。复用 webview position:fixed 可越界渲染到编辑器区的特性。
  • chore(Release):版本号 bump 至 0.0.9-rc.2,补 docs/releases/v0.0.9-rc.2.md 与 CHANGELOG(rc.2 即浮层定位修复版)。

改动范围(相对 feature/1.x.x)

  • package.json0.0.8 → 0.0.9-rc.2
  • CHANGELOG.md[0.0.7]-未发布[0.0.9-rc.1] / [0.0.9-rc.2] 两段(0.0.7/0.0.8 从未对外发布,合并)。
  • docs/releases/v0.0.9-rc.{1,2}.md:新增两份 Release Note(CI body_path 单一事实源);同步 docs/releases/README.md 索引与 knowledge-map
  • src/adapter/webview/log-webview.tspositionTip / positionCommitTip 浮层定位修复(14+/18−,仅两函数)。

说明

  • 本 PR 基于 origin/feature/1.x.x 新建分支、cherry-pick 上述 3 个 commit,避免「squash 后旧分支直推」带来的 refactor 重引入 diff(相对 base 仅 +122/−21)。
  • 已发布 tag v0.0.9-rc.183d2f5b)与 v0.0.9-rc.2a284df4)仍指向原发布分支上的 commit,内容与本 PR cherry-pick 后等价;合并后主线即与发布对齐。
  • pnpm run check-types && pnpm run lint && pnpm run test:unit 全绿(324 用例);vsce package 产出 0.0.9-rc.2.vsix 验证通过。

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>
原 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>
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>
@ThreeFish-AI
ThreeFish-AI merged commit cec6b46 into feature/1.x.x Jul 4, 2026
5 checks passed
@ThreeFish-AI
ThreeFish-AI deleted the ThreeFish-AI/release-0.0.9-rc branch July 4, 2026 04:04
ThreeFish-AI added a commit that referenced this pull request Jul 4, 2026
…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>
ThreeFish-AI added a commit that referenced this pull request Jul 4, 2026
…面板 (#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>
ThreeFish-AI added a commit that referenced this pull request Jul 4, 2026
…赖升级基线 (#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>
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