diff --git a/CHANGELOG.md b/CHANGELOG.md index 4829cff..8ea9426 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,17 @@ ## [Unreleased] +## [0.0.21] - 2026-10-23 — Filter by Author 候选建议 · 多选过滤 · 元字符作者修复 + +### Added + +- **「Filter by Author…」升级为作者候选建议 + 多选过滤**:候选经 `git shortlog -sne` 按当前 Graph 视图 scope 取数(按提交数降序、姓名/邮箱均可模糊匹配),输入前缀(如 `Thr`)即在下拉中建议对应提交者,勾选即选、无需完整手输;依次勾选多个提交者翻译为多条 `--author`(git 取 OR)直接过滤 Graph 视图,空选确认 = 清除该维度、Esc = 取消不变。输入不等于任何作者姓名时动态插入「Use pattern」逃生口(原样正则透传),完整保留旧 InputBox 的任意 pattern 能力。engine 侧 `LogFilter.author` 单值改为 `authors: AuthorTerm[]`(exact 身份 / pattern 正则 tagged union,单一字段单一事实源);`scopeRefs` 提取为 scope → 引用范围参数的单一事实源(Graph 取数与作者候选共享);adapter 侧为仓库首个 `createQuickPick` 动态用法(busy 取数、勾选自维护回写、settle 幂等守卫、切库竞态守卫、空仓库降级)。新增 `engine/log/author-suggest.ts`(shortlog 取数参数 + 容错解析,current scope 显式 `HEAD` 防 stdin 挂起)。 + +### Fixed + +- **作者名含正则元字符时过滤 0 命中**:`git log --author` 缺省 POSIX BRE(非 ERE),旧实现把手输作者名原样作为正则传递——`dependabot[bot]` 中的 `[bot]` 被解释为字符类,匹配 0 条(本仓库实测:不转义 0 命中)。现在从候选列表选中的作者身份按 BRE 语义转义(仅 `\ . [ * ^ $`;`+ ? | ( ) {` 在 BRE 中是普通字符,加反斜杠反成操作符)并锚定全行 `^Name $`(同名异邮箱不混淆)。 + + ## [0.0.20] - 2026-10-17 — Delete Remote Branch 陈旧远程分支修复 · 删除失败可诊断 ### Fixed diff --git a/docs/.agents/knowledge-map.md b/docs/.agents/knowledge-map.md index d6dcbb7..92334c2 100644 --- a/docs/.agents/knowledge-map.md +++ b/docs/.agents/knowledge-map.md @@ -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.20](../releases/v0.0.20.md))。 +- [发布说明](../releases/README.md) — 各正式版 Release Notes(GitHub Release 正文单一事实源;最新 [v0.0.21](../releases/v0.0.21.md))。 ## 图资产(docs/assets/) - [Mermaid 源图索引](../assets/mermaid/README.md) — 全项目 Mermaid 源图统一管理 + **溯源矩阵**(mermaid ↔ archify ↔ 嵌入文档的唯一权威映射)。 diff --git a/docs/README.md b/docs/README.md index acef8a7..d35d01d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -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.20 Delete Remote Branch 陈旧远程分支修复 · 删除失败可诊断](./releases/v0.0.20.md)。 +- [Release Notes 目录](./releases/README.md) — 各正式版发布说明(GitHub Release 正文单一事实源);最新:[v0.0.21 Filter by Author 候选建议 · 多选过滤 · 元字符作者修复](./releases/v0.0.21.md)。 ## 调研报告(循证依据) - [02 · VS Code SCM API 与 vscode.git 集成路径](./research/02-vscode-scm-integration.md) — 路径 B 决策依据、SCM 稳定/proposed API 边界、changelist 模型映射。 diff --git a/docs/releases/README.md b/docs/releases/README.md index acfa5e8..2a6908a 100644 --- a/docs/releases/README.md +++ b/docs/releases/README.md @@ -8,6 +8,7 @@ | 版本 | 说明 | 日期 | |---|---|---| +| [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 | | [v0.0.18](./v0.0.18.md) | Commit / Branches 标题栏重构 · 批量 Discard Changes · 分支级 Push · 双市场发布重启 | 2026-09-10 | diff --git a/docs/releases/v0.0.21.md b/docs/releases/v0.0.21.md new file mode 100644 index 0000000..15cc7b0 --- /dev/null +++ b/docs/releases/v0.0.21.md @@ -0,0 +1,52 @@ +# Hyper Git - Agentic Git v0.0.21 — Filter by Author 候选建议 · 多选过滤 · 元字符作者修复 + +> 本版核心:**Graph 视图「Filter by Author…」从「裸输入框完整手输单个作者名」升级为「候选建议 + 多选」**。候选列表来自仓库真实提交作者(`git shortlog` 按当前视图范围取数、按提交数降序)——输入 `Thr` 即在下拉中建议 `ThreeFish`,姓名与邮箱均可模糊匹配,点选即填、无需手输完整 ID;依次勾选多个提交者即可按作者集合过滤 Graph 视图(OR 语义)。同时修复了作者名含正则元字符(如 `dependabot[bot]`)时过滤 0 命中的隐性缺陷。 + +--- + +## ✨ 亮点速览 + +- **前缀输入提示**:在过滤输入框键入姓名或邮箱前缀,下拉即时给出匹配的提交者(附提交数与邮箱),点选即选中——不再要求人工完整输入作者名。 +- **多选过滤**:依次勾选任意多个提交者,Graph 视图立即按所选作者集合过滤(任一命中即保留);空选确认 = 清除作者过滤,Esc = 取消不改。 +- **正则逃生口**:输入不等于任何作者姓名时,下拉头部动态提供「Use pattern "xxx"」项——手输任意正则原样透传,旧输入框的任意 pattern 能力完整保留,且可与选中身份混用(OR)。 +- **元字符作者修复**:`dependabot[bot]` 这类含 `[ ] . +` 的作者名此前按正则原样传递导致 0 命中;现在从候选选中的身份按字面精确匹配(BRE 转义 + 全行锚定 `Name `,同名异邮箱不混淆)。 + +--- + +## 🧩 特性详述 + +### 1. 作者候选建议与多选(#149) + +- **候选取数**:`git shortlog -sne` 按当前 Graph 视图 scope(All / Current / Checkpointer)取真实提交作者,按提交数降序、附邮箱——候选与视图所见范围一致,切换 scope 后重开即同步; +- **多选语义**:多个作者翻译为多条 `git log --author`(git 原生取 OR);与 Message / Path / Date / Merge 等其它过滤维度仍为 AND 组合,`Clear Graph Filter` 一键全清; +- **交互细节**:等待取数期间显示 busy 且可先输入;已勾选项在继续键入过滤时保持不丢;再次打开时预勾选当前已过滤的作者,便于增删;空仓库 / 查询失败时降级为仅 pattern 输入(近似旧行为)。 + +### 2. BRE 字面转义修复(#149) + +- `git log --author` 的 pattern 缺省按 POSIX BRE(Basic Regular Expression)解释:`dependabot[bot]` 中的 `[bot]` 是字符类、`.` 匹配任意字符——作者名原样传递即偏离字面语义,含 `[ ]` 的作者 0 命中、含 `.` 的作者可能误伤他人; +- 修复:从候选选中的作者身份按 BRE 语义转义(仅 `\ . [ * ^ $` 有特殊义;`+ ? | ( ) {` 在 BRE 中本就是普通字符,勿加反斜杠)并首尾锚定 `^Name $` 全行匹配——精确身份、同名异邮箱不混淆(本仓库实测:`dependabot[bot]` 修复前 0 命中、修复后 36 命中)。 + +--- + +## ⚙️ 升级与兼容 + +- **无破坏性变更**:全部既有命令、视图与配置项保留;其它过滤维度(Message / Path / Date / Merge / Regex)行为与组合语义与 v0.0.20 一致; +- **行为改进**:作者过滤条件仅存于内存(切换仓库自动清空,不持久化),升级后无遗留状态迁移问题;手输任意正则的能力经「Use pattern」项完整保留。 + +--- + +## 📦 安装 + +- **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.21) 下载 `hyper-git-agentic-git-0.0.21.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)。 diff --git a/package.json b/package.json index 7c8188a..7211c72 100644 --- a/package.json +++ b/package.json @@ -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.20", + "version": "0.0.21", "publisher": "ThreeFish-AI", "license": "MIT", "preview": true,