task: kevin9327 그룹B(studio 편집 — IME·그리드 뷰) 통합 - #2676
Merged
Conversation
[#2337-review] 계약: WASM 삭제/조회 count 는 Rust Paragraph::delete_text_at 의 char(Unicode scalar) 단위이며, JS String.length(UTF-16)를 넘기면 astral 문자에서 실제보다 많이 지운다. 당시 undo/HF/FN 경로에는 charCount() 가 적용됐지만 IME 조합 경로는 누락돼 있었다. compositionLength(:488)와 iOS 폴백 _iosLength(:553)는 deleteTextAt 의 삭제 count 로 전달되므로(deleteTextAt → wasm.deleteText*) scalar 여야 한다. 조합 중 후보에 astral 문자가 있으면 다음 업데이트가 뒤따르는 실제 문자까지 지우고, 조합 종료 시 getTextAt 도 이웃 문자를 포함해 읽어 undo 레코드가 부정확해진다. 커서 오프셋(anchor.charOffset + text.length 등)은 studio 의 UTF-16 관례를 유지하므로 손대지 않았다 — command.ts charCount 주석과 tests/undo-delete-char-count.test.ts 가 그 관례를 명시한다. 검증: - 신규 정적 소스 가드 3건(tests/ime-composition-char-count.test.ts). 수정을 되돌리면 2건 실패, 복원하면 3건 통과(red→green 실증). - 전체 studio 테스트 436 pass / 1 fail. 유일한 실패 cell-flow-boundary 는 깨끗한 devel 에서도 동일하게 실패하는 사전 실패임을 stash 로 확인. 처리결과 문서: mydocs/report/task_m100_2548_report.md (cherry picked from commit 4515f95)
getPageAtY 가 그리드 보기에서 행의 마지막 쪽을 반환한다. layoutGrid 가 한 행의 모든 쪽에 같은 rowTop 을 넣기 때문이다. 이 의미 자체는 의도된 것이고 (getPageAtPoint 가 rowLastIdx 라 명명하고 스캔 끝점으로 사용), 문제는 "현재 쪽" 이 필요한 소비처가 이 Y 전용 진입점을 직접 쓴 것이었다. - PageUp 무동작: 행의 마지막 쪽에서 -1 하면 같은 행이라 offset 이 동일해 스크롤이 제자리다. PageDown 은 +1 이 실제로 다음 행이라 우연히 동작했고, 이 비대칭이 근본 원인을 가리킨다. - 쪽 표시기: 3열이면 첫 행에서 "3 / N" 으로 표시돼 1·2쪽을 표시할 수 없었다. getPageAtY 의미를 바꾸면 getPageAtPoint 가 깨지므로 의미는 유지하고 getRowFirstPageAtY() 와 pagesPerRow 게터를 추가해 두 소비처를 고쳤다. PageUp/PageDown 은 ±1 이 아니라 ±열수로 이동한다. 단일 컬럼에서는 pagesPerRow=1 이라 종전 동작과 동일하다. 영향 없음 확인: canvas-view.ts:512 focusPage(offset 만 사용, 행 내 동일), getPageAtPoint(스캔 끝점 의미가 맞음). 검증: tests/virtual-scroll-grid-page.test.ts 4건 신규 — 이 클래스의 첫 테스트다 (종전 tests/virtual-scroll* 파일 부재). DOM 없이 node --test 로 검증되며, 그리드 전제 조건을 테스트 내에서 단언해 조용한 통과를 막는다. 처리결과 문서: mydocs/report/task_m100_2560_report.md (cherry picked from commit acd8ab9)
This was referenced Jul 21, 2026
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.
통합
kevin9327 님의 studio 편집 계열 2건을 cherry-pick(-x) 통합.
검증
npx tsc --noEmitclean,npm test463/463운영
head CI 성공 + merge 승인 후 원 PR 크레딧·close.
🤖 Generated with Claude Code