v0.1.81
v0.1.81 — 핫픽스: TerminalDockPanel React error #300 + 진단 로그 전송 명시 동의
원인
- v0.1.78 에서 TerminalDockPanel 에
useViewStore+useDraggablePanel두 hook 을 추가했는데, 위치가if (hidden) return null/if (allAway && collapsed) return nullearly return 의 아래에 있었음.
Rules of Hooks 위반
- hidden=true 일 때는 두 hook 호출 안 됨, false 일 때는 호출 → React reconciler 의 hook 카운트 불일치 → error #300.
수정
- (
src/components/Layout/TerminalDockPanel.tsx): useViewStore/useDraggablePanel호출을 모든 early return 위로 이동if (hidden) return null/if (allAway && collapsed) return null가 hooks 호출 다음에 위치
2) 진단 로그 전송 명시 동의
src/main.tsx
- ErrorBoundary 의
sendDiagnostics()시작부에window.confirm()추가: - 설정의
crashReportConsent='allowed'와 무관하게 매번 다이얼로그 표시 - 본문에 전송 예정 내용 미리보기 (오류 메시지 80자, 스택 트레이스, 앱 버전, 플랫폼, Electron/Chrome 버전)
- 사용자가
[확인]클릭 시에만 IPC reportRendererError 호출 [취소]클릭 시sendStatus: 'idle'로 복구 + "사용자가 전송을 취소했습니다" 안내- 효과: 사용자 의도 — "전송 버튼 클릭 = 매번 명시 승인" 정확히 일치.
3) 검증
npx tsc --noEmitexit=0npm run build성공 (renderer 3,249 KB)- 런타임 동작 (build artifact 의 minified bundle):
- TerminalDockPanel 이 hidden 상태에서도 hook 카운트 일정 → React error #300 회귀 차단
- 진단 로그 전송 버튼 클릭 → confirm 다이얼로그 → 동의 시에만 webhook 발송
4) 파일 변경
- 수정:
src/components/Layout/TerminalDockPanel.tsx(hook order fix) - 수정:
src/main.tsx(confirm 다이얼로그 + 취소 처리) - 수정:
package.json0.1.80 → 0.1.81 - --
📦 GitHub 릴리스 노트: v0.1.81