2026-05-16

날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.

요약 (AI 작성)

zntc는 code splitting을 크게 넓혔습니다. 먼저 분할 청크마다 CSS를 나누고 content-hash와 css_names 패턴을 적용했으며, 동적 청크를 불러올 때 런타임에 CSS link 태그를 넣게 했습니다(#3322, #3323, #3325). 작은 공통 청크를 합치는 minChunkSize(#3333)와 리터럴이 아닌 동적 import() 경고(#3336)가 이어졌고, Module Federation과 CJS·IIFE 분할 설계 RFC를 문서로 남겼습니다(#3319, #3341). 그 뒤 preserve-modules와 CJS 출력(P3-A, #3343), 레지스트리 런타임과 안정 모듈 ID를 쓰는 CJS·IIFE 분할(P3-B, #3344, #3346, #3349), UMD·AMD 분할(#3357), IIFE 동적 로더의 worker·Deno·Node-ESM 폴백과 CSP nonce 지원(#3355, #3358)이 차례로 병합됐고, 초기 레지스트리 코어는 걷어 내 하나로 정리했습니다(P3-C, #3363). 청크를 넘나드는 re-export와 export *, namespace re-export가 바인딩되지 않던 문제, 같은 청크 동적 import가 다시 쓰이지 않아 ERR_MODULE_NOT_FOUND가 나던 문제, 동적 entry 청크의 중복 export 오류, 중첩 namespace re-export 체인 모듈이 과하게 지워지던 문제(#3371) 등 후속 수정도 같은 날 들어왔습니다.

다른 영역에서는 semantic 분석이 사용자 import를 호이스팅된 심볼로 미리 선언하도록 고쳐 export가 import 바인딩을 가리키는 문제를 정리했고(#3312, #3314), class 필드 이름 get/set, 삼항 결과 자리의 반환 타입 있는 화살표 함수, 파생 클래스 매개변수 프로퍼티 변환의 use-after-free(#3320)를 수정했습니다. Flow match 식은 스칼라 패턴과 객체·배열·인스턴스 구조 분해까지 정밀하게 변환하게 됐습니다(#3301, #3304). mangler는 RFC #3288 아래에서 측정과 예약 이름 전파를 이어 가다가, 검증으로 반박된 슬롯 공유 인프라를 제거했습니다(#3342). RN 릴리스 런타임 초기화 순서 보존과 HMR Refresh 심볼 바인딩 보존(#3345, #3365)도 병합됐습니다.

suji는 CEF와 무관한 embed C ABI를 분리한 뒤 iOS·Android 호스트 예제를 만들었습니다. 모바일 크로스 컴파일, suji_core_register_handler와 suji_core_last_error()를 추가하고, Rust·Go·Zig 정적 백엔드와 언어별 예제 구조를 갖춘 다음 iOS 시뮬레이터와 Android 에뮬레이터에서 실제 빌드·구동을 확인하며 결함을 고쳤습니다. Windows dlopen 백엔드는 kernel32를 직접 감싸 지원했습니다. 새벽에는 macOS 서명 모드·공증·.dmg, Windows·Linux 패키징과 release.yml, 기본값이 검증만 하는 SDK 배포 워크플로를 추가하고 CI에서 드러난 비-macOS 빌드 결함을 고쳤습니다.

agent-devtools는 PR 8개를 병합했습니다. agent-browser 0.27의 pushstate·다이얼로그 자동 처리·snapshot URL·cURL 쿠키 가져오기 동기화와 resource-type 필터, Core Web Vitals 측정, init script(#1), React DevTools hook을 넣은 react tree·inspect·renders·suspense 명령(#2), 쿠키·vitals 버그 수정(#3), swipe·키보드·batch·doctor·프로필·안정적 탭 ID(#7), find 로케이터 액션과 CDP 엔드포인트 연결 등 13건의 패리티 보강(#8)입니다. 버전은 0.1.2(#6)와 0.1.3 커밋으로 올렸습니다. 새 저장소 zerolist는 Zig zero-copy 엔진과 RN 모노레포, 가상화 연산 벤치로 시작해, FlatList와 같은 의미의 가상화 엔진과 드롭인 컴포넌트, JSX 슬롯 풀을 네이티브 스크롤과 Zig가 배치하는 구조를 Android 에뮬레이터에서 확인하고 iOS 시뮬레이터로 옮겼습니다. 커밋 메시지대로 측정은 시뮬레이터·에뮬레이터 기준이고 실기기 성능은 검증 전입니다. 블로그 저장소 ohah.github.io의 커밋 21개는 크론 점검 기록과 일일 요약 갱신, tech-stack 제목 오타 수정입니다.

공개 커밋 191개, 해당일 생성 또는 병합된 PR 73개를 정리했습니다. PR 생성 73개·병합 73개는 같은 PR이 양쪽에 포함될 수 있습니다.

커밋

ohah/agent-devtools

ohah/ohah.github.io

ohah/suji

ohah/zerolist

ohah/zntc

PR (해당일 생성/머지)

상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.

저장소PR해당일 활동상태대상 브랜치제목
ohah/agent-devtools#8생성 · 병합mergedmainfeat: agent-browser 패리티 REAL GAP 13건 보강
ohah/agent-devtools#7생성 · 병합mergedmainfeat: agent-browser 패리티 갭 보강 (7개)
ohah/agent-devtools#6생성 · 병합mergedmainchore: bump version to 0.1.2
ohah/agent-devtools#5생성 · 병합mergedmainfix(ci): Windows recvLineAlloc 테스트 컴파일 실패 수정
ohah/agent-devtools#4생성 · 병합mergedmaindocs: 스킬 설명에 0.27 + React 명령 동기화
ohah/agent-devtools#3생성 · 병합mergedmainfix: E2E 검증으로 발견한 cookies/vitals 버그 수정
ohah/agent-devtools#2생성 · 병합mergedmainfeat: React 인트로스펙션 (agent-browser 0.27)
ohah/agent-devtools#1생성 · 병합mergedmainfeat: agent-browser 0.27 동기화 (7개 기능)
ohah/zntc#3371생성 · 병합mergedmainfix(tree-shaker): 중첩 ns re-export 체인 모듈 over-elimination (#3368)
ohah/zntc#3370생성 · 병합mergedmainfeat(linker): ESM wrapper-barrel default import scope-aware member 분석 (정밀 lazy 선행 PR-1)
ohah/zntc#3369생성 · 병합mergedmainfix(bundler): splitting 단일/같은 청크 namespace whole-value 미합성 (#3367)
ohah/zntc#3366생성 · 병합mergedmainfix(bundler): cross-chunk namespace re-export 미바인딩 (#3321 후속)
ohah/zntc#3365생성 · 병합mergedmainRN HMR Refresh 심볼 바인딩 보존
ohah/zntc#3364생성 · 병합mergedmaindocs(bundler): cross-chunk namespace re-export 한계 정밀 규명 + 추적 테스트 (#3321)
ohah/zntc#3363생성 · 병합mergedmainrefactor(bundler): P3-C — dead PR1 레지스트리 코어 제거, 단일 canonical 화 (MF 선행, #3321)
ohah/zntc#3362생성 · 병합mergedmaintest(smoke): 함수참조/비결정 entry 를 값·동작 기반으로 교체 (false-positive DIFF 제거)
ohah/zntc#3361생성 · 병합mergedmaintest(bundler): RSC 디렉티브 × iife/umd-split 회귀 가드 + PR4 잔여 스코프 확정 (#3321)
ohah/zntc#3359생성 · 병합mergedmainfeat(bundler): sideEffects:false 모듈 top-level 멤버대입 member-augment 귀속
ohah/zntc#3358생성 · 병합mergedmainfeat(bundler): IIFE/UMD 동적 로더 CSP nonce 지원 (PR4, #3321)
ohah/zntc#3357생성 · 병합mergedmainfeat(bundler): UMD/AMD code splitting (PR4, #3321)
ohah/zntc#3356생성 · 병합mergedmainrefactor(test): IIFE 드라이버 헬퍼 writeIifeDriver 공용화 (#3321)
ohah/zntc#3355생성 · 병합mergedmainfeat(bundler): IIFE 동적 로더 비-DOM 폴백 (worker/Deno/Node-ESM) (PR4, #3321)
ohah/zntc#3354생성 · 병합mergedmainfix(bundler): export * from cross-chunk re-export 미바인딩 (#3321 후속)
ohah/zntc#3353생성 · 병합mergedmainfix(bundler): same-chunk 동적 import 미재작성 → ERR_MODULE_NOT_FOUND (#3321 후속)
ohah/zntc#3352생성 · 병합mergedmainfix(linker): reserve all-scope 1-char identifiers in Phase A (cross-module shadow)
ohah/zntc#3351생성 · 병합mergedmainfix(bundler): ESM 동적-entry 청크 Duplicate export SyntaxError (PR4, #3321)
ohah/zntc#3350생성 · 병합mergedmainfix(bundler): cross-chunk re-export 심볼 미바인딩 (#3321 후속)
ohah/zntc#3349생성 · 병합mergedmainfeat(bundler): P3-B IIFE code splitting — 런타임 레지스트리 활성화 (#3321)
ohah/zntc#3348생성 · 병합mergedmainperf(runtime): terse TypeError messages in minified private-field helpers
ohah/zntc#3347생성 · 병합mergedmainperf(transformer): compact private-field postfix update in statement context
ohah/zntc#3346생성 · 병합mergedmainfeat(bundler): P3-B CJS code splitting emit 연결 (#3321)
ohah/zntc#3345생성 · 병합mergedmainfix(rn): preserve release runtime initialization order
ohah/zntc#3344생성 · 병합mergedmainfeat(bundler): P3-B 레지스트리 런타임 + 안정 모듈 ID 하위 인프라 (#3321)
ohah/zntc#3343생성 · 병합mergedmainfeat(bundler): preserve-modules + CJS output (P3-A, #3321)
ohah/zntc#3342생성 · 병합mergedmainchore(mangler): remove refuted c2/M2 dead infra (RFC #3288)
ohah/zntc#3341생성 · 병합mergedmaindocs(rfc): CJS/IIFE code splitting (P3) design — integrated with MF registry
ohah/zntc#3340생성 · 병합mergedmaintest(bundler): edge-case hardening for #3321 + document css_names limit
ohah/zntc#3339생성 · 병합mergedmainfeat(mangler): global-freq-rank-aware Phase B slot ordering (RFC #3288 M2 PR-2)
ohah/zntc#3338생성 · 병합mergedmainfeat(mangler): bundle-wide frequency-rank infra for M2 slot-pool sharing (RFC #3288 M2 PR-1)
ohah/zntc#3337생성 · 병합mergedmainfix(bundler): inline @import'd CSS per chunk across split chunks (P0-4)
ohah/zntc#3336생성 · 병합mergedmainfeat(bundler): warn on non-literal dynamic import() specifier (P1)
ohah/zntc#3335생성 · 병합mergedmainfeat(mangler): reference-precise liveness option for top-level slot sharing (RFC #3288 c2 infra)
ohah/zntc#3334생성 · 병합mergedmaindocs(bundler): document literal-only dynamic import policy + minChunkSize
ohah/zntc#3333생성 · 병합mergedmainfeat(bundler): minChunkSize — merge tiny common chunks (P2)
ohah/zntc#3332생성 · 병합mergedmainfix(linker): broadcast namespace-import member sources to per_mod_reserved (RFC #3288)
ohah/zntc#3331생성 · 병합mergedmainfix(bundler): collect CSS through tree-shaken proxy modules (#3330)
ohah/zntc#3329생성 · 병합mergedmainfix(bundler): don't force content hash into chunk CSS names
ohah/zntc#3328생성 · 병합mergedmainfix(linker): broadcast .alias re-export source to per_mod_reserved (RFC #3288 b)
ohah/zntc#3327생성 · 병합mergedmainchore(mangler): collision invariant assert for RFC #3288 (PR a, safety net)
ohah/zntc#3326생성 · 병합mergedmaintest(e2e): runtime CSS <link> injection for dynamic chunks
ohah/zntc#3325생성 · 병합mergedmainfeat(bundler): inject runtime CSS <link> for dynamic chunks
ohah/zntc#3324생성 · 병합mergedmainrefactor(bundler): extract planCssChunks from emitCssChunks
ohah/zntc#3323생성 · 병합mergedmainfeat(bundler): content-hash & css_names pattern for chunk CSS
ohah/zntc#3322생성 · 병합mergedmainfeat(bundler): per-chunk CSS splitting for code splitting
ohah/zntc#3320생성 · 병합mergedmainfix(transformer): use-after-free in derived-class param property lowering (D23)
ohah/zntc#3319생성 · 병합mergedmaindocs(rfc): add Module Federation & 분할 배포 RFC
ohah/zntc#3317생성 · 병합mergedmainfix(parser): typed arrow with return type in ternary consequent (D22)
ohah/zntc#3316생성 · 병합mergedmainfix(parser): class field named get/set with type/optional/definite (D21)
ohah/zntc#3315생성 · 병합mergedmainchore(semantic): clean D20 stale comments + forward value-use guard
ohah/zntc#3314생성 · 병합mergedmainrefactor(semantic): remove D20 read-only side-table (PR-3, Closes #3310)
ohah/zntc#3313생성 · 병합mergedmaintest(semantic): import redeclaration spec-correct guard (D20 PR-2)
ohah/zntc#3312생성 · 병합mergedmainfix(semantic): predeclare user import as hoisted symbol (D20 PR-1)
ohah/zntc#3311생성 · 병합mergedmainfix(semantic): forward export to import binding via read-only side-table (D20)
ohah/zntc#3309생성 · 병합mergedmainfix(transpile): correct default/namespace import specifier layout in auto type-only
ohah/zntc#3308생성 · 병합mergedmainrefactor: transparent type-wrapper 태그를 단일 predicate 로 통합 (#3129)
ohah/zntc#3307생성 · 병합mergedmaindocs(pages): correct buildSync plugin limitation on deployed site
ohah/zntc#3306생성 · 병합mergedmaindocs(plugins): correct plugin status drift vs actual code
ohah/zntc#3305생성 · 병합mergedmainperf(minify): X===null||X===void 0 → X==null nullish fold (rxjs -186B)
ohah/zntc#3304생성 · 병합mergedmainfeat(flow): precise match object/array/instance destructuring + block-body regression fix
ohah/zntc#3303생성 · 병합mergedmainperf(mangler): J-step3a — wrapper-isolated internal 측정 (RFC #3288)
ohah/zntc#3302생성 · 병합mergedmainperf(mangler): J-step2a — Phase A cross-module vs internal 분류 측정 (RFC #3288)
ohah/zntc#3301생성 · 병합mergedmainfeat(flow): precise match expression lowering (scalar patterns)
ohah/zntc#3300생성 · 병합mergedmainperf(minify): shared-ns getter object → arrow __export (zod -930B, G1-step2)