크라우니 오피스 문서 도구 — 실사용 워드 대체 수준 완성
개요
사용자 지시("워드/한글/페이지스/구글독스 대신 쓸 수준")대로 문서 도구를 1단계(로그인·계정·파일·저장·출력)부터 편집기 심화까지 실사용 수준으로 완성. 배포 2.1.0-beta. 앱 번들(bundle/office/app) 무수정, crownyBridge.js 몽키패치 + 한선씨 정본 + 네이티브 IO.
1단계 — 로그인·계정·파일관리·저장·출력 (완결)
로컬 우선 + auth:9401 통합ID. crowny-ai :9852
/api/office/*.
- 네이티브 로그인 창·Keychain·계정 메뉴(B), 클라우드 파일 API 격리·낙관적잠금(A)
- ⌘N 새문서+템플릿 3종·파일 라이브러리(로컬+클라우드 병합)·⌘O(C)
- ⌘S 로컬 항상+로그인 시 클라우드 동기·docId 매핑·409 충돌 처리(D)
- ⌘P 인쇄 WKWebView WYSIWYG(E)
- 무로그인 로컬 편집 허용(헌장)
문서 편집기 심화 (완성)
| 영역 | 기능 | 섹션 |
|---|
| 기존(재확인) | B/I/U/S·폰트·크기·스타일·표/이미지/링크·댓글·버전·찾기바꾸기·통계·undo·자동복구 | §1~18 |
| 문단 서식 | 정렬 4종·줄간격·글머리표/번호 목록·들여쓰기(Tab)·글자색 10·형광 8 | §15b |
| 페이지 | 용지(A4/Letter/Legal/A3/B5)·여백·머리말/꼬리말·페이지번호 | §26 |
| 개체·참조 | 목차 자동(계층/앵커/자동갱신)·각주(순번 재계산)·표 행/열 편집 | §27 |
| 검토 | 맞춤법(WKWebView 네이티브 연속검사)·변경추적(ins/del·저자·수락/거부) | §28 |
| 출력 | DOCX 서식 매핑(정렬·색·형광·제목스타일)·⌘P 페이지설정 반영(NSPrintInfo) | 내보내기.한선·native |
| 내보내기 | HTML·MD·RTF·DOCX(OOXML)·PDF | native |
검증
- 각 punch: 한선씨 자가검증(15~38) + CDP 실측(before/after) + 문서 회귀 27/27(레이스 사고 후 메인이 매번 2~4회 재실행 결정성 확인)
- 정본 한선씨: 문서서식·문서페이지·문서참조·문서검토·문서출력·내보내기·계정상태·파일관리·저장동기·인쇄·office파일권한
- crownyBridge.js 16143줄 온전, 매 punch 착수전 wc -l·백업, 동시세션 절단 방어
- 배포 2.0.0→2.1.0-beta
사고·교훈
- 회귀 레이스: §27 매 틱 무거운 스캔이 앱 개요 재어서트 rAF 예산 뺏어 시나리오27 결정적 FAIL(26/27) → 격리게이트(docRefTouched)로 수리, 27/27×4. 메모리 박제([[feedback_스케줄틱_무거운스캔_rAF예산레이스]]). 서브 27/27 보고 불신, 메인 2회+ 재검증 표준화.
잔여 (실사용 폴리시·후속)
- 도형·수식 편집기(미착수, 무거움)
- 메뉴 PDF=경량 텍스트 PDF(색·굵기 비반영) vs ⌘P→PDF저장=WYSIWYG — 메뉴 PDF도 WebKit 렌더 경로로 통일 검토
- DOCX sectPr 여백 고정(A4/2.5cm) → pagesetup→DOCX 여백 배선
- WKWebView ⌘P 자동 페이지번호(counter 주입=WebKit 폭주라 회피, PDF 내보내기 경로만 페이지번호)
- CAAccount 로그인명→변경추적 저자 주입(현재 "나" 폴백)
- 실 GUI E2E(포커스 레이스로 CDP/curl 병행 검증 대체분)
결론
문서 도구가 로그인→계정→파일관리→새파일→저장→출력의 완결 흐름 + 문단서식·페이지·목차·각주·표·맞춤법·변경추적·출력충실도까지 갖춰
일상 문서 작성은 워드/구글독스 대체 가능 수준. 도형·수식과 폴리시가 남은 고급 영역.