2026-05-27

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

요약 (AI 작성)

zntc는 오전에 BoringSSL 빌드를 손봤습니다. 정적 라이브러리에 -fPIC를 켜 NAPI 교차 타깃 빌드를 되살리고(#3898), Linux에서 dlopen 시 __ubsan 심볼 문제를 sanitize_c 해제로 고쳤으며(#3899), windows-msvc ia32 빌드를 linkLibCpp 우회로 복구했습니다(#3910). 이어 NAPI에 BoringSSL 정적 링크 확인용 tlsSelfCheck(#3905), 프로세스 안에서 HTTPS dev 서버를 띄우는 startDevServer·stopDevServer(#3906), quiet 모드와 0번 포트 자동 할당·getDevServerPort(#3907)를 추가하고 일상 로그를 조용히 하되 중요한 진단은 항상 stderr로 내게 했습니다(#3908). MCP는 tap_element·get_network 도구와 eval_code의 async/await 지원, 도구 문서 MCP.md까지 들어갔지만(#3903, #3904, #3911), 낮에 최근 이틀 동안 추가한 MCP 코드 전체를 롤백했습니다(#3913). HTTPS dev 서버와 SSE 이벤트 API는 남기고 MCP 구현은 백로그로 미뤘습니다.

mangler에서는 자유 변수를 정밀하게 분석해 c2 경로를 안전하게 만드는 R1-a RFC를 쓰고(#3918) FreeVarMap 타입, SemanticAnalyzer의 자유 변수 수집, linker 연결을 출력에 영향 없는 형태로 병합했습니다(#3919, #3920, #3921). 그러나 로컬 측정에서 zod·effect·rxjs 번들 크기가 전혀 줄지 않아 NO-GO로 종결했고(#3922), 세 PR은 되돌렸습니다(#3923). RFC #3833의 남은 안들에도 폐기 표시를 했습니다. 오후부터는 성능 작업으로, samply 샘플링 프로파일러 워크플로와 -Dkeep-debug 옵션(#3925)을 추가하고 소스 길이에 맞춰 ast.nodes·ast.extra_data, transformer용 복제 AST, Scanner.line_offsets 용량을 미리 잡게 했습니다(#3926부터 #3930). typescript.js 9MB 기준 ast.nodes 사전 할당은 실행 시간을 약 2% 줄였습니다. 하루 끝에는 dev 서버 HMR 지연 재설계 RFC(#3931)와 NAPI dev_mode 옵션 연결로 lodash HMR을 398ms에서 307ms로 줄인 수정(#3932), 증분 빌드에서 ModuleGraph를 재사용하는 RFC와 첫 API(#3933, #3934, #3936)가 이어졌고, CI의 bun 버전을 1.3.11로 고정했습니다(#3916).

suji는 플러그인 네 개를 추가했습니다. 회전 파일 로거 @suji/plugin-log(#45), 파일 기반 설정 저장소 @suji/plugin-store(#46), URL 허용 목록을 둔 @suji/plugin-http(#47), Windows WinRT 토스트를 쓰는 @suji/plugin-notification-rich(#48)이며, 이후 http 플러그인의 스트리밍 응답 크기 제한과 허용 목록 기반 사용자 헤더, 알림 이미지 재활성화 등 후속 PR이 병합됐습니다(#49부터 #53). printToPDF·capturePage를 지연 응답으로 진짜 Promise처럼 동작하게 했고(#54), Linux·Windows에서 CEF GPU 가속을 켜고 e2e 검증을 더했습니다(#55, #56). PR 없이 Linux GTK 트레이·메뉴 팝업, X11 전역 단축키, CEF Views 창 옵션 맞춤도 커밋했습니다.

블로그 저장소 ohah.github.io의 커밋 19개는 크론의 맞춤법·CRD 점검 기록과 일일 요약 커밋입니다.

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

커밋

ohah/ohah.github.io

ohah/suji

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/suji#56생성 · 병합mergedmaintest(e2e): GPU acceleration verification (#12 regression guard)
ohah/suji#55생성 · 병합mergedmainfeat(cef): enable GPU acceleration on Linux/Windows (closes #12)
ohah/suji#54생성 · 병합mergedmainfeat(ipc): deferred response — printToPDF/capturePage true Promise pattern (closes #16)
ohah/suji#53생성 · 병합mergedmainfix: code-review max followup for PRs #49/#50/#51
ohah/suji#52생성 · 병합mergedmaindocs: notification-rich macOS/Linux + Windows action-callback limitations
ohah/suji#51생성 · 병합mergedmainhttp plugin: custom headers with allowlist (Cookie/Authorization opt-in)
ohah/suji#50생성 · 병합mergedmainnotification-rich: re-enable image with plugin-side allowlist
ohah/suji#49생성 · 병합mergedmainhttp plugin: streaming response bound (real DoS guard)
ohah/suji#48생성 · 병합mergedmainAdd @suji/plugin-notification-rich — Windows WinRT toast
ohah/suji#47생성 · 병합mergedmainAdd @suji/plugin-http — renderer-safe fetch with URL allowlist
ohah/suji#46생성 · 병합mergedmainAdd @suji/plugin-store — file-backed persistent config
ohah/suji#45생성 · 병합mergedmainAdd @suji/plugin-log — rotating file logger plugin
ohah/zntc#3936생성 · 병합mergedmainfeat(bundler): initWithGraph + enable_persistence opt-in (RFC #3933 Sub-PR-B.2)
ohah/zntc#3935생성 · 병합mergedmainfeat(lexer): Scanner.next cold path 분리 + RFC (XL refactor step 1)
ohah/zntc#3934생성 · 병합mergedmainfeat(graph): ModuleGraph.reset / invalidateModule API (RFC #3933 Sub-PR-B.1)
ohah/zntc#3933생성 · 병합mergedmaindocs(rfc): graph persistence — incremental ModuleGraph 재사용 RFC (PR-B 영역)
ohah/zntc#3932생성 · 병합mergedmainfix(dev-server): NAPI dev_mode 3-옵션 wire-up — lodash HMR 398→307ms
ohah/zntc#3931생성 · 병합mergedmaindocs(rfc): dev_server HMR latency 재설계 RFC
ohah/zntc#3930생성 · 병합mergedmainfix(lexer): line_offsets prewarm follow-up — best-effort + comment fix
ohah/zntc#3929생성 · 병합mergedmainfeat(lexer): pre-warm Scanner.line_offsets capacity by source length
ohah/zntc#3928생성 · 병합mergedmainfeat(parser): pre-warm cloned AST nodes / extra_data in cloneForTransformer
ohah/zntc#3927생성 · 병합mergedmainfeat(parser): pre-warm ast.extra_data capacity by source length
ohah/zntc#3926생성 · 병합mergedmainfeat(parser): pre-warm ast.nodes capacity by source length
ohah/zntc#3925생성 · 병합mergedmainfeat(perf): samply sampling profiler workflow + -Dkeep-debug option
ohah/zntc#3924생성 · 병합mergedmaindocs(rfc): RFC #3833 axis 3 stale 도장 (옵션 A/B/C 폐기, dev-controller 의도 설계)
ohah/zntc#3923생성 · 병합mergedmainchore(mangler): R1-a inert infra cleanup — revert #3919/#3920/#3921 (NO-GO 후속)
ohah/zntc#3922생성 · 병합mergedmaindocs(rfc): R1-a NO-GO 격하 (RFC #3918 §9, 8번째 NO-GO 경로)
ohah/zntc#3921생성 · 병합mergedmainfeat(mangler): R1-a PR-3-a — linker 가 free-var map 을 mangler input 에 연결 (inert)
ohah/zntc#3920생성 · 병합mergedmainfeat(mangler): R1-a PR-2-b — SemanticAnalyzer free-var build (env-gated, inert)
ohah/zntc#3919생성 · 병합mergedmainfeat(mangler): R1-a PR-2-a — FreeVarMap type + mangler input field (inert, byte-identical)
ohah/zntc#3918생성 · 병합mergedmaindocs(rfc): R1-a Mangler safe c2 — precise free-var 분석 드래프트 (박제 충돌 영역 의도적 재시도)
ohah/zntc#3917생성 · 병합mergedmaindocs(rfc): RFC #3833 v2-B 2026-05-27 stale 도장 (재타진 차단)
ohah/zntc#3916생성 · 병합mergedmainchore(ci): pin bun-version to 1.3.11 across all workflows
ohah/zntc#3915생성 · 병합mergedmaintest(benchmark): mangler-property baseline regenerate (main 15b2866e 기준)
ohah/zntc#3914생성 · 병합mergedmaintest(napi): NativeModule parity test + quiet-scope doc canonical 참조
ohah/zntc#3913생성 · 병합mergedmainchore(mcp): MCP epic 전체 롤백 — fiber RN + /mcp endpoint + mcpStdio + docs 정리
ohah/zntc#3912생성 · 병합mergedmaindocs(rfc): RFC_MANGLER_SIZE_GAP_CLOSED 2026-05-27 재검증 도장 추가
ohah/zntc#3911생성 · 병합mergedmaindocs(mcp): MCP.md 신규 — 11 tool reference + adb/idb 영역 분리
ohah/zntc#3910생성 · 병합mergedmainfix(build): BoringSSL windows-msvc 분기 — linkLibCpp 우회로 ia32 빌드 회복
ohah/zntc#3909생성 · 병합mergedmaintest(napi): quiet stderr/stdout 분리 회귀 잠금 (PR-G4 post-fix)
ohah/zntc#3908생성 · 병합mergedmainfeat(server): DevServer routine log quiet 확장 — critical 진단은 항상 stderr (PR-G4)
ohah/zntc#3907생성 · 병합mergedmainfeat(napi): DevServer quiet + port 0 auto + getDevServerPort (PR-G3)
ohah/zntc#3906생성 · 병합mergedmainfeat(napi): startDevServer / stopDevServer — HTTPS dev server in-process (PR-G2)
ohah/zntc#3905생성 · 병합mergedmainfeat(napi): tlsSelfCheck export — BoringSSL static link runtime 검증 (PR-G1)
ohah/zntc#3904생성 · 병합mergedmainfeat(mcp): get_network tool — XHR intercept + ring buffer + cursor pagination (PR-F7)
ohah/zntc#3903생성 · 병합mergedmainfeat(mcp): tap_element tool — onPress invoke + ancestor walk (PR-F6)
ohah/zntc#3902생성 · 병합mergedmainfeat(mcp): eval_code async/await + dispatcher Promise handler (deferred)
ohah/zntc#3901생성 · 병합mergedmainfix(server): mcp_app_channel test race — thread setup 직렬화
ohah/zntc#3900생성 · 병합mergedmainfix(mcp): fiber cycle guard + missing-result fallback E2E (deferred)
ohah/zntc#3899생성 · 병합mergedmainfix(build): BoringSSL sanitize_c=.off — Linux NAPI dlopen 의 __ubsan symbol fix
ohah/zntc#3898생성 · 병합mergedmainfix(build): BoringSSL static lib 에 -fPIC — NAPI cross-target build 회복