2026-05-18
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
zntc는 전날에 이어 Module Federation을 다듬었습니다. 정적 import "remote/x"에 P3 검증을 통합하고(#3464), shareStrategy·strictVersion config 표면과 strictVersion 빌드 시점 실패 처리(#3465, #3466), expose의 CSS 에셋을 manifest에 게시하는 작업(#3470), 같은 remote를 여러 번 import할 때 무결성 검사·경고를 한 번만 하는 dedup(#3473)을 병합했습니다. shared마다 named share scope를 지정하는 config와 컨테이너 init의 다중 scope 해석, interop 테스트로 named scope 다중 지원을 마무리했고(#3476, #3477, #3478), 발행된 @zntc/core가 zntc.config의 mf 설정을 네이티브로 넘기지 않던 문제를 고쳤습니다(#3483). MF seam은 옵션 레이어에서 번들러의 단일 적용점으로 옮겼고(#3487), 실행 예제 앱과 한·영 사용자 가이드(#3485, #3486)를 더해 로드맵의 MF 지원 상태를 미지원에서 부분 지원으로 고쳤습니다(#3488). 런타임 동적 remote는 빌드 검증이 어렵다는 한계도 문서에 적었습니다.
정규식 쪽에서는 AST를 패턴 텍스트로 되돌리는 printer를 추가하고(#3500) regex_lower의 임시 순회를 parse, AST 변환, printer 경로로 바꿨습니다(#3505). 이 위에서 u 플래그 다운레벨로 astral 문자를 담은 긍정·부정 문자 클래스를 surrogate 대안으로 풀고(#3514, #3516), i와 u를 함께 쓸 때 simple case-fold 등가 확장(#3518)을 넣었습니다. 고정 크기였던 named group·backref 버퍼를 SmallVec로 바꾸고(#3502), parse 오류 경로의 메모리 누수도 막았습니다(#3506).
RN 릴리스 번들 안정화 PR 두 개(#3480, #3494)는 CJS export 정보 보존, automatic JSX runtime 사용, Metro와 같은 소스 확장자 순서, 워크스페이스 심링크의 논리 경로 유지, minify 시 미해결 전역과 최종 re-export import 이름 예약, CJS default interop 표식 보존 같은 수정을 묶어 병합했습니다. 비인라인 CJS import 이름 충돌 수정 #3519도 이날 열렸습니다. 이 밖에 es5 class async 메서드의 optional chaining 임시 변수 hoist 누락(#3467) 수정, config·NAPI 옵션을 CLI 플래그로 노출하고 --version·--no-config·--color를 추가한 CLI 작업(#3489, #3490), 인라인 테스트를 *_test.zig 파일로 분리하는 테스트 배치 정리(#3498)가 있었습니다. 로드맵에는 NativeWind, RN CLI+MCP와 Chrome CDP 검증, Hermes 타깃 다운레벨 계획을 추가했고, 공개 API 레퍼런스의 JSDoc을 영어로 바꾸고 라이브러리 빌드 레시피를 썼습니다.
suji는 state에 이은 두 번째 공식 플러그인으로 SQLite를 추가하고 모바일 백엔드와 iOS·Android 예제 앱 변형까지 만들었으며, @suji/plugin-state-node·@suji/plugin-sqlite-node 래퍼로 4개 언어 SDK 구성을 채웠습니다. Electron API 대응으로 session.clearStorageData, desktopCapturer.getSources와 썸네일 캡처, 영역 지정 capturePage, powerMonitor의 locked 상태, macOS 딥 링크용 Info.plist 자동화, TIFF 클립보드, 응답 없는 webRequest 리스너의 timeout 폴백이 들어갔습니다. 보안 쪽은 renderer 권한 allowlist를 shell·dialog로 넓히고, Tauri와 같은 형태의 모바일 권한 게이트를 C ABI 코어(Stage 1)와 iOS·Android 호스트 글루(Stage 2)로 구현했으며, 캡처·인쇄의 경로 쓰기 명령을 fs 샌드박스로 묶었습니다. zig 핸들러 스키마에서 .d.ts를 생성하는 suji types 명령도 추가했습니다. 블로그 저장소 ohah.github.io의 커밋 12개는 크론의 문서 점검 표시와 요약 갱신 커밋입니다.
공개 커밋 101개, 해당일 생성 또는 병합된 PR 48개를 정리했습니다. PR 생성 48개·병합 47개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/ohah.github.io
- chore(cron): complete CRD doc verification task (docs/monthly-opensource/hwpjs/development.mdx)
- cron: complete cheolsu-proxy background.mdx verification (2026-05-19 07:00 UTC)
- docs: update CRON_CRD_WRITE.md - verified development-9.mdx
- docs: cron summary - suji SQLite plugins & mobile support, zntc Module Federation (2026-05-18 23:30 UTC)
- chore: cron task completed - verified electron-mcp-server/development-2.mdx (2026-05-19 18:00 UTC)
- chore(cron): log CRD spell check - oxlint passed (0 warnings, 0 errors)
- chore(cron): weekly lint check — oxlint passed with 0 warnings, 0 errors
- docs: cron verify spelling - 2026-05-19 16:30 UTC (development-6.mdx)
- docs: update CRON_CRD_WRITE.md - verified development-5.mdx (2026-05-19 05:00 UTC)
- docs: cron check - lint passed for CRD development-3.mdx (2026-05-18 13:00 KST)
- docs: update CRON_CRD_WRITE.md - 2026-05-18 23:30 UTC cron task completed
- docs: update CRON_CRD_WRITE.md - verify spelling (2026-05-18 21:30 UTC)
ohah/suji
- fix(security): 캡처/인쇄 경로-쓰기 cmd 를 fs 샌드박스로 게이트 (보안 점검 후속)
- feat(cli): suji types — zig .schema() → SujiHandlers .d.ts 자동 생성
- feat(security): 모바일 권한 게이트 Stage 2 — iOS/Android 호스트 글루 (실 e2e 검증)
- feat(security): 모바일 권한 게이트 C ABI — Tauri 패리티 Stage 1 (코어, 검증완)
- feat(security): renderer 권한 allowlist 를 shell/dialog 로 확장 (opt-in, 비파괴)
- feat(desktopCapturer): captureThumbnail — 소스 PNG 파일경로 캡처 (F4, 메커니즘)
- feat(webRequest): onBeforeRequest timeout fallback — listener 미응답 hang 방지 (F1)
- fix(cef): onContextCreated ctx.eval 2→1 단일 eval — fragile 불변식 하드닝 (F3)
- feat(clipboard): TIFF read/write — NSPasteboard public.tiff (F2, 5 SDK + e2e)
- feat(session): clearStorageData 무인자 시 현재 origin 자동 해석 (D-5)
- fix(core): 로드맵 잔존 sharp edge 4건 — glob/라우팅/뷰절단/OOM graceful
- fix(plugins): sqlite/js malformed 응답 하드닝 — node 변형과 4언어 일관 + 테스트 신설
- test(plugins): node 래퍼 복잡 경계 +34 케이스 + sqlite malformed 잠재버그 하드닝
- feat(plugins): @suji/plugin-{state,sqlite}-node — Node 백엔드 래퍼 (4언어 SDK 매트릭스 완성)
- docs(protocol): protocol.handle 보류 — 루트커즈·재개조건 명문화
- feat(deep-link): macOS Info.plist CFBundleURLTypes 자동화
- feat(powerMonitor): getSystemIdleState "locked" 상태
- feat(windows): capturePage(rect) — 부분 영역 스크린샷
- feat(desktopCapturer): getSources — 화면/창 소스 열거
- feat(session): clearStorageData — IndexedDB/localStorage/cache 삭제
- feat(mobile): iOS/Android SQLite 예제 앱 변형 (zig 변형 동형)
- feat(mobile): SQLite 백엔드 — 데스크탑 plugins/sqlite 모바일 대응
- feat(plugins): SQLite 플러그인 — 두 번째 공식 플러그인 (state 동형)
ohah/zntc
- feat(regexp): i+u case-fold — simple case-fold 등가 확장 (#3511)
- chore(e2e): content-type 케이스 주석 터스 1줄로 정리
- feat(regexp): negated class u-downlevel — complement surrogate-alternation (#3513)
- test(e2e): content-type 스모크 — default→named import 정정
- feat(regexp): positive class astral u-downlevel — surrogate-alternation (#3509)
- docs(guides): 레시피에 Module Federation 실행 예제 추가
- docs(regexp): printer 헤더 예시 오타 수정 (\u{41}→A)
- fix(regexp): mod.parse 에러 경로 ast_nodes/ast_extra 누수 차단 (#3503)
- refactor(regexp): regex_lower ad-hoc walk → parse+AST transform+printer (#1475 PR2)
- refactor(regexp): printer hex 출력을 oxc canonical 대문자로 정렬 (#1475 R2 제거)
- fix(regexp): named-group/backref 버퍼 고정 [16]/[32] → SmallVec spill
- fix(bench): raise spawnSync maxBuffer to fit xlarge profile JSON
- fix(rn): resolve transformed parameter default imports
- refactor(transformer): reuse isLiveMinifyNode + apply oxfmt to RN preset
- fix(transformer): skip orphan nodes during minify folds
- fix(bundler): reserve final re-export import names
- fix(bundler): preserve CJS default interop markers
- fix(bundler): reserve unresolved globals during mangle
- fix(transformer): preserve dropped statement bodies
- fix(rn): forward drop options to bundle preset
- refactor(regexp): AST → 패턴 텍스트 printer 추가 (#1475 PR1)
- docs(testing): 테스트 배치 epic 종료 — 잔여 인라인 pub-노출 재시도 금지 박제
- refactor(test): cli/app 인라인 test 를 옆 파일 *_test.zig 로 분리
- docs(testing): Zig 테스트 코드 배치 규약 명문화
- docs(recipes): 라이브러리(npm 패키지) 빌드 레시피 추가
- docs(napi): 설치 예제를 패키지매니저 탭으로 (bun 단독 → bun/npm/pnpm/yarn/deno)
- docs(rfc): §8.2 RN 스파이크0 설계 박제 + RS256→Ed25519 정합 (#3318)
- feat(cli): --version/-v, --no-config, --color/--no-color 추가
- feat(cli): config·NAPI 구현 옵션을 CLI 플래그로 노출
- docs(api): 공개 API 레퍼런스 JSDoc 영어화
- docs(roadmap): Module Federation 지원 상태 정정 (❌ → 🟡)
- fix(examples): sherif — module-federation 의존성 알파벳 정렬
- refactor(mf): MF seam 을 옵션 레이어→번들러 단일 적용점 — ④ (#3318)
- style(rn): apply oxfmt to preset.ts buildResolveExtensions signature
- refactor(bundler): simplify tree-shake bookkeeping and dedupe CLI diagnostics
- fix(tree-shaker): preserve cjs export facts for rn release
- fix(linker): initialize release namespace member sources
- fix(tree-shaker): drop pruned esm wrapper references
- test(scanner): cover webpack helper requires
- fix(resolver): keep rn workspace symlinks logical
- fix(rn): use automatic jsx runtime in release
- fix(rn): match metro source extension order
- fix(cli): print rn bundle diagnostics
- fix(cli): accept rn option pair form
- docs(mf): Module Federation 사용자 가이드 (ko+en) — PR-B (#3318)
- docs(roadmap): RN Hermes 타겟 다운레벨 계획 추가
- docs(mf): examples/module-federation 실행 예제앱 — PR-A (#3318)
- docs(roadmap): /simplify — 코드 참조 경로/의존성 필드 정확도 수정
- docs(roadmap): RC-1 범위 정정 — argv 어댑터(S~M), 빌드는 코어 .node 유지
- fix(mf): 발행 @zntc/core 가 zntc.config mf 를 native 로 전달 (#3318)
- docs(roadmap): RN CLI+MCP / Chrome CDP 검증 지원 계획 추가
- docs(roadmap): NativeWind (RN+Tailwind) 지원 계획 추가
- test(mf): named share scope 다중 interop 박제 — #4-2 완결 (#3318)
- feat(mf): 컨테이너 init 다중 named scope 해석 — #4-1 (#3318)
- feat(mf): per-shared shareScope config 표면 — named scope 다중 #4-0 (#3318)
- docs(rfc): mangler size-gap RFC 에 141-lib 재검증 도장
- docs(mf): #4 런타임 동적 remote 빌드검증 한계 명시 + MF 지원 상태 정정 (#3318)
- perf(mf): verifyHostContract dedup — 같은 remote 다중 import 무결성·경고 1회 (#3318)
- test(mf): __mfGuardedLoad↔표준 errorLoadRemote 비-충돌 검증·문서화 — ⚠️ 해소 (#3318)
- refactor(transformer): state-machine temp-hoist 4중 중복 → 단일 helper
- feat(mf): expose CSS assets manifest 게시 — #3468 (#3318)
- docs(mf): manifest assets 정확성 — js.async 단일청크 정합 명시, CSS 갭 추적 (#3318)
- fix(transformer): es5 class async 메서드 optional-chaining temp hoist 누락
- feat(mf): strictVersion 빌드타임 fail-fast 격상 — #2 완결 (#3318)
- feat(mf): shareStrategy/strictVersion config 표면 + manifest/init emit (#3318)
- feat(mf): 정적 import P3-1 검증 통합 + e2e 박제 — PR-3 (#3459)
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.