2026-07-16

요약 (AI 작성)

주소창을 제대로 된 텍스트 필드로 만든 날입니다. 슬라이스 0 설계(caret·선택·마우스 편집)에서 출발해 슬라이스 1 순수 모델·레이아웃·hit-test, 슬라이스 2 fieldLayout 단일 소스 렌더, 슬라이스 3 마우스 편집과 모델 OverlayInput→TextField 교체, 슬라이스 4 클립보드 브리지(⌘C/⌘V, ⌘X 는 OSC52 write drain 재활용) 순으로 쌓았습니다. 작업 도중 terminal/grapheme.zig 를 최상위 중립 유틸로 승격해 재사용 기반도 정리했습니다.

caret 렌더는 시행착오가 그대로 드러납니다. 세로 막대(글자 안 가림) → 반투명 블록(글자 비침) → 터미널 반전 블록 커서 재활용 → 정적 반전 블록 셀(§6 원래 계획 복귀)로 네 번 바꿔가며 "커서가 안 보인다"는 문제를 잡았습니다. 한글 입력도 NFD 자모가 분해돼 보이던 것을 NFC 조합으로 고치고 IME 한글 조합 end-to-end 회귀 테스트를 붙였으며, ⌘A 가 터미널을 전체 선택하던 것과 ⌘⌫ 가 포커스를 튕기던 것을 주소 필드로 라우팅되게 수정했습니다. 붙여넣기 위생도 리뷰 지적을 받아 강화했습니다.

zntc 는 청크 relocate 계열을 뿌리부터 정리했습니다. #4542 manualChunks 로 relocate 된 wrapped entry 가 호출되지 않던 문제와 #4541 --splitting 에서 raw require() 의 common-chunk CJS 썽크가 cross-chunk 로 노출되던 문제를 고친 뒤, #4553 에서 아예 manualChunks 가 user entry 를 relocate 하지 않도록 바꿔 relocate 버그 계열의 근본을 제거했습니다. 증분 빌드 쪽은 #4535 로 provider emit fingerprint 를 Merkle deep-fold 로 캐시에 반영했습니다.

커밋

ohah/maru

ohah/zntc

PR (해당일 생성/머지)

repo#상태제목
ohah/zntc#4554mergedrefactor(bundler): #4553 manualChunks 가 user entry 를 relocate 하지 않음 (relocate 버그 계열 근본 제거)
ohah/maru#1415mergedtest(text-field): 주소창 IME 한글 조합 end-to-end 회귀 테스트
ohah/maru#1414mergedfix(text-field): 주소창 편집 중 ⌘⌫가 포커스를 튕기지 않고 줄 시작까지 삭제
ohah/maru#1413mergedfix(text-field): 주소창 편집 중 ⌘A가 터미널이 아닌 주소 필드를 전체 선택
ohah/maru#1412mergedfix(text-field): /code-review max 결함 수정 (머지된 슬라이스 1~3)
ohah/zntc#4550mergedfix(bundler): #4542 manualChunks 로 relocate 된 wrapped entry 미호출
ohah/maru#1411mergedfix(text-field): 주소창 한글 NFD 자모를 NFC로 조합 (자모 분해 표시 수정)
ohah/zntc#4547mergedfix(bundler): #4541 --splitting raw require() common-chunk CJS 썽크 cross-chunk 노출
ohah/maru#1410mergedfeat(text-field): 주소창 클립보드 브리지 ⌘C/⌘V/⌘X (슬라이스 4)
ohah/zntc#4546mergedfix(bundler): #4535 증분 emit 캐시에 provider emit fingerprint (Merkle deep-fold)
ohah/maru#1409mergedfeat(text-field): 주소창 마우스·키보드 편집 + 모델 교체 (슬라이스 3+키보드)
ohah/maru#1408mergedfeat(text-field): 주소창 편집 밴드를 fieldLayout 단일 소스로 렌더 (슬라이스 2)
ohah/maru#1407mergedfeat(text-field): 주소창 인라인 편집 순수 모델·레이아웃·hit-test (슬라이스 1)