✨ feat(vscode): 代码阅读侧栏加「未提交的更改」筛选

- 标题栏新按钮「未提交的更改」:树里只剩工作区各 git 仓库里没提交的文件(暂存、没暂存、未跟踪、合并冲突),每个有改动的仓库一个根,跟着 git 状态自动重摆;上色和徽标交给 VS Code 自带的 git 装饰
- 两种筛选互斥,由 TreeFilters 统一管,上下文键合并成 superpowers.codeReader.filter(review / uncommitted)
- 改动文件树改成多根,buildChangedTree 挪到 explorer/changedTree 并改吃 {path, change}
- 内置 git 扩展 API 的类型和加载抽到 src/git/gitApi、gitExtension,提交按钮的监听也改用它
- 文件注释按文件所在的工作区文件夹记,不看树从哪个根摆下来
This commit is contained in:
cruldra committed 2026-09-29 23:42:10 +08:00
1 parent 61c4728dce
commit 7f460d1257
18 files changed
+847 -240

No files matched your search

+19 -8
View File
@@ -109,6 +109,12 @@
"category": "代码阅读",
"icon": "$(git-pull-request)"
},
{
"command": "superpowers.codeReader.showUncommitted",
"title": "未提交的更改",
"category": "代码阅读",
"icon": "$(git-commit)"
},
{
"command": "superpowers.codeReader.showAllFiles",
"title": "显示全部",
@@ -255,14 +261,19 @@
"group": "navigation@1"
},
{
"command": "superpowers.codeReader.showAllFiles",
"when": "view == superpowers.codeReader.files && superpowers.codeReader.reviewing",
"command": "superpowers.codeReader.showUncommitted",
"when": "view == superpowers.codeReader.files",
"group": "navigation@2"
},
{
"command": "superpowers.codeReader.showAllFiles",
"when": "view == superpowers.codeReader.files && superpowers.codeReader.filter",
"group": "navigation@3"
},
{
"command": "superpowers.codeReader.refresh",
"when": "view == superpowers.codeReader.files",
"group": "navigation@3"
"group": "navigation@4"
}
],
"view/item/context": [
@@ -273,12 +284,12 @@
},
{
"command": "superpowers.codeReader.addNote",
"when": "view == superpowers.codeReader.files && !superpowers.codeReader.reviewing && viewItem =~ /^(file|folder)$/",
"when": "view == superpowers.codeReader.files && superpowers.codeReader.filter != review && viewItem =~ /^(file|folder)$/",
"group": "inline@2"
},
{
"command": "superpowers.codeReader.editNote",
"when": "view == superpowers.codeReader.files && !superpowers.codeReader.reviewing && viewItem =~ /^(file|folder) noted$/",
"when": "view == superpowers.codeReader.files && superpowers.codeReader.filter != review && viewItem =~ /^(file|folder) noted$/",
"group": "inline@2"
},
{
@@ -308,12 +319,12 @@
},
{
"command": "superpowers.codeReader.addNote",
"when": "view == superpowers.codeReader.files && !superpowers.codeReader.reviewing && viewItem =~ /^(file|folder)$/",
"when": "view == superpowers.codeReader.files && superpowers.codeReader.filter != review && viewItem =~ /^(file|folder)$/",
"group": "notes"
},
{
"command": "superpowers.codeReader.editNote",
"when": "view == superpowers.codeReader.files && !superpowers.codeReader.reviewing && viewItem =~ /^(file|folder) noted$/",
"when": "view == superpowers.codeReader.files && superpowers.codeReader.filter != review && viewItem =~ /^(file|folder) noted$/",
"group": "notes"
}
],
@@ -336,7 +347,7 @@
},
{
"command": "superpowers.codeReader.showAllFiles",
"when": "superpowers.codeReader.reviewing"
"when": "superpowers.codeReader.filter"
},
{
"command": "superpowers.codeReader.showPreview",