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
1 change: 1 addition & 0 deletions .agents/knowledge-map.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

## 项目文档(docs/)
- [文档中心](../docs/README.md) — 文档与调研资产总索引。
- [实施状态总览](../docs/milestones/implementation-status.md) — M0-M5 交付记录 + API 限制 + M5 AI 设计 + 验证/发布(**实施看板**)。
- [工程实施方案](../docs/architecture/engineering-plan.md) — 路径 B 架构 + M0-M5 里程碑(**开发蓝图**)。
- [IDEA 功能复刻矩阵](../docs/requirements/idea-feature-matrix.md) — 56 功能点 / 8 组(**验收基线**)。
- [调研报告](../docs/research/README.md) — SCM 集成 / 工程蓝图 / 发布 CI / AI 接缝四路循证报告。
Expand Down
12 changes: 12 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: weekly
open-pull-requests-limit: 5
- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
open-pull-requests-limit: 5
8 changes: 6 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,14 @@ jobs:
with:
name: vsix
- name: 发布到 VS Code Marketplace
run: pnpm dlx @vscode/vsce publish --packagePath *.vsix
run: |
PRE_FLAG=$([[ "${GITHUB_REF_NAME}" == *rc* ]] && echo "--pre-release" || echo "")
pnpm dlx @vscode/vsce publish --packagePath *.vsix $PRE_FLAG
env:
VSCE_PAT: ${{ secrets.VSCE_PAT }}
- name: 发布到 OpenVSX(覆盖 Cursor / Windsurf 等 AI IDE)
run: pnpm dlx ovsx publish *.vsix
run: |
PRE_FLAG=$([[ "${GITHUB_REF_NAME}" == *rc* ]] && echo "--pre-release" || echo "")
pnpm dlx ovsx publish *.vsix $PRE_FLAG
env:
OVSX_PAT: ${{ secrets.OVSX_PAT }}
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@

## [Unreleased]

## [0.0.1-rc.1] - 2026-06-27 — 首发候选(Pre-release)

首个公开预发布候选,整合 M0-M4 里程碑交付 + 两轮独立 code review 修复。
版本号遵循 VS Code Marketplace 约定(仅 `major.minor.patch` = `0.0.1`),预发布语义由 `--pre-release` 标记 + git tag `v0.0.1-rc.1` 体现。

**核心能力**:多 changelist Changes 视图、Commit 提交窗口(Conventional Commits 校验 + Amend/sign-off/skipHooks + Checkin hook 链)、Log/Branches/Blame/Show History、Stash(create/apply/pop/drop)、Discard 改动、Pull/Push/Fetch。架构路径 B(消费 vscode.git 稳定 API),5 个 AI 接缝已预埋(M5 实现)。

**已知限制**(vscode.git 稳定 API 边界):cherry-pick / revert / reset / 分支重命名 / 行级 hunk 暂存 / 多 stash 列表枚举 / Author 覆盖暂不可用,详见 [实施状态 §3](./docs/milestones/implementation-status.md#3-api-限制汇总vscodegit-稳定-api-边界)。

### Added — M4 Stash/Shelf(0.5.0)

- **Stash 视图**:`StashTreeProvider` 经 `Repository.log({ refNames: ['stash'] })` 枚举 stash(API 不暴露 `git stash list`,以此近似)。
Expand Down
42 changes: 35 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,46 @@ IntelliJ IDEA 的统一 Git 工具窗口(顶部 `Commit / Shelf / Stash` 标
- **自绘** 独立视图容器承载 IDEA 风格 UI,与原生 Source Control 视图零冲突、平行共存。
- **AI**:现仅预留接口接缝(`ILlmProvider` / `IPreCommitInspector` 等,对齐 IDEA `CheckinHandler` 生命周期),实现延后至 M5。

详见[工程实施方案](./.claude/plans)(决策循证基线)与[知识索引](./.agents/knowledge-map.md)。
## 功能(v0.0.1-rc.1)

- **多 changelist Changes 视图**:active 列表、新建/删除/重命名/移动,`workspaceState` 持久化(重启恢复);文件状态色复用 `gitDecoration.*` 主题色。
- **Commit 提交窗口**:多行编辑器 + Conventional Commits 实时校验 + Amend / Signed-off-by / 跳过 Git hooks + Commit / Commit and Push;勾选集为提交权威范围;最近消息复用。
- **Log 提交历史**:按作者/路径过滤、清除过滤、复制 commit hash、显示文件历史。
- **Branches**:本地/远程分组、活动分支高亮;新建/检出/删除/合并/变基(rebase)。
- **Stash**:create / apply / pop / drop(作用于 stash@{0} 最新)。
- **其他**:Discard 改动、Pull / Push / Fetch、Blame、Diff(HEAD ↔ Working)。

## 安装

- **VS Code Marketplace**:搜索 `Hyper Git`(发布后)。
- **OpenVSX**(Cursor / Windsurf / Gitpod / VSCodium):同 `Hyper Git`。
- **手动**:从 [Releases](https://github.com/ThreeFish-AI/hyper-git/releases) 下载 `.vsix` → 命令面板 `Extensions: Install from VSIX`。
- **要求**:VS Code ≥ 1.85.0 + 启用内置 Git 扩展(`vscode.git`,默认随附)。

## 已知限制

> 以下受 vscode.git 稳定 API 边界限制,暂不可用(详见 [实施状态 §3](./docs/milestones/implementation-status.md#3-api-限制汇总vscodegit-稳定-api-边界)):

- cherry-pick / revert(commit-level)/ reset / 分支重命名:稳定 API 无对应方法。
- 行级 / hunk 级 partial commit:`add` 仅整文件。
- 多 stash 列表枚举:API 无 `git stash list`(当前 apply/pop/drop 作用于 stash@{0})。
- Author 覆盖:`commit()` 的 `CommitOptions` 无 `author` 字段。
- 完整 Log 拓扑图(SVG 连线):作为 M3.x 增强。

详见[工程实施方案](./docs/architecture/engineering-plan.md)、[实施状态总览](./docs/milestones/implementation-status.md)与[知识索引](./.agents/knowledge-map.md)。

## 路线图

| 里程碑 | 主题 | 状态 |
|---|---|---|
| **M0** | 脚手架 + CI | ✅ 进行中 |
| M1 | Git Adapter + Changes TreeView(多 changelist) | ⏳ |
| M2 | Commit 提交窗口(模板 / Amend / CC 校验 / hook 链) | ⏳ |
| M3 | Log 提交图 + Branches + Diff/Blame | ⏳ |
| M4 | Shelf + Partial/行级提交 + Stash UI | ⏳ |
| M5 | AI Agent(实现接缝) | ⏳ |
| M0 | 脚手架 + CI | ✅ |
| M1 | Git Adapter + Changes TreeView(多 changelist) | ✅ |
| M2 | Commit 提交窗口(模板 / Amend / CC 校验 / hook 链) | ✅ |
| M3 | Log + Branches + Diff/Blame | ✅ |
| M4 | Stash / Shelf MVP | ✅ |
| M5 | AI Agent(实现接缝) | ⏳ 留存设计,暂不实施 |

> ⚠️ vscode.git 稳定 API 不含 cherry-pick / revert / reset / 分支重命名 / 行级 hunk 暂存;这些 IDEA 功能暂不可用(详见[实施状态 §3](./docs/milestones/implementation-status.md#3-api-限制汇总vscodegit-稳定-api-边界))。

## 开发

Expand Down
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
> 项目文档与调研资产索引。所有决策均循证(附 GitHub 源码路径 / 官方文档 URL)。

## 工程方案与需求基线(高频引用)
- [实施状态总览(M0-M5)](./milestones/implementation-status.md) — 里程碑交付记录、P0/P1 达成矩阵、API 限制、M5 AI 设计、验证与发布状态(**实施看板**)。
- [工程实施方案](./architecture/engineering-plan.md) — 全链路调研结论 + 路径 B 架构 + M0-M5 里程碑路线图 + 风险与验证(**开发蓝图**)。
- [IDEA 功能复刻矩阵](./requirements/idea-feature-matrix.md) — 56 个原子功能点 / 8 组 + CheckinHandler 生命周期(**验收基线**)。

Expand Down
103 changes: 103 additions & 0 deletions docs/milestones/implementation-status.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
# 实施状态总览(M0 → M5)

> Hyper Git VS Code 扩展的里程碑实施记录、API 限制发现、功能达成矩阵与 M5 AI 设计(留存)。
> 本文档随里程碑推进即时更新;调研与原始方案见 [工程实施方案](../architecture/engineering-plan.md) 与 [调研报告](../research/README.md)。
> 最后更新:2026-06-27(M0-M4 落地完成,准备 v0.0.1-rc.1)。

---

## 0. 概览

- **架构**:路径 B —— 消费内置 `vscode.git` 稳定 `Repository` API + 自建 changelist registry + 独立视图容器自绘 IDEA 风格 UI,不接管原生 Source Control 视图。
- **分层**:`engine/`(纯逻辑,零 vscode 依赖)/ `adapter/`(唯一接触 vscode API)/ `agent/`(AI 接缝)/ `shared/`(契约)/ `infra/`。
- **质量基线**:TypeScript strict + ESLint9 + Vitest(engine 单测)+ @vscode/test-electron(adapter 集成)+ esbuild + 三平台 CI(Linux xvfb)。
- **验证**:单测 45/45、集成 3/3(含真实 git 提交闭环 + amend)、`vsce package` 产 vsix。

## 1. 里程碑交付记录

| 里程碑 | 版本 | PR | 交付 | 验收 |
|---|---|---|---|---|
| M0 脚手架+CI | 0.1.0 | [#1](https://github.com/ThreeFish-AI/hyper-git/pull/1) | pnpm+esbuild+TS strict+ESLint9+Vitest+test-electron;正交分层骨架;CI 三平台矩阵+双市场发布;engine 纯逻辑 + AI 接缝预留 | check-types/lint/package/test 全绿 |
| 调研资产持久化 | — | [#2](https://github.com/ThreeFish-AI/hyper-git/pull/2) | docs/(IDEA 56 功能矩阵、工程方案、四路调研报告) | — |
| M1 Git Adapter+多 changelist | 0.2.0 | [#3](https://github.com/ThreeFish-AI/hyper-git/pull/3) | GitRepositoryService、ChangelistRegistry(CRUD+持久化)、Changes TreeView(状态色+diff) | 集成:真实仓库变更渲染 |
| M2 Commit 窗口 | 0.3.0 | [#4](https://github.com/ThreeFish-AI/hyper-git/pull/4) | Commit WebviewView(勾选+多行编辑器+Amend/signoff/skipHooks+CC 实时校验)、CommitPipeline(Checkin hook 链)、5 AI 接缝 Null 注入 | 集成:真实 git 提交闭环 |
| M0-M2 审查修复 | 0.3.1 | [#5](https://github.com/ThreeFish-AI/hyper-git/pull/5) | 11 类正确性修复(订阅泄漏/仓库选取/indexChanges/commit 语义/push 警告/linter 等)+ 16 项测试补齐 | 单测 45/45 + 集成 3/3 |
| M3 Log/Branches/Blame | 0.4.0 | [#6](https://github.com/ThreeFish-AI/hyper-git/pull/6) | Log TreeView(过滤+copy hash+Show History)、Branches TreeView(create/checkout/delete/merge/rebase)、Blame | 命令注册集成 |
| M4 Stash/Shelf | 0.5.0 | [#7](https://github.com/ThreeFish-AI/hyper-git/pull/7) | Stash 视图(log refNames 枚举)+ create/apply/pop/drop;Shelf MVP(stash 近似) | 命令注册集成 |

## 2. P0/P1 功能达成矩阵(对照 [IDEA 功能矩阵](../requirements/idea-feature-matrix.md))

> 状态:✅ 已实现 · ⚠️ 部分/未验证 · 🔶 API 受限(无稳定 API) · ⏳ 未做(属后续里程碑)

| 功能域(矩阵#) | 优先级 | 状态 | 说明 |
|---|---|---|---|
| Commit 窗口(#1-3,5,7-9,22) | P0 | ✅ | 窗口/模板/历史/Amend/Author 占位/signoff/skipHooks/Commit&Push/选择性勾选 |
| Conventional Commits(#4) | P0/P1 | ✅ | linter + webview 实时 + pipeline hook 阻断 |
| Author 覆盖(#6) | P0 | 🔶 | vscode.git 稳定 `commit()` 不支持 `--author`(API 限制,文档化) |
| 多 changelist(#15-20) | P0 | ✅ | active/新建/删除/重命名/移动 + workspaceState 持久化 |
| Commit 检查流水线(#10-12) | P1 | ⚠️ | CommitPipeline 责任链 + CC hook;CRLF/大文件预检(#12)未实现(可扩展 hook) |
| Diff(#35,37,38) | P0/P1 | ✅ | 本地↔HEAD diff、Blame、Show History(文件历史) |
| Rollback/Discard(#51) | P0 | ⚠️ | **当前无 discard/rollback 命令**(见 §4 缺口) |
| Branches(#45-48) | P1 | ✅/🔶 | create/checkout/delete/merge/rebase ✅;rename 🔶(API 无) |
| Stash(#29,30) | P1 | ✅ | create/apply/pop/drop(稳定 API);list 用 log refNames 近似 |
| Log 提交图(#39,40) | P2 | ⚠️ | Log TreeView(列表+过滤);**完整 SVG 拓扑图未做**(M3.x) |
| cherry-pick/revert from log(#41,42) | P2 | 🔶 | 稳定 API 无 cherry-pick/revert |
| Undo Commit/Reset(#43,52) | P2 | 🔶 | 稳定 API 无 reset |
| Partial/行级提交(#23-25) | P2 | 🔶 | `add` 仅整文件,无 hunk 暂存(API 限制) |
| Shelf 忠实(#27,28) | P2 | ⚠️ | MVP 用 stash 近似;忠实 patch Shelf 🔶 |

## 3. API 限制汇总(vscode.git 稳定 API 边界)

> 经逐行复核 `extensions/git/src/api/git.d.ts` 与 `api1.ts` 确认。以下 IDEA 功能**无稳定 API 对应**,文档化延后;未来可经 git CLI 兜底或 proposed API 评估。

- **cherry-pick / revert(commit-level)/ reset**:Repository 无对应方法。
- **分支重命名**:无 `renameBranch`(仅 createBranch/deleteBranch/setBranchUpstream)。
- **行级 / hunk 级暂存**:`add(paths)` 仅整文件;无 `git add -p` 暴露。
- **`git stash list` 枚举**:无公开方法;M4 用 `log({ refNames: ['stash'] })` 近似。
- **Author 覆盖**:`commit(message, opts)` 的 `CommitOptions` 无 `author` 字段。
- **忠实 patch Shelf**:git 无原生 shelve;可用 `diffBetweenPatch` + `apply({threeWay})` 自建(复杂,延后)。
- **提交图 History Provider / 多文件 diff 编辑器**:`scmHistoryProvider`/`scmMultiDiffSource` 仍为 proposed API,上架扩展禁用。

## 4. 已知缺口(待补)

- **Rollback/Discard 命令**(P0 #51):M1/M2 范围内遗漏。vscode.git 有 `revert(paths)`(unstage)/ `clean(paths)`(discard untracked)/ `restore(paths, {staged})`,可实现「Discard Changes」。**建议补入 rc.1 后的小版本**。
- **ChangelistRegistry CRUD 单测**:因 vscode 耦合 + 打包内联,未单测;逻辑简单 + grouper 已测,风险低。
- **Log/Branches/Stash 命令的真实集成测试**:当前仅测命令注册;分支 checkout/merge 等的真实 git 验证可补。
- **完整 Log SVG 拓扑图**:M3.x 增强。
- **PNG 图标(128×128)**:发布 Marketplace 推荐;rc.1 处理。

## 5. M5 AI Agent 设计(留存,暂不实施)

> 详见 [Track5 AI Agent 架构预留](../research/05-ai-agent-seams.md)。M2 已埋全部接缝 + Null 实现;M5 替换为真实实现。

**5 个 AI 接缝**(agent/,依赖 engine 不依赖 adapter):
- `ILlmProvider`:模型来源抽象(vscodeLM / byok-Ollama / openaiCompatible)。**最关键**——未来切换模型来源的命脉。
- `ICommitMessageProvider`:AI 提交信息生成(staged diff + 团队规范 → 流式 CC 合规 message)。
- `IPreCommitInspector`:提交前 AI 代码审查(对齐 IDEA `CheckinHandler.beforeCheckin`,可阻断)。
- `IChangelistGrouper`:变更语义分组(回写 changelist)。
- `IConflictResolver`:冲突解决(用户逐块确认)。

**Commit 流水线 hook 注入点**(M2 已建责任链,默认 Null):
`staged diff → [Hook A 提交信息生成] → message → [Hook B beforeCheckin 检查链] → [Hook C 分组] → commit → [Hook D checkinSuccessful] → push → [Hook E/F 冲突]`

**落地机制(2026 现状)**:
- VS Code Language Model API(`vscode.lm`):底层模型访问;不支持 system message、需用户 consent、不可集成测试。
- Chat Participant(`@hyper-git`)+ Language Model Tools(`languageModelTools` 暴露 git 能力给任意 Agent)。
- BYOK Provider API(Ollama 本地 / OpenRouter / OpenAI 兼容)。
- prompt-tsx(alpha)。

**差异化**(vs 内置 Copilot commit message):注入完整 commit 流程上下文(changelist/团队规范)+ 回写工作流 + Chat Tools 暴露。

**M5 启动前置**:`engines.vscode` 上调以支持 LM/Chat API;opt-in 配置开关;模型来源可切换。

## 6. 验证体系

- **单元测试(Vitest,< 1s)**:engine/ 纯逻辑(scm-mapping、changelist-grouper、commit-pipeline、conventional-linter、git-status-map、conventional-check)+ CommitService.executeCommit(mock Repository,7 分支)。共 45 项。
- **集成测试(@vscode/test-electron)**:扩展激活 + 全部命令注册(M1-M4);真实 git 提交闭环(fixture 仓库 add+commit+git log 校验);amend 改写 HEAD。共 3 项。
- **CI(GitHub Actions)**:lint→build→test 矩阵(ubuntu/mac/win + Linux xvfb)→package vsix→artifact;`tag v*` → 双市场发布(Marketplace + OpenVSX,需 secrets)。

## 7. 发布状态

- **当前版本**:0.5.0(preview,内部里程碑)。
- **首发候选**:v0.0.1-rc.1(package 版本 `0.0.1` + `--pre-release` + git tag `v0.0.1-rc.1`)。Marketplace 仅支持 `major.minor.patch`,预发布语义由 `--pre-release` 标记 + tag 体现。
- **发布前置**:publisher 账号(`threefish-ai`)、VSCE_PAT / OVSX_PAT secrets、PNG 图标。
1 change: 1 addition & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ export default tseslint.config(
'node_modules/**',
'.vscode-test/**',
'*.vsix',
'.temp/**',
'esbuild.js',
'tests/run-integration.js',
'tests/suite/**',
Expand Down
Binary file added media/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading