✨ feat(vscode): 代码阅读侧栏可以按审查工单只看 PR 改过的文件:标题栏「选工单」列出看板「审查」列,选中后树里只剩改过的文件(M / A / D 着色),点开的是本机工作副本里 PR 最新的代码,没有就拉 PR 分支建一个,「显示全部」退出

This commit is contained in:
cruldra committed 2026-09-27 17:36:02 +08:00
1 parent c009187f6c
commit 8e2cdfaf17
18 files changed
+1053 -40

No files matched your search

+10 -3
View File
@@ -17,6 +17,7 @@ import { registerNoteCommands } from './notes/commands'
import { FileNotes } from './notes/fileNotes'
import { CodeQa } from './qa/codeQa'
import { CodeReaderRegistry } from './registry'
import { ReviewMode } from './review/reviewMode'
import { celeryRule } from './rules/celery'
import { dataclassRule } from './rules/dataclass'
import { enumRule } from './rules/enum'
@@ -53,7 +54,7 @@ async function openFile(uri: Uri, registry: CodeReaderRegistry): Promise<void> {
}
/**
* 接入代码阅读:注册表、侧栏文件树(复制、文件注释)、预览编辑器(含问 AI)、编辑器右上角的「预览 / 编辑」切换。
* 接入代码阅读:注册表、侧栏文件树(复制、文件注释、按审查工单只看 PR 改过的文件)、预览编辑器(含问 AI)、编辑器右上角的「预览 / 编辑」切换。
* 内置的语言插件、翻译插件和库规则与其他扩展一样通过返回的 API 注册。
*/
export function registerCodeReader(context: ExtensionContext): CodeReaderApi {
@@ -75,6 +76,8 @@ export function registerCodeReader(context: ExtensionContext): CodeReaderApi {
const previews = new PreviewEditorProvider(context.extensionUri, registry, runtime, new BlockFilter(context.workspaceState), resolve, qa, namesIn)
const notes = new FileNotes()
const files = new FileTreeProvider(OPEN_COMMAND, notes)
const view = window.createTreeView(FILES_VIEW, { treeDataProvider: files, showCollapseAll: true })
const review = new ReviewMode(context, FILES_VIEW, view, files)
context.subscriptions.push(
qa,
@@ -88,8 +91,12 @@ export function registerCodeReader(context: ExtensionContext): CodeReaderApi {
}),
window.registerCustomEditorProvider(PREVIEW_VIEW_TYPE, previews),
files,
window.createTreeView(FILES_VIEW, { treeDataProvider: files, showCollapseAll: true }),
commands.registerCommand('superpowers.codeReader.refresh', () => files.refresh()),
view,
review,
// 审查工单时刷新是重读 PR 改过的文件,平时是重读工作区文件树
commands.registerCommand('superpowers.codeReader.refresh', () => review.active ? review.reload() : files.refresh()),
commands.registerCommand('superpowers.codeReader.pickReviewIssue', () => review.pick()),
commands.registerCommand('superpowers.codeReader.showAllFiles', () => review.exit()),
commands.registerCommand(OPEN_COMMAND, (uri: Uri) => openFile(uri, registry)),
// 标题栏按钮传来的是 (文件 Uri, { groupId }),原样转给 VS Code 定位是哪一组的哪个标签
commands.registerCommand('superpowers.codeReader.showPreview', (...args: unknown[]) => showPreview(previews, args)),