Task #598: 본문 각주 마커 이동 및 삭제#642
Closed
postmelee wants to merge 5 commits intoedwardkim:develfrom
Closed
Conversation
edwardkim
added a commit
that referenced
this pull request
May 6, 2026
- @postmelee (Taegyu Lee) 첫 PR 검토 — Issue #598 본문 각주 마커 이동 및 삭제 - 32 파일 +2,751/-34 (본질 src 9 + rhwp-studio TS 4 + tests 1 + 컨트리뷰터 fork plans/working 11) - 본 환경 검증: cargo test 1141 passed / issue_598_footnote_marker_nav 4/4 / clippy 0 - rhwp-studio npm run build 정합 / Docker WASM 4,587,318 bytes (PR #620 baseline -3,219) - 광범위 sweep: 167 fixture / 1,687 페이지 / 차이 0 - cherry-pick 충돌 영역: orders add/add 만 발생, src 영역 0 (합본 patch 방식 적용 시 깨끗) - Issue assignee 정합 (작업지시자 직접 지정), Issue #598 5 영역 모두 본질 정정 - 옵션 A (합본 cherry-pick + 작업지시자 web 환경 직접 각주 동작 테스트) 권장 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
added a commit
that referenced
this pull request
May 6, 2026
- postmelee 영역 정합 (첫 PR → 활발한 컨트리뷰터 13 PR 누적) - 9.5.1 합본 cherry-pick (17434e9, author postmelee 보존, 16 파일 +959/-34) - 9.5.2 결정적 재검증 (1141 passed / issue_598_footnote_marker_nav 4/4 / clippy 0) - 9.5.4 web 시각 판정 자료 안내 (8가지 권위 영역 명시 + 실행 명령) - WASM: 4,587,318 bytes (PR #620 baseline -3,219) - 처리 결정 갱신 (검토 중 → 옵션 A 진행 중 web 시각 판정 게이트 대기) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
added a commit
that referenced
this pull request
May 6, 2026
…postmelee 5 commits squash + 시각 판정 ★ 4 권위 영역 통과)
Owner
|
검토 + 합본 cherry-pick 머지 완료. 감사합니다. 처리 결과
본 환경 cherry-pick 시 발견 — 결정적 재검증 (본 환경)
광범위 페이지네이션 회귀 sweep
메인테이너 시각 판정 결과 (web 환경 +
|
| 영역 | 결과 |
|---|---|
| 각주 hitTest 판정 | ✅ 성공 |
| 각주 캐럿 이동 판정 | ✅ 성공 |
| 각주 앞에서 Del 키 판정 | ✅ 성공 |
| 각주 뒤에서 Backspace 키 판정 | ✅ 성공 |
samples/footnote-01.hwp 가 권위 샘플로 사용됨 (이미 본 환경 git tracked 영역).
본 PR 의 본질
본 PR 의 처리 본질에서 가장 우수한 점:
- Issue rhwp-studio: 각주 삭제 기능 구현 (편집 영역에서 각주 선택 → 삭제) #598 5 영역 모두 본질 정정 — hit test / 커서 이동 단위 / Delete/Backspace 양방향 동일 확인창 / 번호 재계산 / Undo
- WASM API 신규 정합 —
hitTestBodyFootnoteMarker/getFootnoteAtCursor/deleteFootnote(+ native 영역 동일 함수) 명료한 영역 분리 - HWP IR 표준 직접 정합 —
delete_footnote가 본문 footnote control + ctrl_data_records 동기화 + char_offsets/char_count 보정 + 번호 재계산 모두 정합 처리 - 확인 다이얼로그 단일 컴포넌트 — Delete/Backspace 양쪽 동일
showConfirm()호출 (Issue rhwp-studio: 각주 삭제 기능 구현 (편집 영역에서 각주 선택 → 삭제) #598 명세 정합) SnapshotCommand경로 Undo 통합 — Ctrl+Z 복원 정합- 회귀 차단 가드 — 4 신규 통합 테스트 (
issue_598_footnote_marker_nav.rs) + Puppeteer e2e (footnote-delete-confirm.test.mjs) - 한컴 권위 영역 인지 — "한컴 2010/2022 직접 실행 환경은 없어 로컬 웹서버와 e2e로 검증" + "메인테이너가 한컴 환경에서 확인하기 쉬운 수동 판정 포인트" 명시 (
reference_authoritative_hancom정합) - 단계 분리 (1)+(2) → (3) 권장 정합 — Issue rhwp-studio: 각주 삭제 기능 구현 (편집 영역에서 각주 선택 → 삭제) #598 의 단계 분리 권장을 한 PR 에 통합 정합으로 우수
크롬 확장 사용자분들이 별점 리뷰에서 요청해주셨던 각주 삭제 기능 의 본질 영역 (Issue #598) 을 한컴 정합 UX 5 영역 모두 정정해주셨습니다. v1.0.0 진입 직전 핵심 사용성 영역의 본질 정합 우수.
후속 영역 (별도 task 후보)
PR 본문 명시 — 셀/글상자 내부 각주는 본 PR 범위 외, 별도 후속 영역으로 분리 검토 예정입니다.
수고하셨습니다.
edwardkim
added a commit
that referenced
this pull request
May 6, 2026
- mydocs/pr/archives/pr_642_report.md 신규 (처리 보고서, 본 사이클 두 번째 web editor 본질 정정 PR) - mydocs/pr/pr_642_review.md → mydocs/pr/archives/pr_642_review.md 이동 - mydocs/orders/20260507.md 갱신 (PR #642 항목 추가, 잔존 PR 14 → 13) - feedback_assign_issue_before_work + reference_authoritative_hancom 메모리 권위 영역 강화 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim
added a commit
that referenced
this pull request
May 6, 2026
7 tasks
3 tasks
edwardkim
added a commit
that referenced
this pull request
May 7, 2026
- 13.1 핀셋 cherry-pick (0059557, author Hyunwoo Park 보존) - 13.2 결정적 재검증 (1141 passed / clippy 0 / WASM 4,588,023 bytes) - 13.3 작업지시자 안내 영역 (aift.hwp 페이지 수 47/77 차이 + 시각적 개선 미발현 본 환경 fixture 영역) - 13.4 권장 처리 방향 정합 (옵션 A-1 권위 샘플 도입 / A-2 그대로 머지 + 후속 / A-3 close + 후속 PR 권유) - 13.5 WASM 산출물 정합 (PR #642 baseline +705 bytes) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.
개요
#598의 본문 각주 마커 hit test, 커서 이동 단위화, Delete/Backspace 삭제 UX를 구현합니다.
이번 PR은 이슈에서 허용한 단계 분리 계획 중
(1) hit test + 커서 이동과(2) 삭제 API/UI를 한 PR에 통합한 최종 구현입니다.Closes #598
작업 범위 충족도
hitTestBodyFootnoteMarker()/hit_test_body_footnote_marker_native()추가,FootnoteMarkerNode.control_index를 실제para.controls인덱스로 보정getFootnoteAtCursor()/deleteFootnote()추가. 본문 footnote control 제거,ctrl_data_records동기화,char_offsets/char_count보정, 번호 재계산, reflow/pagination/cache 무효화marker_pos왼쪽과marker_pos + 1오른쪽 caret 위치 지원showConfirm("각주 삭제", "각주를 삭제하시겠습니까?")호출SnapshotCommand경로로 실행해 Ctrl+Z 복원 가능범위 밖으로 둔 항목:
주요 리뷰 포인트
charOffset == marker_pos + 1charOffset == marker_poscharOffset == marker_pos에서 Backspace를 누르는 경우는 각주 삭제가 아니라 일반 텍스트 삭제입니다.delete_text_at()의 UTF-16 삭제 길이 계산을 보정했습니다.insert_text_at()의 inline control 앞 삽입 조건을 실제 본문 흐름 컨트롤로 제한했습니다.insert_footnote_native()의 각주 control mask 비트도 동일 흐름에서 맞도록 보정했습니다.검증
로컬 검증
cargo test --test issue_598_footnote_marker_nav(4 passed)cargo test wasm_api::tests::test_save_text_only --lib -- --nocapturecargo test --lib(1135 passed, 0 failed, 2 ignored)cargo test navigable_text_len_counts_trailing_footnote_markercargo buildcd rhwp-studio && npm run builddocker-compose --env-file .env.docker run --rm wasmcd rhwp-studio && npm run buildCHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" node e2e/footnote-delete-confirm.test.mjs --mode=headlessgit diff --checkrhwp-studio e2e 검증
GitHub Checks
컨트리뷰터 안내 대응
(1)+(2) → (3)권장showConfirm()호출을 사용합니다.src/document_core/commands/footnote_ops.rs와 WASM API에 배치했습니다.insert:footnote패턴 참고mydocs/에 작성했습니다.수동 검증 자료
1. 본문 각주 마커 클릭 -> 각주 편집 모드 진입
2026-05-06.14.49.19.mov
2. Backspace 로 본문 각주 삭제 / Ctrl+Z → 각주 복원
gakju_delete.mov
3. Fn+Delete 로 본문 각주 삭제 / Ctrl+Z → 각주 복원
2026-05-06.15.41.30.mov
확인 기준:
1)각주 마커 삭제1)로 재번호화PR open 전 점검
upstream/devel기준 최신: behind 0, ahead 57e5b763AGENTS.mduntracked 로컬 파일은 PR 범위에서 제외)문서
mydocs/plans/task_m100_598.mdmydocs/plans/task_m100_598_impl.mdmydocs/plans/task_m100_598_delete_impl.mdmydocs/working/task_m100_598_stage*.mdmydocs/working/task_m100_598_report.mdmydocs/orders/20260506.md