2026-06-03
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
maru 저장소의 첫 커밋과 첫 PR들이 올라온 날입니다. 터미널 전략 노트와 한국어 번역, Zig 개발 환경 부트스트랩(#2), 헤드리스 E2E 스캐폴드(#3), 에이전트 규칙과 프로젝트 구조 문서가 들어왔고, 기록된 터미널 출력과 비교하는 oracle POC(#6), 구조화된 검증 snapshot, 스트레스 테스트 계층(#11), 성능 예산 하네스(#12)로 검증 틀을 잡았습니다. 클린룸 터미널 코어 정책, 구현 전 계약, 전역 단축키 충돌 규칙, 구현 계획, 입력 매크로를 문서로 정했고, 저녁에는 GitHub Actions check 게이트와 외부 oracle, import 경계 검사·포맷 게이트, LICENSE를 추가했습니다(#18). 이후 TerminalSession·Pane을 Surface로 이름을 통일하고 PR 규칙을 체크리스트 하나로 모았으며(#20), 의존성·커밋·클린룸 인용 정책 추가와 문서 감사, Surface·SurfaceRuntime 분리 반영, 런타임 trace와 렌더러 결정 문서(#24)까지 이날 24개 PR이 모두 main에 병합됐습니다.
zntc는 코드젠 precedence 전환(이슈 #4042)을 이어 갔습니다. 연산자와 member·call·new 등 자식에 level·flags를 배선하고(#4152), 연산자 괄호 재유도를 켠 뒤(#4153) paren 노드에 의존하지 않도록 emitParen을 투명화하고 statement-start 마킹을 도입했습니다(#4154). 코드 리뷰로 찾은 엣지 케이스 수정, IIFE 자동 괄호, 트랜스포머의 makeParenExpr 합성 제거(#4156)와 optional chain 판정 중복 정리(#4158)가 뒤따랐습니다. React Native에서는 __zntc_modules 레지스트리에서 react-refresh 런타임을 찾게 해 Fast Refresh와 Refreshing 배너를 살렸고(#4155), Bun으로 띄운 RN dev 서버의 HMR WebSocket도 복구했습니다(#4157). 8067모듈 RN 앱 기준 HMR 성능 작업으로 캐시 적중 모듈의 방출 생략(#4159), rename_table 보존으로 computeRenames 생략(#4161), 그래프 위상 보존 인프라 Phase A(#4162)가 병합됐습니다.
suji는 CEF에서 히스토리가 없으면 Cmd+[ / ]와 Cmd+W를 앱 DOM으로 넘기게 했고, macOS 배포 문제를 연달아 고쳤습니다. codesign이 거부하던 entitlements plist의 XML 주석 제거, CEF 프레임워크 내부 dylib 서명 누락, --dmg --notarize 때 dmg 자체의 서명·공증·staple, 빌드 호스트보다 낮은 macOS에서 실행되도록 minos 고정, node를 쓰지 않는 앱이 죽지 않도록 libnode weak-link, Info.plist의 LSMinimumSystemVersion 명시가 들어왔습니다.
공개 커밋 62개, 해당일 생성 또는 병합된 PR 35개를 정리했습니다. PR 생성 35개·병합 35개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/maru
- docs: specify runtime trace and renderer decisions
- docs: dedupe clean-room PR checks and normalize the allowed grounds
- docs: finish propagating the Surface/SurfaceRuntime split
- docs: clarify surface runtime and clean-room rules
- docs: add dependency, commit/branch, and clean-room-citation policies
- docs: fix stale content found in the doc audit
- fix: address adversarial review of the Surface rename and PR rules
- docs,ci: make pr-checklist the single source for PR rules; require label + assignee
- refactor: rename TerminalSession/Pane to Surface across code and docs
- Align initial slice docs and boundary checks
- ci: add GitHub Actions for check gate and external oracles
- docs: reconcile docs with code, document clean-room references, add LICENSE
- build,test: add import-boundary checker, formatting gate, and external oracles
- test: compile previously-skipped unit tests via barrel refAllDecls
- Document terminal input macros
- Harden implementation plan
- Document implementation plan
- Clarify global hotkey conflict rules
- Document pre-implementation contracts
- Add performance budget harness
- Add stress test layer
- Document clean-room terminal core policy
- Clarify verification limit reasons
- Add structured verification snapshots
- test: capture snapshot artifacts
- test: add recorded terminal oracle comparison
- docs: split agent rules into linked documents
- refactor: split source files by responsibility
- docs: add agent rules and project structure
- Add headless E2E test scaffold
- Bootstrap Zig development environment
- Translate terminal strategy plan to Korean
- Add terminal strategy notes
ohah/suji
- fix(macos): Info.plist 에 LSMinimumSystemVersion 명시(기본 12.0)
- fix(macos): libnode 를 weak-link 해 node 안 쓰는 앱이 크래시하지 않게
- fix(macos): 빌드 호스트보다 낮은 macOS 에서 앱이 실행되게 minos 고정
- fix(macos): --dmg --notarize 시 dmg 자체도 서명·공증·staple
- fix(cef): Cmd+[/]·Cmd+W 를 히스토리 없으면 DOM(앱)으로 양보
- fix(macos): entitlements plist 의 XML 주석 제거 (codesign AMFI 파서가 거부)
- fix(macos): CEF 프레임워크 내부 dylib 서명 누락 → 공증 실패 수정
ohah/zntc
- perf(graph): HMR 위상 보존 인프라 (Phase A — 정확성 토대, byte-identical)
- perf(linker): HMR rename_table 보존 — computeRenames skip (lRen 106→0)
- perf(emitter): HMR 변경분만 방출 — cache hit 모듈 emit/전송 skip
- fix(test): RN react-refresh prelude 의 stale injectIntoGlobalHook count 단언 정밀화
- refactor: optional-chain spine-walk 중복 단일화 — ast.spineHasOptionalChain (#4042 follow-up)
- fix(react-native): RN dev server 를 Bun 으로 실행 시 HMR WebSocket(/hot) 복구
- refactor(codegen): code-review debt 정리 — dead 필드 + wrapper-skip 단일화 (#4042 PR8-3)
- refactor(transformer): makeParenExpr 합성 제거 — precedence 가 동일 재유도 (#4042 PR8-2)
- feat(codegen): IIFE function auto-paren (esbuild IsParenthesized parity) (#4042 PR8-1)
- fix(react-native): Fast Refresh 'Refreshing...' 배너 표시 복구
- fix(bundler): RN Fast Refresh — __zntc_modules 레지스트리에서 react-refresh/runtime resolve
- fix(codegen): 주석이 statement-start 마크 무력화 + for-init sequence in 누수 (#4042 PR7)
- fix(ci): emitParen 투명화를 sourcemap audit SKIP_FUNCS 에 등록 (#4042 PR7)
- fix(codegen): code-review max 적발 엣지케이스 5건 중 4건 수정 (#4042 PR7)
- fix(codegen): class field/extends sequence·yield 래핑 + TSC 스냅샷 재생성 (#4042 PR7)
- feat(codegen): emitParen 투명화 + member/call/new/optional-chain wrap 발동 (#4042 PR7)
- feat(codegen): statement-start 마킹 인프라 + object/function/class wrap (#4042 PR7-1)
- feat(codegen): precedence wrap 발동 — 연산자 괄호 재유도 (#4042 PR6a)
- refactor(codegen): object value/template 자식 level 배선 (#4042 PR6-2)
- refactor(codegen): expression list 원소 .comma 배선 (#4042 PR6-1)
- refactor(codegen): member/call/new/import 자식 level/flags 배선 (#4042 PR5-2)
- refactor(codegen): 연산자 emitter 자식 level/flags 배선 (#4042 PR5-1)
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.