2026-03-14
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
hwpjs는 PR 열세 개를 main에 병합하며 표 렌더링을 한컴 원본 출력에 맞추는 작업을 이어 갔습니다. 표 테두리 렌더링과 테두리 넘침 계산(#119), 연속 공백의 변환(#120), 오른쪽 외곽선 누락과 앞쪽 공백 처리(#123)에 이어 중첩 표 파싱·렌더링(#124)이 들어왔습니다. 셀 테두리 굵기가 0이거나 line_type이 0일 때 표 기본값이나 맞은편 셀 테두리로 대신하는 규칙(#125, #129, #130), LineSegment 없는 셀 문단의 겹침과 번호 표시(#126), 셀 안 그림 높이 반영(#127), 캡션 없는 표의 컨트롤 문단 렌더링(#128), 글자처럼 취급하는 글상자의 인라인 렌더링을 손봤습니다. ParaShape 들여쓰기 필드 오프셋과 셀 수직 정렬도 바로잡았고(#131), napi-rs를 올리고 PDF 모듈을 지우며 버전을 0.1.0-rc.8로 올렸습니다(#132). 문서 SSR 빌드에서 패키지를 externals로 빼는 수정(#133)도 병합됐습니다.
bungae는 3월 12일에 연 #22를 병합해 HMR을 Rolldown DevEngine 패치 업데이트로 바꾸고, HMR 클라이언트를 metro-runtime의 HMRClient API에 맞춰 다시 썼습니다. 이 PR에는 && 조건부 JSX가 Hermes에서 깨지는 문제를 예제 앱으로 단계별 재현하며 SWC 변환 위치와 대상을 여러 차례 바꿔 시험한 커밋이 많이 들어 있습니다. 이어 Metro 호환 에셋 처리와 pnpm·모노레포 경로 지원(#23), 벤치마크를 Metro 대비 OXC 비교로 바꾼 작업(#25), 사용자 Babel 플러그인을 넣는 transformer.babelPlugins 옵션(#26), hermes-parser WASM으로 Flow 타입 제거를 빠르게 한 변경(#27)이 병합됐습니다. 코드 분할 지원 #24는 열린 채 병합되지 않았습니다.
cheolsu-proxy는 릴리스 빌드의 unused_mut 경고로 CI가 실패하던 문제를 고치고 v0.1.0 릴리스 노트 문서와 설치 가이드를 갱신했습니다(#247). 저녁에는 조건부 Throttle 인터셉트 동작, 크롬 DevTools식 시간축 Waterfall, 캡처한 트래픽으로 OpenAPI 3.0 스펙을 만들어 내보내는 기능, gRPC 디코딩용 ProtoRegistry와 Proto 파일 관리 UI를 병합했고(#248), 조건부 Throttle을 응답 스트림 속도 제한에 적용하고 .proto를 등록하면 필드 이름을 보여 주게 했습니다(#249). SSE 뷰어·Timing 탭·클라이언트별 트래픽 분리 #250은 이날 열려 다음 날 병합됐습니다.
ohah.github.io에는 크론의 맞춤법 점검 상태 기록 커밋 33개가 남았습니다.
공개 커밋 165개, 해당일 생성 또는 병합된 PR 23개를 정리했습니다. PR 생성 20개·병합 21개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/bungae
- perf(oxc-bundler): use hermes-parser WASM for faster Flow type stripping (#27)
- feat(oxc-bundler): add transformer.babelPlugins option for custom Babel plugins
- fix(benchmark): replace __dirname with import.meta.url for ESM compatibility
- fix(benchmark): run OXC benchmark with Node.js (tsx) instead of Bun
- fix(benchmark): set NODE_PATH for Babel peer dependency resolution in CI
- fix(oxc-bundler): use direct imports for Babel plugins instead of require.resolve
- fix(oxc-bundler): resolve Babel plugins with explicit paths for CI compatibility
- fix(benchmark): fix formatting issue in run-benchmark.ts
- fix(benchmark): remove unused imports and add continue-on-error for OXC benchmark
- refactor(benchmark): switch from graph-bundler to OXC (Rolldown) for Metro comparison
- feat(oxc-bundler): add pnpm cache path support for asset resolution
- test(oxc-bundler): add monorepo, platform-specific, and Bun cache asset tests
- fix(oxc-bundler): normalize httpServerLocation for monorepo assets
- fix(oxc-bundler): use module.exports for asset registration
- fix(example): replace minimal PNG with valid renderable 24x24 PNG
- chore(example): make asset badge visible with icon + text
- feat(oxc-bundler): Metro-compatible asset handling
- docs: update CLAUDE.md for OXC bundler Phase 2 completion
- fix(oxc-bundler): finalize HMR client + cleanup debug logs
- fix(oxc-bundler): send hmr:connected on WebSocket open
- test(oxc-bundler): add client-side HMR message logging
- fix(oxc-bundler): rewrite hmr-client to match metro-runtime HMRClient API
- fix(oxc-bundler): fix HMR client replace pattern for metro-runtime
- test(oxc-bundler): debug hmr-client setup() call
- test(oxc-bundler): add runtime debug logging for module registration
- fix(oxc-bundler): move runtime.setup() inside WebSocket open handler
- test(example): add HMR runtime debug logging
- test(oxc-bundler): add more HMR debug logging
- test(oxc-bundler): add debug logging to DevEngine for HMR diagnosis
- revert(oxc-bundler): restore renderChunk SWC es5 + (void 0) fix
- fix(oxc-bundler): use es2015 target to preserve let/const scoping
- refactor(oxc-bundler): per-module SWC es5 + JSX transform
- fix(oxc-bundler): update patchRolldownRuntime test for removed warning
- fix(oxc-bundler): fix TypeScript errors in runtime and tests
- fix(oxc-bundler): update HMR runtime tests for new runtime structure
- style: format code with oxfmt
- fix(oxc-bundler): fix lint warnings - remove unused imports/declarations
- chore(example): restore original App.tsx
- fix(oxc-bundler): fix Rolldown (void 0) bug in && JSX context
- test: dump raw and preprocessed bundles for debugging
- fix(oxc-bundler): handle whitespace before ) in comma expression regex
- fix(oxc-bundler): handle whitespace/newlines in (0, fn) regex
- fix(oxc-bundler): include $ in comma expression regex for Rolldown vars
- fix(oxc-bundler): strip comma expressions (0, fn) before SWC es5
- test(oxc-bundler): add debug logging to verify @PURE stripping
- fix(oxc-bundler): strip @PURE before SWC to prevent (void 0) bug
- test(oxc-bundler): add /tmp dump for && version bundle analysis
- test(example): step 12c - ternary with padding comment to shift bundle size
- test(example): step 12b - only change ternary to && (same text)
- test(example): step 12 - ternary baseline re-check, remove && patch
- test(example): step 11 - && with LogBox disabled
- fix(oxc-bundler): auto-convert && JSX to ternary for Hermes compat
- test(oxc-bundler): add /tmp bundle dump for && debugging
- test(example): step 9c - static ternary for comparison
- test(example): step 9b - static && without useState
- test(oxc-bundler): test && pattern with renderChunk SWC es5
- fix(oxc-bundler): revert to renderChunk SWC es5 (stable baseline)
- fix(oxc-bundler): per-module SWC es5 for all modules (same as Rollipop)
- refactor(oxc-bundler): simplify hermes-compat to es2015 private-fields-only
- refactor(oxc-bundler): per-module SWC es5 with flow-strip coordination
- test(oxc-bundler): add && pattern and full simulation tests for hermes-compat
- test(example): step 7 - && without destructuring or arrow functions
- test(oxc-bundler): re-enable SWC es5 with debug logging for && issue
- test(oxc-bundler): disable SWC to isolate && expression issue
- fix(oxc-bundler): revert to renderChunk SWC es5 with debug dump
- fix(oxc-bundler): SWC es5 per-module transform, skip RN internals
- fix(oxc-bundler): add private fields/methods Babel plugins for Hermes
- fix(oxc-bundler): use Babel class-only transform instead of SWC es5
- refactor(oxc-bundler): move SWC es5 transform from renderChunk to transform hook
- fix(oxc-bundler): strip @PURE annotations before SWC es5 transform
- chore(example): step 4h - && with function wrapper (no @PURE)
- chore(example): step 4g - if-variable instead of inline &&
- chore(example): step 4f - ternary conditional instead of &&
- chore(example): step 4e - two children, no conditional
- chore(example): step 4d - add conditional rendering back
- chore(example): step 4c - fix styles for visibility
- chore(example): step 4c - re-render without conditional rendering
- chore(example): step 4b - re-render without NewAppScreen
- chore(example): step 4 - useState re-render + conditional badge
- chore(example): step 3 - add SafeAreaProvider + NewAppScreen
- chore(example): step 2 - add useState/useEffect re-render test
- chore(example): simplify App.tsx to isolate runtime error
- fix(oxc-bundler): revert SWC target to es5 for Hermes class expression support
- fix(oxc-bundler): add shimMissingExports for circular dependency handling
- debug(oxc-bundler): add diagnostics for MessageQueue$1 undefined issue
- fix(oxc-bundler): rewrite HMR runtime to avoid Hermes class scope issues
- fix(oxc-bundler): add null guards for __ReactRefresh in react-refresh plugin
- fix(oxc-bundler): replace Bun.Transpiler with Rolldown transformSync
- feat(oxc-bundler): switch HMR to Rolldown DevEngine for patch updates
ohah/cheolsu-proxy
- feat(desktop): gRPC Proto 디코딩 연동 — .proto 등록 시 필드명 표시
- feat(proxy_daemon): 조건부 Throttle 응답 스트림 속도 제한 적용
- fix: i18n 카탈로그 행번호 동기화 및 누락 번역 추가
- feat(desktop): Waterfall을 크롬 DevTools 스타일 시간축 기반으로 변경
- fix(desktop): handleExportOpenApi 변수 초기화 순서 오류 수정
- fix(desktop): OpenAPI 내보내기 대상 우선순위 적용
- feat(desktop): gRPC Proto 파일 관리 UI 추가
- feat(desktop): OpenAPI 스펙 내보내기 UI 추가
- fix(desktop): Waterfall 바 차트를 로그 스케일 상대 비율로 개선
- fix: CI 실패 수정 (테스트 컴파일 에러 + README 포맷)
- feat(proxy_daemon): gRPC 디코딩 강화를 위한 ProtoRegistry 추가
- feat(proxy_v2_models): OpenAPI 3.0 스펙 자동 생성 기능 추가
- feat(proxy_v2_models): 성능 Waterfall 타이밍 측정 및 시각화 추가
- feat(proxy_daemon): 조건부 Throttle 인터셉트 액션 추가
- docs: v0.1.0 릴리즈 노트 업데이트 및 설치 가이드 추가
- fix(desktop): 릴리즈 빌드에서 unused_mut 경고로 인한 CI 실패 수정
ohah/hwpjs
- fix(docs): SSR 빌드에서 @ohah/hwpjs를 externals로 설정
- chore: napi-rs 최신 버전 업데이트 및 PDF 모듈 제거
- chore: bump version to 0.1.0-rc.8
- style: cargo fmt 적용
- fix(parser): ParaShape 들여쓰기/내어쓰기를 단일 필드로 수정
- fix(html): like_letters=true 글상자(ShapeRect)를 인라인으로 렌더링
- style: cargo fmt 적용
- fix(html): SVG fill 높이를 row_positions 기반으로 계산
- chore: 비교용 스크린샷 제거
- fix(html): caption_info 없는 CtrlHeader paragraphs의 중복 렌더링 제거
- chore: 비교용 스크린샷 파일 제거
- fix(html): 한컴 원본 기준으로 border 선택 로직 재수정
- fix(html): 내부 행 경계에서 lower cell Top border를 우선 사용
- fix(html): 외곽 border에서 table default vs cell border 선택 로직 개선
- fix(html): 인접 셀 border line_type=0일 때 반대쪽 셀 border fallback 적용
- fix(html): 인접 셀 border line_type=0일 때 반대쪽 셀 border fallback 적용 (#129)
- fix(html): CtrlHeader paragraphs를 캡션 없는 테이블에서도 렌더링 (#128)
- fix(html): CtrlHeader(gso) 이미지 높이를 셀 행 높이에 반영 (#127)
- fix(html): LineSegment 없는 셀 내 paragraph에 올바른 top 위치 및 번호 마커 렌더링 (#126)
- fix(html): 테이블 내부 행/열 경계에서 셀 border w=0일 때 table default fallback 적용 (#125)
- fix(parser): 중첩 테이블 파싱/렌더링 지원 (#124)
- fix(html): 가로 외곽선도 열별로 border 확인하여 line_type=0 구간 건너뜀
- fix(html): 테이블 오른쪽 외곽선 누락 및 leading 공백 처리 수정
- fix(html): 연속 공백을 로 변환하여 한컴 원본과 일치
- refactor: render_vertical_borders에서 불필요한 ctrl_header_height_mm 파라미터 제거
- refactor(html): border overshoot를 stroke-width/2로 동적 계산
- fix(html): 테이블 border 렌더링을 한컴 원본과 일치하도록 수정
ohah/ohah.github.io
- CRD 188: 2026-03-15 8:00 AM - All 26 mdx files already checked
- chore(cron): 187차 CRD 주기적 실행 - 전체 mdx 파일 맞춤법 검사 완료 상태 확인 및 상태 갱신
- docs: CRON_CRD_WRITE.md - 2026-03-15 6:30 AM - 전체 .mdx 파일 맞춤법 검사 완료 상태 재확인 (186차 업데이트)
- CRD: 185차 업데이트 - 2026-03-15 5:30 AM (Asia/Seoul)
- docs: CRD periodic status check (2026-03-15 5:00 AM)
- CRD 주기적 재확인 실행: 모든 대상 mdx 파일 체크 완료 확인
- CRD: mark CRON_CRD_WRITE.md itself as checked
- CRD_180: 주기적 재확인 실행 - 스펠링 교정 대상 없음
- ## CRD 주기적 상태 재확인 완료: 2026-03-15 1:30 AM
- crd: update status after recheck (181)
- CRD: 모든 .mdx 파일 맞춤법 교정 완료 상태 확인 (180차 업데이트)
- CRD: 전체 대상 .mdx 파일 맞춤법 교정 완료 상태 재확인(2026-03-14 22:00)
- CRD: Add 178th cron reconfirmation entry at 21:30 PM
- docs(cron-write): check 126th mdx docs (all complete, lint ok)
- chore(cron): add 176번 CRD 주기적 재확인 업데이트 - chromium/code-review.mdx 검사 완료
- chore: cron spell-check verification 2026-03-14 20:00 PM
- CRD: update checklist before commit
- CRON: 173 - 전체 대상 26개 .mdx 파일의 맞춤법 교정 완료 상태 최종 확인 (2026-03-14 19:00)
- crd: docs/monthly-opensource/craby/background.mdx checked (no corrections needed)
- CRD: Check docs/monthly-opensource/craby/background.mdx for typos (none found)
- CRD: 171st spell check cycle - first-contribution.mdx verified
- cron: all target mdx files spell-checked; protocol file status verified
- CRD: 170번 실행 - 전체 대상 mdx 파일 검사 완료 상태 재확인
- crd: 169차 재확인 - 모든 mdx 파일 체크 완료 확인
- crd: periodically verify all mdx files (2026-03-14 15:00 AM Asia/Seoul)
- cron: CRD 주기적 재확인 실행 (166차) - 전체 대상 mdx 파일 체크 완료
- CRD: 165차 재확인 실행 - 모든 26개 mdx 파일 맞춤법 교정 완료 상태 확인
- CRD: docs/index.mdx 검사 완료 확인 (163차 업데이트)
- CRD: docs/index.mdx 체크 완료. 상태 갱신.
- CRD: docs/index.mdx 검사 완료. 맞춤법 교정 필요 없음.
- docs: 맞춤법 교정 완료 상태 갱신 (2/15) — 전체 대상 26개 .mdx 파일 검사 완료
- chore: CRD cron - recheck all mdx spellcheck status (2026-03-14 09:30 AM)
- chore(crd): 160th CRD periodic check - all 26 mdx files already spell-checked
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.