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

크라우니 오피스 문서 편집기 — 상태바 하단 고정 버그 수리

개요

크라우니 오피스 문서 편집기(bundle/office/app) 상태바("N페이지 · N단어 · N자 · 한국어" + "모든 변경사항 저장됨" + "키 가이드")가 position:static 플렉스 아이템이라 문서가 짧거나 스크롤이 발생하면 뷰포트 하단에 고정되지 않고 문서 흐름 중간에 걸쳐 보이던 버그를 수리. 앱 번들(bundle/office/app/index.html) 무수정 — crownyBridge.js(주입 스크립트)만 대상.

무엇을 했는지

  1. 구조 실측(CDP): 상태바 행은 앱 프레임(height:100vh; overflow:hidden; flex-direction:column)의
3번째 플렉스 자식(헤더 46px → 3열 본문 → 상태바 28px)일 뿐 position:static임을 확인.
  1. findStatusBarRow(): 기존 punch #2 findStatusNode()(단어/글자수 리프)에서 위로
올라가며 "키 가이드" 텍스트를 포함하는 조상(=상태바 행 컨테이너)을 콘텐츠 마커로 탐색.
  1. pinStatusBar(): 찾은 행에 position:fixed; left/right/bottom:0; z-index:2147483000
추가(내부 display:flex/배경/테두리/텍스트 갱신 로직은 원본 그대로 — punch #2 회귀 없음).
  1. findEditorScrollContainer() + padEditorForStatusBar(): editable.parentElement에서
위로 올라가며 overflow-y:auto/scroll 조상(실측: 바로 그 부모)을 찾아 상태바 실측 높이만큼 paddingBottom을 절대값으로 설정(가산이 아님 — 앱이 이미 28px을 대칭 예약해둔 값과 우연히 일치, 과잉 패딩 방지).
  1. 재렌더 방어: schedule() 매 틱(applyStatusBarFix())과 resize 이벤트에서 재적용
(Phase 1-D applyNarrowLayout/ensureToolbarScrollable와 동일 관용구).

관련 파일

  • /Users/ef/crownybrowser/bundle/office/bridge/crownyBridge.js — 섹션 17 신설(상태바 하단
고정), schedule()/resize 리스너에 applyStatusBarFix() 배선. 유일한 수정 파일.
  • /Users/ef/crownybrowser/bundle/office/bridge/회귀하니스.js — 무수정(27개 시나리오 그대로).
  • /Users/ef/crownybrowser/spec/문서-회귀리포트.md — 최신 실행 결과 27/27 PASS.
  • 한선씨 정본: 신규 불요 — 순수 CSS/DOM 위치 로직이라 기존 문서통계.한선(punch #2) 재사용
방침을 그대로 따름(임무 지시 원문에 명시됨).

검증

  • 회귀 하니스: bash bundle/office/bridge/회귀실행.sh27/27 PASS (수리 전/후 동일 유지).
  • CDP 실측(900×500 헤드리스):
  • 초기(짧은 문서): position:fixed; bottom:0px; left:0px; right:0px, rect top:385/bottom:413
  • (innerHeight:413 — 정확히 뷰포트 하단).
  • 긴 문서 삽입 후에도 rect 불변(top:385/bottom:413) — 문서 길이·스크롤 시도와 무관하게
  • 뷰포트에 고정.
  • window.scrollTo로 페이지 레벨 스크롤을 시도해도 상태바 rect 불변 확인.
  • 네이티브: ./native/CrownyAI 실행 3초 생존 확인(native 무변경 확인용, 정상 유지 상태).
  • 잔여 이슈(이번 임무 범위 밖 — 별도 기록)

    CDP로 대량 텍스트(문단 12~60개)를 innerHTML +=로 직접 주입해 오버플로를 강제했을 때, 편집 영역의 스크롤 래퍼(overflow:auto)가 clientHeight === scrollHeight로 나와 내부 스크롤이 전혀 동작하지 않는 현상을 관찰. crownyBridge.js 유무와 무관하게 동일하게 재현되어(순수 앱만 로드한 대조 실험으로 확인) 이번 상태바 고정 수정과는 무관한 앱 자체의 기존 특성/한계로 판단. 실사용(자연스러운 타이핑)에서도 재현되는지는 미확인 — 별도 조사 필요 시 참고.