크라우니 오피스 포커스 모듈 완성 (punch #1~#9)
개요
크라우니AI 브라우저 내장 오피스의
포커스 모듈(ModuleFocus) = OmniFocus형 GTD 할일·프로젝트 관리자(퍼스펙티브 7뷰: 인박스/오늘/예정/플래그/프로젝트/태그/리뷰). 데모 껍데기에서 실작동 GTD 도구로 완성. 앱 번들 무수정 원칙 하에
crownyBridge.js §22 installFocusBridge 신규 섹션 + 한선씨 정본 미러로 구현.
착수 시점 상태
tasks[]가 이미 진짜 배열이고 완료/플래그 토글이 실작동(슬라이드급 모델, hoist 불필요). 실작동 10/데모 8/없음 10. 나머지 CRUD·날짜·파생·연결이 punch 대상.
무엇을 했는지 (판정표 9 punch 전량)
- #1 퀵애드 작업 추가 + 키보드(N/Enter append·뷰 컨텍스트 속성·배지 live·모듈 게이트, 인라인 스타일 정규화 함정을 라벨→조상 walk로 수리, 포커스작업.한선 25/25)
- #2 작업 텍스트 편집(제목/인스펙터 contentEditable writeback, DCLogic이 편집노드 텍스트바인딩 스킵→뷰전환 stale을 setText 강제정합으로 수리, 포커스편집.한선 18/18)
- #3 작업 삭제 + sel 정합(splice·인덱스 시프트·인접 이동·편집중 Backspace 구분, 포커스삭제.한선 31/31)
- #4 마감/연기일 편집 + 자연어 날짜(내일/N일후/다음주 요일/절대/사람친화, serial↔civil·요일 mod7·윤년·월경계, VM 나머지 floor 강제, due→뷰/배지 재평가, 포커스날짜.한선 37/37)
- #5 프로젝트 뷰 실데이터화(tasks 그룹핑·진행률 완료/전체 실계산·필터, 작업없는 프로젝트 소멸, 곱먼저·0가드, 포커스프로젝트.한선 28/28)
- #6 태그 뷰 인터랙션(태그 클릭 필터·작업 태그 편집·서클 실데이터, visibleRawIndices 비연속 필터뷰 오매핑 수리, 포커스태그.한선 32/32)
- #7 주간리뷰 실데이터화 + 건너뛰기(프로젝트 파생·미완료/오늘마감/지연 실집계·건너뛰기 실배선·진행상태, 포커스리뷰.한선 32/32)
- #8 크로스모듈 연결(작업↔문서/슬라이드/시트/맵 실링크·모듈 이동·중복거부·삭제정리·경량 이벤트버스 window.__crownyOfficeBus, 포커스링크.한선 37/37)
- #9 작업 드래그 재정렬(캡처 추적·visible↔raw 매핑으로 비가시 상대순서 보존·⌥↑↓·내용 전필드 보존·sel 정합, 포커스정렬.한선 29/29)
검증
- 각 punch: hanseonc_high 자가검증 + CDP 실측(before/after) + 문서 27/27 + 포커스 앞 punch 무회귀
- 배포: CrownyAI 1.4.1→1.5.0-beta (punch별 증분)
사고·교훈
- ⚠동시 세션 파일 절단 사고: punch #6 착수 시 crownyBridge.js가 다른 세션에 의해 0바이트로 절단됨 → dist 미러/백업에서 복원. 이후 모든 punch에서 착수 전 wc -l 온전 확인 + 완료 후 크기 재확인 + 방어 백업(백업/crownyBridge-*.js.bak)을 표준화.
- dc 런타임 결함: 모듈 이탈→재진입 시 재마운트로 인메모리 상태(링크·tasks) 휘발 — 앱 자체 한계(cdf 저장이 영속 해법, 후속).
관련 파일
bundle/office/bridge/crownyBridge.js §22 installFocusBridge (포커스 전 기능, 10747줄, 앱번들 무수정)
bundle/office/bridge/포커스{작업,편집,삭제,날짜,프로젝트,태그,리뷰,링크,정렬}.한선 (정본 미러 9종)
spec/포커스기능-판정표.md
잔여 이슈 / 다음
- cdf 실저장(tasks·links): 시트 @@SEC 패턴 미러로 후속(재진입 휘발 해소)
- Phase 4 다음 순서 = 아웃라인 (→플랜→그래프)
- 완성 모듈: 시트(10)·슬라이드(10)·마인드맵(8)·포커스(9) — 오피스 실작동 축 4개