--- name: debug-electron description: Electron 앱 디버깅. IPC 문제, 메모리 누수, 렌더러 크래시 등 진단. allowed-tools: Read Grep Glob Bash Edit --- # Electron Debug 증상 또는 에러 메시지를 받으면 아래 진단 흐름을 자동 실행합니다. ## 0. 자동 진단 파이프라인 증상 분류 → 해당 섹션 실행 → 원인 보고 → 수정 제안 1. **로그 수집**: `npm run dev` 출력 또는 electron-log 파일 확인 2. **에러 분류**: IPC / 오디오 / 메모리 / 렌더러 크래시 / 빌드 3. **해당 섹션 진단 실행** 4. **원인 + 수정 방안 보고** ## IPC 문제 진단 자동 실행할 검증 체인: 1. `shared/ipc-channels.ts`에서 문제 채널 Grep → 채널 정의 존재? 2. `src/main/ipc/`에서 해당 채널 핸들러 Grep → `ipcMain.handle`/`on` 등록? 3. `src/preload/index.ts`에서 `contextBridge.exposeInMainWorld` Grep → 브릿지 노출? 4. `src/renderer/`에서 `window.electronAPI.*` 호출 Grep → 렌더러 사용? 5. 1~4 중 끊어진 체인 지점이 원인 ## 오디오 문제 진단 1. SoX 경로 확인: `src/main/utils/paths.ts` → `getSoxPath` 읽기 2. AudioCaptureService 설정 확인: sampleRate 16000, noiseSuppression false 3. faster-whisper sidecar 프로세스 상태: `tasklist | grep python` 4. 마이크 권한: Electron `systemPreferences.getMediaAccessStatus('microphone')` ## 메모리 누수 진단 1. `useEffect` cleanup 누락 Grep: `useEffect` 있는데 return 없는 패턴 2. IPC 리스너 제거 누락: `ipcRenderer.on` 대비 `removeListener`/`removeAllListeners` 검색 3. BrowserWindow destroy 확인: `close` 이벤트에서 `destroy()` 호출 여부 ## 빌드/타입 문제 1. `npm run typecheck 2>&1 | head -30` 실행 2. 에러 파일/라인 추출 후 해당 코드 Read 3. 원인 분석 후 수정 제안