⚡ perf(vscode): 开会话去掉多余远程往返,spinner 跟随真实进度
开会话原先要先全量拉工单(含每张工单的评论、依赖、PR)做前置锁检查, 再各读一次 state JSON 给 pre-create 钩子和终端图标,几秒后才 createTerminal。 - 锁检查改用主进程已算好的工单快照,快照里没有该工单才回落全量拉取 - state JSON 一次读两处用,且提前发起与本地准备重叠 - 会话行 spinner 由扩展的 session/tab-settled 消息驱动,不再是固定 1.5s 假动画, 消息丢失时 60s 超时兜底 Claude-Session: https://claude.ai/code/session_01Kgmb1LvrPmFX3NoUDB4zZC
This commit is contained in:
1 parent
b182e0ac5b
commit
70b826123c
12 files changed
+218
-71
No files matched your search
@@ -0,0 +1,25 @@
|
||||
import type { Issue } from '../gitea/types'
|
||||
|
||||
export interface LockedReason {
|
||||
locked: boolean
|
||||
prerequisiteNumber?: number
|
||||
prerequisiteColumn?: string
|
||||
}
|
||||
|
||||
/**
|
||||
* 纯判定:工单被未完成的前置挡住才算锁定。快照里找不到工单或前置一律放行,
|
||||
* 与 webview 的 `isIssueLocked` 保持同一语义。
|
||||
*/
|
||||
export function evaluateLockedReason(issues: Issue[], issueNumber: number): LockedReason {
|
||||
const issue = issues.find(i => i.number === issueNumber)
|
||||
if (!issue || issue.prerequisite === undefined)
|
||||
return { locked: false }
|
||||
const prereq = issues.find(i => i.number === issue.prerequisite)
|
||||
if (!prereq || prereq.column === 'done')
|
||||
return { locked: false }
|
||||
return {
|
||||
locked: true,
|
||||
prerequisiteNumber: prereq.number,
|
||||
prerequisiteColumn: prereq.column,
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user