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
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

## [Unreleased]

## [0.0.22] - 2026-10-24 — Graph 过滤持久化与激活指示 · Branches 就地更新 · 开发依赖升级

### Added

- **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`,全量单测覆盖。
Expand All @@ -14,6 +16,10 @@

- **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.filterActive` context 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 错误态。

### Changed

- 开发依赖升级(#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,对扩展运行时零影响。

## [0.0.21] - 2026-10-23 — Filter by Author 候选建议 · 多选过滤 · 元字符作者修复

### Added
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 @@ -30,7 +30,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.21](../releases/v0.0.21.md))。
- [发布说明](../releases/README.md) — 各正式版 Release Notes(GitHub Release 正文单一事实源;最新 [v0.0.22](../releases/v0.0.22.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 @@ -16,7 +16,7 @@
- [分支就地更新](./features/branches-update-in-place.md) — Branches 视图不 checkout 更新本地分支(fetch refspec 原生 fast-forward-only):右键 / 多选批量 / 标题栏选区感知三入口。

## 发布说明
- [Release Notes 目录](./releases/README.md) — 各正式版发布说明(GitHub Release 正文单一事实源);最新:[v0.0.21 Filter by Author 候选建议 · 多选过滤 · 元字符作者修复](./releases/v0.0.21.md)。
- [Release Notes 目录](./releases/README.md) — 各正式版发布说明(GitHub Release 正文单一事实源);最新:[v0.0.22 Graph 过滤持久化与激活指示 · Branches 就地更新 · 开发依赖升级](./releases/v0.0.22.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.22](./v0.0.22.md) | Graph 过滤持久化与激活指示 · Branches 就地更新 · 开发依赖升级 | 2026-10-24 |
| [v0.0.21](./v0.0.21.md) | Filter by Author 候选建议 · 多选过滤 · 元字符作者修复 | 2026-10-23 |
| [v0.0.20](./v0.0.20.md) | Delete Remote Branch 陈旧远程分支修复 · 删除失败可诊断 | 2026-10-17 |
| [v0.0.19](./v0.0.19.md) | Branches 视图 PR 状态徽标 · 取数安全加固 · 开发依赖升级 | 2026-10-17 |
Expand Down
56 changes: 56 additions & 0 deletions docs/releases/v0.0.22.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Hyper Git - Agentic Git v0.0.22 — Graph 过滤持久化与激活指示 · Branches 就地更新 · 开发依赖升级

> 本版核心:**Graph 视图全部 7 个过滤维度按仓库持久化**(Author / File Path / Grep / Merge Mode / Date / Message Regex)——重启 VS Code 或切换仓库再切回,过滤条件自动恢复为上次设置,每个仓库记忆自己的完整过滤组合;过滤生效期间标题栏过滤图标点亮为填充态(Graph Filter Active),恢复的过滤不再是无声约束。同时 Branches 视图迎来**分支就地更新(不 checkout)**:右键 Update Branch 以 `git fetch` 原生 fast-forward-only 原语安全前移本地分支,永不改写本地提交。

---

## ✨ 亮点速览

- **过滤持久化**:任一过滤维度设置后即按仓库落盘(workspaceState),重启 / 切库往返自动恢复;空选确认与 Clear Filter 的「清除」同样持久化,重启不复活;脏持久化数据逐字段校验免疫,永不崩溃。
- **过滤激活指示**:过滤生效期间标题栏过滤图标切换为填充态 `$(filter-filled)`(悬停标注 Graph Filter Active),与常态图标按激活态互斥呈现——重启恢复的过滤一眼可见。
- **重开 Author 过滤即续选**:重开「Filter by Author…」预勾选已选作者(含不在当前候选集的持久化作者,以 ghost 项呈现)继续增删;pattern 项经「Use pattern」逃生口完整保留。
- **分支就地更新**:右键单个分支 **Update Branch**、多选批量更新、标题栏 Pull 升级为选区感知——fast-forward-only 安全拒绝 diverged / ahead-only 分支(附真实原因),**永不改写本地提交**;五桶对账汇总(updated / up-to-date / pulled / skipped / failed)。
- **切库守卫全覆盖**:任何过滤对话框(含 Filter Graph 聚合入口)或 Commit 文件右键菜单打开期间发生切库后确认,不再把旧仓库语境的选择误写新仓库。
- **越仓选择拒绝**:Filter by Path 选中当前仓库外的文件时以告警拒绝,不再落入 `../…` 垃圾 path 过滤(该垃圾 path 会随持久化成为跨重启的图加载 fatal 错误态)。

---

## 🧩 特性详述

### 1. Graph 过滤按仓库持久化与激活指示(#152)

- **存储范式**:沿用 scope / detail mode 的按仓库 workspaceState 范式——authors 独立 key(`hyperGit.log.authors:<repoRoot>`),其余 6 维组合 key(`hyperGit.log.filter:<repoRoot>`,单 key 原子读写防半恢复态,Date 经 ISO 串往返);脏数据经 engine 层纯函数逐字段校验(空串、mergeMode `all` 等归一化不落盘);
- **激活指示**:engine 纯函数 `hasActiveFilter`(激活判定与持久化归一化同口径)驱动 `hyperGit.log.filterActive` context key,标题栏过滤图标常态(`$(filter)`)/ 填充(`$(filter-filled)`)双命令互斥呈现,`alt+g` 键绑定不受影响;
- **附带行为变更**:① SCM 变更列表右键「Show History」由整替过滤器改为与其余过滤命令一致的增量式——文件历史与活跃过滤相交而非静默清空;② issue #107 的「切库清空 host 级过滤」限制消除——每个仓库记忆自己的完整过滤条件。

### 2. Branches 视图分支就地更新(#151)

- **底层原语**:`git fetch <remote> refs/heads/<upstream>:refs/heads/<branch>`——git 原生 fast-forward-only,diverged / ahead-only 分支被安全拒绝(附真实 stderr 原因);当前分支自动改走 `repo.pull()`(含冲突处理通道);无上游分支透明跳过;
- **选区感知 Pull**:Branches 标题栏 Pull 按钮在有多选分支时按选区执行就地更新(无选区保持原 Pull 语义,Commit 视图 Pull 不受影响);
- **五桶对账**:updated / already up to date / pulled / skipped / failed 汇总(选中数 = 各桶之和),up-to-date 经前后 `objectname` 短 sha 前缀比对判定;upstream 解析以一次 `for-each-ref` 取新鲜快照(不信任树节点数据),`origin/x` 拆分复用最长前缀匹配(remote 名可含 `/`)。

---

## ⚙️ 升级与兼容

- **无破坏性变更**:全部既有命令、视图与配置项保留;过滤组合语义(各维度 AND、多作者 OR)与 v0.0.21 一致;
- **行为改进**:过滤条件由「仅内存、切库清空」升级为「按仓库持久化」——升级后首次使用即开始记忆,无迁移步骤;此前会话内的所有过滤行为(空选清除、pattern 逃生口、Clear Filter)语义不变,仅新增跨重启存活;
- **开发依赖升级**(#153):eslint 10.13 / typescript-eslint 8.72 / vitest 5.0.5 / ovsx 1.3(全部 devDependencies,对运行时零影响)。

---

## 📦 安装

- **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.22) 下载 `hyper-git-agentic-git-0.0.22.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.21",
"version": "0.0.22",
"publisher": "ThreeFish-AI",
"license": "MIT",
"preview": true,
Expand Down
Loading