test: add canvas visual diff pipeline#498
Closed
seo-rii wants to merge 7 commits intoedwardkim:develfrom
Closed
Conversation
edwardkim
added a commit
that referenced
this pull request
Apr 30, 2026
…w + 보안 hardening, cherry-pick @seo-rii 7 commits)
edwardkim
added a commit
that referenced
this pull request
Apr 30, 2026
…7 commits) 본 PR 은 PR #456 (PageLayerTree replay 전환 P2) 후속 P3 검증 레이어: - rhwp-studio E2E (canvas-render-diff.test.mjs) - GitHub Actions Render Diff workflow - legacy Canvas vs PageLayerTree replay Canvas 픽셀 diff 자동 검증 7 commits 분리 cherry-pick (test + diagnostics + docs + CI runner + 보안 hardening 3건). 변경 영역: JS E2E + CI workflow + Vite 설정 + 문서 (Rust 변경 0). 검증: cargo test --lib 1102 passed, svg_snapshot 6/6, issue_418 1/1, issue_501 PASS, clippy 0건. 작업지시자 정책: ios/devel 처럼 skia 쪽 렌더러도 별도 브랜치로 운영하여 위험도 낮추는 방법 고려 중. 본 검증 인프라가 향후 별도 backend 실험 시 backend 별 회귀 검출 도구로 활용 가능. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Owner
처리 결과 — cherry-pick 머지 (7 commits)본 PR 의 7 commits 분리 cherry-pick + 머지 완료. 작성자 author 보존 (seorii). 흡수된 commits
검증
머지
후속 정책 안내메인테이너가 `ios/devel` 같은 별도 브랜치 패턴으로 skia 쪽 렌더러도 별도 브랜치를 생성해서 위험도를 낮추는 방법 을 고려 중입니다.
따라서 본 PR (P3 검증 레이어) 은 본 `devel` 흡수, Skia/ThorVG 등 실제 backend 구현은 별도 브랜치 영역으로 분리하는 정책으로 진행 예정입니다. 처리 보고서: `mydocs/pr/pr_498_report.md` 본 PR 은 close 합니다. 회귀 검증 도구 추가 감사합니다. |
edwardkim
added a commit
that referenced
this pull request
Apr 30, 2026
본 사이클 본질: - Task #501 (cell.padding 한컴 방어 로직 모방 정정, closes #501) - PR #428 (oksure — 그룹 내 그림 직렬화) - PR #494 (DanMeon — Paragraph::utf16_pos_to_char_idx 외부 노출, #484) - PR #478 (planet6897 — 7 Task / 10 commits cherry-pick: #488/#490/#483/#489/#495/#480/#476) - PR #498 (seo-rii — Canvas visual diff 파이프라인, relates #364) 미흡수 + 분리: - 이슈 #502 (#495 잔존 — 문단 내 글상자 TextRun 처리) - 이슈 #503 (#479 미흡수 — 한컴 2020 시각 판정 필수) 버전 갱신: Cargo.toml + npm/editor + rhwp-studio + rhwp-vscode 모두 0.7.8 → 0.7.9. CHANGELOG (한/영) 갱신, rhwp-vscode/CHANGELOG.md 갱신. README 기여자 감사 누적 갱신 (cskwork/DanMeon/oksure/planet6897/seanshin/seo-rii 추가). 검증: cargo build OK, cargo test --lib 1102 passed, cargo clippy 0건, WASM 빌드 정합. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
added a commit
that referenced
this pull request
May 1, 2026
본 사이클: - rhwp-chrome / Edge v0.2.2: 4 파일 버전 동기화 (manifest + package + dev-tools-inject + content-script — v0.2.0 hotfix 사례 정합) - rhwp-firefox v0.2.2: 동일 영역, content-script.js 는 manifest 동적 참조로 자동 정합 라이브러리 코어 v0.7.3 → v0.7.9 (4 사이클) 갱신 — Task #501 + PR #428/#494/#478/#498 누적 + v0.7.6/v0.7.7/v0.7.8 사이클 흡수. 등록 문구: - chrome-0.2.2_kor.md / chrome-0.2.2_eng.md (한/영) — Chrome/Edge 공통 + AMO 등록 정보 - edge-0.2.2_reviewer_notes.md — Edge 파트너 센터 Notes for certification (1,918자, 2,000자 한계 내) - chrome-0.2.1 한/영 등록 문구 백업 자기검열 grep (feedback_external_docs_self_censor 메모리 룰): 통과 AMO 4 함정 (feedback_amo_submission_gotchas 메모리 룰): 통과 빌드 환경: Node v22.18.0 (rolldown 호환). 빌드 결과: - rhwp-chrome.zip 16 MB - rhwp-firefox.zip 12.9 MB - rhwp-source-0fb3e67.zip 47.9 MB (AMO 소스 제출) 3 스토어 제출 완료: - Chrome Web Store (1~3 영업일 심사) - Microsoft Edge Add-ons (1~2 영업일) - Mozilla AMO (1~5 영업일) .gitignore: rhwp-chrome/*.zip, rhwp-firefox/*.zip, rhwp-firefox/dist/ 추가 (빌드 산출물 누적 차단) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
added a commit
that referenced
this pull request
May 1, 2026
본 사이클 17번째 PR. HWP 3.0 (한컴 1990년대~2000년대 초반 레거시 포맷) 첫 오픈소스 파서 구현 + Square wrap 어울림 렌더링 정정. 본 PR 머지로 rhwp = HWP 5.0 + HWPX + HWP 3.0 3 포맷 모두 지원. 본질: - Task #417: HWP 3.0 파서 본질 (Stage 1~4) - Task #460: Square wrap + 렌더러 정정 (Stage 1~9 + 보완 1~3 + 리팩토링) - 작성자 분기에서 본 사이클 devel (Task #501 + PR #478 + PR #498 + v0.7.9) 이미 흡수 → 충돌 해결 보존 옵션 B (단일 머지) 선택. 51 commits 의 작성자 단계 보고서 보존 + 본 사이클 회귀 영역 (issue_501 PASS) 통과. 검증: cargo test --lib 1105 passed (1102 + HWP 3.0 신규 3), svg_snapshot 6/6, issue_418 1/1, issue_501 PASS, clippy 0건, WASM 4,378,441 bytes (+176 KB Johab 매핑 + 파서). 작업지시자 통찰: "이제 우리도 HWP 3.0 포맷까지 성공했습니다. 컨트리뷰터가 대단합니다." 머지 commit: c7330cf Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4 tasks
edwardkim
pushed a commit
that referenced
this pull request
May 4, 2026
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
변경 요약
P2에서 public Canvas 렌더링 경로를
PageLayerTreereplay 기반으로 전환했기 때문에, 이번 PR에서는 legacy Canvas와 layer Canvas 결과를 브라우저에서 직접 비교하는 visual diff 파이프라인을 추가합니다.구체적으로는 다음을 넣었습니다.
rhwp-studioE2E에 legacy Canvas / layer Canvas 픽셀 diff 테스트 추가basic/KTX.hwpbiz_plan.hwptac-case-001.hwpresults.json/summary.md로 남기고, 실패 시 비교 이미지 artifact를 저장Render Diffworkflow 추가npm run e2e:render-diff:ci추가이 PR은 렌더링 동작을 새로 바꾸는 PR은 아니고, P2 이후의 Canvas 전환이 legacy 경로와 계속 맞는지 잡아내기 위한 회귀 검증 레이어입니다.
관련 이슈
relates #364
범위
이번 PR에서 검증하는 기준은 “브라우저 Canvas에서 legacy
PageRenderTree경로와 기본PageLayerTreereplay 경로가 같은 픽셀 결과를 내는지”입니다.기본 CI에서는 리뷰 시간을 줄이기 위해 각 fixture의 1페이지만 비교합니다. 더 넓게 보고 싶을 때는 workflow dispatch나 로컬에서 아래 옵션을 쓰면 됩니다.
RHWP_RENDER_DIFF_FILES=basic/KTX.hwp,biz_plan.hwpRHWP_RENDER_DIFF_MAX_PAGES=allRHWP_RENDER_DIFF_ALL=1RHWP_RENDER_DIFF_WRITE_IMAGES=1비목표
테스트
git diff --check upstream/devel..origin/render-p3node --check rhwp-studio/e2e/canvas-render-diff.test.mjsnode --check rhwp-studio/e2e/run-render-diff.mjswasm-pack build --target web --devCHROME_PATH=... npm run e2e:render-diff:ci로컬 render diff 결과는 기본 fixture 3개 모두 0 diff였습니다.
basic/KTX.hwp: 0 diffbiz_plan.hwp: 0 difftac-case-001.hwp: 0 diffcargo test/cargo clippy -- -D warnings는 이번 PR의 직접 변경 범위가 JS E2E와 CI workflow라 별도로 돌리지 않았습니다.스크린샷
픽셀 diff 실패 시 CI artifact에 legacy/layer/diff 이미지가 올라가도록 했습니다. 현재 기본 fixture는 모두 0 diff라 첨부할 비교 이미지는 없습니다.