2026-05-08
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
zntc는 전날 열린 RN의 기본 Babel 변환 패스 회피 수정(#2700)을 병합하고, init 오버레이 병합 때 의도치 않게 되돌려진 parse_arena heap 포인터 전환과 dev_mode 증분 재빌드 최적화를 다시 적용했습니다(#2701). 이어 unwrapNapi 제네릭 헬퍼로 NAPI 언랩 반복 코드를 합치고(#2702), playground에서 codeSplitting·preserveModules를 켜면 형식을 ESM으로 자동 전환하게 했으며(#2703), import scanner의 호출식 처리를 callee 태그별 분기로 바꿨습니다(#2704).
플러그인 쪽은 실패를 diagnostic으로 드러내고(#2705), 플러그인 transform이 낸 sourcemap을 최종 sourcemap에 합성하며(#2706), buildSync에서 동기 JS 플러그인을 지원하게 했습니다(#2708). 그 뒤 TLS 채널을 HookContext out-param으로 바꾸고, async·sync dispatcher를 generator로 합쳐 lifecycle 채널을 하나로 줄였으며, NapiPlugin·NapiSyncPlugin의 hook별 어댑터를 comptime 제네릭으로 통합했습니다(#2709, #2710, #2712). RN dev server 터미널은 bungae와 같은 로고 배너·단축키 표·핫키 피드백을 갖추고 v 키로 콘솔 로그를 켜고 끌 수 있게 됐고(#2707), RN HMR 로딩 토스트도 고쳤습니다(#2711).
semantic에서는 catch 블록 안 함수 재선언 검사(#2714)를 main에 병합했습니다. 그 위에 쌓은 계산된 constructor 키 제외, 계산된 중복 __proto__ 키 무시, test262 실패 시 CI를 실패시키는 PR(#2715, #2716, #2717)은 각각 아래 PR의 브랜치로 병합됐습니다. 이 과정에서 중첩 블록 함수 선언이 rename과 어긋나 ReferenceError가 나던 회귀를 var_scope 심볼을 블록 스코프에 alias로 등록해 고쳤고, 중첩 블록 함수를 올바른 종류로 미리 선언하도록 했습니다(#2719).
오후부터 밤까지는 거대한 테스트 파일을 쪼개는 작업이 이어졌습니다. core와 CLI 테스트 스위트를 나눈 #2718을 시작으로 app builder, watch, HMR, 플러그인, sourcemap, browserslist, 옵션 조합, vite 플러그인, 공통 헬퍼 등과 CLI의 bundle·tsconfig·config·dev server·transpile·serve 테스트를 주제별 파일로 옮기는 PR을 한 시간에 몇 개씩 병합했습니다(#2720부터 #2772까지). 그 사이에 연 test262의 OS별 차이 추적용 #2724는 닫았고, 마지막 #2773은 이날 열려 5월 9일에 병합됐습니다. 블로그 저장소 ohah.github.io의 커밋 16개는 크론의 CRON_CRD_WRITE.md 점검 기록 15개와 요약 추가 1개입니다.
공개 커밋 98개, 해당일 생성 또는 병합된 PR 74개를 정리했습니다. PR 생성 73개·병합 72개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/ohah.github.io
- cron: verify all .mdx files - no spelling errors found (2026-05-09 07:00 KST)
- chore: mark final completion status in CRON_CRD_WRITE.md (all files already checked)
- cron: mark 2026-05-09 03:00 run as complete
- Cron CRD_WRITE.md: Final status - CRON_CRD_WRITE.md verified, no spelling errors (2026-05-09 00:30 KST)
- docs: today-commit/2026-05-08 AI summary
- docs: cron check - verify CRON_CRD_WRITE.md spelling (2026-05-09 00:00 KST)
- CRON: Final status - no remaining .mdx files to check (2026-05-08 23:00 KST)
- cron: mark final completion status (all .mdx verified)
- cron: mark final verification entry at 2026-05-08 21:30 KST
- cron: mark final verification run as complete (2026-05-08 15:30 KST)
- cron: mark 2026-05-08 15:00 KST task as complete — all .mdx files already verified
- Cron task completed — no remaining .mdx files to check (2026-05-08 14:30 KST)
- cron: mark completed for 2026-05-08 13:30 KST
- chore: update CRON_CRD_WRITE.md status (2026-05-08 11:00 KST)
- CRON_CRD_WRITE.md: Cron task completed - all mdx files already verified (2026-05-08 10:30 KST)
- docs: cron task completed - all mdx files verified (2026-05-08 10:00 KST)
ohah/zntc
- test(cli): split app builder style tests
- test(core): split hmr perf tests
- test(core): split watch sourcemap tests
- test(core): split option combination tests
- test(core): split runtime shadowing tests
- test(core): split watch plugin order tests
- test(core): split react refresh tests
- test(cli): split preview basic tests
- test(core): split build result module code tests
- test(core): split hmr incremental graph tests
- test(core): split build plugin lifecycle tests
- test(core): split browserslist build tests
- test(cli): split app build html asset tests
- test(core): split real library tests
- test(core): split vite plugin loader tests
- test(cli): split serve tests
- test(cli): split format tests
- test(cli): split config function tests
- test(cli): split env tests
- test(cli): split watch tests
- test(cli): split transpile tests
- test(cli): split app dev server tests
- test(cli): split app dev hmr tests
- test(cli): split config tests
- test(cli): split RN dev input tests
- test(cli): split app builder style tests
- test(cli): split tsconfig tests
- test(cli): split bundle tests
- test(core): split output hook tests
- test(core): split build options batch e tests
- test(core): split advanced plugin tests
- test(core): split shared test helpers
- test(core): split edge combination tests
- test(core): split core api tests
- test(core): split vite hook return tests
- test(core): split edge case tests
- test(core): split build options exposure tests
- test(core): split plugin sourcemap tests
- test(core): split plugin onload loader tests
- test(core): split watch sourcemap basic tests
- test(core): split define alias tests
- test(core): split watch sourcemap rebuild tests
- test(core): split watch update tests
- test(core): split option combination tests
- test(core): split runtime auto polyfill tests
- test(core): split build sync tests
- test(core): split watch lifecycle tests
- test(core): split hmr perf tests
- test(core): split build plugin tests
- test(core): split vite plugin adapter tests
- test(core): split browserslist runtime polyfill tests
- test(core): split large app builder and watch tests
- fix(test/core): add missing type imports for split test files
- test(core): split core and CLI test suites
- fix(semantic): predeclare nested-block function with correct kind
- refactor(semantic): drop unused matchKeyName helper
- refactor(transformer/ast): isConstructorKey identifier fast path + dedup directStaticKeyName
- fix(semantic): alias var_scope function predeclare into block scope
- refactor(emitter): unify addModuleMappings traced/identity paths + struct args
- refactor(plugin): NapiPlugin/NapiSyncPlugin per-hook adapter 통합 — comptime generic
- refactor(rn-hmr-client): /simplify — cleanup on socket close + DLV cache
- chore(fmt): re-apply oxfmt to RN HMR loading toast 변경
- refactor(plugin): unify async/sync dispatcher via generator + drop lifecycle dual channel
- refactor(plugin): replace TLS plugin failure/sourcemap channels with HookContext out-param
- refactor(plugin): use @tagName for HookType → string switch
- fix(buildSync): support sync JS plugins
- refactor(plugin): unify response cleanup and drop dead validation
- fix(sourcemap): chain plugin transform maps
- feat(rn): dev-server 터미널 UI bungae 정합 + 콘솔 로그 v 토글
- refactor(plugin): collapse close-bundle dual channel and dedupe diag fallback
- fix(plugin): surface plugin failures as diagnostics
- perf(import-scanner): drop redundant hasExtra(e, 0) guard
- perf(import-scanner): dispatch call expressions by callee tag
- refactor(playground): 옵션 A → 옵션 B 전환 — toggle disabled + tooltip
- refactor(playground): ESM_ONLY_KEYS set 으로 추출 — 향후 옵션 추가 확장
- fix(playground): bundler codeSplitting/preserveModules 토글 시 format 자동 ESM
- refactor(napi): generic unwrapNapi(T, env, value) helper — napi_unwrap boilerplate 통합
- style(react-native): oxfmt — asset.ts import / chained call 한 줄로
- refactor(react-native): SVG component transformer + normalizeExt 단일 출처
- test(emit): skip_bundle_output 검증 — output 모듈 미포함 + module_codes 수집 + fallback 가드
- perf(emit): dev_mode incremental rebuild 의 풀 bundle output skip — HMR wall 113→89ms (-21%)
- fix(module): parse_arena 를 heap ptr 로 전환 — store 왕복 시 dangling BufNode panic 근본수정 (#2694)
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.