← 목록
브라우저 2026-04-16 2KB 읽기 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 값으로 파싱되던 문제
  • _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는 미구현)