← 목록
기타 2026-07-17 4KB 읽기 5분

크라우니 투데이 앱 장착 (2026-07-17)

개요

crowny://today = 투데이 협업 대시보드(React dc-runtime standalone, 4탭: 투데이 피드/내 하루/팀 보드/리포트, 전 데이터 인메모리 하드코딩)를 CrownyAI 신셸 모듈로 장착. office/building/erp와 동일 공정(무수정 원칙+WKUserScript 브릿지+scheme 배선).

무엇을 했는지

  1. 번들: ~/Downloads/Crowny Today 앱 (standalone).htmlbundle/today/app/index.html (무수정 복사).
  2. 브릿지: bundle/today/bridge/todayBridge.js — office의 crownyBridge.js 구조(가드→WKUserScript atDocumentEnd→setInterval 폴링→DOM 이벤트 위임) 그대로 미러.
- 서버: http://127.0.0.1:9604 우선, 실패 시 https://today.crowny.org 폴백. /health 체크 후 /api/posts·/api/sync 호출. - 오프라인 스토어: localStorage crownyToday.posts/todos/report/queue. - 캡처: 클릭 텍스트("게시"/"응원"/"댓글"/"등록"/"전송") + change(투두 체크박스) + blur(리포트 textarea) 이벤트 위임, 큐잉+즉시 로컬 저장. - 동기화 루프: 30초 폴링 + on-load, 동기화판정.한선 로직을 JS로 미러링(온라인/오류수/큐길이/경과초 → 티/옴/타/음). 상태 dot(우상단 fixed)에 온라인·오프라인 + 미동기 N 표시. - 하이드레이션: /api/posts 조회 후 로컬에 없는 서버 포스트를 localStorage에 병합, DOM 반영은 카드 클론 best-effort(실패해도 데이터 레이어는 항상 정확 — 셀렉터 미스는 로그만 남기고 조용히 스킵). - 서버 미가동 시에도 전 기능(로컬 저장+큐잉)은 정상 동작(오프라인퍼스트).
  1. 한선씨 동반: bundle/today/bridge/동기화판정.한선 — 4상 판정 정본(티=즉시동기화/옴=재시도대기/타=오프라인유지/음=서버오류백오프). hanseonc_high 컴파일 + crownyc run 실행 확인, 자체시험 12/12 ALL_PASS.
  2. 네이티브 배선 (native/crowny-ai-content.m, ERP 배선 구조를 그대로 복제):
- caTodayBridgeScriptSource() — 브릿지 JS 로더(번들 리소스→개발기 bundle/ 2단 폴백). - caIsVectorService에 "투데이" 추가. - AI홈 타일 "투데이" 추가(ERP 타일 다음). - v7 북마크 자동시드("크라우니투데이", index 4). - _ucc addUserScript 등록(office/erp 브릿지 등록 바로 다음). - addr 리매핑 2곳(bundle/today/ 포함 시 crowny://today로 정규화) — activateTab 경로 + KVO(observeValueForKeyPath:URL) 경로. - normalizeURLStringcrowny://today/"투데이"/"today"/"크라우니투데이" 별칭. - caOpenTodayInActiveTabbundle/today/app/index.html 후보 2개(번들→개발기) 시도, 실패 시 조용히 return. - navigateTo:에 today 디스패치 분기 추가.

관련 파일

  • /Users/ef/CrownyBrowser/bundle/today/app/index.html (4.2MB, 무수정 원본)
  • /Users/ef/CrownyBrowser/bundle/today/bridge/todayBridge.js
  • /Users/ef/CrownyBrowser/bundle/today/bridge/동기화판정.한선
  • /Users/ef/CrownyBrowser/native/crowny-ai-content.m (8개 지점 수정, ERP 패턴 그대로 복제)

검증

  • hanseonc_high 동기화판정.한선 → crownyc run : 자체시험 통과=12 실패=0, ALL_PASS.
  • node --check todayBridge.js : 문법 오류 0.
  • cd native && make ai : 에러 0·경고 0, CrownyAI(442K) 빌드 성공, 3초 생존 확인.

잔여 이슈

  • /Users/ef/crowny-today-server(포트 9604) 서버 자체는 미확인/미기동 상태 — 브릿지는 서버 부재를 정상 감내(오프라인퍼스트)하지만 실제 온라인 동기화·today.crowny.org 배포는 후속 트랙.
  • 하이드레이션 DOM 카드 클론은 best-effort(셀렉터가 실제 React 렌더 구조와 다를 경우 로그만 남기고 데이터 레이어만 갱신) — 실제 앱 실행 중 DOM 구조 실측 후 셀렉터 정밀화 권장(office 사례처럼 contenteditable 여부 등 런타임 확인 필요).
  • office처럼 native/crowny-ai-main.m 메뉴(⌘S/⌘O) 급의 파일 I/O 브릿지는 today엔 아직 없음(스펙에 없었음, 서버 동기화가 저장 역할).
  • 크라우니코드: lookup HIT 0건 / MISS 2건(todayBridge.js, 동기화판정.한선) / learn 추가 대기(다음 세션에서 crownycode-learn.sh add 예정).