Skip to content

Document의 offset 선택과 네이티브 범위 방향을 보존한다 - #724

Merged
developer-1px merged 3 commits into
mainfrom
issue-723-document-offset
Sep 7, 2026
Merged

Document의 offset 선택과 네이티브 범위 방향을 보존한다#724
developer-1px merged 3 commits into
mainfrom
issue-723-document-offset

Conversation

@developer-1px

@developer-1px developer-1px commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Document에서 같은 블록의 offset을 0→2로 바꿔도 성공 결과와 함께 offset 0이 남았다. endpoint 비교가 block ID만 보고 변경을 같다고 판정했기 때문이다. replace/extend는 offset까지 비교하고 블록 toggle은 기존 ID 기준을 유지해, 커서 이동·양방향 확장·범위 collapse와 편집 후 Undo 복원을 바로잡는다.

실제 입력 경로에서도 같은 결과를 유지하도록 함께 수정했다. Web의 textSelectionFromControl이 native 방향을 기존 SelectionRange<number>로 번역하고, React DocumentTextControl은 focus offset이 이미 일치하는 네이티브 범위를 커서로 접지 않는다. Document Demo의 중복 keyboard.text 설정을 제거해 textarea의 방향키·Shift 선택을 가로채지 않게 했다. 새 Web 함수의 owner 문서/API reference와 기존 Usage/source 등록을 연결했다.

Core API, editor selection shape, 블록 단위 toggle·Copy/Cut/Paste 및 History owner는 유지한다. 먼저 머지된 #722의 공통 적합성 설계를 통합했고, 설계 문서의 offset 결함 관찰 기록을 수정 후 owner별 회귀 증거로 연결했다. Web API의 end·direction 생략 시 동작도 문서에서 구별한다.

검증

  • 기존 구현의 동일 블록 선택/복원 실패 2개와 React가 [2,4][4,4]로 접는 실패를 재현한 뒤 수정
  • 관련 6개 package 61 files / 556 tests 통과 (편집 문법의 공통 규칙을 Hands profile 적합성으로 연결한다 #722 통합 후 공통 문법 사례 포함)
  • Editing·React·Web 테스트 TypeScript 검사, workspace build, docs:evaluate 통과
  • Site source discovery 2 files / 17 tests, site 전체 guard·TypeScript 검사 통과
  • Chrome: Document의 커서·정/역방향 Shift 선택, 기존 편집/History와 clipboard 흐름 3개 + React Connector·Clipboard 소비자 흐름 3개 통과
  • git diff --check 통과

기존 Chrome 제어는 검증 탭을 후속 호출에서 찾지 못해 유지할 수 없었다. 사전 안내 후 로그인 없이 동작하는 로컬 페이지를 Playwright의 별도 Chrome 테스트 프로필로 검사했다.

offset 하나가 과거 네이티브 DOM 범위 전체를 복원하는 계약은 추가하지 않는다. editor의 기록된 offset/range 복원과 native range 보존·외부 cursor 위치 복원을 문서에서 구별한다.

Closes #723

@developer-1px

Copy link
Copy Markdown
Owner Author

머지 전 리뷰 및 통합

검토 대상: bfa11fb7, 이슈 #723의 Goal Anchor, 전체 16개 변경 경로와 실제 호출 관계. 기존 리뷰 의견은 없고 Plan·Package·Site·External kit가 모두 성공했다.

Document point 비교, 블록 toggle 유지, Web의 방향 있는 anchor/focus 변환, React의 native range 보존, Host의 네이티브 키 입력 소유권을 검토했다. 구현에서 머지를 막는 결함은 발견하지 못했다.

리뷰에서 확인한 문서 불일치 두 가지를 현재 Done의 검증 경계에 맞춰 보완한다.

  • 먼저 머지된 #722의 standards/editing-grammar.md가 offset 2 요청 후 0에 남는 결함을 현재 미해결로 설명한다. #724의 회귀 테스트와 실제 Document 입력 경로의 수정 증거를 연결해 현재 구현과 일치시킨다.
  • Web README의 “without end/direction”은 selectionEnd만 있는 입력까지 collapsed로 읽힐 수 있다. 실제 함수는 end가 없을 때 collapsed이며 방향이 없을 때는 start→end다. 새 공개 API의 fallback 설명을 명확히 한다.

#722 통합 중 두 README의 말미 추가 부분만 충돌했다. 양쪽 owner 계약을 모두 보존해 해결하고, 결합된 package 적합성·문서·source 등록·브라우저 검증을 실행한다. Core, selection shape, 다른 editor 정책과 native range 복원의 기존 한계는 그대로다.

유용태 added 2 commits September 8, 2026 00:08
@developer-1px

Copy link
Copy Markdown
Owner Author

리뷰 보완 및 통합 검증 완료

최종 검토 대상: 18f290ccda05513d4e78e7bd917dd46d4f3056ea. #722를 포함한 main을 통합했고 두 README의 계약을 모두 보존했다. offset 미해결 관찰은 수정 후 Editing·Web·React·실제 Document 회귀 증거로 연결했으며, Web의 선택 end·direction 생략 규칙을 명확히 했다. 추가 runtime 변경은 없다.

통합 후 검증:

  • 관련 6개 package: 61 files / 556 tests 통과
  • Site source discovery: 2 files / 17 tests 통과
  • Chrome: Document 3개 + React Connector/Clipboard 소비자 3개 시나리오 통과(각 실행 setup도 통과)
  • Workspace build, site 전체 guard·TypeScript, docs:evaluate, API reference 검사(29개 package / 1033 exports), diff 검사 통과

기존 Document 선택/복원과 React range collapse 실패는 구현 전에 재현한 회귀이며 이번 통합 후에도 해당 테스트가 통과한다. Core·selection shape·블록 toggle/Copy/Cut/Paste·History owner 불변 조건을 확인했다. offset 하나로 과거 native range 전체를 복원하거나 모든 profile을 Stable로 선언하는 계약은 추가하지 않았다.

원격 PR 본문·HEAD·17개 변경 경로·#723 closing 연결이 검증한 로컬 상태와 일치한다. 머지를 막는 코드 결함이나 미해결 리뷰 의견은 없다. 현재 최신 커밋의 CI 실행을 확인 중이며 성공 후 사용자의 “리뷰 후 머지” 요청에 따라 머지한다.

@developer-1px
developer-1px merged commit 929c27d into main Sep 7, 2026
4 checks passed
@developer-1px
developer-1px deleted the issue-723-document-offset branch September 7, 2026 15:20
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.

Document의 동일 블록 내 offset 선택과 범위 확장을 반영한다

1 participant