Skip to content

fix: 포트 감사 역백포트 — 떨어진 개체 선택 · RTF 여백 왕복 · 스크립트 링크 JSON/HTML 출력 - #56

Merged
centwon merged 2 commits into
mainfrom
fix/port-audit-2026-09-24
Sep 24, 2026
Merged

centwon merged 2 commits into
mainfrom
fix/port-audit-2026-09-24

Conversation

@centwon

@centwon centwon commented Sep 23, 2026 •

Copy link
Copy Markdown
Owner

WinUIRichEditor 포트가 1.2.0 이후 미게시 변경분을 감사해 찾은 결함 중 상류에도 있는 3건(포트 PR #56). 각각 상류에서 실패하는 테스트로 먼저 재현했다.

결함

  1. 표 행·열 공개 API가 지운 행·열 안의 개체 선택을 남김 — 중첩 표·그림이 선택된 채 문서에서 빠지고, Delete가 떨어진 행을 고치는 빈 되돌리기 단계를 만듦(캐럿 위치에서 지워야 할 것을). → 네 Table* 본문에서 DropDetachedObjectSelection(문서에서 아래로 걷는다 — 지운 행의 셀은 표를 부모로 기억한다). 상류엔 공통 AfterEdit가 없어 이 네 곳에만 걸었다(포트는 모든 편집 경로).
  2. RTF 여백 왕복이 mm를 틂 — 15 mm → 850 twip → 14.993 mm, 여백 픽커 5단계 전부 불일치. → PageSetup.TwipsToMm: 0.1 mm 단위이고 같은 twip으로 되돌아가는 값만 스냅. Word 1800 twip(31.75 mm)은 그대로. 기존 MarginsRoundTripThroughRtf_ToWithinATwip이 "1 twip 이내"를 계약으로 잡아 가렸다.
  3. 스크립트 링크 검사가 HTML 입력에만 — JSON/.flow로 들어온 javascript: 링크가 내보낸 HTML·클립보드 HTML로 다시 나감. → JSON 읽기에 SafeHref, HTML 출력에도 같은 검사(호스트 SetHyperlink 대비). 이 RTF 읽기는 HYPERLINK 필드를 읽지 않아 해당 없음.

검증

  • 전체 1240 통과.
  • 반증: 선택 정리를 끄면 2건 빨강 / 늘 지우면 "남은 개체 유지" 1건 빨강, 포매터 수정을 되돌리면 10건 빨강.

공개 표면 변화 없음.

후속 커밋 (c1972ef)

  • HTML 빈 목록 항목: 쓰기는 data-are-empty + 외부 렌더러용 <br>을 넣는데 목록 읽기가 둘 다 무시해, 빈 항목이 줄바꿈 든 항목으로 돌아왔다. 포트 퍼즈(시드 8178)가 찾은 결함의 상류판. 빈 문단과 같은 규칙으로 읽는다. 수정 전 빨강 확인, 전체 1241 통과.

🤖 Generated with Claude Code

centwon and others added 2 commits September 24, 2026 08:29
WinUIRichEditor 포트가 미게시 변경분을 감사해 찾은 결함 중 상류에도 있는 3건(포트 PR #56).
각각 상류에서 실패하는 테스트로 먼저 재현했다.

- 표 행·열 공개 API: 지운 행·열 안의 중첩 표·그림이 선택된 채 남아, Delete가 떨어진 행을 고치는
  빈 되돌리기 단계를 만들었다. 네 Table* 본문에서 DropDetachedObjectSelection(문서에서 아래로 걷는다).
- RTF 여백 왕복: 15 mm → 850 twip → 14.993 mm. PageSetup.TwipsToMm이 0.1 mm 단위이고 같은 twip으로
  되돌아가는 값만 스냅. Word 1800 twip(31.75 mm)은 그대로.
- 스크립트 링크: JSON 읽기에 SafeHref, HTML 출력에도 같은 검사(호스트 SetHyperlink 대비).
  이 RTF 읽기는 HYPERLINK 필드를 읽지 않아 해당 없음.

테스트 1240 전체 통과. 반증: 선택 정리를 끄면 2건 / 늘 지우면 1건 빨강, 포매터 수정 되돌리면 10건 빨강.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
포트가 문서 퍼즈를 페이지 설정까지 넓히자 20,000시드 중 시드 8178에서 드러난 HTML 결함의 상류판.
쓰기는 빈 항목에 data-are-empty와 외부 렌더러용 <br>을 넣는데, 목록 읽기는 둘 다 보지 않았다 —
<br>이 내용으로 읽혀 빈 항목이 줄바꿈 든 항목이 됐다(포트는 항목이 통째로 사라져 양옆 항목이 합쳐지고
번호 모양이 바뀌었다). 빈 문단과 같은 규칙으로 읽는다. 외부 HTML의 표식 없는 빈 항목은 여전히 버린다.

수정 전 빨강 확인. 테스트 전체 통과. 새 테스트의 경고(CS8602) 정리.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@centwon
centwon merged commit c4853af into main Sep 24, 2026
4 checks passed
@centwon
centwon deleted the fix/port-audit-2026-09-24 branch September 24, 2026 01:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant