fix(macos): hidden autostart dock indicator + 자동실행 mismatch false positive

두 macOS 한정 버그 묶음:

1. autostart --hidden 으로 spawn 시 quickCapture (NSPanel) 만 떠 있어
   dock running indicator (점) 가 표출 안 됨 — NSPanel 은 NSApp main window
   로 register 안 됨. inboxWindow 를 hidden 상태로 미리 create + ready-to-show
   시점에 showInactive → hide trick 으로 NSApp 에 register, 사용자 화면
   깜빡임 없이 dock 점 켜짐.

2. SettingsPage 의 자동실행 mismatch 경고가 macOS 에서 false positive.
   macOS 13+ 의 SMAppService API 가 args 옵션 무시 + unsigned/Electron
   앱에 대해 executableWillLaunchAtLogin 을 자주 false 로 반환 → 정상 등록
   상태에서도 경고 떠 있음. AutostartDiagnostic 결과에 platform 필드 추가,
   willLaunch 신호는 win32 에서만 mismatch 판정에 사용.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
th-kim0823
2026-05-14 13:11:17 +09:00
parent 64935d943c
commit a68feae20e
7 changed files with 89 additions and 18 deletions

View File

@@ -11,10 +11,13 @@ export function getInboxWindow(): BrowserWindowType | null {
return inboxWindow;
}
export function createInboxWindow(): BrowserWindowType {
export function createInboxWindow(opts: { visible?: boolean } = {}): BrowserWindowType {
const visible = opts.visible ?? true;
if (inboxWindow && !inboxWindow.isDestroyed()) {
inboxWindow.show();
inboxWindow.focus();
if (visible) {
inboxWindow.show();
inboxWindow.focus();
}
return inboxWindow;
}
@@ -43,6 +46,19 @@ export function createInboxWindow(): BrowserWindowType {
}
});
inboxWindow.once('ready-to-show', () => inboxWindow?.show());
inboxWindow.once('ready-to-show', () => {
if (visible) {
inboxWindow?.show();
return;
}
// macOS hidden autostart: regular NSWindow 를 NSApp 에 register 해야 dock running
// indicator (점) 가 표출된다. panel type 의 quickCapture 만 있으면 NSPanel 미인지 →
// dock 점이 안 보여 "앱이 안 떠 있는 것처럼" 보이는 버그. showInactive 로 focus 점유
// 없이 짧게 표출 후 즉시 hide — 사용자 화면 깜빡임 최소화.
if (process.platform === 'darwin') {
inboxWindow?.showInactive();
inboxWindow?.hide();
}
});
return inboxWindow;
}