2026-06-14
요약 (AI 작성)
오늘(2026-06-14)은 ohah/maru, ohah/suji, ohah/zntc, ohah/iris 프로젝트에 걸쳐 상당한 확장과 버그 수정이 이루어졌습니다. maru에서는 멀티 창 관리, chrome 컴포넌트 재구조화(C0-C1 시리즈), find 오버레이 UX 개선, 세션 구조 리팩토링(S1-S2), 워크스페이스 복원 구현(R1-R6), 그리고 경계 계층 테스트(B)에 집중했습니다. suji는 Electron 정합성 개선을 위해 main.ts 진입점 지원, camera/mic 권한 통합, getFileIcon, app.relaunch() 등의 기능을 구현하고, Android 크로스빌드 준비와 백로그 메서드 9종 구현을 진행했습니다. zntc는 파서 엣지케이스, napi 리소스 누수, sourcemap 인코딩 오버플로우, 렉서 검증 문제 등 다양한 버그 수정을 통해 안정성을 높였습니다. iris는 호환성 정책 갱신과 Android 벤치마크 경로 추가로 Android 지원을 강화했습니다.
커밋
ohah/maru
- feat(app): New Window W1 — 세션 컬렉션 seam (primary → windows, 동작 불변)
- feat(app): New Window W2 — ⌘N으로 새 창(팩토리 + per-window tick/lifecycle)
- fix(app): 멀티 창에서 한 창 닫을 때 over-release 크래시(isReleasedWhenClosed)
- fix(chrome): 계획-기반 토큰/필드는 유지 — slot_height·chrome_minimal 복원
- fix(chrome): C0 /code-review max 수정 — 모달 박스 clamp + 미사용 토큰/필드 제거
- feat(chrome): C0 Notice 모달 wiring — ChromeDraw→CoreText lower + ABI show_notice + 손상 알림
- docs: 레이어링·이식성 전략 + 적대적 검증 반영(chrome·renderer 정렬)
- docs(chrome): chrome 디자인 시스템 구조 설계 1차
- feat(chrome): C0 타입 계약 — src/chrome 스켈레톤 + Notice 컴포넌트
- fix(workspace): 통합 /code-review max 후속 — 루트코즈 수정 (ABI 39)
- fix(workspace): parse 구조 불변식(손상 트리 graceful) + 헤더 단일 출처(ABI)
- fix(workspace): restore 리뷰 수정 7건 — stale 포인터·cwd 디렉터리 검사·OOM 누수 외
- docs(pr-checklist): PR Mermaid 다이어그램은 가능하면 세로(좁고 긴)로
- feat(workspace): restore R1 — maru.workspace.v1 직렬화 writer + 모델
- feat(workspace): restore R3 — 라이브 DevSession → workspace.Window 캡처
- feat(workspace): restore R6 — 민감 데이터 가드 + 없는 cwd graceful
- feat(workspace): restore R5 — 정상 종료 시 멀티 창 workspace 저장 (ABI 37)
- feat(workspace): restore R4a — applyWorkspaceWindow (모델 → 라이브 트리 재생성)
- feat(workspace): restore R4b — 시작 시 로드 + 멀티 창 복원 (ABI 38, end-to-end)
- feat(workspace): restore R2 — maru.workspace.v1 reader + round-trip
- refactor(session): S1 구조-무효화 계약 — destroyPane chokepoint로 라이브-트리 포인터 표적 무효화
- refactor(session): S2 슬라이스 2 — IME 순수 판정을 src/session/ime(L2)으로 추출
- refactor(platform): C1-prep — 일반 오버레이 ChromeDraw→cells rasterizer
- feat(chrome): C1a — 스크롤백 Find를 chrome 컴포넌트로 이주
- feat(chrome): find 오버레이 입력 UX — 입력 커서 + IME 조합(preedit) 표시
- feat(chrome): 오버레이 글자 1.3× 확대 — 가독성(실사용 피드백)
- fix(chrome): /code-review max 수정 2/3 — 오버레이 frame dedup + Notice 테두리 렌더링
- test(boundary): B 중립성 가드 — L1~L3 import-방향 완성 + OS-타입 by-name 금지
- Revert "feat(chrome): 오버레이 글자 1.3× 확대 — 가독성(실사용 피드백)"
- refactor(session): S2 슬라이스 1 — 순수 입력/재정렬 수학을 src/session(L2)으로 추출
- fix(chrome): /code-review max 수정 1/3 — 모달 correctness·정책·토큰 seam
- fix(session): /code-review max 수정 3/3 — S1 표적 divider + per-window 알림 + 경계 doc
- fix(chrome): 오버레이 1.3× 확대 재수정 — 폰트 크기까지 함께 스케일(루트커즈)
- fix(chrome): 오버레이 텍스트·caret을 EAW 셀 폭으로 — 한글 잘림 수정
- feat(chrome): C1b — 커맨드 팝업을 chrome 컴포넌트로 이주(레거시 완전 제거)
- fix(app): 커맨드 팝업 텍스트도 EAW 폭으로 — 한글 ㄱㄴㄷ 잘림 수정 + find 실측 회귀 테스트
- fix(app): 오버레이 cell을 오버레이 font의 CoreText 실측으로 — 한글 약간 잘림 수정
ohah/suji
- feat(backend/node): support main.ts entry via Node 24 type-stripping
- test(e2e): PR2 parity 메서드 e2e 검증 + suji-js dist 재빌드
- feat(parity): Electron 백로그 메서드 9종 — 코어 + 전 SDK(JS/Node/Rust/Go)
- feat(platform): macOS-only 네이티브 기능 4종 → Windows/Linux 확장
- feat(session): setPermissionRequestHandler 에 camera/mic(media-access) 통합 — 코어 + 전 SDK
- fix(ci): android libnode — host toolset 을 native gcc (V8 host build android 누출)
- fix(ci): android libnode — android-configure 는 python(source 금지) + --shared sed 주입
- feat(mobile): android — embedded Node.js 백엔드 예제 + libnode NDK 크로스빌드
- feat(app): app.getFileIcon — 파일 시스템 아이콘 PNG (Electron parity)
- feat(app): app.relaunch() — quit 후 재시작 (Electron parity)
ohah/zntc
- fix(transformer): ES2025
(?i:[…])비-ASCII class fold bail 시 중첩 class miscompile (#4210) - fix(napi): build/watch async 에러 경로 자원 누수 — full cleanup 통일
- fix(transformer): ES2015 class 식 IIFE 재빌드가 _this alias 누락 — 재빌드 제거