2026-02-26
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
react-wasm-table은 flex-wrap에서 격자선 행 범위를 rowHeight로 계산하는 #10과 헤더를 고정하지 않고 본문과 함께 스크롤되게 한 #11을 병합했습니다. 이어 createColumnHelper·useGridTable·다단 헤더 그룹 같은 TanStack Table 호환 API를 도입해 Grid 컴포넌트와 데모를 그 API로 옮겼고(#12), Taffy 기반 레이아웃 엔진과 열 단위 저장소 테스트, 세로 ScrollBar 컴포넌트를 더한 #13을 병합했습니다. 100만 행 스트레스 테스트와 FPS 표시, 컨테이너 크기에 맞춘 반응형 그리드 데모도 추가했습니다(#14).
정리 작업으로 공통 타입을 types.rs로 모으고 중복된 저장소 모듈을 지웠으며(#15), 쓰지 않던 필터링 모듈과 RowStyle 컴포넌트를 없앴습니다(#16). 기능으로는 SelectionManager로 범위 선택과 드래그, 가장자리 자동 스크롤, 터치, 키보드 이동, TSV 복사를 넣고 캔버스에 선택 영역을 그렸으며(#17), 그리드 단위 enableSelection과 열 단위 선택 가능 여부 설정을 추가했습니다(#18). 헤드리스 구조로 가는 기능 로드맵 문서(#19)를 쓴 뒤, WASM 초기화와 이벤트 처리 등을 훅으로 빼 Grid.tsx를 약 965줄에서 317줄로 줄이는 1단계 리팩터링을 병합했습니다(#20).
hwpjs는 전날 열린 모듈별 테스트 PR(#35부터 #66까지 중 닫힌 것을 뺀 나머지)을 병합했고, Markdown 뷰어의 ctrl_header 하위 모듈과 utils·renderer 모듈 기본 구조 테스트(#67부터 #77까지)를 새로 열어 같은 날 병합했습니다. 공통 모듈 테스트에서는 u16 리터럴 overflow도 고쳤고, 테스트 PR마다 MEMORY.md에 기록을 남겼습니다.
react-native-mcp는 E2E compareScreenshot 스텝에 saveDiff·saveCurrent 옵션을 넣고 visual_compare 도구 설명을 비주얼 리그레션 용도로 명확히 했으며(#105), 서버 버전을 0.1.0-rc.9로 올렸습니다(#106). ohah.github.io에는 2월 26일 요약과 크론 완료 표시가 올라갔습니다.
공개 커밋 137개, 해당일 생성 또는 병합된 PR 50개를 정리했습니다. PR 생성 23개·병합 50개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/hwpjs
- chore: update MEMORY.md with test PR #77 record
- test(core): add viewer/markdown renderer module basic structure tests
- chore: update MEMORY.md with test PR #76 record
- test(core): add viewer/markdown utils module basic structure tests
- chore: update Cargo.lock for tempfile dependency
- test(core): add constants module unit test (HWPTAG_BEGIN)
- test(core): add viewer/markdown markdown_unit_test module with 15 unit tests
- test(core): add viewer/core paragraph_test module with 12 unit tests
- test(core): add render_page edge case tests for viewer/html
- test(core): add common module unit tests and fix u16 literal overflow
- chore: update MEMORY.md with test PR #74 record
- chore: update MEMORY.md with test PR #73 record
- chore: update MEMORY.md with test PR #72 record
- chore: update MEMORY.md with test PR #71 record
- chore: update MEMORY.md with test PR #70 record
- chore: update MEMORY.md with test PR #69 record
- chore: update MEMORY.md with test PR #75 record
- test(core): add viewer/markdown ctrl_header table module basic structure tests
- test(core): add viewer/markdown ctrl_header shape_object module basic structure tests
- test(core): add viewer/markdown ctrl_header header module basic structure tests
- test(core): add viewer/markdown ctrl_header page_number module basic structure tests
- test(core): add viewer/markdown ctrl_header footnote module basic structure tests
- test(core): add viewer/markdown ctrl_header footer module basic structure tests
- test(core): add viewer/markdown ctrl_header endnote module basic structure tests
- test(core): add viewer/markdown ctrl_header page_number module basic structure tests
- chore: update MEMORY.md with test PR #67 record
- test(core): add viewer/markdown ctrl_header column_def module basic structure tests
- test(core): add viewer/html html render module basic structure tests
- chore: update MEMORY.md with test PR #65 record
- test(core): add viewer/markdown collect module basic structure tests
- chore: update MEMORY.md with test PR #64 record
- test(core): add document xml_template module basic structure tests
- chore: update MEMORY.md with test PR #63 record
- test(core): add viewer/html line_segment module basic structure tests
- chore: update MEMORY.md with test PR #62 record
- test(core): add viewer/html document module basic structure tests
- chore: update MEMORY.md with test PR #61 record
- test(core): add viewer/core paragraph module basic structure tests
- chore: update MEMORY.md with test PR #60 record
- test(core): add summary_information module basic structure tests
- chore: update MEMORY.md with test PR #59 record
- test(core): add preview_text module basic structure tests
- chore: update MEMORY.md with test PR #58 record
- test(core): add preview_image module basic structure tests
- chore: update MEMORY.md with test PR #57 record
- test(core): add size module basic structure tests
- chore: update MEMORY.md with test PR #56 record
- test(core): add svg module basic structure tests
- chore: update MEMORY.md with test PR #55 record
- test(core): add position module basic structure tests
- chore: update MEMORY.md with test PR #54 record
- test(core): add geometry module basic structure tests
- chore: update MEMORY.md with test PR #52 and #53 records
- test(core): add cells module basic structure tests
- chore: update MEMORY.md with test PR #52 record
- test(core): add shape_object module unit tests
- chore: update MEMORY.md with test PR #51 record
- test(core): add ctrl_header units tests and module verification (column_def, section_def, shared)
- chore: update MEMORY.md with PR #50 record
- test(core): add table render module compilation verification tests
- test(core): add FileHeader version string conversion test
- test(core): add edge case tests for MIME type resolution
- test(core): add edge case tests for MIME type resolution
- test(html): add common module unit tests
- chore: update test PR history with constants unit tests
- test(html): add constants unit tests for table rendering module
- chore: update test PR history
- test(core): add viewer/core renderer trait unit tests
- test(core): add viewer/markdown renderer module unit tests
- test(core): add viewer/core renderer module unit tests
- test(document): add edge case tests for FileHeader parsing
- test(core): add page html page edge case tests
- test(core): add styles module edge case tests and remove broken render_test
ohah/ohah.github.io
- docs: update cron completion timestamp (2026-02-27)
- docs: update all files checked complete (2026-02-27)
- docs: update today-commit summary for 2026-02-26
- docs: update today-commit summary for 2026-02-26
ohah/react-native-mcp
- Merge pull request #106 from ohah/release/0.1.0-rc.9
- chore(server): 버전 0.1.0-rc.9로 상향
- docs(server): visual_compare 도구 설명을 비주얼 리그레션 용도로 명확히 함
- style: oxfmt 포맷 적용
- docs: E2E 테스트 스텝 문서 보강 (assertions, interaction, screenshots, waits)
- feat(server): compareScreenshot에 saveDiff/saveCurrent 옵션 및 visual_compare 개선
ohah/react-wasm-table
- fix(grid): resolve code review todos (P1/P2/P3)
- refactor(grid): address PR #20 TypeScript review with stable getters and docs
- refactor(grid): extract Grid logic into hooks (Phase 0-1)
- docs: add feature roadmap for headless refactor and phases
- feat(demo): add Selection page for enableSelection demo
- feat(grid): wire enableSelection and column selectable in Grid
- feat(grid): map enableSelection to selectable in resolve-columns
- feat(grid): add enableSelection and per-column selectable types
- fix(adapter): require 5px mouse movement before selection drag
- chore(grid): apply format (oxfmt)
- chore(grid): export SelectionManager, buildTSV, and selection types
- feat(grid): wire selection state and handlers in Grid component
- feat(grid): draw selection highlight in canvas renderer
- test(grid): add event-manager tests
- feat(grid): extend EventManager for selection drag, touch, and keyboard
- test(grid): add selection-rect tests
- feat(grid): add selection rect computation from layout buffer
- test(grid): add selection-manager tests
- feat(grid): add SelectionManager and buildTSV for range selection and copy
- feat(grid): add selection types (CellRange, NormalizedRange, SelectionStyle)
- refactor: remove filtering module and RowStyle component
- chore(core): remove obsolete DataStore comment in ColumnarStore
- refactor(core): consolidate types and remove redundant store modules
- test(grid): add row-reverse header/data line tests
- feat(demo): add stress test (1M rows), FPS counter, responsive grid
- refactor(grid): simplify ScrollBar and Grid integration
- feat(grid): add ScrollBar component and demo page
- feat(core): add layout engine, columnar store, and adapter tests
- fix(grid): use GridColumnDef<TData, any> in grid-instance for column arrays
- refactor(demo): use TanStack column API in CssGrid and example pages
- docs: format TanStack API skill and align tables
- style(grid): apply formatter to grid package and tests
- fix(grid): use GridColumnDef<TData, any> for column arrays to match TanStack Table
- docs: add TanStack API skill for agents
- docs(e2e): clarify column comment in coordinate-helpers
- refactor(demo): align example pages with shared patterns
- refactor(demo): update Home page layout and content
- feat(demo): add TanStack API example page and nav
- test(grid): add unit tests for TanStack API and grid instance
- feat(grid): export TanStack API and new modules from package index
- refactor(grid): integrate TanStack API in Grid component
- refactor(grid): adapter and renderer support for flex and stub instructions
- refactor(grid): add FlexInstruction/StubInstruction, switch column defs to TanStack types
- feat(grid): add canvas components module for cell rendering
- feat(grid): add useGridTable hook for TanStack-compatible API
- feat(grid): add grid instance and buildGridInstance
- feat(grid): add resolveInstruction for cell render instructions
- feat(grid): add buildHeaderGroups for multi-level headers
- feat(grid): add resolveColumns and getLeafColumns
- feat(grid): add createColumnHelper for TanStack-style column definitions
- feat(grid): add TanStack-compatible column and sorting types
- chore: add .reference/ to .gitignore
- refactor: make header scroll with content instead of sticky
- fix: use rowHeight for grid line bounds under flex-wrap
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.