크라우니브라우저 병행 개발 Phase 2
크라우니브라우저 병행 개발 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 값으로 파싱되던 문제
- **검증**: div @(0,0) 480×88, h2 @(24,24), p @(24,44) 정확한 박스 스택
데모 페이지
- `crowny-org/preview/browser-native.html` — meta 태그만 가진 2.5KB 페이지
검증
- 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는 미구현)