CrownyAI 브랜딩 통일 — 크라우니브라우저 사용자 노출 이름 변경
개요
사장님 확정 지시로 크라우니브라우저(CrownyBrowser)의
사용자 노출 이름을 "CrownyAI"로 통일. 디렉토리 경로(
/Users/ef/CrownyBrowser)·bundle id(
org.crowny.browser)·실행파일명(
CrownyBrowser)은 다른 스크립트 참조 파손 방지를 위해 그대로 유지.
무엇을 했는지
1. 표시 문자열 교체 — native/crowny-browser.m
- CB_PRODUCT_NAME 매크로 3종(Public/Crowny/Universal) →
CrownyAI Public/CrownyAI Crowny/CrownyAI Universal
- 메인 윈도우 초기 타이틀
setTitle:@"CrownyBrowser" → @"CrownyAI"
- 순수모드 탭 윈도우 타이틀 포맷
"%@ — CrownyBrowser (순수)" → "%@ — CrownyAI (순수)"
- 일반 탭 타이틀 갱신 포맷
"%@ — CrownyBrowser" → "%@ — CrownyAI"
- 새 창(⌘N) 타이틀
"크라우니브라우저 — 새 창" → "CrownyAI — 새 창"
- 손쉬운 사용 접근성 권한 안내 다이얼로그 텍스트 → "...CrownyAI를 허용하세요."
- 앱 메뉴
About CrownyBrowser → About CrownyAI, Quit CrownyBrowser → Quit CrownyAI
- 변경 안 함(코드 심볼/경로/식별자, 스코프 밖):
crownyBrowserRoot() 절대경로, UA 문자열(kCrownyUA="CrownyBrowser/0.2..."), NSError 도메인 문자열, ~/Library/Application Support/CrownyBrowser/ 데이터 저장 경로, 클래스명 CrownyBrowserDelegate, 크라우니메신저 리터럴 태그 [크라우니브라우저](내부 세션식별용, 최종사용자 비노출)
2. Info.plist — CrownyBrowser.app/Contents/Info.plist + native/make-app.sh 재생성 heredoc
CFBundleName: CrownyBrowser → CrownyAI
CFBundleDisplayName: 크라우니브라우저 → CrownyAI
CFBundleExecutable/CFBundleIdentifier(org.crowny.browser)는 그대로 유지 (경로 파손 방지)
3. 랜딩/시작 페이지 — bundle/start/index.html
<title>CrownyBrowser — 시작 페이지</title> → CrownyAI — 시작 페이지
- 하단 footer 배지
CrownyBrowser 0.2 · ... → CrownyAI 0.2 · ...
4. 재빌드 + 바이너리 검증
cd /Users/ef/CrownyBrowser/native && make CrownyBrowser — 성공(경고 2건은 기존 무관 unused-function, 본 변경과 무관)
strings CrownyBrowser | grep CrownyAI → "About CrownyAI"/"Quit CrownyAI"/"CrownyAI Universal" 등 확인, 구 "About CrownyBrowser"/"Quit CrownyBrowser" 잔존 0
- 바이너리 교체: cp 제자리 덮어쓰기 금지 원칙 준수 — 임시 위치에 복사 후
mv로 배치(서명캐시 SIGKILL 137 함정 회피)
CrownyBrowser.app 번들 갱신 + CrownyAI.app 사본(ditto) 신규 생성, 둘 다 lsregister 등록
- sha256 3자 동일 확인(native/CrownyBrowser == CrownyBrowser.app 실행파일 == CrownyAI.app 실행파일)
- plutil -lint 양쪽 Info.plist OK, codesign -dv 양쪽 adhoc 서명 정상
- GUI 실행 테스트는 지시대로 생략(헤드리스 검증만)
5. CLAUDE.md 갱신
/Users/ef/CrownyBrowser/CLAUDE.md 최상단에 한 줄 추가:
브랜드명: CrownyAI (2026-07-11 통일, 경로/번들id는 CrownyBrowser 유지)
관련 파일 경로
/Users/ef/CrownyBrowser/native/crowny-browser.m (표시 문자열 9곳)
/Users/ef/CrownyBrowser/native/make-app.sh (Info.plist 재생성 heredoc)
/Users/ef/CrownyBrowser/CrownyBrowser.app/Contents/Info.plist
/Users/ef/CrownyBrowser/CrownyAI.app/ (신규 별칭 번들, ditto 복사)
/Users/ef/CrownyBrowser/bundle/start/index.html
/Users/ef/CrownyBrowser/CLAUDE.md
/Users/ef/CrownyBrowser/native/CrownyBrowser (재빌드 바이너리)
잔여 이슈 (후속 작업 필요)
- variants/ 3변종 미반영:
variants/CrownyBrowser-{Public,Crowny,Universal}.app의 Info.plist는 여전히 CFBundleName="CrownyBrowser"·표시명="크라우니브라우저"(구 브랜드). 브라우저-패키징.sh도 미수정. 이번 작업 지시로 의도적으로 손대지 않음 — 3변종에도 CrownyAI 적용 원하면 별도 세션에서 make variants && make pkg-variants 경로 + Info.plist 브랜드명 동기화 필요.
- UA 문자열 미변경:
kCrownyUA = "CrownyBrowser/0.2 (crowny-view)" 그대로. 서버측 UA 판별 로직(메모서비스.js 등 "CrownyBrowser/5 + Crowny;" 패턴 매칭)과 결합되어 있어 브랜드명과 별개로 유지 — 필요시 별도 검토.
- bundle/start/index.html 한선씨 동반 미완: PostToolUse 훅이
[한선씨 동반 필수] index.한선 생성을 요구했으나, 이번 작업은 기존 정적 HTML의 2줄 텍스트 라벨(타이틀/footer) 교체일 뿐 신규 로직이 아니고, 작업 지시가 파일 수정 범위를 "표시 문자열/Info.plist/랜딩 리소스/CLAUDE.md 1줄/신규 CrownyAI.app"로 명시 제한("그 외 금지")했으므로 이번 세션에서는 생성하지 않음. 크라우니브라우저 랜딩 페이지 전체를 한선씨화하는 별도 작업이 필요하면 후속 세션에서 처리.
- 메신저 리터럴
[크라우니브라우저] 미변경: sendCrownyMessage:의 msg.crowny.org 보고 태그는 세션식별용 내부 라벨이라 사용자 노출 브랜드가 아니라고 판단, 스코프상 미변경. 크라우니메신저 쪽에서 세션명 표준화가 필요하면 별도 확인 요망.
- NSError 도메인/Application Support 데이터 경로 미변경:
~/Library/Application Support/CrownyBrowser/ 저장 경로는 파일 경로이므로 지시대로 유지 — 향후 브랜드 통일 시에도 데이터 마이그레이션 없이 경로 고정 유지 권장.