2026-04-17

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

요약 (AI 작성)

zntc는 진단과 옵션 전달 구조를 다듬는 것으로 시작했습니다. 재선언·참조 에러가 원래 선언이나 정의 위치를 보조 라벨로 가리키게 하고(#1439, #1440), 모든 진단에 수정 힌트와 문서 URL을 붙였습니다(#1441, #1442). WASM/NAPI 진입점이 옵션을 필드별 인자로 받던 구조를 JSON 페이로드로 바꾸고(#1445), comptime reflection으로 TranspileOptions JSON 스키마를 생성해 $schema 자동 완성이 되는 zts.config.json 자동 로드를 붙였으며(#1446, #1447), Zig와 TS 옵션 필드의 동기화를 테스트로 검증합니다(#1448). JS 플러그인 실행은 subprocess 경로를 없애고 NAPI로 단일화했습니다(#1450).

안정성 항목으로 Chrome DevTools 소스맵 E2E, watch/serve 150회 연속 재빌드 메모리 스트레스, vite-plugin-zts로 만든 Vite 앱의 브라우저 실행 E2E를 추가했습니다(#1451~#1453). 설계 문서는 docs/로 옮기고 README를 갱신했으며(#1449), ISSUES.md의 미해결 항목은 GitHub Issues로 넘겼습니다(#1458). ESM+Node 출력에 CJS 래퍼가 있으면 createRequire shim을 넣고(#1459), rest 파라미터를 함수 스코프에 등록하지 않던 버그(#1460)를 계기로 binding 위치의 rest를 rest_element 태그로 통일하고 walker들을 새 헬퍼로 옮겼습니다(#1461, #1463, #1466).

나머지는 다운레벨링 엣지 케이스 정리였습니다. 엣지 케이스 테스트 83건을 추가하면서 정규식 \k<name> 변환을 고쳤고(#1474), delete obj?.a?.b가 실제로 지우지 않던 문제(#1476), const enum 멤버 참조 인라인(#1477), named group 제거 시 String.replace의 $<name> 변환(#1478), ES5 클래스의 parameter property(#1479)를 바로잡았습니다. private field는 static 복합 대입, ??= 같은 논리 대입, **=, 대입식 반환값, 구조 분해 대상, optional chain 읽기, for-of/for-in 바인딩, 파생 클래스의 super() 뒤 초기화, new this.#priv.method()까지 연달아 고쳤습니다(#1482, #1484, #1487, #1489, #1490, #1493, #1494, #1496, #1518). generator의 yield* 대입과 레이블 없는 break/continue(#1498, #1499), 계산된 키 객체의 getter/setter 누락(#1501), ES5 타깃에서 Stage 3 데코레이터가 조용히 사라지던 문제와 MobX 회귀 테스트(#1503, #1504), 다른 모듈에서 import한 데코레이터가 tree shaking으로 빠지던 문제(#1505), ES5 클래스 멤버 주석 위치(#1515, #1517)도 이날 병합됐습니다.

ohah.github.io에는 맞춤법 크론이 수정 없이 상태 파일만 갱신한 커밋 25개가 남았습니다.

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

커밋

ohah/ohah.github.io

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#1521생성 · 병합mergedmainrefactor(transformer): buildSetterMethod 공용 추출 + "value" param 표준화 (#1510 item3)
ohah/zntc#1520생성 · 병합mergedmainrefactor(transformer): super(...args) constructor shell 빌더 공용 추출 (#1510 item2)
ohah/zntc#1519생성 · 병합mergedmainrefactor(transformer): class_decorator splice helpers 공용 추출 (#1510 item1)
ohah/zntc#1518생성 · 병합mergedmainfix(transformer): new this.#priv.method() ES5 private field lowering (#1507)
ohah/zntc#1517생성 · 병합mergedmainfix(codegen): ES5 accessor/private method lowering 멤버 주석 위치 이상 (#1516)
ohah/zntc#1515생성 · 병합mergedmainfix(codegen): ES5 class lowering 멤버 주석이 X.prototype.메서드 사이에 삽입 (#1508)
ohah/zntc#1509생성 · 병합mergedmainrefactor: MethodFlags 중앙화 + 긴 key name truncation 방지 + Stage3 accessor private_field_expression 통일
ohah/zntc#1506생성 · 병합mergedmainfix(transformer): Stage 3 decorator derived class 합성 constructor에 super() 누락
ohah/zntc#1505생성 · 병합mergedmainfix(semantic): cross-module decorator import가 tree-shake로 drop
ohah/zntc#1504생성 · 병합mergedmaintest(stage3): MobX 6 --target=es5 회귀 가드 추가 (#1389 follow-up)
ohah/zntc#1503생성 · 병합mergedmainfix(transformer): ES5 target에서 Stage 3 decorator가 silent drop (#1389)
ohah/zntc#1502생성 · 병합mergedmainfix(transformer): classifyMembers에 accessor_property 처리 + 방어 코드 (#1398)
ohah/zntc#1501생성 · 병합mergedmainfix(transformer): computed object lowering이 getter/setter를 drop (#1397)
ohah/zntc#1500생성 · 병합mergedmaindocs(roadmap): Stage 3 decorator 완료 표기에 ES2015+ 타겟 한정 명시
ohah/zntc#1499생성 · 병합mergedmainfix(transformer): generator unlabeled break/continue state machine 변환 (#1480)
ohah/zntc#1498생성 · 병합mergedmainfix(transformer): generator var = yield* delegate op 5 (#1470)
ohah/zntc#1497생성 · 병합mergedmainfix(transformer): class expression mixin lowering corrupted identifier (#1481)
ohah/zntc#1496생성 · 병합mergedmainfix(transformer): derived class constructor에서 private field init을 super() 이후에 삽입 (#1495)
ohah/zntc#1494생성 · 병합mergedmainfix(transformer): for-of / for-in binding이 private field일 때 임시 binding + body prefix (#1491)
ohah/zntc#1493생성 · 병합mergedmainfix(parser, transformer): optional chain private field read 근본 수정 (#1492)
ohah/zntc#1490생성 · 병합mergedmainfix(transformer): destructuring target에 private field 허용 (#1485)
ohah/zntc#1489생성 · 병합mergedmainfix(transformer): private field assignment expression 반환값 spec 일치 (#1488)
ohah/zntc#1487생성 · 병합mergedmainfix(transformer): #x **= n 에 Math.pow 경유 (#1486)
ohah/zntc#1484생성 · 병합mergedmainfix(transformer): private field ??=/||=/&&= lowering 및 dispatcher 선점 (#1483)
ohah/zntc#1482생성 · 병합mergedmainfix(transformer): private static field compound assignment helper 경유 (#1468)
ohah/zntc#1479생성 · 병합mergedmainfix(transformer): #1471 ES5 class lowering 시 parameter property this.x = x 삽입
ohah/zntc#1478생성 · 병합mergedmainfix(transformer): #1473 regex named group strip 시 String.replace의 $<name> 도 함께 변환
ohah/zntc#1477생성 · 병합mergedmainfix(transformer): #1472 const enum 멤버 참조를 literal로 인라인
ohah/zntc#1476생성 · 병합mergedmainfix(transformer): #1469 delete obj?.a?.b 가 실제 삭제하도록 lowering 분리
ohah/zntc#1474생성 · 병합mergedmainfix(transformer): regex \k<name> 변환 + 다운레벨링 엣지케이스 83건 (ZTS 버그 6건 발굴)
ohah/zntc#1467생성 · 병합mergedmainfix(docs): TypeDoc이 packages/core의 Node.js 모듈 타입을 찾도록 설정
ohah/zntc#1466생성 · 병합mergedmainrefactor(codegen,checker): 잔여 binding walker 마이그레이션 (#1462 Phase 2c)
ohah/zntc#1465생성 · 병합mergedmainrefactor(transformer): binding walker가 nodeListSplitRest 경유 (#1462 Phase 2b)
ohah/zntc#1464생성 · 병합mergedmainrefactor(semantic): binding walker가 nodeListSplitRest 경유 (#1462 Phase 2a)
ohah/zntc#1463생성 · 병합mergedmainrefactor(ast): rest dispatch helper 추가 (#1462 Phase 1)
ohah/zntc#1461생성 · 병합mergedmainrefactor(parser): rest 파라미터 태그 일관성 + cover grammar 정규화
ohah/zntc#1460생성 · 병합mergedmainfix(semantic): rest 파라미터 binding(spread_element)을 함수 스코프에 등록 (#1457)
ohah/zntc#1459생성 · 병합mergedmainfix(bundler): ESM+Node 출력에 createRequire shim 조건부 주입 (closes #1456)
ohah/zntc#1458생성 · 병합mergedmaindocs: ISSUES.md 삭제 — 미해결 버그는 GitHub Issues로 이관
ohah/zntc#1455생성 · 병합mergedmaindocs: 롤리팝/번개 내부 레퍼런스 제거 — Rolldown 기준 표현으로 통일
ohah/zntc#1454생성 · 병합mergedmaindocs(roadmap): Next.js/Remix가 1단계 통합 테스트 범위 밖인 이유 명시
ohah/zntc#1453생성 · 병합mergedmaintest: Vite 앱 build + 브라우저 실행 E2E (vite-plugin-zts)
ohah/zntc#1452생성 · 병합mergedmaintest: watch/serve 메모리 스트레스 시뮬레이션 + ndjson 헬퍼 공통화
ohah/zntc#1451생성 · 병합mergedmaintest: source map Chrome DevTools E2E + Node.js 호환 edge case
ohah/zntc#1450생성 · 병합mergedmainrefactor: @zts/plugin subprocess 경로 제거 — NAPI 단일화 (D101)
ohah/zntc#1449생성 · 병합mergedmaindocs: 루트 설계 문서 docs/로 이동 + README 최신화
ohah/zntc#1448생성 · 병합mergedmaintest(transpile): verify Zig DTO ↔ TS TranspileOptions field sync
ohah/zntc#1447생성 · 병합mergedmainfeat(cli): auto-load zts.config.json with $schema autocomplete
ohah/zntc#1446생성 · 병합mergedmainfeat(build): auto-generate TranspileOptions JSON schema via comptime reflection
ohah/zntc#1445생성 · 병합mergedmainrefactor(transpile): migrate options from per-field args to JSON payload
ohah/zntc#1444생성 · 병합mergedmainfix(transpile): wire es_target diagnostic + source_root through WASM/NAPI
ohah/zntc#1442생성 · 병합mergedmainfix(diagnostic): docsUrl uses lowercase 'zts' to match deployed site routes
ohah/zntc#1441생성 · 병합mergedmainfeat(diagnostic): help hints + docs URL per error code
ohah/zntc#1440생성 · 병합mergedmainfeat(diagnostic): reference-to-definition labels (getter/setter/label)
ohah/zntc#1439생성 · 병합mergedmainfeat(diagnostic): previously-declared-here labels for 6 redeclaration errors