← 목록
브라우저 2026-04-14 4KB 읽기 4분

CrownyBrowser v0.2 — Daily Driver (탭/기록/북마크/시작페이지)

개요

macOS 네이티브 브라우저 (Cocoa + WKWebView, 순수 Objective-C)에 멀티탭·히스토리·북마크·시작페이지를 추가하여 실제 데일리 드라이버로 사용 가능한 수준으로 끌어올렸다.

무엇을 했는가

1. 멀티탭 (Multi-tab)

  • CrownyTab 모델 객체 (WKWebView + 제목 + URL + 테마)
  • 상단 탭바: 각 탭을 클릭 가능한 NSView + 닫기 × 버튼
  • 새 탭 + 버튼
  • 모든 탭이 공유 WKUserContentController와 스킴 핸들러 사용 → CSS 주입·스킴 처리가 모든 탭에서 일관
  • 우클릭으로 탭 닫기
  • ⌘T 새 탭, ⌘W 닫기, ⌘⇧] 다음, ⌘⇧[ 이전, ⌘L URL 포커스

2. 기록 (History)

  • 모든 커밋된 네비게이션을 {url, title, timestamp, theme} 형태로 기록
  • ~/Library/Application Support/CrownyBrowser/history.json 에 저장
  • 10000개 상한 — 초과 시 가장 오래된 항목부터 제거
  • ⌘Y → 기록 창 (NSTableView, 더블클릭으로 열기)
  • 크라우니 내부 시작페이지(crowny-internal://start)는 기록하지 않음

3. 북마크 (Bookmarks)

  • ⌘D → 현재 페이지를 북마크에 추가 (중복 방지)
  • ~/Library/Application Support/CrownyBrowser/bookmarks.json 영속화
  • 첫 실행 시 6개 프리뷰 페이지 자동 생성 (bank/int/market/play/mind/security)
  • 북마크 바: URL 바 아래 얇은 행에 상위 10개 북마크 버튼
  • ⌘B → 북마크 관리 창 (NSTableView)

4. 시작 페이지 (Start Page)

  • 새 탭 / 빈 URL 시 crowny-internal://start/index.html 로드
  • /Users/ef/CrownyBrowser/bundle/start/index.html (8KB)
  • 섹션: 빠른 링크 그리드(6), 북마크 타일, 최근 기록
  • 6 테마 모두 지원 (CSS 변수 + data-theme)
  • 네이티브가 탭 로드 후 window.crownyStartData 주입 → 북마크·기록 섹션 동적 채움

5. URL 바 개선

  • CrownyURLField (NSTextField 서브클래스) — 포커스 시 전체 선택
  • 스킴 없는 입력: 도메인처럼 보이면 https:// 우선, 실패 시 http:// 폴백 (didFailProvisionalNavigation)
  • . 없는 입력은 Google 검색으로
  • 테마 인디케이터 점 — URL 바 왼쪽에 현재 페이지 data-theme 색상 표시

6. 6 테마 크롬 동기화

  • 모든 UI 요소 (창·탭바·북마크바·URL바) 활성 탭의 테마에 맞춰 색상 전환
  • JS → 네이티브는 crownyTheme 메시지 핸들러로 변경 감지

관련 파일 경로

  • /Users/ef/CrownyBrowser/native/crowny-browser.m (55KB, 850줄)
  • /Users/ef/CrownyBrowser/native/crowny-browser.한선 (15KB, 동반 문서)
  • /Users/ef/CrownyBrowser/native/Makefile (변경 없음)
  • /Users/ef/CrownyBrowser/bundle/start/index.html (신규)
  • /Users/ef/CrownyBrowser/bundle/design/premium-v1.css (기존)
  • ~/Library/Application Support/CrownyBrowser/history.json (런타임 생성)
  • ~/Library/Application Support/CrownyBrowser/bookmarks.json (런타임 생성)

빌드

bashcd /Users/ef/CrownyBrowser/native && make
# → CrownyBrowser (arm64 Mach-O, 약 127KB)
./CrownyBrowser

잔여 이슈 / 향후 작업

  • 탭 드래그 리오더 미구현 (현재는 생성 순서 고정)
  • 개인 정보 보호 모드(프라이빗 탭) 없음 — 모든 탭이 동일 cookiestore
  • 다운로드 매니저 없음
  • 찾기(⌘F) UI 없음 — WKWebView 기본 API로 추가 가능
  • 북마크 폴더/검색 없음 (플랫 리스트)
  • 기록 창 검색 필터 없음
  • 홈 버튼/단축 URL 바 자동완성 미구현