배경
#20 조사에서 block boundary Enter/Backspace는 headless command가 소유해야 한다고 정리했다. 하지만 Android/iOS virtual keyboard의 event ordering과 native effect는 jsdom replay나 desktop browser smoke만으로 닫을 수 없다.
ProseMirror-view와 Lexical changelog에는 같은 bug class가 반복된다.
- Android Backspace가 Enter로 해석됨
- Android virtual keyboard Backspace join이 Enter handler를 실행함
- Android code block Enter와 spell correction 충돌
- Chrome Android empty nested list item Enter native behavior 교체
- iOS empty heading Enter, native no-effect Enter, double paragraph Enter
- code block empty line Backspace와 Firefox cursor 위치 문제
근거
docs/editor-block-boundary-key-policy-audit.md
docs/editor-beforeinput-policy-audit.md
- ProseMirror-view changelog
- Lexical changelog
수집할 trace
- Android Chrome / GBoard: paragraph start/end Backspace/Delete
- Android Chrome / GBoard: empty paragraph Backspace
- Android Chrome / GBoard: codeBlock Enter and newline Backspace
- Android Chrome / GBoard: empty listItem or whitespace-only listItem Enter
- iOS Safari: empty heading Enter
- iOS Safari: paragraph start/end Enter and Backspace
- iOS Safari: codeBlock Enter and newline Backspace
완료 기준
배경
#20 조사에서 block boundary Enter/Backspace는 headless command가 소유해야 한다고 정리했다. 하지만 Android/iOS virtual keyboard의 event ordering과 native effect는 jsdom replay나 desktop browser smoke만으로 닫을 수 없다.
ProseMirror-view와 Lexical changelog에는 같은 bug class가 반복된다.
근거
docs/editor-block-boundary-key-policy-audit.mddocs/editor-beforeinput-policy-audit.md수집할 trace
완료 기준
beforeinput.inputType,data,isComposing, selection before/after를 남긴다.