2026-03-28
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
zntc는 모듈 간 BFS로 트리 셰이킹을 다시 짜 svelte 번들을 22KB에서 3KB로, three를 790KB에서 21KB로 줄였습니다(#467). 이어 lodash-es에서 나던 SIGSEGV를 재귀 깊이 제한으로 막고, emitter의 span 매칭을 최상위 문장으로 한정했으며(#468), 순수 식별자를 extends하는 클래스와 static block·계산된 키 같은 클래스 본문의 부수 효과 분석(#470, #471), namespace barrel re-export와 ESM에서 CJS로 이어지는 re-export 체인의 default 해석, export * as ns DCE를 고쳤습니다. effect 패키지 대응으로 넣은 #478은 svelte 회귀를 일으켜 #480에서 되돌렸고, rolldown 방식의 심볼 기반 BFS 시드(#481)로 다시 해결했습니다.
오후에는 스모크 테스트를 미리 설치한 의존성으로 돌려 1분 45초에서 30초로 줄이고(#483), CJS의 module["exports"]에서 나던 패닉을 고쳤습니다(#486). 밤에는 generator의 try·catch·finally 안 yield(#487), bun·pnpm의 중첩 node_modules를 위한 symlink 실제 경로 해석(#490)을 넣고 스모크 비교 대상에 rspack을 추가했으며, for 루프 본문 세미콜론 누락(#492)과 템플릿 리터럴 안 식별자 리네임(#495)을 고친 뒤 oxc의 liveness BitSet 방식 mangler를 통합했습니다(#496). minify 옵션을 공백·식별자·구문으로 나누는 #497은 이날 PR이 열렸습니다.
agent-devtools는 --debug 모드가 API 요청만 보이도록 하고, Windows 지원과 GitHub Actions CI, npm·GitHub Releases·Claude 플러그인 배포 구조를 갖췄습니다. 오후에는 trace·profiler·annotate와 proxy·확장 프로그램·설정·인증·도메인 제한 기능을 한꺼번에 넣은 뒤 도메인 우회와 인증 저장소 경로 순회를 막는 보안 수정을 했고, FFmpeg 파이프 방식 비디오 녹화와 자체 PNG 인코더·디코더로 만든 diff-screenshot, 템플릿 3개, README 전면 재작성, agent-browser와 같은 CLI 명령 체계 정리가 이어졌습니다. 밤에는 실행 중인 Chrome·Electron을 찾는 --auto-connect, curl 한 줄 설치, Electron 연결 수정을 넣고 버전을 0.1.1로 올렸으며, Playwright 호환 Enter 키 이벤트와 CLI 출력 형식도 고쳤습니다.
블로그 저장소에는 맞춤법 크론의 상태 갱신 커밋만 올라왔습니다.
공개 커밋 76개, 해당일 생성 또는 병합된 PR 22개를 정리했습니다. PR 생성 22개·병합 21개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/agent-devtools
- fix: CLI 출력 agent-browser와 동일하게 — JSON 이스케이프 해제
- fix: press Enter 동작 수정 — Playwright 호환 키 이벤트
- chore: bump version to 0.1.1
- fix: Electron 연결 지원 — /json/list page 타깃 우선 + 외부 Chrome attach 로직
- feat: curl 원라인 설치 + Windows/업데이트/삭제 문서
- fix: --auto-connect help 설명 agent-browser와 동일하게 보강
- docs: --auto-connect 반영 + 테스트 수 495개 동기화
- feat: --auto-connect (실행 중인 Chrome/Electron 자동 발견)
- refactor: CLI 명령어 agent-browser와 동일하게 통일
- fix: README 비교 테이블 정확성 수정
- docs: README.md 전면 재작성 (449줄, agent-browser 수준)
- feat: templates 3개 추가 (agent-browser 동일 구조)
- fix: 테스트 아티팩트 제거 (--annotate, diff.png)
- docs: SKILL.md + CLAUDE.md + comparison.md 최신 기능 동기화
- fix: png.zig 정수 오버플로 방지 + config 버퍼 확대
- fix: 빌드 에러 수정 + interactive 모드 screenshot --annotate 파싱 + 도메인 체크 optional 처리
- feat: diff-screenshot 자체 구현 (PNG 디코더/인코더 + 픽셀 비교)
- feat: 비디오 녹화 (FFmpeg 파이프 방식, agent-browser 동일)
- fix: 보안 수정 — 도메인 우회 차단, auth vault 경로 순회 방지, trace 메모리 해제
- feat: trace/profiler/annotate + proxy/extension/config/auth/domains/boundaries
- docs: comparison.md 현재 기능에 맞게 전면 업데이트
- feat: npm/GitHub Releases/Claude 플러그인 배포 구조 + SKILL.md 경량화
- fix: Windows 호환 테스트 경로 (/tmp → 크로스플랫폼)
- fix: Windows에서 EventSubscribers 테스트 스킵 (fd_t = HANDLE)
- fix: CI 테스트 수정 + setup-zig 변경
- feat: Windows 지원 + GitHub Actions CI
- fix: --debug 모드 API 요청만 필터링 (정적 리소스 제외)
ohah/zntc
- refactor(minifier): BitSet 벌크 할당 + MangleInput 구조체화
- refactor(minifier): /simplify 리뷰 반영
- fix(minifier): nested mangling 문자열 메모리 leak 수정
- feat(minifier): oxc liveness BitSet 기반 mangler 통합
- refactor(codegen): emitTemplateLiteral union 필드 안전 체크
- fix(minifier): template literal 내 식별자 rename + nested scope 충돌 방지
- refactor(minifier): /simplify 리뷰 반영
- fix(minifier): mangler preamble 불일치 + import binding 보존 + 테스트 추가
- fix(codegen): for 루프 body 내 변수 선언 세미콜론 누락 수정
- refactor(smoke): 4개 번들러 모두 minify 비활성화 — 공정한 tree-shaking 비교
- fix(smoke): rspack TypeScript loader + config 경로 수정
- feat(smoke): rspack을 4번째 번들러로 추가
- fix(smoke): toolkit external 제거 — redux/react를 번들에 포함
- refactor(resolver): makeResult catch 블록 중복 제거
- fix(resolver): symlink realpath 해석 — bun/pnpm 중첩 node_modules 수정
- fix(smoke): entry 파일을 benchmark 디렉토리에 작성
- fix(ci): smoke test에 별도 bun install 추가
- debug(ci): smoke test node_modules 디버그 스텝 추가
- fix(smoke): esbuild/rolldown 바이너리 경로 fallback 추가
- refactor(transformer): makeExprStmt 헬퍼 추출 — expression_statement 중복 제거
- refactor(transformer): generator try/catch 코드 정리
- feat(transformer): generator try/catch/finally yield 지원
- docs: CLAUDE.md smoke 현황 업데이트 — svelte 해결, avg 0.74x
- fix(e2e): cookie entry를 named import로 수정
- fix(ci): bun install에서 --frozen-lockfile 제거
- refactor(parser): namespace와 module 분기 통합 — 동일 로직 중복 제거
- fix(parser): module 키워드 판별 강화 — CJS module["exports"] panic 수정
- chore: bun.lock 업데이트 — smoke pre-install 패키지 추가
- perf(smoke): npm install 제거 — pre-install + 루트 node_modules 공유 (1m45s → 30s)
- test(tree-shaking): symbol-based BFS 시드 회귀 테스트 3개 추가
- fix(tree-shaking): rolldown 방식 symbol-based BFS 시드 — sideEffects:false 모듈의 used export 직접 시드
- fix(smoke): cookie entry를 named import로 수정 + revert #478 (svelte 회귀)
- Revert "fix(tree-shaking): sideEffects:false 모듈의 namespace import used_properties BFS 직접 시드"
- fix(tree-shaking): sideEffects:false 모듈의 namespace import used_properties BFS 직접 시드
- fix(tree-shaking): export * as ns 패턴 DCE 수정 + 회귀 테스트 6개 추가
- refactor: /simplify 리뷰 반영 — 중복 제거 + 안전성 개선
- fix(codegen,tree-shaking): unary_expression 데이터 접근 오류 + else DCE + seedAllStmts re-export 전파
- fix(bundler): ESM→CJS re-export 체인에서 default export 해석 실패 수정
- fix(tree-shaking): namespace barrel re-export 소스 모듈 시드 누락 수정
- fix(tree-shaking): class body side-effect 분석 — static block, computed key, impure static field (#469)
- fix(tree-shaking): class extends 순수 식별자를 side-effect-free로 처리 — three 1.90x→0.61x, svelte 14.74x→0.69x
- refactor(bundler): emitter span 매칭을 top-level statement list로 제한
- fix(bundler): emitter used_names 정밀 필터링 — svelte 19KB→4KB
- fix(bundler): side-effect statement lazy 시드 — 심볼 의존성 기반
- fix(bundler): 포함된 모듈의 side-effect statement를 항상 시드
- fix(codegen): evalBooleanCondition 재귀 깊이 제한 — lodash-es SIGSEGV 수정
- refactor(bundler): /simplify 크로스-모듈 BFS 코드 품질
- fix(bundler): BFS 시작 시 clearUsedExports 제거
- feat(bundler): 크로스-모듈 BFS tree-shaking — svelte 22KB→3KB, three 790KB→21KB
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.