feat(vscode): 审查会话链接按本机 codex 会话文件存在判定,不再绑 worktree

This commit is contained in:
2026-08-19 19:24:57 +08:00
parent bf3f7f9e67
commit 6251ba0d2a
12 changed files with 190 additions and 21 deletions
@@ -254,12 +254,12 @@ export function IssueDetailPanel({
onCloseSessionTab(issue.number, 'implement')
},
},
issue?.worktreeExists
issue?.reviewSessionFileExists
? {
key: 'reviewSessionId',
label: '审查会话id',
type: 'action',
description: '双击在新终端运行 codex resume <id> 查看审查会话(cwd 优先用 worktree',
description: '双击在新终端运行 codex resume <id> 查看审查会话(worktree 在则用之,否则工作区根目录',
actionIcon: <Terminal className="size-3.5" />,
onAction: (v) => {
if (typeof v !== 'string' || v.length === 0 || !issue)
@@ -282,7 +282,7 @@ export function IssueDetailPanel({
label: '审查会话id',
type: 'string',
readOnly: true,
description: 'worktree 已清理,无法 resume;仅保留 id 文本',
description: '本机没有该 codex 会话文件,无法 resume;仅保留 id 文本',
},
(() => {
// 测试会话 id 行有三种状态(照搬头脑风暴行的三态):
+1 -1
View File
@@ -57,7 +57,7 @@ export type ExtensionToWebview
= | { type: 'issues/loading' }
| { type: 'issues/update', issues: Issue[], scope: 'mine' | 'all', globalAutoReview: boolean, youtrackConfigured: boolean }
| { type: 'issues/error', message: string }
| { type: 'issue/patch', issueNumber: number, patch: { autoReview?: boolean, specFile?: string, planFile?: string, prDiffFile?: string, sessionId?: string, implementSessionId?: string, reviewSessionId?: string, testSessionId?: string, pr?: string | null, implementStatus?: 'running' | 'done' | 'failed', column?: IssueColumn, worktreePath?: string | null, prMerged?: boolean, prMergedAt?: string, branch?: string | null, color?: string, worktreeExists?: boolean, brainstormTabOpen?: boolean, implementTabOpen?: boolean, reviewTabOpen?: boolean, testTabOpen?: boolean, profilePath?: string, brainstormProfilePath?: string, testProfilePath?: string } }
| { type: 'issue/patch', issueNumber: number, patch: { autoReview?: boolean, specFile?: string, planFile?: string, prDiffFile?: string, sessionId?: string, implementSessionId?: string, reviewSessionId?: string, reviewSessionFileExists?: boolean, testSessionId?: string, pr?: string | null, implementStatus?: 'running' | 'done' | 'failed', column?: IssueColumn, worktreePath?: string | null, prMerged?: boolean, prMergedAt?: string, branch?: string | null, color?: string, worktreeExists?: boolean, brainstormTabOpen?: boolean, implementTabOpen?: boolean, reviewTabOpen?: boolean, testTabOpen?: boolean, profilePath?: string, brainstormProfilePath?: string, testProfilePath?: string } }
| { type: 'issue/pr-diff-summary-done', issueNumber: number }
| { type: 'issue/append', issue: Issue, select?: boolean }
| { type: 'issue/select-by-number', issueNumber: number }
+3
View File
@@ -51,6 +51,9 @@ export interface Issue {
implementSessionId?: string
/** Backend-agnostic review session id (v1 stores a codex thread id). */
reviewSessionId?: string
/** 本机是否存在 reviewSessionId 对应的 codex 会话文件;扩展端加载时计算,
* 不持久化。codex resume 只依赖这个文件,与 worktree 无关。 */
reviewSessionFileExists?: boolean
/** Claude Code session id of the test conversation; manually started after
* the PR is merged, resumable from the detail panel. */
testSessionId?: string