2026-04-24

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

요약 (AI 작성)

zntc는 require.context 마무리부터 했습니다. 매칭 결과를 그래프 의존성이자 tree shaking 루트로 등록하고(#1786), ExpoApp 실행에서 드러난 IIFE 안 raw require와 ctx(req)가 모듈 exports를 돌려주지 않던 문제를 고쳤습니다(#1788, #1840). 전날 SegmentedList로 바꾼 모듈 저장소에서 worker 읽기와 main 추가가 겹치는 경합이 CI에서 드러나 StableSegmentedList로 근본 해결했습니다(#1789, #1790). type-only import 제거는 참조 횟수 기반 첫 구현이 회귀를 내 되돌림 PR까지 열었다가, 참조별 type-context 플래그를 기록하는 방식으로 다시 구현했습니다(#1793, #1796). IIFE 포맷의 해석되지 않은 import는 빌드 에러로 보고합니다(#1792).

ES5 for-of에서 let을 클로저로 잡을 때 본문을 _loop 함수로 빼는 수정과 그 후속(#1798, #1799, #1809, #1813)을 거치며, AST 노드의 태그와 데이터 variant가 어긋나는 문제를 근본적으로 막기로 했습니다. variant 타입 addNode 헬퍼와 debug assertion(#1801), 정적 감사 스크립트와 CI 통합(#1803)을 넣고, 감사에서 나온 불일치를 범주별로 정리해 0으로 만든 뒤 --strict-cosmetic 게이트를 걸었습니다(#1810~#1820). 문서 사이트는 Tauri 톤과 Biome식 정보 구조로 리뉴얼하고(#1800) 랜딩 레이아웃과 Starlight·Tailwind 레이어 충돌을 여러 번 손봤습니다.

후반에는 Rollup 호환 manualChunks를 구현했습니다. 문자열 매칭(#1844), 함수 resolver와 NAPI 브리지(#1845, #1846), dynamic entry 제외 정책(#1851), rolldown과 같은 OutputFile.imports 메타(#1852), meta.getModuleInfo와 동적 import 정보(#1853, #1857, #1858), inlineDynamicImports의 청크 구조 일부(#1859)까지 병합하고 React·RxJS·date-fns 등 실제 라이브러리 스모크를 붙였습니다. 이 밖에 IIFE의 external과 globals 매핑(#1828), import attributes 라운드트립(#1836, #1838), 래핑 모듈 간 init/exports 변수 이름 중복 제거(#1835), JSX에서 spread 뒤 key가 올 때의 react import 주입(#1841), 소문자 JSX 멤버 태그 <ns.Comp/> 해석(#1831)이 들어갔습니다.

bungae는 HMR 때 Metro 스타일 "Refreshing..." 배너와 CLI 출력을 도입하고, 초기 HMR 업데이트 시퀀스를 보내 "Downloading..." 바가 남던 문제를 고쳤으며, EXPO_ROUTER_APP_ROOT를 절대 경로로 넘겼습니다. Expo 폴리필 경고 패치는 넣었다 되돌리기를 반복한 끝에 ZTS 쪽 수정으로 대체해 지웠습니다. cheolsu-proxy는 데스크톱 앱의 프론트엔드 의존성을 최신으로 올리고 Monaco 에디터 테마를 공통화했으며(#334), Tauri mock, CI bun 버전, zustand persist rehydrate 경합 등으로 깨진 테스트를 복구했습니다(#335~#338). ohah.github.io에는 ZTS 개발기 11편부터 14편까지와 4월 1일부터 7일 등의 오늘의 커밋 재작성이 올라왔습니다.

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

커밋

ohah/bungae

ohah/cheolsu-proxy

ohah/ohah.github.io

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/cheolsu-proxy#338생성 · 병합mergedmainfix(desktop): rule 스토어 테스트에서 ruleGetters를 명시적으로 격리
ohah/cheolsu-proxy#337생성 · 병합mergedmainfix(desktop): rule 스토어 테스트 zustand persist rehydrate race 수정
ohah/cheolsu-proxy#336생성 · 병합mergedmainfix(config): CI bun 버전을 1.3.11로 업데이트
ohah/cheolsu-proxy#335생성 · 병합mergedmainfix(desktop): Tauri core mock에 Resource/Channel 추가로 CI 테스트 복구
ohah/cheolsu-proxy#334생성 · 병합mergedmainfeat(desktop): Monaco 에디터 테마 공통화 및 프론트엔드 의존성 최신화
ohah/zntc#1860생성 · 병합mergedmainchore(types): manualChunks stale 주석 정리
ohah/zntc#1859생성 · 병합mergedmainfeat(bundler): inlineDynamicImports — chunk 구조 부분 구현 (A 범위)
ohah/zntc#1858생성 · 병합mergedmainfeat(bundler): manualChunks meta 에 dynamicImporters / dynamicallyImportedIds 추가
ohah/zntc#1857생성 · 병합mergedmainfeat(napi): manualChunks meta.getModuleInfo JS 브리지
ohah/zntc#1856생성closed기능 브랜치: feat/manual-chunks-meta-dynamicfeat(bundler): inlineDynamicImports — chunk 구조 부분 구현 (A 범위)
ohah/zntc#1855생성closed기능 브랜치: feat/manual-chunks-meta-napifeat(bundler): manualChunks meta 에 dynamicImporters / dynamicallyImportedIds 추가
ohah/zntc#1854생성closed기능 브랜치: feat/manual-chunks-meta-paramfeat(napi): manualChunks meta.getModuleInfo JS 브리지
ohah/zntc#1853생성 · 병합mergedmainfeat(bundler): manualChunks(id, meta) Zig 인프라
ohah/zntc#1852생성 · 병합mergedmainfeat(napi): OutputFile.imports — rolldown chunk.imports 완전 호환
ohah/zntc#1851생성 · 병합mergedmainfeat(bundler): manualChunks dynamic entry 제외 정책 (#1848 #1849 회피, 근본수정 #1850)
ohah/zntc#1847생성 · 병합mergedmaintest(napi): manualChunks 스모크 테스트 — 청크 구조 + follow-up 버그 문서화
ohah/zntc#1846생성 · 병합mergedmainfeat(napi): manualChunks JS function bridge (#1027 Phase 2 NAPI)
ohah/zntc#1845생성 · 병합mergedmainfeat(bundler): manualChunks Phase 2 — function resolver 콜백 (#1027)
ohah/zntc#1844생성 · 병합mergedmainfeat(bundler): manualChunks Phase 1 — 사용자 정의 청크 분할 (#1027)
ohah/zntc#1843생성 · 병합mergedmaindocs: import attributes loader override 미지원 정책 (D102)
ohah/zntc#1842생성 · 병합mergedmainfix(ci): zig fmt — lowering_rename_leak.zig
ohah/zntc#1841생성 · 병합mergedmainfix(bundler): inject react synthetic import for JSX key-after-spread
ohah/zntc#1840생성 · 병합mergedmainfix(codegen): require.context ctx(req) returns module exports
ohah/zntc#1839생성 · 병합mergedmaindocs: import attributes 라운드트립 + class expression anonymize 반영
ohah/zntc#1838생성 · 병합mergedmainfeat(parser): export * from 'x' with {...} 라운드트립 (layout 전환)
ohah/zntc#1837생성 · 병합mergedmainfix(transformer): apply block-scoping rename to assignment_target_identifier
ohah/zntc#1836생성 · 병합mergedmainfeat(parser): import attributes 라운드트립 — dynamic + export named
ohah/zntc#1835생성 · 병합mergedmainfix(graph): deduplicate init/exports var names across wrapped modules
ohah/zntc#1834생성 · 병합mergedmainperf(transformer): non-fast-path class expression name 익명화 (#1596)
ohah/zntc#1833생성 · 병합mergedmaindocs(migration): 표 너비/내용 채우기 + 실구현 동기화
ohah/zntc#1832생성 · 병합mergedmainfix(linker): skip ns_member_rewrites when importer scope shadows export
ohah/zntc#1831생성 · 병합mergedmainfix(semantic): resolve lowercase root of JSX member tag (<ns.Comp/>)
ohah/zntc#1830생성 · 병합mergedmaintest(downlevel): #1829 회귀 가드 — const/try-finally/color@4.2.3 패턴
ohah/zntc#1828생성 · 병합mergedmainfeat(bundler): IIFE + external + globals 매핑 지원 (#1824)
ohah/zntc#1827생성 · 병합mergedmainchore(audit): splitTopLevelCommas bug fix + snapshot edge case 확장
ohah/zntc#1826생성 · 병합mergedmainchore(audit): 구조적 dispatcher 자동 검출 — reads over-attribution 대폭 축소 (#1823)
ohah/zntc#1825생성 · 병합mergedmainrefactor(ast): flow_match_expression arm 을 flow_match_arm tag 로 분리 (#1822)
ohah/zntc#1821생성 · 병합mergedmainchore(audit): reader 위치 추적 + Zig @var strip 버그 fix + AST layout snapshot
ohah/zntc#1820생성 · 병합mergedmainchore(ci): #1802 최종 close — --strict-cosmetic CI fail-gate
ohah/zntc#1819생성 · 병합mergedmainrefactor(ast): cosmetic 카테고리 special — layout/parser 세부 정리 (6/1) (#1802)
ohah/zntc#1818생성 · 병합mergedmainrefactor(ast): cosmetic 카테고리 C — list 정규화 (11/17) (#1802)
ohah/zntc#1817생성 · 병합mergedmainchore(audit): data reader scan — codegen 외 transformer/semantic 까지 확장
ohah/zntc#1816생성 · 병합mergedmainrefactor(ast): cosmetic 카테고리 B2 — TS/Flow strip-target empty extras (#1802)
ohah/zntc#1815생성 · 병합mergedmainfix(docs): PR #1812 layer 예약선언 revert + 랜딩 섹션 margin 국지 복원
ohah/zntc#1814생성 · 병합mergedmainfix(test): CSS library smoke 3건 — --format=esm 명시로 IIFE auto-promote 회피
ohah/zntc#1813생성 · 병합mergedmainfix(transformer): for-of + let closure + unlabeled continue → SyntaxError (#1807 후속)
ohah/zntc#1812생성 · 병합mergedmainfix(docs): Starlight 레이어 선언 위치 조정 — Tailwind utilities 가 reset 이기도록
ohah/zntc#1811생성 · 병합mergedmainrefactor(ast): cosmetic 카테고리 B — codegen-read aligned layout (#1802)
ohah/zntc#1810생성 · 병합mergedmainrefactor(ast): cosmetic 카테고리 A — leaf 통일 (27/74) (#1802)
ohah/zntc#1809생성 · 병합mergedmainfix(transformer): for-of + let closure body 가 단일 statement 일 때 block wrapping (#1807)
ohah/zntc#1808생성 · 병합mergedmainfix(docs): 랜딩 전폭 레이아웃 — :has() 대신 head 주입 + PageTitle override
ohah/zntc#1805생성 · 병합mergedmainfix(docs): splash 랜딩 레이아웃 풀폭 해제 + 기본 PageTitle 숨김
ohah/zntc#1804생성 · 병합mergedmainfix(docs): light theme dark-bg 누수 + hero 모바일 센터 정렬
ohah/zntc#1803생성 · 병합mergedmainchore(ci): AST Tag↔variant static audit script + CI 통합 (#1797)
ohah/zntc#1801생성 · 병합mergedmainrefactor(ast): variant-typed addNode helper + debug assertion (#1797 근본 보강)
ohah/zntc#1800생성 · 병합mergedmaindocs: Tauri 톤 + Biome 식 IA 로 문서 사이트 리뉴얼
ohah/zntc#1799생성 · 병합mergedmainfix(transformer): #1797 follow-up — return/typeof sentinel AST layout 수정
ohah/zntc#1798생성 · 병합mergedmainfix(transformer): #1797 for-of + let closure capture — body 를 _loop 함수로 추출
ohah/zntc#1796생성 · 병합mergedmainfix(semantic,transformer,linker): #1791 Phase D 재구현 — per-reference type-context flag
ohah/zntc#1795생성closedmainrevert: #1793 Phase D — semantic reference_count 기반 판정이 불완전, 다수 회귀
ohah/zntc#1794생성 · 병합mergedmaintest(#1791): type-only import elision 회귀 방지 테스트
ohah/zntc#1793생성 · 병합mergedmainfix(transformer): #1791 type-only import binding elision (babel 식 usage scan)
ohah/zntc#1792생성 · 병합mergedmainfix(bundler): #1791 IIFE 포맷 unresolved import build-time 에러 보고
ohah/zntc#1790생성 · 병합mergedmaintest(bundler): StableSegmentedList concurrent reader race-safety 테스트
ohah/zntc#1789생성 · 병합mergedmainfix(bundler): #1779 SegmentedList dynamic_segments race 근본 해결 — StableSegmentedList 도입
ohah/zntc#1788생성 · 병합mergedmainfix(bundler): #1579 Phase 4 follow-up — require.context IIFE 의 raw require 제거
ohah/zntc#1787생성 · 병합mergedmainrefactor(bundler): #1579 Phase 4 post-merge /simplify cleanup
ohah/zntc#1786생성 · 병합mergedmainfeat(bundler): #1579 Phase 4 — require.context matches 를 graph dep + tree-shake root 로 등록