크라우니브라우저 3변종 구현·패키징
개요
사용자 요청 3변종을 기존 두 소스에 컴파일 플래그로 매핑해 구현·패키징.
1) 공개용 범용(기존 웹킷) 2) 크라우니전용(전용 웹킷) 3) 크라우니범용(전용 웹킷+범용목적 모듈).
현황 → 매핑
| # | 변종 | 앱 | 번들ID | 소스/플래그 | 엔진(WebKit링크) | 첫 탭 |
|---|
| 1 | 공개용 범용 | CrownyBrowser-Public.app | org.crowny.browser.public | crowny-browser.m +PRODUCT_PUBLIC | 시스템 WebKit(1) | 범용 시작페이지 |
| 2 | 크라우니전용 | CrownyBrowser-Crowny.app | org.crowny.browser.crowny | crowny-browser-standalone.m | 전용 한선씨/PPM(0) | crowny://app/런처 |
| 3 | 크라우니범용 | CrownyBrowser-Universal.app | org.crowny.browser | crowny-browser.m +PRODUCT_UNIVERSAL | 전용(주)+WebKit모듈(1) | crowny://app/런처 |
무엇을 했는지
- crowny-browser.m:
CROWNY_PRODUCT_PUBLIC/(기본)UNIVERSAL 매크로 블록 추가 → 제품명(kProductName)·에디션(kEdition)·첫 탭(CB_FIRST_TAB) 분기. 창 제목·첫 탭 적용.
- Makefile:
public·universal 타깃(플래그 분리) + variants(3종 빌드) + pkg-variants. 전용=기존 standalone 재사용.
- package-variants.sh: 3개 .app 번들 생성(번들ID·표시명·URL스킴 차등). 공개용/범용=http/https/crowny+public.html 선언(기본 브라우저 후보), 전용=crowny 전용. → /Users/ef/CrownyBrowser/variants/ + VARIANTS.md.
- 한선씨 동반: src/변종정책.한선(엔진정책/기본탭/웹가능 4상, 검증 9/9 티). 학습 intent=브라우저_3변종_엔진스킴정책.
라이브 검증
빌드 3종 회귀 0(에러/경고 0). Public/Universal 227KB, Standalone 87KB.
WebKit 링크: Public=1, Universal=1, Standalone=0(otool).
실행 스크린샷:
Universal: 창 "CrownyBrowser-Universal", 첫 탭 crowny:// 네이티브 엔진(시계앱 렌더, WebKit 0 경로).
Public: 창 "CrownyBrowser-Public", 첫 탭 범용 웹 시작페이지(WKWebView, "WebKit Path A").
Crowny(standalone): 실행 OK, WebKit 0.관련 파일
- native/crowny-browser.m (CROWNY_PRODUCT 매크로)
- native/crowny-browser-standalone.m (전용)
- native/Makefile (public/universal/variants/pkg-variants)
- native/package-variants.sh
- src/변종정책.한선
- /Users/ef/CrownyBrowser/variants/ (3 .app + VARIANTS.md)
잔여 이슈
- 변종 3(크라우니범용)의 "범용목적 모듈" = 현 단계 시스템 WebKit(하이브리드). 미래=크라우니웹킷 자체엔진(L0~L5 로드맵)으로 대체 시 전용엔진만으로 일반 웹.
- 자체포함 dist(.app 안에 crownyc/engine/fonts 동봉)는 pkg-standalone.sh 확장 필요(현재 인플레이스 절대경로 참조).
- Universal 첫 탭이 런처 대신 stale /tmp 상태로 시계앱 표시될 수 있음(앱상태.psv 초기화 여지).