input: Fix panic on IME composition in `masked` input (#2623)
## Description IME composition in a `masked` input panicked while shaping text: `end byte index 8 is not a char boundary; it is inside '•'`. The masked display text is `MASK_CHAR` repeated once per character, but the IME marked range (#2601) was passed to `split_run_for_ime_underline` in original-text offsets, so a `TextRun` boundary could land inside a multi-byte `MASK_CHAR`. Convert it to mask offsets first, and add a regression test on the run boundaries. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
F
Floyd Wang committed
de5859b271886af45cfab1f8984938d615b0b741
Parent: c48fb6f
Committed by GitHub <noreply@github.com>
on 7/30/2026, 3:57:18 AM