v0.1.37
v0.1.37 릴리즈 — 파일 기반 진단 로그 + 2s 하트비트 (production freeze 위치 식별용)
배경
- 사용자 보고 — "개발 서버는 freeze 안 됨, 일렉트론 (production) 앱은 freeze 발생". v0.1.36 의 spawnSync 제거 fix 로도 큰 프로젝트는 여전히 freeze. **production 은 main process console 이 안 보여 진단 불가**.
핵심 통찰
- dev (npm run dev): 터미널에서 main process console 보임 → 어디서 막혔는지 알 수 있음.
- production (NSIS 설치본): main process console 안 보임 → freeze 시 어디서 막혔는지 알 길 없음.
- 따라서 v0.1.36 의 진단 로그를 봤어도 production 사용자는 못 봄.
해결책
- 신규
__diagInit()/__diag(label)—app.getPath('userData') + /scan-diagnostics.log에 모든 진단 로그를 append. 사용자가 freeze 후 이 파일을 열어 어디까지 진행됐는지 즉시 확인. - 2s 마다 자동 **하트비트** (
[heartbeat] <ISO timestamp> mem=<heapMB>MB) — main process 가 살아있으면 계속 기록, freeze 시 정지. - 사용 패턴:
- 로그가
[scan +Xms] analyzeGcpAwsServices done까지 갔지만 다음 로그가 안 보이면 → 그 다음 단계가 막힘. - 하트비트가 freeze 후에도 계속 기록 → main 은 OK, **renderer 가 freeze** 됐다는 결정적 증거.
- 하트비트도 정지 → main process freeze.
scanProject시작 시 자동 init → log 파일 생성 + 하트비트 시작 + 강조 콘솔 출력 (production 에서 cmd.exe 로 실행 시).scanProject DONE도 명시 로그 → 정상 완료 확인.- 에러 시
[scan ERROR] <msg>로그.
위치
- Windows:
%APPDATA%\ViewWork\scan-diagnostics.log - macOS:
~/Library/Application Support/ViewWork/scan-diagnostics.log
다음 단계
- 사용자가 v0.1.37 production 으로 freeze 재현 → 로그 파일 공유 → 원인 핀포인트.
버전
- 0.1.36 → 0.1.37.
검증
npx tsc --noEmitexit=0.
← (없음)
v0.1.38 →
📦 GitHub 릴리스 노트: v0.1.37