2026-05-05

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

요약 (AI 작성)

zntc는 오전에 전날의 tree-shaking·번들러 성능 작업을 마무리했습니다. 직접 export seed 빠른 경로(#2559), const-materialize 캐시 무효화 범위 축소와 ConstPassPolicy enum 정리(#2561, #2562), 작은 graph 배치에서 스레드 풀 시작 생략(#2565), 소스 디렉터리 핸들 캐시(#2570)가 들어갔고, 벤치마크는 wall 측정과 프로파일 진단을 나누고 resolve·graph read·prepass 단계를 따로 보이게 했으며 xlarge 번들 fixture를 추가했습니다(#2563, #2564, #2568, #2571). 사용자에게 보이는 옵션·플래그·API 문서 누락과 오래된 JSDoc도 일괄 보강했습니다(#2566, #2567).

오후에는 패키지 분리를 11단계로 진행했습니다. @zts/web과 @zts/server 패키지를 비공개로 만들고 zts 자체 빌드로 빌드하게 한 뒤(#2572, #2573), @zts/server에 HMR·WebSocket·watcher를 구현하고(#2574) HMR 클라이언트 런타임, CSS 스캐너, loader, PostCSS, Sass, CSS Modules 파이프라인을 @zts/web으로 옮겼습니다(#2577, #2580, #2582부터 #2585까지). 이후 core의 HMR 채널, CSS 파이프라인 중복, app dev 컨트롤러를 새 패키지로 넘기고(#2587, #2588, #2589) 분리 문서를 썼습니다(#2592). 이 과정에서 ESM 출력에 export * 재export가 빠지던 번들러 버그를 찾아 고쳤고(#2578), CLI·E2E 테스트 전에 새 패키지를 빌드하고 @zts/core 타입 선언을 내보내도록 CI를 손봤습니다(#2586, #2593, #2596).

저녁부터는 @zts/react-native 패키지를 세웠습니다. 서버 프로토콜에 RN HMR 메시지를 추가하고(#2598) RN 런타임과 Metro HMR 어댑터, asset·babel·codegen·require-context 플러그인 팩토리, RN preset을 만든 뒤(#2600부터 #2603까지) zts bundle --platform=react-native를 연결했습니다(#2604). 이어 RN dev server를 HTTP 기본 라우트, asset, bundle·map 라우트와 sourcemap 캐시, HMR 연결, symbolicate, cli-server-api·dev-middleware 연동, 터미널 단축키, 단일 WS upgrade 체인 순서로 쌓고(#2606부터 #2614까지) zts dev --platform=react-native로 묶었습니다(#2615). 예제 앱은 examples/react-native-bare(RN 0.85)와 examples/react-native-expo(Expo 55, RN 0.83)로 옮겼고, RN dev server 가이드(#2618), 테스트 범위 점검과 버그 수정, bungae와 같은 index 페이지와 HMR 수신 처리(#2621), zts.config.ts의 RN 영역 인식과 Metro 스타일 터미널 UI(#2625, #2626), babel 플러그인을 프로젝트 기준으로 찾도록 한 수정(#2627)이 이어졌습니다. 이날 열린 oxfmt 0.48 업그레이드 #2628와 zts.config.ts의 transformer·serializer·server 영역 매핑 #2630은 5월 6일에 병합됐습니다.

블로그 저장소 ohah.github.io의 커밋 14개는 크론의 CRON_CRD_WRITE.md 점검 기록 13개와 요약 추가 1개입니다.

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

커밋

ohah/ohah.github.io

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#2630생성mergedmainfeat(react-native): zts.config.ts 의 transformer/serializer/server 영역 매핑 (#2605 audit)
ohah/zntc#2629생성 · 병합mergedmainchore(examples): @babel/preset-typescript devDep 추가 (RN 0.85 bare)
ohah/zntc#2628생성mergedmainchore: upgrade oxfmt 0.47 → 0.48 + enable singleQuote
ohah/zntc#2627생성 · 병합mergedmainfix(react-native): babel plugin resolve 를 project 기준 require 로 (#2605 audit)
ohah/zntc#2626생성 · 병합mergedmainfeat(react-native): terminal UI — banner + Metro-style logs (#2605 audit)
ohah/zntc#2625생성 · 병합mergedmainfeat(core): runRnDev 가 zts.config.ts 의 RN 영역 인식 (#2605 audit)
ohah/zntc#2624생성 · 병합mergedmainchore(examples): 누락된 babel devDeps 추가 (#2605 audit)
ohah/zntc#2623생성 · 병합mergedmainchore(examples): build:zts:core 에 @zts/server + @zts/react-native 체인
ohah/zntc#2622생성 · 병합mergedmainfix(core): RN dev start:zts ENOTDIR + entry routing (#2605)
ohah/zntc#2621생성 · 병합mergedmainfeat(react-native, server): bungae parity — index page + HMR incoming handlers
ohah/zntc#2620생성 · 병합mergedmainchore(examples): build:zts:core 스크립트 추가 (RN expo + bare)
ohah/zntc#2619생성 · 병합mergedmainchore(react-native): #2605 epic test coverage audit + 2 bug fixes
ohah/zntc#2618생성 · 병합mergedmaindocs(documents): RN dev server 가이드 (Closes #2605)
ohah/zntc#2617생성 · 병합mergedmainchore(examples): move ExpoApp → examples/react-native-expo (Expo 55 / RN 0.83)
ohah/zntc#2616생성 · 병합mergedmainchore(examples): move ExampleApp → examples/react-native-bare (RN 0.85)
ohah/zntc#2615생성 · 병합mergedmainfeat(core): zts dev --platform=react-native dispatch (#2605 PR #J)
ohah/zntc#2614생성 · 병합mergedmainfeat(react-native): serveRn entry + 단일 WS upgrade chain
ohah/zntc#2613생성 · 병합mergedmainfeat(react-native): terminal actions (r/d/?/c/i/a/j 키보드)
ohah/zntc#2612생성 · 병합mergedmainfeat(react-native): cli-server-api + dev-middleware lazy integration
ohah/zntc#2611생성 · 병합mergedmainfeat(react-native): symbolicate endpoint + customizeFrame hook
ohah/zntc#2610생성 · 병합mergedmainfeat(react-native): HMR bridge — HmrChannel + watchRn 연결
ohah/zntc#2609생성 · 병합mergedmainfeat(react-native): bundle/map routes + per-platform state + lazy sourcemap cache
ohah/zntc#2608생성 · 병합mergedmainfeat(react-native): asset registry handler + /assets/*
ohah/zntc#2607생성 · 병합mergedmainfeat(react-native): HTTP server bootstrap + base routes (status/reload/devmenu/open-url)
ohah/zntc#2606생성 · 병합mergedmainfeat(react-native): scaffold dev-server module + RnDevServerOptions
ohah/zntc#2604생성 · 병합mergedmainfeat(core): zts bundle --platform=react-native dispatch (lazy import @zts/react-native)
ohah/zntc#2603생성 · 병합mergedmainfeat(react-native): RN preset (buildRnBundleOptions / bundleRn / watchRn)
ohah/zntc#2602생성 · 병합mergedmainfeat(react-native): plugin factories (asset/babel/codegen/require-context/metro-resolve-request)
ohah/zntc#2601생성 · 병합mergedmainfeat(react-native): Metro HMR adapter on @zts/server.HmrChannel
ohah/zntc#2600생성 · 병합mergedmainfeat(react-native): RN runtime (zts-hmr-client.js) + runtime-loader
ohah/zntc#2599생성 · 병합mergedmainfeat(react-native): rn-constants and metro-resolver-types
ohah/zntc#2598생성 · 병합mergedmainfeat(packages): scaffold @zts/react-native + extend server protocol with HMR_RN_MSG
ohah/zntc#2597생성 · 병합mergedmainci: trigger Integration & E2E on workflow + setup-zts changes
ohah/zntc#2596생성 · 병합mergedmainfix(ci): build @zts/web + @zts/server before E2E tests
ohah/zntc#2595생성 · 병합mergedmainci(packages): remove redundant vite-plugin-zts grep guard
ohah/zntc#2594생성 · 병합mergedmainchore(packages): apply /simplify follow-ups for #2539 PR #7-#10
ohah/zntc#2593생성 · 병합mergedmainfix(ci): emit @zts/core dts so @zts/web tsc can resolve imports
ohah/zntc#2592생성 · 병합mergedmaindocs(packages): document @zts/web + @zts/server split
ohah/zntc#2591생성 · 병합mergedmainci(packages): verify vite-plugin-zts integrity post-split
ohah/zntc#2590생성 · 병합mergedmainchore(packages): rebalance optional CSS deps + expose @zts/server watcher
ohah/zntc#2589생성 · 병합mergedmainrefactor(core,web): cut over createAppDevController + plumbing to @zts/web
ohah/zntc#2588생성 · 병합mergedmainrefactor(core): cut over CSS pipeline duplicates from zts.mjs to @zts/web
ohah/zntc#2587생성 · 병합mergedmainrefactor(core,web): cut over HMR channel + WS frame to @zts/server
ohah/zntc#2586생성 · 병합mergedmainfix(ci): build @zts/web + @zts/server before CLI tests
ohah/zntc#2585생성 · 병합mergedmainfeat(web): extract css-modules.ts pipeline to @zts/web/src/style/
ohah/zntc#2584생성 · 병합mergedmainfeat(web): extract sass.ts + requireFromAppRoot helper (5d/5e)
ohah/zntc#2583생성 · 병합mergedmainfeat(web): extract postcss.ts + url.ts (5c/5e)
ohah/zntc#2582생성 · 병합mergedmainfeat(web): extract loader.ts (requireFromAppOrFallback + collectAppFiles) (5b/5e)
ohah/zntc#2581생성 · 병합mergedmainchore: /simplify follow-ups for #2578 / #2580
ohah/zntc#2580생성 · 병합mergedmainfeat(web): extract css-parser.ts (low-level CSS scanner) (5a/5e)
ohah/zntc#2579생성 · 병합mergedmainchore(packages): restore @zts/server private + zts self-build (post #2576)
ohah/zntc#2578생성 · 병합mergedmainfix(bundler): emit export * re-export in ESM output (#2576)
ohah/zntc#2577생성 · 병합mergedmainrefactor(web): extract APP_DEV_HMR_CLIENT runtime to @zts/web (4/11)
ohah/zntc#2574생성 · 병합mergedmainfeat(server): full implementation of @zts/server (3/11)
ohah/zntc#2573생성 · 병합mergedmainchore(web,server): adopt zts self-build (dogfooding) (2/11)
ohah/zntc#2572생성 · 병합mergedmainfeat(packages): scaffold @zts/web and @zts/server private (1/11)
ohah/zntc#2571생성 · 병합mergedmainperf(benchmark): add xlarge bundle fixture
ohah/zntc#2570생성 · 병합mergedmainperf(bundler): cache source directory handles
ohah/zntc#2568생성 · 병합mergedmainperf(benchmark): split graph read and prepass profile phases
ohah/zntc#2567생성 · 병합mergedmaindocs(core): refresh stale JSDoc on CompilerOptions / cssProp / phaseDurations
ohah/zntc#2566생성 · 병합mergedmaindocs(audit): 사용자 표면 옵션/플래그/API 문서 누락 일괄 보강
ohah/zntc#2565생성 · 병합mergedmainperf(bundler): avoid pool startup for tiny graph batches
ohah/zntc#2564생성 · 병합mergedmainperf(benchmark): resolve 하위 프로파일 노출
ohah/zntc#2563생성 · 병합mergedmainperf(benchmark): ZTS wall 측정과 profile 진단 분리
ohah/zntc#2562생성 · 병합mergedmainrefactor(bundler): collapse paired const-materialize booleans into ConstPassPolicy enum
ohah/zntc#2561생성 · 병합mergedmainrefactor(bundler): /simplify R2 — narrow const-materialize cache invalidation + dedup postpass guards
ohah/zntc#2560생성 · 병합mergedmainrefactor: /simplify follow-up — dedupe tree-shaker + benchmark helpers
ohah/zntc#2559생성 · 병합mergedmainperf(tree-shake): direct export seed fast-path 추가