요청: 포커스punch8-크로스모듈연결
- 날짜: 2026-07-18 11:47:36
- 작업 경로: /Users/ef/CrownyBrowser
요청 본문
크라우니 오피스 포커스 punch #8 크로스모듈 연결. 인스펙터 연결된 문서 데모를 실링크로. §22 installFocusBridge 확장, 앱번들 무수정. 작업→문서/슬라이드/시트 링크, 클릭 이동, 삭제시 정리, 중복방지. 포커스링크.한선 정본. 문서27/27+포커스#1~#7 무회귀.
관련 산출
(클로드가 작업 결과를 이어 기록)
산출 결과 (완료 2026-07-18)
포커스 punch #8 — 크로스모듈 연결(연결된 문서 실링크) 완료. crownyBridge.js §22 installFocusBridge 확장(앱 번들 무수정).
구현
- 인스펙터 "연결된 문서" 정적 데모("출시 공지문 초안") → 작업별 실링크 목록으로 DOM-fixup 대체.
- 링크 카드(모듈색 점+제목+×제거), 카드 클릭 → 해당 오피스 모듈 이동(navToOfficeModuleF), "+ 연결 추가" 피커(문서/슬라이드/시트/마인드맵 칩, 이미 연결된 모듈 dim).
- 링크 데이터모델: tasks[sel].links[]={module,id,title}. dedup 키=모듈+"::"+식별자(중복 방지). 영속=setState. 작업 삭제 시 링크 동반 정리(task 객체째 제거).
- 경량 이벤트버스 window.__crownyOfficeBus(emit/on/off + CustomEvent 'crowny-office-bus'): focus.task.created(작업 추가)·done(완료 토글 래핑)·linked/unlinked(연결/해제) 발행.
정본·검증
- 한선씨 정본: bundle/office/bridge/포커스링크.한선 (hanseonc_high 37/37 PASS).
- CDP :9333 실측: bundle/office/bridge/포커스링크검증.js (29/29 PASS, before/after 증명).
- 무회귀: 문서 27/27 · 포커스 #1~#7(포커스링크검증 ⑥ 6항목 + 포커스리뷰검증 37/37) · 시트슬라이드 33/33 · 블록 33/33 · 테마 39/39.
- crownyBridge.js 10256→10558줄(+302), node --check OK, 절단 없음. make ai=no-op(네이티브 무변경), ./CrownyAI 3초 생존.
관련 파일
- /Users/ef/crownybrowser/bundle/office/bridge/crownyBridge.js (§22 punch #8)
- /Users/ef/crownybrowser/bundle/office/bridge/포커스링크.한선 (정본)
- /Users/ef/crownybrowser/bundle/office/bridge/포커스링크검증.js (CDP 하니스)
함정·소견
- dc 런타임 결함: 포커스 모듈을 이탈했다 재진입하면 재마운트되어 인메모리 링크 초기화(앱 자체 tasks 상태도 동일 휘발성). 뷰 전환(같은 모듈 내)에는 영속. 검증 순서=삭제정리→이동 순.