fix: harden Windows single-instance startup (#498)

This commit is contained in:
cedric
2026-03-15 18:50:59 +08:00
committed by GitHub
Unverified
parent 0cdafde2df
commit 04aa94f907
3 changed files with 197 additions and 62 deletions

View File

@@ -0,0 +1,38 @@
export interface MainWindowFocusState {
pendingSecondInstanceFocus: boolean;
}
export type SecondInstanceFocusRequest = 'focus-now' | 'defer';
export type MainWindowReadyAction = 'show' | 'focus';
export function createMainWindowFocusState(): MainWindowFocusState {
return {
pendingSecondInstanceFocus: false,
};
}
export function requestSecondInstanceFocus(
state: MainWindowFocusState,
hasFocusableMainWindow: boolean,
): SecondInstanceFocusRequest {
if (hasFocusableMainWindow) {
state.pendingSecondInstanceFocus = false;
return 'focus-now';
}
state.pendingSecondInstanceFocus = true;
return 'defer';
}
export function consumeMainWindowReady(state: MainWindowFocusState): MainWindowReadyAction {
if (state.pendingSecondInstanceFocus) {
state.pendingSecondInstanceFocus = false;
return 'focus';
}
return 'show';
}
export function clearPendingSecondInstanceFocus(state: MainWindowFocusState): void {
state.pendingSecondInstanceFocus = false;
}