✨ feat(vscode): 发布按钮扩展侧 handler,删除分支同步

Claude-Session: https://claude.ai/code/session_01HTMgwaE3woqM5yvsHiuSAa
This commit is contained in:
cruldra committed 2026-08-31 23:41:03 +08:00
1 parent 6f59b4f3fd
commit b363e08ef9
12 files changed
+292 -345

No files matched your search

+21 -12
View File
@@ -32,6 +32,7 @@ import * as issues from './handlers/issues'
import * as managedSessions from './handlers/managedSessions'
import * as prFiles from './handlers/prFiles'
import * as profileAssets from './handlers/profileAssets'
import * as release from './handlers/release'
import * as sessionHandoff from './handlers/sessionHandoff'
import * as sessions from './handlers/sessions'
import * as settings from './handlers/settings'
@@ -177,6 +178,10 @@ export class KanbanWebviewPanel {
// internal: handler 模块访问
commitRunning = false
/** 发布按钮三个写动作(切发布 / 摘修复 / 部署)共用的互斥标志,运行中按钮禁用。 */
// internal: handler 模块访问
releaseRunning = false
/**
* Whether the workspace git working tree currently has any uncommitted
* changes (working tree, index, or untracked). Populated by
@@ -506,12 +511,20 @@ export class KanbanWebviewPanel {
terminals.handleCloseSessionTab(this, msg.issueNumber, msg.kind)
return
}
if (msg.type === 'branch-sync/check') {
void this.handleBranchSyncCheck()
if (msg.type === 'release/check') {
void this.handleReleaseStatus()
return
}
if (msg.type === 'branch-sync/run') {
void toolbar.handleBranchSyncRun(this)
if (msg.type === 'release/cut') {
void release.handleReleaseCut(this)
return
}
if (msg.type === 'release/cherry-pick') {
void release.handleReleaseCherryPick(this)
return
}
if (msg.type === 'release/deploy') {
void release.handleReleaseDeploy(this)
return
}
if (msg.type === 'env-lock/check') {
@@ -1015,16 +1028,12 @@ export class KanbanWebviewPanel {
}
/**
* Compute how far the remote auto-build branch is behind the remote dev
* branch, then push a `branch-sync/status` to the webview. Called on
* webview init, after `settings/save`, and after a successful sync.
*
* Empty `autoBuildBranch` setting means "use devBranch" — collapsing to
* the equal-branch case in `checkBranchSync`, which marks it unavailable.
* 计算当期发布点与未发布提交数,推 `release/status` 给 webview。
* 触发时机:webview 就绪 / 用户刷新、`settings/save` 之后、收到 push webhook、每个发布动作前后。
*/
// internal: handler 模块访问
handleBranchSyncCheck(): Promise<void> {
return toolbar.handleBranchSyncCheck(this)
handleReleaseStatus(): Promise<void> {
return release.handleReleaseStatus(this)
}
/**