2026-02-21
요약 (AI 작성)
2월 21일에는 hwpjs와 react-native-mcp를 대상으로 활발한 작업이 이루어졌습니다. hwpjs에서는 PDF 생성 기능과 관련한 to-pdf CLI 업데이트, Liberation Sans 폰트 번들링, PDF 테이블/이미지 지원 등이 포함되었으며 다수의 리팩터링 및 테스트 추가 작업도 수행되었습니다. react-native-mcp는 Android 관련 UI 위치 보정과 E2E 워크플로 개선 작업 및 스크립트 안정성이 강화되었습니다.
병합된 주요 PR로는 hwpjs에서 HTML 테이블 출력을 맞춘 작업 (#12), Liberation Sans 번들링 (#10) 등이 있으며, react-native-mcp에서는 E2E 워크플로 보강 (#76), CI 실패 완화 (#74) 등이 포함됩니다.
커밋
ohah/hwpjs
- feat(core): align HTML table output with fixtures (htG only when caption)
- docs(documents): add Linux x64 cross-build installation guide
- chore(config): add Cross.toml and Ubuntu 24 Dockerfile for linux-x64 cross-build
- chore(node): add win32-x64-msvc native binary from cross-build
- chore(node): add darwin-arm64 native binary and cross-build usage in CONTRIBUTING
- feat(node): to-pdf CLI, batch pdf, default font dir, fonts bundle and clippy fixes
- fix(core): PDF viewer and test snapshot updates
- refactor(documents): rename docs to documents and update all references
- security(core): add DoS protection and cleanup pdf viewer
- docs(todos): mark PR#10 review items 001-010 resolved
- feat(core): bundle Liberation Sans for PDF tests and improve image handling
- test(core): add PDF export tests and content summary snapshots
- feat(node): add toPdf NAPI and to-pdf CLI command
- feat(core): PDF table and image support with genpdf images feature
- feat(core): iterate all body paragraphs in PDF export
- feat(core): expose HwpDocument::to_pdf
- feat(core): render first paragraph text into PDF
- feat(core): add PdfOptions and to_pdf stub returning minimal PDF
- chore(core): add genpdf dependency for PDF viewer
- chore(node): disable to-pdf CLI and batch pdf options, document for later
- [fix(core): each footnote/endnote uses correct backlink number [^1], ^2], ...
- refactor(core): replace unwrap with expect in FileTime implementation
- docs(core): add comprehensive docstring for parse_record_from_tree
- refactor(core): reduce duplicate LIST_HEADER logic in header/footer/footnote/endnote processing
- fix(core): table position and caption layout to match fixtures
- refactor(core): accept updated snapshots from table layout refinement
- chore(core): update snapshot test results from fixture alignment work
- refactor(core): remove redundant if/else blocks in table render
- test(core): add table comparison screenshots and borderfill/multicolumns layout snapshots
- test(core): add size.rs format and table/table_position HTML snapshots
- feat(core): match table layout to fixture (table2 DOM order, htb style, htG height)
- test(core): update HTML snapshots for parsed-values-only table/hls
- fix(core): ensure table position from hcd_position/page_def/offset only
- refactor(core): table border values from spec or parsed data
- fix(core): hls line-height and top from LineSegment/ParaShape only
- fix(core): SVG viewBox dimensions from content_size only
- fix(core): table content height from row_sizes/cell height only
- refactor(core): table position and caption width from parsed data only
ohah/react-native-mcp
- fix(react-native): Android 리액트 스캔 오버레이 좌표 보정
- refactor(react-native): fiber 직렬화 시 measure uid를 path 기준으로 통일
- fix(react-native): Android measure 보정 제거로 컴포넌트 하이라이트 위치 복구
- test(e2e): Step 32 Bottom sheet 스와이프·대기 완화 (CI 안정화)
- chore(ci): Android E2E 에뮬레이터 세로 방향 고정
- fix(react-native): Android measure px→dp 변환 추가
- chore(config): CI E2E iOS·Android 워크플로 보완
- chore(config): CI E2E 시뮬레이터/에뮬레이터 기기 지정 및 Android 해상도 고정
- chore: Cursor 명령어 및 e2e 스텝 정리
- docs: 기존 문서에 상용 준비·E2E 링크 보강
- chore(ci): E2E 워크플로에 Doctor 스텝 추가