feat(wsl-mover): pause a moving project's terminals through Sleep and prove they exited (D1b-5d) (#28820)

* feat(wsl-mover): pause a moving project's terminals through Sleep and prove they exited (D1b-5d)

* fix(wsl-mover): gate again under the fence, swap journal phases atomically, keep sessions frozen through commit (D1b-5d)

* test(wsl-mover): the fence e2e walks the journal one phase at a time, as a move writes it (D1b-5d)
This commit is contained in:
Neil
2026-10-14 13:07:50 -07:00
committed by GitHub
parent 5976c4628d
commit 8f83f6b076
37 changed files with 1306 additions and 100 deletions
@@ -73,6 +73,15 @@ export const uiClipboardAndWindowControlsApi = {
ipcRenderer.on('ui:sleepWorktree', listener)
return () => ipcRenderer.removeListener('ui:sleepWorktree', listener)
},
onWorktreeSleepRequest: (callback) => {
const listener = (_event: Electron.IpcRendererEvent, request: Parameters<typeof callback>[0]) =>
callback(request)
ipcRenderer.on('ui:worktreeSleepRequest', listener)
return () => ipcRenderer.removeListener('ui:worktreeSleepRequest', listener)
},
respondWorktreeSleep: (response) => {
ipcRenderer.send('ui:worktreeSleepResponse', response)
},
onResumeSleepingAgents: (callback: (data: { worktreeId: string }) => void): (() => void) => {
const listener = (_event: Electron.IpcRendererEvent, data: { worktreeId: string }) =>
callback(data)
+6
View File
@@ -48,6 +48,10 @@ import type {
SessionTabCloseRequest,
SessionTabCloseResponse
} from '../../shared/session-tab-close'
import type {
WorktreeSleepRequest,
WorktreeSleepResponse
} from '../../shared/worktree-sleep-request'
export type CloseActiveTabPayload = { sourceId: string }
@@ -262,6 +266,8 @@ export type UiCommandEventApi = {
onTerminalTabCloseRequest: (callback: (request: TerminalTabCloseRequest) => void) => () => void
respondTerminalTabClose: (response: TerminalTabCloseResponse) => void
onSleepWorktree: (callback: (data: { worktreeId: string }) => void) => () => void
onWorktreeSleepRequest: (callback: (request: WorktreeSleepRequest) => void) => () => void
respondWorktreeSleep: (response: WorktreeSleepResponse) => void
onResumeSleepingAgents: (callback: (data: { worktreeId: string }) => void) => () => void
onTerminalZoom: (callback: (direction: 'in' | 'out' | 'reset') => void) => () => void
onSystemResumed: (callback: () => void) => () => void