크라우니터미널 네이티브 B1 — 맥 쉘 스캐폴드
개요
CrownyOS 토탈 브라우저 로드맵(프로젝트 메모리
project_crowny_browser*)의
B1 단계. 탭 기반 네이티브 맥 앱으로 [터미널 · 웹뷰 · 파일]을 하나 창에 통합.
배경: 왜 B1인가
- 웹 브라우저 의존도를 낮추고 "크라우니 토탈 브라우저" 방향으로 이동.
- 완전 한선씨 브라우저(C안)는 다년 작업. 1-2주 MVP로 네이티브 쉘 먼저 구축.
- 데몬(crowny-terminal/src/daemon.js)은 그대로 두고 클라이언트만 네이티브화.
아키텍처
┌─────────────────────────────────────────────────┐
│ 크라우니터미널 (Cocoa 앱) │
│ ├ 터미널 탭 — PtyView (openpty + NSTextView) │
│ ├ 허브 탭 — WKWebView → http://127.0.0.1:9840│
│ ├ 파일 탭 — 디렉토리 리스트 (NSTextView MVP) │
│ └ 앱.한선 — 탭 구성 · 서비스 매핑 │
└──────────────┬──────────────────────────────────┘
│ WS
▼
┌─────────────────────────────────────────────────┐
│ crowny-terminal 데몬 (Node.js, 포트 9840) │
│ · pty 세션 / WS / diff API / 허용 경로 정책 │
└─────────────────────────────────────────────────┘
구현
/Users/ef/crowny-terminal-native/src/app.m — Cocoa AppDelegate, PtyView(openpty+NSTextView), WKWebView 탭, 파일 리스트 탭
/Users/ef/crowny-terminal-native/한선씨/앱.한선 — 탭 종류·기본 탭 구성·서비스별 탭 추가 함수 (학습DB: crowny_terminal_native_탭구성)
/Users/ef/crowny-terminal-native/Makefile — clang + Cocoa + WebKit. CROWNY_TERM_LOCAL_URL 등 빌드 플래그
- 빌드 성공:
build/크라우니터미널 80KB
실행
bashcd /Users/ef/crowny-terminal-native
make run
B1 잔여
- ANSI 컬러·커서 이동 해석 (현재 strip)
- 리사이즈 시 pty winsize (TIOCSWINSZ) 전파
- 파일 탭 NSOutlineView 업그레이드
- 탭 동적 추가/제거 UI
- C ↔ 한선씨 브릿지 (탭 구성을 앱.한선에서 런타임 로드)
- .app 번들 + codesign
B2 이후
- WKWebView 제거 → 한선씨 HTML/CSS 서브셋 렌더러
crowny:// 스킴, 프리미엄.한선 번들 내장
- B3: JS 엔진 (QuickJS 임베딩 또는 한선씨 JS 인터프리터)
관련 파일
/Users/ef/crowny-terminal/ — 기존 JS 데몬 (유지)
/Users/ef/crowny-terminal-native/ — 네이티브 앱 (신규)
/Users/ef/CrownyOS/crownyc/crownyc_window.m — 참고용 framebuffer 래퍼