2026-04-13

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

요약 (AI 작성)

zntc의 worklet 변환은 Babel 플러그인과의 parity를 마무리했습니다. 파일 단위 'worklet' directive(#1181), implicit context·globals·CJS dehoist를 담은 Phase 6 마지막 묶음(#1184)에 이어 __classFactory로 parity 테스트 169개를 모두 통과했고(#1185), context object factory와 플러그인이 바꾼 클래스의 ES5 lowering, Babel식 익명 이름을 넣었습니다(#1187, #1188). 실제 앱에서 드러난 문제로는 사용자 react-native-worklets 버전을 __pluginVersion에 넣기(#1186), worklet 본문 안 --define 치환 억제(#1194), object hook 프로퍼티 자동 worklet화(#1202), __stackDetails 형식과 __initData.code의 shorthand 구조 분해(#1203, #1205)가 있었고, 빈 sourceMap 필드가 UI 런타임 초기화를 깨뜨려 다시 뺐습니다(#1206). 드래그 제스처 실패의 근본 원인은 package.json sideEffects 설정이 자동 순수성 판정에 덮이던 tree shaking 문제였습니다(#1207).

구조 면에서는 AST 플러그인에 Babel식 visitor hook을 도입하고(#1182), worklet과 refresh의 런타임 상태를 PluginState로 분리해 그 규칙을 D097로 기록했으며(#1196~#1199), 클로저 분석 캐시를 하나로 합쳤습니다(#1213). dev 서버에는 빌드 이벤트를 흘리는 SSE 엔드포인트(#1216), /reset-cache Control API(#1217), LLM 에이전트용 MCP JSON-RPC 서버(#1218), graceful shutdown(#1222)이 붙었습니다. HMR 성능 이슈 #1223에 대응해 이벤트 기반 watcher와 50ms debounce, 내용 해시 캐시, 재파싱 모듈 목록과 단계별 소요 시간 노출을 병합했습니다(#1227, #1231, #1232).

소스맵은 Metro 호환 x_facebook_sources function map 수집과 RN 프리셋 자동 활성화(#1251, #1252), HMR용 모듈별 독립 소스맵(#1253), 폴리필을 소스로 등록하는 prologue 매핑 수정(#1225)이 들어왔습니다. 이 밖에 "use client"/"use server" directive 보존과 다중 엔트리 CLI(#1242), import attributes 등 AST 스키마 보강(#1246), ES2022 미만 private field 다운레벨링(#1254), direct eval/with 스코프의 mangling 차단(#1263), dynamic import 대상 모듈의 export 보존(#1264), Windows NAPI 링크(#1255)가 병합됐습니다. CLI 레퍼런스와 가이드, 루트 ROADMAP을 현재 구현에 맞춰 갱신하고 Babel 이관 가이드를 썼습니다(#1234, #1238~#1241). compat-table 기반 생성기(#1268)와 browserslist 지원(#1269)은 이날 PR이 열렸습니다.

bungae는 예제 앱에 worklet 전 단계 데모와 Reanimated 데모 다섯 개, ScrollView 안에서도 동작하는 독립 DragDemo를 넣고, 설치된 react-native-worklets 버전을 감지해 __pluginVersion에 넘기도록 했습니다. 위 zntc 수정을 따라 서브모듈을 여러 번 올렸고, iOS 26 iPad에서 전체 화면을 강제하는 설정을 다시 손봤습니다.

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

커밋

ohah/bungae

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#1269생성mergedmainfix(bundle): __async 중복 emit + feat(compat): browserslist 지원
ohah/zntc#1268생성mergedmainfeat(compat): kangax compat-table 기반 생성기 추가 + tree-shake 크기 벤치
ohah/zntc#1266생성 · 병합mergedmaintest: #1259 #1262 회귀 방지 커버리지 (재현 시 이미 정상 동작)
ohah/zntc#1265생성 · 병합mergedmainfix(shared): ES_TARGET_BITS off-by-one — hashbang/using 비트 정정
ohah/zntc#1264생성 · 병합mergedmainfix(tree-shaker): dynamic import target 모듈 + export 보존 (#1260, #1261)
ohah/zntc#1263생성 · 병합mergedmainfix(mangler): direct eval/with 스코프 바인딩 mangling 차단 (#1258)
ohah/zntc#1257생성 · 병합mergedmainfix(transformer): preserve labels on lowered for-of in ES5 downlevel
ohah/zntc#1256생성 · 병합mergedmainfix(transformer): wrap class expression with private methods in IIFE
ohah/zntc#1255생성 · 병합mergedmainfix(napi): link Windows import library from node-api def files
ohah/zntc#1254생성 · 병합mergedmainfix(transformer): downlevel class private fields below ES2022
ohah/zntc#1253생성 · 병합mergedmainfeat(hmr): per-module standalone sourcemap in WatchRebuildEvent (#1248)
ohah/zntc#1252생성 · 병합mergedmainfeat(bundler): Metro x_facebook_sources per-source function maps + RN preset
ohah/zntc#1251생성 · 병합mergedmainfeat(codegen): Metro x_facebook_sources function map — contextual name 수집
ohah/zntc#1250생성closedmainfeat(sourcemap): Metro-compatible FunctionMap VLQ encoder
ohah/zntc#1249생성 · 병합mergedmaindocs: estree 어댑터 도입 토론 문서
ohah/zntc#1246생성 · 병합mergedmainfeat(ast): preserve import attributes / import defer-source / TS type param modifiers
ohah/zntc#1245생성 · 병합mergedmaindocs: AST 신규 노드 체크리스트 + WASM 플러그인 호스트 토론 문서
ohah/zntc#1244생성 · 병합mergedmainfeat(playground): expose all transpile options
ohah/zntc#1243생성 · 병합mergedmainfix(devserver): SSE broadcast TCP flush via SseSink wrapper
ohah/zntc#1242생성 · 병합mergedmainfeat(rsc): preserve "use client"/"use server" directives + multi-entry CLI
ohah/zntc#1241생성 · 병합mergedmaindocs(guides): 가이드를 현재 구현 스펙에 맞게 동기화
ohah/zntc#1240생성 · 병합mergedmaindocs(guides): 미니파이 세분화/엔진 타겟/포맷 5종 등 현재 스펙 동기화
ohah/zntc#1239생성 · 병합mergedmaindocs(cli): 현재 CLI 스펙에 맞게 reference/cli.md 전면 갱신
ohah/zntc#1238생성 · 병합mergedmaindocs(roadmap): 루트 ROADMAP.md 전면 동기화
ohah/zntc#1237생성 · 병합mergedmaindocs(roadmap): mark decorator/static-block/accessor as completed
ohah/zntc#1236생성 · 병합mergedmainrefactor(server): TrackedFileSet — watcher + content-hash 캡슐화 (#1229 Part 2)
ohah/zntc#1235생성 · 병합mergedmainrefactor(util): extract util/wyhash.zig helpers (#1229 Part 1)
ohah/zntc#1234생성 · 병합mergedmaindocs: Babel → ZTS migration guide (KO + EN)
ohah/zntc#1233생성 · 병합mergedmaintest(watch): #1223 커버리지 보강 + content hash 한도 RN 대응 (256MB)
ohah/zntc#1232생성 · 병합mergedmainfeat(watch): expose reparsedModules + incremental-cache initial build (#1223 Phase 2)
ohah/zntc#1231생성 · 병합mergedmainfeat(watch): event-based watcher + 50ms debounce + content hash (#1223 Phase 1)
ohah/zntc#1230생성closed기능 브랜치: feat/1223-phase1-watcherfeat(watch): expose reparsedModules + incremental-cache initial build (#1223 Phase 2)
ohah/zntc#1228생성closed기능 브랜치: feat/1223-phase3-observabilityfeat(watch): event-based watcher + 50ms debounce + content hash (#1223 Phase 1)
ohah/zntc#1227생성 · 병합mergedmainfeat(watch): expose phaseDurations on WatchRebuildEvent (#1223 Phase 3)
ohah/zntc#1226생성 · 병합mergedmaindocs: SSE/Control API/MCP 가이드 + EN 누락 페이지 추가
ohah/zntc#1225생성 · 병합mergedmainfix(sourcemap): register polyfills as sources + correct prologue mappings
ohah/zntc#1224생성 · 병합mergedmaintest(server): Bun-based integration tests for SSE/Control API/MCP
ohah/zntc#1222생성 · 병합mergedmainfeat(server): graceful shutdown() API for DevServer
ohah/zntc#1219생성 · 병합mergedmainrefactor(server): /simplify fixes + 11 unit tests for SSE/MCP
ohah/zntc#1218생성 · 병합mergedmainfeat(server): MCP (Model Context Protocol) JSON-RPC server
ohah/zntc#1217생성 · 병합mergedmainfeat(server): Control API — /reset-cache endpoint
ohah/zntc#1216생성 · 병합mergedmainfeat(server): SSE endpoint + lifecycle event broadcasting
ohah/zntc#1215생성 · 병합mergedmainrefactor(transformer): guard closure cache by function node_idx
ohah/zntc#1214생성 · 병합mergedmainfix(benchmark): Windows 경로 이스케이프 + .exe 확장자
ohah/zntc#1213생성 · 병합mergedmainrefactor(transformer): unify closure analysis via ctx-owned cache
ohah/zntc#1212생성 · 병합mergedmainfix(bundler): drop var in ESM-wrap synthetic binding assignment
ohah/zntc#1211생성 · 병합mergedmainchore(codegen): unify export default ns-var branch style
ohah/zntc#1210생성 · 병합mergedmainfix(codegen): assign ns var for export default of namespace import
ohah/zntc#1207생성 · 병합mergedmainfix(tree-shake): lock package.json sideEffects from auto-purity override
ohah/zntc#1206생성 · 병합mergedmainfix(worklet): drop empty sourceMap field — causes Reanimated UI Runtime init failure
ohah/zntc#1205생성 · 병합mergedmainfix(worklet): shorthand destructuring + sourceMap field in __initData.code
ohah/zntc#1204생성 · 병합mergedmainrefactor(test): extract Worklet tests into worklet_test.zig
ohah/zntc#1203생성 · 병합mergedmainfix(worklet): emit __stackDetails with global.Error() to match Babel plugin
ohah/zntc#1202생성 · 병합mergedmainfeat(worklet): auto-workletize object-hook property values + parity with Babel plugin
ohah/zntc#1201생성 · 병합mergedmainfix(bundler): avoid duplicate init call for CJS side-effect import
ohah/zntc#1200생성 · 병합mergedmainfix(bundler): emit init call for side-effect-only import to ESM module
ohah/zntc#1199생성 · 병합mergedmainrefactor(transformer): extract visitWithRefreshSuppressed neutral API
ohah/zntc#1198생성 · 병합mergedmaindocs(decisions): D097 — PluginState 구조체 분리 규칙 기록 (Phase 1c)
ohah/zntc#1197생성 · 병합mergedmainrefactor(transformer): move refresh state into PluginState.refresh (Phase 1b)
ohah/zntc#1196생성 · 병합mergedmainrefactor(transformer): move worklet state into PluginState.worklet
ohah/zntc#1194생성 · 병합mergedmainfix(worklet): suppress --define substitution inside worklet bodies
ohah/zntc#1192생성 · 병합mergedmainfix(worklet): arrow ExpressionBody의 implicit return을 __initData.code에 보존
ohah/zntc#1189생성 · 병합mergedmainfix(worklet): suppress Fast Refresh reg inside factory IIFE
ohah/zntc#1188생성 · 병합mergedmainfeat(worklet): ES5 lowering for plugin-replaced classes + Babel-style anon names
ohah/zntc#1187생성 · 병합mergedmainfeat(worklet): functional context + class factory bodies
ohah/zntc#1186생성 · 병합mergedmainfix(worklet): inject user's react-native-worklets version into __pluginVersion
ohah/zntc#1185생성 · 병합mergedmainfeat(worklet): Phase 5 __classFactory — 169/169 parity tests pass
ohah/zntc#1184생성 · 병합mergedmainfeat(worklet): Phase 6 final batch — implicit context + globals + CJS dehoist
ohah/zntc#1183생성 · 병합mergedmaintest(worklet): activate export form file-workletization tests
ohah/zntc#1182생성 · 병합mergedmainrefactor(plugin): Babel-style visitor hooks for AST plugins
ohah/zntc#1181생성 · 병합mergedmainfeat(worklet): file-level 'worklet' directive (Phase 6.4 basic)