- inFlight Set으로 handlePath 진입 즉시 경로를 잠가 burst add 이벤트가
몰려올 때 첫 번째 처리가 끝나기 전 두 번째 호출을 즉시 차단
- recentlyRenamed 키를 NFC 정규화로 통일하고 oldPath/newPath 양쪽 등록
(chokidar가 NFD·NFC 변형 중 어느 쪽으로 이벤트를 보내도 TTL 가드 적용)
- chokidar awaitWriteFinish(stabilityThreshold 300ms) 추가로 압축 해제
중 부분 쓰기 단계의 add 폭주를 상류에서 차단
- race condition 회귀 방지를 위한 watcher 단위 테스트 3개 추가
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
100ms 주기 stat 폴링이 누적 CPU를 점유했음. 파일 이름만 다루는
정규화 도구이므로 안정화 대기가 불필요하며, recentlyRenamed TTL
맵이 이미 중복 이벤트를 막아준다.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
normalizeToNFC/normalizeToNFD — v1 require('@pieroot/nfd2nfc') 호환 유지.
신규 API: normalizeEntry, scan, shouldNormalize + 타입 export.
tsconfig.lib.json: declaration: true, out/lib/에 .d.ts 생성.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
file/dir 서브커맨드 외에 \$0 <path> 디폴트 커맨드 추가.
stat으로 파일/디렉토리 자동 감지 → 기존 v1 스타일 nfd2nfc <path> 형태 지원.
--recursive(-r), --dry-run(-n) 옵션.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
filter.ts: 한글 자모 코드포인트 정확 필터 (U+1100-11FF, U+A960-A97F, U+D7B0-D7FF).
normalizer.ts: APFS normalization-insensitive 정확 처리 (inode 비교).
scanner.ts: 재귀 스캔 결과 깊이 역순 정렬 (자식 먼저 rename).
types.ts: WatchedDir, RenameResult, ActivityEvent, AppSchema 등 공유 타입.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>