크라우니 오피스 슬라이드 모듈 완성 (punch #1~#10)
개요
크라우니AI 브라우저 내장 오피스의
슬라이드(프레젠테이션) 모듈을 데모 껍데기에서 실작동 프레젠테이션 도구로 완성. 앱 번들(bundle/office/app/index.html, DCLogic 템플릿엔진, 내부적으로 React fiber) 무수정 원칙 하에
crownyBridge.js §20 installSlideBridge 신규 섹션 + 한선씨 정본 미러로 구현. 시트 §19와 동일 공정.
무엇을 했는지 (슬라이드 판정표 10 punch 전량)
- #1 캔버스 데이터 구동 + 텍스트 편집 영속화(fiber walk로 slides+setState 획득, 하드코딩 캔버스 제거, 슬라이드편집.한선 20/20)
- #2 발표자 노트 편집 영속화(stale 표시 함정 해소, 슬라이드노트.한선 16/16)
- #3 썸네일 드래그 재정렬(캡처 mousedown·4px 임계·드롭 인디케이터·splice+선택보정, 슬라이드재정렬.한선 28/28)
- #4 레이아웃 템플릿 실적용(죽은 layout state→kind 변경, title/bullets/split/blank 실지원만, 슬라이드레이아웃.한선 25/25)
- #5 슬라이드쇼 전체화면 재생 + 키보드(→←Home/End/Esc/B/F, ⌘⏎ 진입, 시트#6 캡처 게이트, 슬라이드쇼.한선 15/15)
- #6 발표자 타이머 실동작(카운트업·시작/정지/리셋·누수정리, 균형삼진 나머지 함정 수리, 슬라이드타이머.한선 15/15)
- #7 전환효과 실적용(2레이어 겹침+CSS transition, 페이드/밀기/줌 방향반영, 지어낸 전환 거부, 슬라이드전환.한선 23/23)
- #8 블록 삽입(text/rect/ellipse/image blocks[], 해상도 독립 좌표, 드래그/리사이즈/삭제, 깊은복제, 슬라이드블록.한선 27/27)
- #9 테마/배경 색(다크/라이트/테라코타/포레스트 실지원, YIQ 대비 텍스트 자동, 전역vs슬라이드별, 슬라이드테마.한선 25/25)
- #10 시트→슬라이드 데이터 연결(§19 데이터소스 노출→표/차트 블록 스냅샷 끌어오기·🔄 새로고침, 시트슬라이드연결.한선 25/25)
검증
- 각 punch: hanseonc_high 자가검증 + CDP 실측(before/after) + 문서 27/27 + 슬라이드 앞 punch 무회귀
- 배포: CrownyAI 1.2.1→1.3.0-beta (punch별 증분), zip → crowny-ai/public/downloads/
앱 구조 핵심 발견
- ModuleSlides는 React fiber 인스턴스 — renderVals 몽키패치만으론 부족, 카드
__reactFiber$*에서 .return 타고 stateNode.logic(state.slides+setState) fiber walk로 획득(ERP 브릿지 소견과 동형)
- 죽은 코드 3종 해소: 하드코딩 캔버스, 미소비 state(layout/trans/theme), contentEditable writeback 부재
- 오피스 모듈 간은 crowny:// 오리진 격리 아님(같은 window 공유) → 시트↔슬라이드 브릿지 직접 접근 가능
관련 파일
bundle/office/bridge/crownyBridge.js §20 installSlideBridge (슬라이드 전 기능, 앱번들 무수정)
bundle/office/bridge/슬라이드{편집,노트,재정렬,레이아웃,쇼,타이머,전환,블록,테마}.한선 + 시트슬라이드연결.한선 (정본 미러)
spec/슬라이드기능-판정표.md (10 punch 판정)
잔여 이슈 / 다음
- 블록·테마·전환의 cdf 실저장 배선(시트 @@SEC:시트@@ 패턴 미러 — 슬라이드 섹션 추가 필요, 후속)
- ⚠dc 런타임 공통 결함(ERP 세션 발견): 언마운트된 모듈 패널 재마운트 불가 — 오피스 문서 회귀 27/27은 유지되나 모듈 스위칭 스트레스 확인 권장
- Phase 4 다음 순서 = 마인드맵 (→포커스→아웃라인→플랜→그래프)