CrownyAI 북마크 앱 — celdb 실데이터 배선 + "열기" ObjC 소비 배선
개요
crowny://app/북마크 앱이 데모 PSV(/tmp/북마크목록.psv) 대신 실 사용자 데이터
(~/Library/Application Support/CrownyAI/data/북마크.celdb)를 읽도록 배선하고,
"북마크열기:N" 액션이 실제로 활성 탭을 이동시키도록 ObjC 소비 로직을 추가했다.
무엇을 했는지
1. 앱서비스_북마크.한선 — celdb 실데이터 직결
_북마크_celdb경로(): CROWNY_DATA_DIR 있으면 그 값, 없으면
$HOME/Library/Application Support/CrownyAI/data/북마크.celdb (caDataDir() 정본과 동일 규약).
_북마크_celdb파싱(원본): 헤더 4줄(컬럼수+url/제목/폴더) 스킵, TAB 분리 →
내부표현
URL|제목|분류 문자열로 변환(렌더/열기/삭제 등 기존 코드 무수정 통과).
_북마크_로드(): celdb 우선 로드, 없거나 빈 파일이면 정직 폴백(데모 PSV, 날조 금지).
_북마크_삭제(idx) / _북마크_추가(): _북마크_celdb사용중()으로 분기해 celdb에는
헤더 보존 재작성(
_북마크_celdb재작성)/TAB 덧쓰기로 반영, PSV 폴백 시 기존 방식 유지.
2. crowny-ai-engine.m — sendVectorEvent 소비 배선
서비스=="북마크" && event=="액션"일 때:
북마크열기: prefix → /tmp/북마크_열기요청.txt 읽어 trim 후
CAOverlayHistoryNavigate 알림 post(object=url) + 파일 삭제(재소비 방지).
content.m 이 이미 이 알림을 구독해
navigateTo:로 활성 탭 이동(§D7①⑤) — 신규 구독 불필요.
북마크삭제/북마크추가 prefix → crowny.ai.bookmarksChanged 알림 post(북마크바 갱신).검증
- 컴파일:
hanseonc_high /Users/ef/CrownyBrowser/src/앱상주서버.한선 exit 0, stderr 경고/에러 0건.
- 소켓 스모크 (포트 19811 사본,
CROWNY_DATA_DIR=/tmp/북마크시험데이터 격리 사본 — 실 celdb 오염 없음):
-
벡터|북마크|렌더|800|600 → CMD/END 정상, 실 celdb 제목("크라우니오피스"·"크라우니빌딩") TEXT cmd에 등장 확인.
-
벡터|북마크|액션|북마크열기:1 →
/tmp/북마크_열기요청.txt에
crowny://office(celdb idx1 실값) 기록 확인.
-
벡터|북마크|액션|북마크삭제:0 → celdb 31→30줄, 헤더(3/url/제목/폴더) 보존, idx0 레코드만 제거 확인.
-
벡터|북마크|액션|북마크추가 → celdb 30→31줄, TAB 포맷 신규 행 append 확인(서버 프로세스 자체 env 기본값 사용 — CROWNY_BM_* 는 클라이언트가 아닌 서버 프로세스 환경변수라 nc 클라 env는 무관, 기존 설계 그대로).
- 실 celdb(
~/Library/.../북마크.celdb)는 시험 전후 31줄 그대로, 내용 불변 확인.
- ObjC 빌드:
make ai rc=0, 경고 4건(전부 기존 — 멀티윈도우 리팩터 unused-ivar 3건 + crowny-ai-butler.m unused-function 1건, 내 변경과 무관). 실행바이너리 strings에 CAOverlayHistoryNavigate/bookmarksChanged 존재 확인.
관련 파일
/Users/ef/CrownyBrowser/src/앱서비스_북마크.한선 (백업: .bak-북마크실데이터)
/Users/ef/CrownyBrowser/native/crowny-ai-engine.m (백업: .bak-북마크실데이터, sendVectorEvent 부근만 수정)
잔여 이슈
make ai만으론 실행 중인 CrownyAI.app 번들에 미반영(CLAUDE.md 상단 규약) — install-ai-app.sh + 앱 재시작은
통합 세션 담당(이 작업 범위 제외, 지시대로 미실행).
- 라이브 9801 서버는 이번 작업에서 건드리지 않음(격리 포트 19811 사본으로만 검증) — 다음 통합 시
실 서버 재기동 시점에 자동 반영.
- celdb 3열(폴더)에 "light"/"dark" 같은 레거시 테마값이 섞여있어 카드 뱃지색이 알려진 분류
(서비스/협업/금융 등)와 매칭 안 되면 기본 파랑으로 표시됨 — 지시사항대로 "그대로 표시"(날조 금지).
크라우니코드
lookup 1건 MISS(북마크_celdb실데이터로드) → LLM 생성 → learn 1건 추가(북마크_celdb실데이터로드폴백).