v0.1.90
v0.1.90 — macOS 더블클릭 무반응 진짜 원인 fix (ELECTRON_RUN_AS_NODE LSEnvironment 제거)
변경 사항
진짜 원인 발견
- v0.1.89 의 ready-to-show fallback timer 는 가설이었지만, 실제 원인은 다른 곳에 있었음.
- 사용자의 macOS 파트너 AI 가 정확히 짚어준 단서:
"open /Applications/ViewWork.app 같은 LaunchServices 경로로 실행하면 0.1초 만에 exit 0 으로 종료. 직접 binary 실행은 정상."
- SSH 진단으로 확정:
$ env ELECTRON_RUN_AS_NODE=0 /Applications/ViewWork.app/Contents/MacOS/ViewWork --version
v20.16.0 # ← Node.js 버전!원인 (확정)
package.json의build.mac.extendInfo.LSEnvironment.ELECTRON_RUN_AS_NODE: "0"항목.- Electron 의 환경변수 처리 로직:
if (env->GetVar("ELECTRON_RUN_AS_NODE", &val) && !val.empty()) → Node mode"0"은 비어있지 않으므로 truthy → Node fork mode 진입. 의도와 정반대 효과.
| 실행 경로 | 환경변수 | Electron 모드 | 결과 |
|---|---|---|---|
/Applications/ViewWork.app/Contents/MacOS/ViewWork 직접 | unset | GUI app | 정상 윈도우 표시 |
open /Applications/ViewWork.app (Finder/Dock 더블클릭) | ELECTRON_RUN_AS_NODE=0 set | Node fork mode | 108ms 만에 exit 0 |
- macOS system log 의
exited due to exit(0), ran for 108ms와 정확히 일치.
즉시 검증 (Info.plist patch + 재서명)
plutil -remove LSEnvironment /Applications/ViewWork.app/Contents/Info.plist
codesign --remove-signature /Applications/ViewWork.app
codesign --deep --force --sign - /Applications/ViewWork.app
open /Applications/ViewWork.app
sleep 5
ps | grep ViewWork
# 69997 S 00:05 /Applications/ViewWork.app/Contents/MacOS/ViewWork ← 5초 후 살아있음!- *108ms exit → 5초 후에도 정상 running** — 가설 100% 확정.
해결 (v0.1.90 - package.json)
- Before:
"extendInfo": {
"NSHumanReadableCopyright": "...",
"LSMinimumSystemVersion": "10.15.0",
"NSRequiresAquaSystemAppearance": false,
"LSEnvironment": {
"ELECTRON_RUN_AS_NODE": "0" ← 정반대 효과!
}
}- After:
"extendInfo": {
"NSHumanReadableCopyright": "...",
"LSMinimumSystemVersion": "10.15.0",
"NSRequiresAquaSystemAppearance": false
}- LSEnvironment 항목 자체를 제거. LaunchServices 로 launch 될 때 더 이상
ELECTRON_RUN_AS_NODE환경변수가 set 되지 않음 → Electron 이 정상 GUI app 모드로 시작.
회고
- 이 옵션이 언제 추가됐는지: package.json 의 historical 의도는 "Node.js 모드를 비활성화" 였을 가능성이 높지만, Electron 의 환경변수 처리는 값이 아닌 존재 여부만 본다. 따라서 어떤 값을 넣든 (
"0"도) Node mode 가 활성됨. - 그래서 macOS 사용자의 더블클릭 무반응 → 직접 binary 실행은 정상 → 환경변수 차이 → ELECTRON_RUN_AS_NODE 발견의 흐름.
- v0.1.89 의 fallback show timer + 추가 핸들러는 그대로 둠 (안전망으로 가치 있음). 다만 진정한 원인 fix 는 v0.1.90 의 LSEnvironment 제거.
파일 변경
- 수정:
package.json—build.mac.extendInfo.LSEnvironment항목 제거, version 0.1.89 → 0.1.90 - 수정:
history.md,guideline.md— v0.1.90 entry
검증
- SSH 로 Info.plist 패치 + 재서명 +
open실행 → 프로세스 5초 후 살아있음 (108ms exit 사라짐) npx tsc --noEmitexit=0 (TypeScript 변경 없음 — package.json 만 수정)- v0.1.90 GitHub Actions 빌드 완료 후 SSH 자동 설치 + 더블클릭 시뮬레이션 검증 예정
- --
← v0.1.89
(없음) →
📦 GitHub 릴리스 노트: v0.1.90