2026-03-30
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
zntc는 번들 --watch 모드와 플러그인 재사용(#531)으로 하루를 시작해, dev server에서도 플러그인을 쓰게 하고(#535) 플러그인 API를 Vite·Rollup 스타일로 바꿨습니다(#537). dev server는 기본 포트 12300과 host·open 옵션, API 프록시 --proxy(#538, #539)와 통합 테스트 8개를 갖췄고, CI에서 불안정한 --serve --plugin 테스트는 건너뛰도록 했습니다. 이어 zts.config 파일 자동 감지(#545), renderChunk·generateBundle 훅과 설정 변경 시 재시작(#547), @zts/core의 TypeScript 전환(#548), load 훅의 loader 필드(#550), Vite·esbuild 호환 defineConfig 빌드 옵션(#551)이 들어왔습니다. 오후에는 소스맵 정확도 개선과 네이티브 파일 감시, 증분 빌드(#553)를 넣고, Linux의 inotify 감시를 CLOSE_WRITE와 디렉터리 감시로 바꿔 HMR을 안정화했습니다(#554, #556).
저녁부터는 Flow 지원을 시작했습니다. @flow pragma 감지와 --flow 옵션(#558), 기본 타입 파싱과 타입 제거(#561), opaque type과 variance(#562), import typeof, declare·interface, as 식을 차례로 병합했고, Metro의 @flow 파일 410개를 통과하는 스모크 테스트를 추가했습니다(#567). 기능 브랜치에 쌓았던 #559, #560은 닫고 같은 내용을 main 대상 PR로 다시 올린 것입니다. 밤에는 주석 형식의 Flow 타입, TypeCast·exact object·%checks(#568, #570)와 React Native용 --resolve-extensions·--main-fields 옵션(#573)을 넣고 문서에 Flow 완료를 반영했습니다.
멀티 백엔드 데스크톱 프레임워크 suji가 이날 첫 커밋을 올렸습니다. 설정 파서와 dev·build·run CLI, 프로젝트를 만드는 suji init을 만들고, 설정은 TOML을 빼고 JSON만 쓰기로 했습니다. #[suji::command] 매크로를 쓰는 Rust SDK, 구조체 바인딩 방식의 Go SDK, comptime 빌더와 dlopen으로 붙는 Zig 백엔드, 코어의 이벤트 pub/sub과 JS 브리지를 추가했으며, 백엔드 간 호출과 부하 데모를 거쳐 API를 Electron식 handle·invoke·on·send로 정리했습니다. 세 SDK 모두에 on·off를 구현하고 Go는 C 브리지로 이벤트 버스에 연결해 Phase 1을 완료로 표시했습니다. 이 저장소는 PR 없이 커밋으로 진행됐습니다.
공개 커밋 86개, 해당일 생성 또는 병합된 PR 45개를 정리했습니다. PR 생성 45개·병합 43개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/suji
- Window 1024x768, events integration tests (63 total)
- Go On() now connects to EventBus via C bridge
- Simplify: Go backend_destroy cleanup, clarify On() limitation
- Implement on/off for all three SDKs
- Update PLAN.md: Phase 1 complete, Phase 2 clarify remaining items
- Fix Zig backend build: add util module dependency
- Extract util module, fix backlog from code review
- Simplify: fix issues from code review
- Refactor to Electron-style API: handle/invoke/on/send
- Zig cross-backend calls + okMulti for raw JSON responses
- Update docs: architecture diagram, multi-backend status, Zig dlopen
- Enhanced multi-backend demo with chaos stress test
- Add deployment section to PLAN.md
- Zig backend via dlopen + exportApp, fix backend naming, package export
- Sync docs, add Zig to suji init, update PLAN.md + CLAUDE.md
- Add Zig backend examples (single + multi)
- Switch to runtime req.ok() with arena allocator
- Add Zig built-in backend with comptime builder pattern
- Add event system (pub/sub) to Zig core + JS bridge
- Add Go SDK (suji-go) with struct binding pattern
- Add Rust SDK (suji crate) with #[suji::command] macro
- Add suji init command for project scaffolding
- Expand test coverage: 24 → 33 tests
- Switch to JSON-only config, remove TOML dependency
- Update docs: mark CLI dev/build/run as complete, update CLAUDE.md
- Fix config memory lifetime, Go build CC env, multi-backend JSON
- Add CLI (dev/build/run), config-based workflow, single backend examples
- Add config parser with TOML + JSON dual support
- Remove poc/, clean up module imports
- Initial commit: Suji multi-backend desktop framework
ohah/zntc
- docs: Flow 완료 + RN resolve 옵션 반영
- fix: /simplify 리뷰 반영 — getStr 중복 제거, deinit 누락, main_fields 헬퍼 추출
- feat(bundler): add --resolve-extensions + --main-fields CLI options
- fix: flow comment 동작 수정 — --flow CLI에서 has_flow_pragma 설정 + /*:: */ 블록 스킵
- fix: /simplify 리뷰 반영 — %checks 텍스트 검증, exact object 루프 가드
- feat(parser): add Flow TypeCast, exact object, %checks
- fix: /simplify 리뷰 반영 — flow comment */ 종료 단일화, 데드 코드 제거
- feat(lexer): add Flow comment types — /*:: / block and /: */ inline
- test: add Flow Metro smoke test — 410 @flow files pass, integrated pattern test
- feat(parser): add Flow as expression — flow_as_expression 독립 태그
- feat(parser): add Flow declare + interface — flow.zig 독립 구현
- fix: /simplify 리뷰 반영 — import typeof named 테스트 추가
- feat(parser): add Flow import typeof support + import/export type tests
- fix: /simplify 리뷰 반영 — export opaque type 테스트 추가, e2eFlowModule 헬퍼
- feat(parser): add Flow opaque type + variance support
- fix: /simplify 리뷰 반영 — AST rollback, parseObjectType brace counting, TS 키워드 가드
- feat(parser): add Flow basic type parsing — flow.zig, flow_ AST tags, type stripping
- fix: /simplify 리뷰 반영 — is_ts/is_flow 상호 배타, pragma false positive, .jsx.flow 지원
- feat(parser): add Flow infrastructure — is_flow flag, @flow pragma detection, --flow CLI
- fix: /simplify 리뷰 반영 — inotify 해시 이중 조회, absPath 중복, catch unreachable
- fix: inotify 디렉토리 감시로 전환 + E2E Linux skip 제거
- fix: inotify 재등록 메모리 누수 수정 + 삭제 테스트 Linux skip
- fix: inotify 재등록 실패 시 메모리 누수 — path_map에서도 제거 + free
- test: 테스트 커버리지 보강 — 16개 테스트 추가
- fix(ci): E2E watch 테스트 Linux CI skip + 증분 빌드 코드 diff 단순화
- fix: 증분 빌드 — 코드 diff만으로 변경 판단 (경로 매칭 제거)
- fix: inotify — CLOSE_WRITE 추가 + atomic write 후 watch 재등록
- fix: watchLoop use-after-free — result.paths가 inc_bundler 내부 메모리를 가리키는 문제
- fix: 증분 빌드에서 코드 diff 없을 때 full-reload 전송 (HMR 안전성)
- fix(ci): --serve --plugin 테스트 Ubuntu CI에서만 skip (subprocess spawn 타임아웃)
- fix: inotify addPath — 존재하지 않는 파일 스킵 (kqueue와 동일 동작)
- fix: oxlint unused import + oxfmt 적용
- style: zig fmt 적용
- feat: 소스맵 정확도 + 네이티브 파일 감시 + 증분 빌드
- fix: /simplify 리뷰 반영 — config 옵션
- feat: defineConfig에 Vite/esbuild 호환 빌드 옵션 지원
- feat: load 훅 loader 필드 지원 — text/css/json 자동 래핑
- fix: @zts/core 사용법 주석 수정 — CSS load 시 export default 래핑 필요
- refactor: @zts/core를 TypeScript로 변환
- feat: renderChunk/generateBundle subprocess 훅 + config watch 재시작
- test+fix: config 자동 감지 테스트 + /simplify 반영
- feat: zts.config.{ts,js,mts,mjs,cts,cjs} 자동 감지
- fix(ci): skip flaky --serve --plugin 테스트 on CI
- fix(ci): dev server --plugin 테스트 bun 타임아웃 15s 설정
- fix(ci): dev server --plugin 테스트 타임아웃 + retry
- test(server): dev server 통합 테스트 8개 + 프록시 헤더 전달 수정
- fix: /simplify 리뷰 반영 — dev server 프록시
- feat(server): --proxy 옵션 — API 프록시 지원
- feat(server): dev server 옵션 확장 — 기본포트 12300, host, open
- refactor: 플러그인 API를 Vite/Rollup 스타일로 변경
- test(bundler): 플러그인 테스트 커버리지 2차 확대
- feat: --serve + --plugin 연동 — dev server에서 플러그인 사용
- test(bundler): 플러그인 subprocess 통합 테스트 6개 추가
- fix: /simplify 리뷰 반영 — 미검토 PR 6개 통합
- fix: /simplify 리뷰 반영 — watch 모드
- feat: --bundle --watch 모드 + 플러그인 watch 재사용
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.