Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

## [Unreleased]

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

### Fixed

- **CI 状态与 Branches PR 徽标注入取数主机策略**:仅 github.com 与已配置 `github-enterprise.uri` 的实例主机发送取数请求;其余「GitHub 形态」远程(origin 指向任意第三方主机)视同非 GitHub(零徽标、零请求),杜绝把 GitHub/GHE token 发往任意主机的凭证外发面。
Expand Down
2 changes: 1 addition & 1 deletion docs/.agents/knowledge-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
- [工程实施方案](../docs/architecture/engineering-plan.md) — 路径 B 架构 + M0-M5 里程碑(**开发蓝图**)。
- [Git 功能矩阵](../docs/requirements/idea-feature-matrix.md) — 56 功能点 / 8 组(**验收基线**,参考 IDEA 等成熟实现)。
- [调研报告](../docs/research/README.md) — SCM 集成 / 工程蓝图 / 发布 CI / AI 接缝四路循证报告。
- [发布说明](../releases/README.md) — 各正式版 Release Notes(GitHub Release 正文单一事实源;最新 [v0.0.18](../releases/v0.0.18.md))。
- [发布说明](../releases/README.md) — 各正式版 Release Notes(GitHub Release 正文单一事实源;最新 [v0.0.19](../releases/v0.0.19.md))。

## 图资产(docs/assets/)
- [Mermaid 源图索引](../assets/mermaid/README.md) — 全项目 Mermaid 源图统一管理 + **溯源矩阵**(mermaid ↔ archify ↔ 嵌入文档的唯一权威映射)。
Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
- [Agentic Git 偏好配置](./features/agentic-git-preferences.md) — Agentic Git 预置:Base Branch + Commit / Create PR / Review 三项 agent 指令偏好(多行文本域 + 内置默认模板;M5 前置铺垫)。

## 发布说明
- [Release Notes 目录](./releases/README.md) — 各正式版发布说明(GitHub Release 正文单一事实源);最新:[v0.0.18 Commit / Branches 标题栏重构 · 批量 Discard Changes · 分支级 Push](./releases/v0.0.18.md)。
- [Release Notes 目录](./releases/README.md) — 各正式版发布说明(GitHub Release 正文单一事实源);最新:[v0.0.19 Branches 视图 PR 状态徽标 · 取数安全加固 · 开发依赖升级](./releases/v0.0.19.md)。

## 调研报告(循证依据)
- [02 · VS Code SCM API 与 vscode.git 集成路径](./research/02-vscode-scm-integration.md) — 路径 B 决策依据、SCM 稳定/proposed API 边界、changelist 模型映射。
Expand Down
1 change: 1 addition & 0 deletions docs/releases/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

| 版本 | 说明 | 日期 |
|---|---|---|
| [v0.0.19](./v0.0.19.md) | Branches 视图 PR 状态徽标 · 取数安全加固 · 开发依赖升级 | 2026-10-17 |
| [v0.0.18](./v0.0.18.md) | Commit / Branches 标题栏重构 · 批量 Discard Changes · 分支级 Push · 双市场发布重启 | 2026-09-10 |
| [v0.0.17](./v0.0.17.md) | Log 提交详情常驻面板 · VS Code 1.136 最佳实践对齐 · 稳定性与体验修复 | 2026-09-09 |
| [v0.0.16](./v0.0.16.md) | 多根工作区仓库切换 · 分支前缀分组树 · Agentic Git 预置 · Diff 修复与面板布局优化 | 2026-09-01 |
Expand Down
69 changes: 69 additions & 0 deletions docs/releases/v0.0.19.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Hyper Git - Agentic Git v0.0.19 — Branches 视图 PR 状态徽标 · 取数安全加固 · 开发依赖升级

> 本版核心:**Branches 视图远程分支行右侧显示关联 GitHub Pull Request 状态徽标**(如 `#138 Merged`,云图标按状态着色,悬停见 PR 号、标题与 Open on GitHub 链接)——分支 → PR 三级身份匹配(fork 全名 → 同仓 headRefName → 唯一兜底,歧义宁缺勿错),复用 CI 状态的 GitHub 认证,TTL 60s 缓存零刷新循环。同时**加固取数安全**:CI 与 PR 徽标注入「取数主机策略」(仅 github.com 与已配置 `github-enterprise.uri` 实例发数,杜绝 token 外发任意主机)、Tooltip 注入面多层封堵与外链白名单统一;并升级开发依赖基线(vsce 4 / vitest 5 / Node 22)。

---

## ✨ 亮点速览

- **Branches 视图 PR 状态徽标**:远程分支行右侧显示 `#N Open / Merged / Closed / Draft`,云图标按状态着色(Merged 紫 / Closed 红 / Open 绿 / Draft 弱化);悬停见 PR 号、标题与经主机白名单校验的 **Open on GitHub** 链接。
- **三级身份匹配,宁缺勿错**:fork 全名(remote 以 fork owner 命名且 URL 身份一致,host/owner/repo 三维校验)→ 同仓 headRefName(dependabot / 仓内分支主场景)→ 唯一兜底(多候选歧义时不显示)——绝不显示错误 PR。
- **零打扰取数**:复用 VS Code 内置 GitHub 认证(与 CI 状态共享会话);未登录 / 非 GitHub 远程 / 配置关闭 → 零徽标零请求;TTL 60s 缓存 + 首轮无徽标先行渲染,绝不阻塞建树、绝无刷新循环;限流 / 失败自动退避。
- **取数主机策略(安全)**:CI 状态与 PR 徽标仅向 github.com 与已配置 `github-enterprise.uri` 的实例发送请求——origin 指向任意第三方「GitHub 形态」主机时视同非 GitHub(零请求),杜绝把 GitHub/GHE token 发往任意主机的凭证外发面。
- **Tooltip 与外链安全(安全)**:PR 标题等远程可控文本经单行化 + Markdown 语法转义 + 变长 code fence 多层消毒;`command:` 链接一律失效(isTrusted 白名单形态);外链主机统一白名单(github.com / `*.github.com` / 仓库主机 / api.仓库主机),并以与浏览器同规范的解析封死 `evil.com\@github.com` 类分歧绕过。
- **依赖基线升级**:`@vscode/vsce` 4.0.0、`vitest` 5.0.1(Node 基线 22)、`ovsx` 1.2.0、`typescript-eslint` 8.70.0、`esbuild` 0.28.2;dependabot 聚合升级(minor/patch 合单 PR),根除连环 lockfile 冲突。

---

## 🧩 特性详述

### 1. Branches 视图 PR 状态徽标(#142)

远程分支行右侧(ahead/behind 之后)显示关联 PR 的 `#N 状态` 徽标,云图标按 PR 状态着色:

- **数据源**:GitHub GraphQL 按 UPDATED_AT 倒序取最近 100 条全态 PR(Open / Merged / Closed / Draft),与 CI 状态共用同一 GitHub 会话与 remote/provider 判定(单一事实源);
- **三级匹配**:fork 全名(Tier a,remote 以 fork owner 命名且其 URL 解析的 host/owner/repo 与 PR head 一致——排除 login 撞名、同 owner 他仓、异实例的误配)→ 同仓分支名(Tier b,dependabot / 仓内功能分支主场景,owner 大小写不敏感)→ 唯一兜底(Tier c,多 fork 同名歧义时不显示);同一分支名多条 PR 取最近更新者;
- **刷新语义**:TTL 60s 缓存 + in-flight 去重(键含仓根与取数上下文),数据未变返回同一索引实例(引用相等守卫,无刷新循环);切换仓库 / 登录登出 / 改配置即时失效重取(代次化,登出即隐去徽标);限流与失败按 60s 退避且失败走既有缓存(无闪烁);
- **多根工作区**:单槽缓存按仓根校验,切库零串仓;
- **配置**:`hyperGit.branches.pr.enabled`(默认开启)总开关;GitHub Enterprise 按已配置的 `github-enterprise.uri` 实例主机自动判定。

完整叙述见 [Branches 视图远程分支 PR 状态徽标](../features/branches-pr-status.md)。

### 2. 取数主机策略与注入面加固(#142)

- **取数主机策略**:`parseGitHubRemote` 只辨「GitHub 形态」不辨主机(机制),「是否把 token 发往该主机」的策略由共享谓词 `isGitHubInstanceHost` 统一落地——CI 状态(status / getStatuses / signIn)与 Branches PR 徽标四个入口全部收口:仅 github.com 与已配置 `github-enterprise.uri` 的实例主机取数,其余视同非 GitHub(零徽标、零请求);
- **Tooltip 注入面**:PR 标题为远程可控文本,行值统一单行化 + 转义 `[]()<>`(封链接 / 图片 / autolink 语法)+ 反引号串按长度压制 code fence;`isTrusted` 采用空白名单形态(http 链接可点、`command:` 链接一律失效);主题图标替换关闭;
- **外链白名单统一**:CI 跳转链接与 PR 徽标 Open on GitHub 共用同一主机白名单谓词(github.com、`*.github.com`、仓库主机、api.仓库主机);CI `openExternal` 改用与浏览器同规范的 WHATWG URL 解析,封死 `https://evil.com\@github.com/` 类解析器分歧绕过;
- **传输与解析健壮性**:请求超时 / 扩展停用中止的保护伞覆盖到响应体读取完成;`Retry-After` 头全形态解析(非法值不再毒化限流冷却);远程 URL 含非法百分号序列时容错降级(不再静默打断取数)。

### 3. 开发依赖升级与 dependabot 聚合(#127–#131)

- `@vscode/vsce` 3.9.2 → **4.0.0**、`vitest` 4.1.10 → **5.0.1**(两项 major 均把 Node 基线抬至 22,与 CI 一致)、`ovsx` 1.1.1 → 1.2.0、`typescript-eslint` 8.68.0 → 8.70.0、`esbuild` 0.28.1 → 0.28.2;五项合成单 PR 重生一次 lockfile;
- `.github/dependabot.yml` 新增 `groups`:npm 开发依赖 minor/patch 聚合单 PR(major 仍逐项单开)、github-actions 全量聚合——根除「多个 deps PR 共改 lockfile 连环冲突」的复发源。

---

## ⚙️ 升级与兼容

- **无破坏性移除**:全部既有命令、视图与配置项保留;本版新增配置 `hyperGit.branches.pr.enabled`(默认开启,关闭后零徽标零请求);
- **PR 徽标登录入口**:复用 Graph 视图标题栏的「登录 GitHub」按钮(需 CI 状态开启,默认开启)——「CI 关 / PR 开」组合下 Branches 视图暂无独立登录入口(已知限制);
- **GitHub Enterprise 用户**:PR 徽标与 CI 状态均要求远程主机与已配置的 `github-enterprise.uri` 实例一致(本版起的安全策略);
- **徽标覆盖范围**:最近更新的 100 条 PR 以内的远程分支(超出窗口的旧分支 PR 静默不显示);多 fork 同名分支歧义时不显示(宁缺勿错)。

---

## 📦 安装

- **VS Code Marketplace**:搜索 `Hyper Git - Agentic Git` 直接安装或更新。
- **Open VSX**:搜索 `Hyper Git - Agentic Git` 直接安装或更新(覆盖 Cursor / Windsurf / VSCodium 等 Open VSX 系编辑器)。
- **手动**:从 [Releases](https://github.com/ThreeFish-AI/hyper-git/releases/tag/v0.0.19) 下载 `hyper-git-agentic-git-0.0.19.vsix` → 命令面板 `Extensions: Install from VSIX`。

**系统要求**:VS Code ≥ 1.85.0,且启用内置 Git 扩展(`vscode.git`,默认随附)。仅支持本地 git 仓库,不支持虚拟 / Web 工作区。

---

## 💬 反馈

欢迎在 [GitHub Issues](https://github.com/ThreeFish-AI/hyper-git/issues) 反馈问题与建议。完整工程视角变更记录见 [CHANGELOG](../../CHANGELOG.md)。

许可证:[MIT](https://github.com/ThreeFish-AI/hyper-git/blob/master/LICENSE)。
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"theme": "dark"
},
"description": "Hyper Git brings IntelliJ IDEA's powerful Git & Commit modules to VS Code, enhanced with AI-powered autonomous agents for intelligent repository management. Experience Git in a higher dimension.",
"version": "0.0.18",
"version": "0.0.19",
"publisher": "ThreeFish-AI",
"license": "MIT",
"preview": true,
Expand Down
Loading