2026-05-24

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

요약 (AI 작성)

zntc는 데코레이터·클래스 변환 이슈의 후속 수정으로 시작했습니다. private method 안의 super.x를 __superGet으로 낮추는 수정(#3722)이 리뷰에서 나온 사각지대 15건 처리와 함께 병합됐고, 병합 뒤 effect-ts와 static block에서 회귀가 나오자 일부를 되돌렸다가 원래 의도를 살린 정밀 수정을 두 차례 다시 넣었습니다(#3724, #3725, #3726). useDefineForClassFields=false에서 private field 선언 보존(#3727), 쓰이지 않는 super_proto_alias가 var _a;를 남기던 문제(#3739)도 고쳤습니다. NAPI 누수 덤프는 atexit 대신 napi_add_env_cleanup_hook을 쓰도록 바꾸고, 전날 만든 누수 게이트 워크플로는 비활성화했습니다(#3723).

번들러에서는 namespace getter가 지워진 바인딩을 가리키는 문제를 여러 단계로 좁혀 갔습니다. isLocalBindingAlive의 rename 접미사 폴백과 모듈 포함 여부 확인, tree shaker 판정 동기화(#3729, #3730, #3731)를 거쳐 링커 namespace 분석기의 빈 결과 폴백(#3732)과 텍스트 기반 폴백, 3단 안전망(#3735)을 넣었고, 마지막에 binding scanner와 링커 분석기를 하나로 합쳤습니다(#3736). 이어 namespace 접근 색인 공유와 registerNamespaceRewrites 경로 최적화로 링크 단계를 줄였고(#3740, #3741, #3742), 파서의 문장·화살표 함수 판별에 첫 바이트 사전 필터를 넣었습니다(#3743, #3744). 경로 resolve 결과를 intern하는 변경(#3748)은 PR 제목 기준 측정에서 1320ms를 95ms로 줄였고, 이후 PathRef enum으로 수명 규칙을 컴파일러가 강제하게 하고 intern 풀을 16개 shard mutex로 나눴습니다(#3753, #3754). CSS는 외부 @import URL 보존(#3746)과 파일 맨 앞 @charset·bare @layer 선언 보존(#3752), manualChunks 흡수 뒤 빈 entry chunk의 placeholder 치환 누락 수정(#3728)이 병합됐습니다.

suji는 오후부터 WebContentsView를 CEF Views 기반으로 옮겼습니다. 자식 창 프로브, 순서 변경 시 숨긴 자식 뷰 보존, 창 생명주기 이벤트 복원, 자식 뷰 제거 안정화를 거쳐 CEF Views를 WebContentsView의 기본 경로로 삼고 API를 배선했습니다. 이후 macOS·Linux·Windows에서 도는 WebContentsView E2E를 추가하고, CI용 CEF 프로세스 플래그와 런타임 에셋 패키징, 렌더러 IPC를 브라우저 메인 프레임으로 보내는 처리, 초기 내비게이션 재시도 등 수십 개 커밋으로 E2E를 안정화해 17-B 단계 완료를 문서에 적었습니다. 새벽에는 Windows·Linux safeStorage, 크로스 플랫폼 powerMonitor 유휴 시간과 이벤트, powerSaveBlocker, crashReporter 첫 구현, 앱 배지 카운트 API, 내장 Node 실행 CLI, Rust용 TypeScript 핸들러 헬퍼, types CLI E2E를 추가했습니다.

외부 저장소 warpdotdev/warp에는 한국어 IME 조합이 분할 커밋과 Backspace에서 유지되도록 하는 PR #11624를 열었으나 병합되지 않고 닫혔습니다. 블로그 저장소 ohah.github.io의 커밋 17개는 크론의 문서 점검 표시와 요약 갱신 커밋입니다.

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

커밋

ohah/ohah.github.io

ohah/suji

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#3754생성 · 병합mergedmainperf(bundler): #3750 PathInternPool 16-shard mutex (single-mutex 회귀 회복)
ohah/zntc#3753생성 · 병합mergedmainrefactor(bundler): #3749 Phase 3 (C) — PathRef enum 으로 lifetime 컴파일러 강제
ohah/zntc#3752생성 · 병합mergedmainfix(bundler): CSS @charset / bare @layer top-of-file 선언 보존 (#3747)
ohah/zntc#3748생성 · 병합mergedmainperf(bundler): resolve interning — wall -93% (1320ms → 95ms), esbuild 추월
ohah/zntc#3746생성 · 병합mergedmainfeat(bundler): CSS external @import URL preserve (cross-chunk @import, #3321 P0-3)
ohah/zntc#3744생성 · 병합mergedmainperf(parser): parseAssignmentExpression arrow lookahead byte prefilter (-33% mean, -77% p99)
ohah/zntc#3743생성 · 병합mergedmainperf(parser): parseStatement contextual keyword first-byte prefilter
ohah/zntc#3742생성 · 병합mergedmainperf(bundler): #3680 C7 F3 — nested_bindings per-importer cache (-36% register.ns)
ohah/zntc#3741생성 · 병합mergedmainperf(bundler): #3680 C7 — registerNamespaceRewrites hot path 최적화 (-31%)
ohah/zntc#3740생성 · 병합mergedmainperf(bundler): #3680 namespace access index share — link.populate -55%, wall -20%
ohah/zntc#3739생성 · 병합mergedmainfix(transformer): V8 super_proto_alias 가 unused 일 때 var _a; leak 차단 (루트커즈)
ohah/zntc#3737생성 · 병합mergedmainperf(bundler): #3680 namespace local set gating — text 색인 메모리 절감
ohah/zntc#3736생성 · 병합mergedmainrefactor(bundler): #3680 binding_scanner ↔ linker analyzer 통합 — single source of truth
ohah/zntc#3735생성 · 병합mergedmainfix(bundler): #3680 통합 안전망 — 옵션 B revert + escape 색인 (3-layer)
ohah/zntc#3734생성 · 병합mergedmaincleanup(bundler): #3680 옵션 B — 보수 fallback 제거 (옵션 A 후속)
ohah/zntc#3733생성 · 병합mergedmainfix(bundler): #3680 옵션 A — analyzer text fallback (counter$4 dangling 진짜 진짜 진짜 fix)
ohah/zntc#3732생성 · 병합mergedmainfix(bundler): linker namespace analyzer empty 결과 fallback (counter$4 진짜 root fix)
ohah/zntc#3731생성 · 병합mergedmainfix(bundler): tree_shaker_active mirror — namespace getter dangling 정확 elide
ohah/zntc#3730생성 · 병합mergedmainfix(bundler): isLocalBindingAlive 가 module is_included 도 체크 (counter$4 추가 부분 fix)
ohah/zntc#3729생성 · 병합mergedmainfix(bundler): namespace getter dangling 부분 fix — isLocalBindingAlive rename suffix fallback
ohah/zntc#3728생성 · 병합mergedmainfix(bundler): manualChunks 흡수 후 빈 entry chunk 가 placeholder 치환 누락
ohah/zntc#3727생성 · 병합mergedmainfix(transformer): useDefineForClassFields=false 에서 private field declaration 보존
ohah/zntc#3726생성 · 병합mergedmainfix(transformer): #3680 V1/V8 정밀 fix follow-up (6건 추가 정밀 fix)
ohah/zntc#3725생성 · 병합mergedmainfix(transformer): #3680 V1/V8 정밀 fix (revert 후속, 원본 의도 복구)
ohah/zntc#3724생성 · 병합mergedmainfix(transformer): #3680 post-merge — V1/V8 revert (effect-ts + static block 회귀)
ohah/zntc#3723생성 · 병합mergedmainfix(napi): atexit → napi_add_env_cleanup_hook (Linux dlopen 호환) + leak-gate workflow 비활성
ohah/zntc#3722병합mergedmainfix(transformer): private method 내 super.x → SyntaxError 수정 (#3680)
warpdotdev/warp#11624생성closedmasterfix(ime): preserve Korean IME composition through split-commit and Backspace