v0.2.54
v0.2.54 — leerness 1.9.41 마이그레이션 + WebGL context lost 자동 복구 + ResizeObserver 노이즈 차단
원인
- GPU 메모리 압박 / 드라이버 크래시 / 백그라운드 전환 등으로 브라우저가 WebGL context 회수. 이전엔
webglcontextlost만preventDefault()+ 로그 → 복구 후속 처리 누락.
해결
webglcontextrestored이벤트 핸들러 추가 —gl.forceContextRestore()호출해 Three.js 리소스 재생성.console.info로 복구 알림 로그.
적용 위치 2곳
Scene3D.tsx:1013~(3D 메인 캔버스).WebGLGraph2D.tsx:2843~(2D WebGL 캔버스) — 이전엔 onCreated 핸들러 없음. 신규 추가.
(3) ResizeObserver loop 무해 경고 silent drop
원인
ResizeObserver loop completed with undelivered notifications.는 Chromium/Firefox 의 알려진 false-positive — 같은 frame 내 다회 발화 시 발생. WICG spec 상 정상 동작이며 앱 동작에 영향 X.
해결
App.tsx의onError핸들러에서 메시지가ResizeObserver loop ...패턴이면e.stopImmediatePropagation()+e.preventDefault()+ early return → 콘솔 로그도 안 남음. 다른 모든 에러는 기존대로 출력.
변경 파일
src/App.tsx—isBenignResizeObserverError헬퍼 + onError 필터.src/components/Visualizer3D/Scene3D.tsx— webglcontextrestored 핸들러 + forceContextRestore.src/components/Visualizer2D/WebGLGraph2D.tsx— Canvas onCreated 에 lost/restored 핸들러 신규..harness/HARNESS_VERSION(leerness CLI 가 자동 갱신) 1.9.20 → 1.9.41.package.json0.2.53 → 0.2.54.
검증
npx tsc --noEmitexit=0npm run build성공 — renderer 7.41s, 번들 3,461.96 kB.leerness verify✓ required files present.
사용자 확인
- 브라우저 콘솔에서 ResizeObserver loop 경고 사라짐.
- WebGL context lost 발생 시 자동 복구 시도 → 정상 시 곧바로 "WebGL context restored" 안내 로그.
- 콘솔에 무해한 노이즈가 줄어 실제 에러가 잘 보임.
- --
📦 GitHub 릴리스 노트: v0.2.54