"각 창은 자기만의 작은 브라우저 탭이야. JavaScript 한 줄도 안 나눠 가져 — 그러니 진실은 둘 다 닿을 수 있는 곳에 살아야 해: 코어."
별개 웹뷰, 별개 세계
모든 창은 자기 JavaScript 컨텍스트를 가진 독립 웹뷰야. 메인 창의 React state는 설정 창엔 존재 안 해 — 브라우저 탭 둘만큼 격리돼 있어. 이게 사람들을 놀래켜: 두 번째 창 연다고 네 store가 '공유'되지 않아. 두 창이 데이터에 동의해야 하면, 그 데이터는 Rust 코어(managed state)에 속하고, 각 창이 command로 읽어. 코어가 단일 진실 출처고, 창은 그 위의 뷰야.
창 사이 대화
창은 코어를 거쳐 조율해. 특정 창에 뭘 밀려면 emit_to("label", …), 모두에 방송하려면 emit. 흔한 흐름: 설정 창이 command로 설정을 저장하고(managed state 갱신), 코어가 settings-changed 이벤트를 emit하면 메인 창이 listen하고 반응해. 어떤 창도 다른 창을 직접 안 불러 — 다 코어를 거쳐서, 데이터 일관성을 지켜.
생애주기: show, hide, close
창엔 네가 통제하는 생애주기가 있어: show(), hide(), close(), 거기에 close-requested(닫기 전 확인) 같은 listen 가능한 이벤트나 포커스 변경. close 대신 hide는 창의 웹뷰를 살려둬(빠른 재오픈, state 유지). close는 파괴해(리소스 해제, 다음번 새 state). 재오픈이 즉시여야 하나 깨끗해야 하나로 골라.