크라우니브라우저 병행 개발 Phase 2
개요
WebKit 래퍼(A)와 커스텀 렌더러(B) 병행 진행. 에이전트 2개 투입 → A 완료, B 좌표 버그 수정.
무엇을 했는가
Path A — WebKit 래퍼 (완료)
CrownyBrowser/native/crowny-browser.m (21KB) — Cocoa NSWindow + WKWebView
crowny-internal:// 스킴 핸들러 (CORS 시행)
WKUserScript 자동 디자인 주입 (meta 태그 감지)
- MutationObserver로
data-theme 변경 → 윈도우 크롬 6테마 동기화
- 80KB arm64 바이너리, 정상 기동 확인
- 한선씨 동반본
crowny-browser.한선 (11KB)
Path B — 커스텀 렌더러 (기반 + 버그 수정)
libs/HTML파서.한선 (23KB) — 토큰화 + DOM 트리
libs/CSS해석.한선 (19KB) — :root 변수, var() 해결, 선택자 매칭
libs/박스레이아웃.한선 (19KB) — 박스모델 + 블록 레이아웃
tests/renderer-test.한선 — E2E 파이프라인
좌표 버그 수정: _BOX_props적용에서 맵꺼내가 센티널(-2147483647) 반환 시 CSS 값으로 파싱되던 문제
_BOX_유효값() 헬퍼 추가 — 접두사 -214748 감지
6개 속성(padding/margin/fs/bg/fg/radius/display/width) 모두 가드
검증: div @(0,0) 480×88, h2 @(24,24), p @(24,44) 정확한 박스 스택데모 페이지
crowny-org/preview/browser-native.html — meta 태그만 가진 2.5KB 페이지
외부 CSS <link> 없음 → CrownyBrowser가 번들에서 주입
86% 용량 절감 시연 (20.3KB → 2.8KB)검증
- A 바이너리:
115MB RSS WKWebView 정상 기동, stderr 없음
- B 렌더러: 박스 트리 좌표 완전 정확
- 프리뷰 서버
localhost:9876 유지 중
관련 파일
/Users/ef/CrownyBrowser/native/CrownyBrowser (실행 바이너리)
/Users/ef/CrownyOS/crownyc/libs/{HTML파서,CSS해석,박스레이아웃}.한선
/Users/ef/crowny-org/preview/browser-native.html
잔여 이슈
- B 렌더러를 뷰.한선 네이티브 그리기와 연결 (현재는 트리 출력만)
- B: 인라인 레이아웃·텍스트 줄바꿈 개선
- A: 탭/북마크/히스토리 UI 미구현
- 둘 다: 실제 HTTPS/TLS (현재 A는 WebKit이 처리, B는 미구현)