← 목록
기타 2026-07-18 2KB 읽기 2분

크라우니 오피스 아웃라인 punch #3 — Tab/Shift+Tab 들여쓰기·내어쓰기 + ⌥↑↓ 이동

개요

아웃라인(Outline) 모듈 편집기의 핵심 조작 3종을 crownyBridge.js §23(installOutlineBridge)에 확장. 앱 번들(index.html) 무수정 · 런타임 몽키패치. punch#1(hoist/주제편집)·#2(추가/삭제) 위에 얹음.

무엇을 했는지

  • Tab 들여쓰기: 선택 항목을 바로 위 형제의 자식으로 재부모화(depth+1). 위 형제 없으면 no-op.
  • Shift+Tab 내어쓰기: 부모의 형제로 승격(parentId=조부모, depth-1). 최상위 no-op.
  • ⌥↑/⌥↓ 순서이동: 형제 내 위/아래(하위트리 통째). 경계 클램프.
  • 세 조작 모두 하위트리 통째 이동(대상만 parentId 교체, 자손 포인터 유지 → depth 파생 자동).
  • onOutlineKeydown 재정의: punch#2 Tab=자식추가 → 표준 아웃라인 Tab=들여쓰기로 통일.
(자식추가는 Enter(형제)→Tab(들여쓰기) 흐름 or window.__crownyOutlineAddChild API)
  • 편집 중 Tab=커밋(blur)+들여쓰기, Shift+Tab=커밋+내어쓰기. 그 외는 네이티브 편집 양보.
  • window API: __crownyOutlineIndent/Outdent/MoveUp/MoveDown/Depth/Parent.

검증

  • 한선씨 정본 아웃라인이동.한선: hanseonc_high 컴파일+crownyc run 30/30 PASS.
  • 문서 회귀 27/27 PASS (회귀하니스.js).
  • 라이브 CDP(:9333) 17/17 PASS: Tab들여쓰기(depth·parentId)·Shift+Tab내어쓰기·위형제없음no-op·
최상위no-op·⌥↑↓이동·경계클램프·하위트리동반·카운트/접기무회귀·#1~#2(주제편집/추가/삭제)무회귀.

관련 파일

  • /Users/ef/crownybrowser/bundle/office/bridge/crownyBridge.js §23 (11194→11304줄)
  • /Users/ef/crownybrowser/bundle/office/bridge/아웃라인이동.한선 (신규 30/30)
  • dist 미러 동기화: dist/CrownyAI.app/Contents/Resources/office/bridge/crownyBridge.js (md5 일치)
  • 백업: 백업/crownyBridge-아웃라인3착수-0718-1326.js.bak

잔여 이슈

  • punch #4(체크박스) · #5(드래그 재정렬) · #6(자동번호) · #7(colVis 실소비) 등 판정표 후속.
  • 앱번들·crowny-browser.m·crowny-shell.m·Makefile·§19~§22 무수정.