← 목록
한선씨 2026-07-17 5KB 읽기 4분

AppKit → 한선씨 이관 후보 리스트업 (2026-07-17)

사장님 지시: "AppKit 기능도 하나씩 숙지하면서 더 빠르고 더 코드 효율적으로 한선씨로 끌어올 수 있는 기능들 리스트업." 근거: 신셸 5모듈 전수 인벤토리(병렬 에이전트 3기 — chrome/panels/overlays·content+헤더·engine) + 탭드래그 디버깅 실측(같은 날).

1. 인벤토리 요약 (신셸이 실제 쓰는 AppKit)

카테고리사용처규모
수동 frame 레이아웃전 모듈(NSLayoutConstraint 0건, autoresizingMask 5건뿐)전면
CALayer 색·코너·보더chrome 30+곳, panels/overlays 다수 — 전부 CAColor(토큰) 스칼라 대입전면
NSBezierPath 코드 아이콘chrome 6종(뒤로/앞으로/새로고침/별/원호/삼각형)+overlays 행 렌더
drawRect 수제 렌더engine(벡터 표시리스트 — 이미 벡터직결), overlays(메뉴/다이얼로그/히스토리), 런처 카드
이벤트탭 드래그 상태기계, keyDown→입력코어.toau, 키모니터, 트래킹에어리어, 롱프레스
NSTask+파이프hanseonc/crownyc 2단 페어 6쌍+, 앱상주서버 상주(TCP 왕복 2~5ms)
WKWebViewcontent 핵심(브릿지 5종·스킴핸들러·다운로드 KVO·evaluateJS)
창/타이틀바CAWindow(isMovable 동적판정)·고스트창·오버레이 3창·캐스케이드
분산노티 IPCadoptTab(창간 탭이동)·입력소스 감지
토스트/다운로드바뷰 조립+타이머(진행바도 CALayer 수제 — NSProgressIndicator 미사용)
관찰: 이 셸은 표준 AppKit 위젯 의존이 이미 최소(제약레이아웃 0, 시스템 프로그레스바 0, NSAlert 0, 메뉴도 수제) — "좌표·색·패스 계산"과 "OS 통합"이 분리돼 있어 이관에 유리한 형태.

2. 이관 판정 (4상)

티 — 지금 끌어올 것 (우선 5, 효과 큰 순)

  1. 탭바·툴바·북마크바 레이아웃 수식브라우저크롬.한선 확장(기존 자산). ObjC는 결과 rect 적용만. 탭폭 2단축소·3단 적응·옴니 우선순위 축소(오늘 N9) 같은 규칙이 전부 순수 산술 — 한선씨 이관 시 규칙 재사용+창세대(win32/CrownyOS) 공유. 크기: 중.
  2. 탭 드래그 4상 판정 자산화 — 오늘 검증된 규칙(선택=티/분리진입 dy40·dx80·outside=옴/자기밴드 드롭=타 취소/타겟판정=창간이동·tear-off)을 셀코어 룰+한선씨 함수로. ObjC는 이벤트 수신·창 API만. 크기: 소. learn 등록 대상.
  3. 아이콘 벡터패스 6종.cifv 벡터글리프로 이관 — engine에 CGPath 캐시·직결렌더가 이미 있음(1627~1747). NSBezierPath 코드 삭제, 아이콘=데이터. 크기: 소.
  4. 토스트·다운로드바 UI 명세 → 뷰.한선 위젯 기술(레이아웃+색 전부 토큰 산술, 로직=타이머·스택뿐). ObjC는 NSView 호스팅만. 크기: 소~중.
  5. overlays 수제 메뉴/다이얼로그/히스토리 행 렌더 → 한선씨 표시리스트 발행 → engine drawRect 소비(벡터직결 경로 재사용). 이미 drawRect 수제라 시스템 룩 손실 0. 크기: 중.

옴 — 조건부 (선행 필요)

  • 옴니/설정 텍스트 입력: engine의 자체 입력경로(keyDown→입력코어.toau ~10ms)가 선례 — 필드에디터 대체엔 IME 조합·선택·클립보드 보강 필요.
  • 집사 도킹 UI: 말풍선/칩 레이아웃은 티 후보나, NSTextView 자동높이 의존 — 텍스트측정 opcode 보강 후.
  • 다운로드 진행 KVO→UI: UI는 티 1~4에 흡수, NSProgress KVO 수신부만 ObjC 잔류.

타 — ObjC 잔류 (OS 통합이 정답)

창/타이틀바/isMovable 동적판정(오늘 교훈: 이벤트 순서 의존 우회 불가)·이벤트 수신(mouseDown/keyDown 원천)·트래킹에어리어·IME/입력소스(분산노티 감지)·WKWebView와 그 브릿지·NSTask 스폰 자체·분산노티 송수신 API·접근성·고스트창 등 NSWindow 계열.

3. 선례 정합 (중복 구축 방지)

  • 벡터직결 실물 = crowny-ai-engine.m(한선씨 표시리스트→CG 드로우, sendVectorEvent 왕복 실측) + 앱상주서버.한선(1327줄).
  • 크롬 위젯 한선씨 = 브라우저크롬.한선(기존), 한선씨웹엔진.한선, libs/뷰.한선·HAL크라우니.한선.
  • Path B(완전 커스텀 렌더)는 별도 장기 트랙 — 본 리스트는 Path A 신셸의 점진 이관.

4. 다음 스텝 (권장 순서)

티2(드래그 판정 자산화, 소) → 티3(아이콘 글리프, 소) → 티1(크롬 레이아웃, 중) → 티4(토스트/바, 소~중) → 티5(오버레이 렌더, 중).

크라우니코드 보고줄

lookup: "브라우저크롬"·"뷰"·"레이아웃" 등 기존 자산 확인(브라우저크롬.한선·뷰.한선 HIT — 재사용 전제로 판정). 이 문서=판정 산출물(코드 생성 없음).