- b_project_switch: currentProjectId(탭 세션 먼저 · 새 탭 = 마지막 값) · setCurrentProject · forgetProject · leaveProject(그 프로젝트 세션 칸 · 준비 표식 · 3D 보관함 몫) · reloadIfOtherProject(다른 프로젝트 화면 = 새로 엶) · guardProjectLeave · askProjectLeave([취소 · 폐기 · 저장] 한 번) · linkRouter(라우터가 이어 줌) · 화면 모듈은 부를 때만 들임
- b_asset_cache purgeProject · b_page_state 등록표 D02 · E 일곱 칸(옛 키 한 번 옮김) · router isProjectRoute
- 가드 helper: design_leave = 공용 가드 위 껍질(B05 고침 지문에 D · E 칸 안 섞임) · group_workflow { dirty, save, discard } · b_workflow_nav · b_page_scaffold · overlay · design_store · design_page 직접 읽기 → currentProjectId
- 시험 test_401_project_isolation 새로(탭 둘 흉내 · 떠남 · 보관함 · 가드 · 직접 읽기 한 곳) · 290_1 시드에 D02 · E 옛 키
- 낡은 시험 고침: 298_3 · 346_4 · 384_s · 520_3 헬퍼 = 공용 가드 · 탭 프로젝트 흉내 더함 · 298_3 탭 닫기 듣개 자리 b_project_switch 로 · 302_1 라우터 판별 글 isProjectRoute 꼴로 · 343_3 헬퍼 가짜 IndexedDB 내보냄
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- B05_Profile_UI_RouteEdit_StructureMarks · B05_Profile_UI_RouteEdit_Keys 의 창 keydown · keyup · blur 듣개를 listenWhileAlive 로 · 다음 키 누름 때만 떨어지던 detach 걷음
- 시험: test_298_3_page_dispose 두 칸 더함 · test_383_2 · helper_399 가 @ui 듣기 틀을 읽음
- 확인: 키 누름 없이 [저장] 다섯 번 GC 뒤 힙 39 → 123 → 205 → 205 → 206 → 206 MB(둘째부터 평탄)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 새 공용 ui_template_window_watch(listenWhileAlive) — 창 · 문서 듣개는 종류마다 하나 · 화면 노드는 약하게 쥠 · 노드가 버려지면 저절로 빠짐
- design_leave beforeunload · overlay_drag pointermove · pointerup · pointercancel · resize · Panel_Settings document pointerup · keyup · side_panels scroll · resize 를 노드 수명으로
- side_panels 크기 감시가 place 를 약하게 쥠(감시가 노드를 안 붙듦)
- 코리도 모듈 캐시 = 지금 노선 한 칸
- 시험 test_298_3_page_dispose(다섯 번 다시 세움 뒤 창 듣개 수 그대로 · 옛 노드 풀림) · helper_346_4 새 모듈 읽기
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>