← 목록
기타 2026-07-17 4KB 읽기 4분

크라우니 오피스 슬라이드 punch #2 — 발표자 노트 편집 영속화

개요

크라우니 오피스 Slides 모듈의 발표자 노트: "표시"는 실작동({{ note }}=slides[cur].note 바인딩)이나 편집 writeback이 없어 편집이 모델에 저장 안 됨(전환 후 복귀 시 원복)이던 것을 편집 영속화로 완성. crownyBridge.js §20 installSlideBridge(punch #1) 확장. 앱 번들 무수정.

무엇을 했는지

  1. 노트 writeback (crownyBridge.js §20)
- commitFieldfield==='note' 분기 추가 → slides[cur].note 반영. - findNoteEl(): 이전 형제 라벨이 "발표자 노트"로 시작 + contentEditable + 가시(offsetParent≠null) 인 div 식별(편집 모드 notesWrap 노트만, 발표자 뷰 표시노트·캔버스 제목/본문과 무충돌). - applyNoteData(): 노트 div를 wireEditable(el,'note',false)로 input/blur 배선(punch #1 패턴 재사용, 멱등 guard=data-crowny-slot). fixupNow에 통합(150ms 폴링·scheduleFixup 버스트 공유 → 중복 리스너 없음).
  1. 표시-편집 정합 (실측으로 발견한 함정 해소)
- 노트 표시는 {{ note }} 바인딩이 있어 편집 전엔 슬라이드 전환에 따라 갱신되나, 사용자가 노트 contentEditable을 편집한 뒤로는 DCLogic 프레임워크가 그 노드 텍스트를 재렌더에서 더 이상 덮지 않아 전환 시 편집한 노트가 그대로 남음(예: slide0 편집 후 slide1 가면 slide0 노트 표시). - → 캔버스 제목/본문(바인딩 부재)을 applyCanvasData가 모델 구동하듯, 노트 표시도 브릿지가 slides[cur].note로 직접 setText 구동(서명 guard data-crowny-note-sig=cur+note, 전환/모델변경 시에만·편집중 skip으로 커서 유지).
  1. 슬라이드별 독립·전환보존·복제 note: writeback이 curIndex(라이브)만 대상 → slide[i]≠slide[j]. 복제는 원본 앱 th.dup{...arr[i]} 스프레드가 note까지 복제(라이브 실작동) — 재사용.
  2. 한선씨 정본: bundle/office/bridge/슬라이드노트.한선 신규 — 4필드 레코드(종류|제목|본문|노트) note writeback·슬롯노트편집·슬라이드복제(note복제)·빈슬라이드. hanseonc_high 자체시험 16/16.

게이트 결과

  • hanseonc_high: 슬라이드노트.한선 16/16, 슬라이드편집.한선(punch #1) 20/20 무회귀.
  • JS: node --check crownyBridge.js SYNTAX OK.
  • CDP :9334 실측 5/5: ①노트 편집 "★노트편집★" 모델+표시 영속 ②slide1 갔다 복귀 시 slide0 노트 유지 + slide1은 자기 노트 표시(정합) ③독립(slide0=★노트편집★, slide1=자기시드) ④복제가 note까지 복제(len 4→5, dupNote=★노트편집★, 제목 "(복제)") ⑤발표자 모드 노트=★노트편집★.
  • 문서 회귀 27/27 PASS(bridge 변경 후 재실행).
  • 슬라이드 punch #1 무회귀: 캔버스 제목 편집→모델+표시 영속, 전환 시 per-slide 제목 정합, 복귀 유지 실측 PASS.
  • 앱 번들·crowny-browser.m·crowny-shell.m·Makefile·시트 §19 무수정(bridge는 런타임 WKUserScript 로드 — 네이티브 바이너리 무변경).

관련 파일

  • /Users/ef/CrownyBrowser/bundle/office/bridge/crownyBridge.js §20 (commitField note분기 + findNoteEl/applyNoteData + fixupNow 통합 + 헤더주석)
  • /Users/ef/CrownyBrowser/bundle/office/bridge/슬라이드노트.한선 (신규 정본, 16/16)
  • /Users/ef/CrownyBrowser/spec/슬라이드기능-판정표.md (발표자 노트 편집 → 실작동 갱신)

잔여 이슈

  • 다중행 노트: setText(textContent) 표시라 편집 시 개행은 모델엔 보존되나 표시 재구동 시 개행이 시각적으로 접힐 수 있음(시드 노트는 단일행 — 실사용 영향 미미, 필요 시 white-space:pre-wrap).
  • 다음 punch: #3 슬라이드 순서변경(드래그), #4 레이아웃 실적용.