v0.1.34
v0.1.34 릴리즈 — Graph2D initialNodes 재계산 분리 (deeper freeze fix) + 30s 자동 재시작 타이머 제거
배경
- 1. **[BUG]** v0.1.33 의 batch fix 만으로 부족 — 프로젝트 로드 후 화면이 안 보이게 됨 (먹통 지속). agentEvents 가 변할 때마다 Graph2D 의
initialNodes(5000+개 노드) 전체가 재계산되는 게 진짜 원인. - 2. 업데이트 다운로드 후 30초 자동 재시작 타이머 제거 — 자동 설치는 유지 (앱 종료 시 적용).
근본 원인 분석
- (deeper freeze):
- v0.1.33 에서
pushAgent가 microtask 단위로 batch 되었지만, Graph2D 의initialNodesuseMemo deps 에agentEvents가 포함되어 있어 매 batch 마다 전체 노드 배열을 재계산. - 5000+개 file/cloud/mcp/http/domain/github/territory 노드를 다시 만들기 + setNodes 호출 → React Flow 가 모든 노드 mount/unmount 평가 → 메인 스레드 stall.
- 추가로
agentProjectEdges도 agentEvents 의존 →selectExternalNodes(전체 events)호출 → 또 다른 iteration.
변경 파일
initialNodesdeps 에서agentEvents제거. 외부 활동 노드 (web:/mind:/terminal:) 블록을 별도externalActivityNodesuseMemo 로 분리.- 새
externalActivityNodesuseMemo —agentEvents만 deps 로. selectExternalNodes 에는 **events tail 1000건만** 전달 (windowMs 로 옛 이벤트는 어차피 제외). - 새
allInitialNodesuseMemo —initialNodes(정적 5000+개) +externalActivityNodes(수십개) merge.useNodesState와setNodes가 이를 사용. agentProjectEdgesuseMemo 도 events tail 1000건만 사용.- 결과: agentEvents 변경 시 5000+개 노드 재계산 X. 수십 개의 externalActivity 노드만 재계산 → 메인 스레드 부담 대폭 감소.
`electron/updater/autoUpdater.ts`
- —
update-downloaded핸들러에서 30초 setTimeout(quitAndInstall) 제거.autoInstallAt: null로 설정 → UI 가 카운트다운 미노출.autoInstallOnAppQuit=true가 다음 정상 종료 시 silent 설치 자동 수행.
`src/components/Common/UpdateToast.tsx`
- — autoInstallAt null 시 메시지 변경: "자동 재시작이 취소됨" → "앱을 종료하면 자동으로 적용됩니다. 즉시 적용하려면 '지금 재시작'." (사용자가 직접 cancel 한 게 아니라 default 동작).
시각적 효과
- 프로젝트 로드 후 historical event 폭주가 들어와도 Graph2D 가 freezeing 없이 부드럽게 렌더.
- 업데이트 다운로드 완료 시 토스트가 카운트다운 없이 "앱 종료 시 자동 적용" 안내만 표시. 강제 재시작 X.
버전
- 0.1.33 → 0.1.34.
검증
npx tsc --noEmitexit=0.
남은 후속
- Supabase WS realtime, Vercel/GA4 분석.
← (없음)
v0.1.35 →
📦 GitHub 릴리스 노트: v0.1.34