← 목록
AI 2026-07-26 5KB 읽기 5분

CrownyAI crowny://app 디자인 이식 1차 완료 — 클로드 디자인 핸드오프 → 한선씨 벡터 (2026-07-26)

개요

클로드 디자인 1차 납품(~/Downloads/design_handoff_크라우니앱, 15화면×라이트/다크=30목업)을 crowny://app 앱군에 픽셀 이식. 런처(ObjC 네이티브)+5앱(메모·할일·북마크·파일·날씨, 한선씨 벡터 모듈). sonnet 4기 병렬 + 메인 통합. 명세서=CrownyBrowser/spec/크라우니앱-디자인작업명세서.md(07-24).

무엇을 했는지

선행 배관 (메인 세션)

  • 테마 전달: ObjC 렌더 인자 3필드(CW|CH|라이트/다크, engine.m) → 서버 디스패처가 캔버스 psv "테마" 키 영속 → 모듈 _테마라이트() 조회(1/-1). 하위호환.
  • 디자인이식.sh 등록: 프로젝트 크라우니앱벡터. 산출dir=심링크 게이트 디렉토리(src/.디자인이식산출-크라우니앱 — src 전체 등록 시 레거시 os-shell HTML 오탐 타 방지). 판정=옴 유지. 이 hex 스캔 게이트는 십진 RGB .한선을 못 보므로 실질 게이트=아래 결정형 대조.

앱별 이식 (sonnet 4기 병렬 — 색·좌표·문구=목업 복사, 로직 무수정, HIT 액션명=기존 계약 유지)

  • 메모(목록/상세/편집/빈목록): 8/8 화면 PASS, 색 37/37, HIT 8/8. 입력코어·\n 센티넬·캐럿 무수정.
  • 할일+북마크: 8/8 PASS, HIT 개수 정확 일치. 할일=단일 패널+대기/완료 칩+입력칸 2상태, 북마크=열기 히트 72×40 정밀화·celdb 배선 무수정.
  • 파일+날씨: 8/8 PASS, 렌더 p50 2.06ms(예산 유지). 오프셋 인덱스 O(1)·날씨 페치/OFFLINE 판정 무수정. 파일 페이지 8→7행(목업 카드 수용량). 오프라인 "다시 시도"=기존 날씨새로고침 재사용.
  • 런처(ObjC): src/런처레이아웃.한선 SSOT 신규(자체시험 29/29) + engine.m drawRect/launcherCardRects/mouseDown 재작성 — 탭 2개(네이티브/웹 서비스)+9개/쪽 페이지네이션+학습배지+오프라인 카드(재시도 fetch 리팩터). 파리티 대입표 일치. 로고=기존 왕관 정본 재사용.

통합 검증 (메인 세션)

  • STRICT 컴파일 exit0·경고0. 격리 서버(:19830)에서 10서비스×2테마 전량 CMD/END 정상, 배경 토큰 실측 라이트 #EFE7D8·다크 #201711 정확 일치. 미이식 앱(터미널/워드/계산기/시계/설정) 회귀 무손상.
  • make ai 에러0 → install-ai-app.sh 설치·재서명 → 심볼가드(UTF-16LE: 다시 시도/네이티브/웹 서비스) PASS. 앱 재시작 시 런처 반영(서버측 5앱은 다음 벡터 요청 시 mtime 자가치유 재컴파일로 자동 반영).

관련 파일

  • src/앱서비스_{메모,할일,북마크,파일,날씨}.한선(각 .bak-디자인이식) · src/런처레이아웃.한선(신규) · src/앱상주서버.한선(테마) · native/crowny-ai-engine.m(테마+런처, .bak-디자인이식/.bak-런처이식)
  • 이식노트: ~/.claude/design-port/크라우니앱벡터/이식노트.md(해석 결정·개선 아이디어 — 원본 미반영 원칙)
  • 학습 7건: 메모/할일/북마크/파일/날씨앱_디자인이식_벡터렌더 계열 + 런처_디자인이식_레이아웃SSOT + 메모앱 색상스캔
  • 에이전트 세부 문서: 2026-07-26-crownyai-런처-디자인이식-레이아웃SSOT.md · 2026-07-26-할일북마크-디자인이식.md

잔여 이슈 (디자인 2차 회신 목록 포함)

  1. GUI 육안 검증 — 앱 재시작 후 crowny://app/런처·메모 등 확인(포커스 레이스로 자동화 보류).
  2. 할일 5행 고정(목업에 오버플로 표기 없음) — 6번째+ 항목 미표시. 디자인 2차에 오버플로/스크롤 표기 요청.
  3. 메모 빈목록 도달 불가(씨드 자동생성+삭제 액션 부재 — 기존 결함, 렌더는 강제재현 검증됨). 메모 삭제 UX를 디자인 2차에 요청.
  4. 날씨 CACHED 상태 목업 부재(이식노트 기재).
  5. 2차 납품 대기: 시계·계산기·터미널·워드·설정(구 디자인 유지 중 — 신구 혼재).

스케일 정책 v2 수리 (2026-07-26 저녁 — 사장님 스크린샷 피드백 "아주 커다란 폰트")

  • 결함: v1은 800×600 목업 아트보드를 창 크기로 늘려 붙임(이중 원인 — ①5모듈 서버측 S=CVW기준 무상한 확대 ②ObjC drawVectorDisplayList 비균등 스트레치 + 런처 cavBasisToView 동일). 1283px 폭 창에서 폰트 1.5~1.6배 팽창+가로 왜곡. 검증이 800×600에서만 돌아 스케일=1로 가려짐(교훈: 목업 기준 크기 외 실창 크기 검증 필수).
  • 수리: 스케일 소유권을 ObjC 단일 지점으로 — caVecXform(균일 s=min, 상한 1.15, 센터링, 레터박스=아트보드 배경색). 적용 4지점: drawVectorDisplayList·mouseDown HIT 역변환·windowPointForTopDownX·런처 cavBasisToView/cavFontScale. 5모듈은 800×600 고정 기저 원좌표만 발행(S=1000·OFF=0·INIT 800 600 — 서버 출력 크기불변).
  • 검증: STRICT 0경고 · 5앱 렌더 800×600 vs 1600×900 md5 동일(크기불변) · 다크 배경 토큰 유지 · 미이식 터미널 INIT=실캔버스 유지(스케일 비율 균일이라 v1과 동일 결과, 회귀 0) · make 에러0 · 설치 완료. 앱 재시작 시 반영(상주서버는 앱 자식이라 재시작 시 새 toau 자가치유).