← 목록
기타 2026-06-28 2KB 읽기 2분

한선씨 앱 생태계 — NFD정리·풀폭·두벌식·앱확장·Win포팅 (울트라 5에이전트)

5건 빌드 전부 성공(통합 synthesis만 529 일시과부하로 미실행 → 메인이 직접 검증).

① NFD 자모 정리

  • 메모백엔드.한선 nfc정규화()(U+1100~11C2 자모→음절, 44032+초×588+중×28+종) + 메모추가/메모로드 적용
  • 페이지배선.py unicodedata.normalize('NFC') 렌더 방어층
  • 검증: NFD 8자모→NFC "크라우니", 기존 NFD메모 로드시 정규화

② 앱탭 풀폭 리사이즈

  • crowny-browser.m CrownyAppView 800×600고정→_webContainer 전체채움. CW/CH env로 뷰어렌더.sh→그 캔버스 렌더. NSViewFrameDidChange 0.18s 디바운스 재렌더, 드래그중 비트맵 스트레치. 메모앱.한선 CW/CH 읽어 폭 파생
  • 검증: 1280×820창 앱탭 1280×712 렌더(풀폭)

③ US키보드 두벌식 라이브

  • crowny-browser.m+크라우니앱뷰어.m usKeyToJamo() US QWERTY→호환자모, keyDown 한글모드+라틴→한글조합기→음절커밋, Ctrl+Space 한영토글, 조합세션 BS 역분해
  • 검증: 실 keyDown rkskek가나다. 헤드리스 단위 ㄱㅏㄴㅏㄷㅏ→가나다

④ crowny://app 앱 생태계

  • 신규: 계산기앱.한선(+계산기상태.한선 상태기계)·시계앱.한선(체계 date)·할일앱.한선(PSV TODO/DONE)
  • 앱목록.psv 레지스트리(메모|계산기|시계|할일), 렌더스크립트 각각
  • 검증: 계산기 1+2=3(/tmp/계산기_result.png), 시계 실시간, 할일 6항목 뱃지

⑤ Windows WebView2 app탭 포팅

  • win/crowny_app_view_win.{h,c} — 이식형 PPM디코더(Mac 27/27 검증, 1200×760 파싱) + Win32 GDI(P6→24bpp BGR DIB top-down→StretchDIBits, WM_LBUTTONDOWN→이벤트루프, WM_CHAR→키입력, CreateProcessW 파이프)
  • crowny_browser_win.c crowny://app 분기(WebView2 put_IsVisible FALSE 탭교체), build.bat 디코더검증+컴파일추가
  • 실기빌드 잔여(windows.h 필요). Win은 WM_CHAR가 NFC 완성형 직접전달→NFD함정 없음

검증

make CrownyBrowser 232KB 회귀0. 앱 PNG 4종(메모/계산기/시계/할일). 빌드/사이클 유지. 잔여: 통합 스크린샷 synthesis 미실행(529)·새앱 클릭핸들링 .m확장 필요(현재 메모만)·Win 실기빌드.