C6.10.3Autocomplete must not rewrite committed textdesignresearch

Completion must not alter already confirmed input

Aliases: completion non-rewriting · committed text · ghost text

What it is

Autocomplete proposes a not-yet-written continuation: the prefix stays, the rest can be accepted or ignored. A string the user has already confirmed—with space, enter, a candidate tap, or a focus move—must not be rewritten by completion. Rewriting confirmed text is a different act (autocorrect). Folding it into completion turns “I glanced at a suggestion” into “a word I already issued was swapped.”

Why it happens

The input stream has a commit boundary: before it, a prefix still in composition; after it, text submitted into the document. Completion should act only before the boundary—ghost text stacked after the prefix, or a strip showing “what it becomes if accepted.” Once space walks a word across the boundary, that word leaves completion’s jurisdiction. If completion logic still watches the previous word in the document and rewrites it from letters about to be typed, the user is shown an edit they never signed. The boundary also protects a pasted block and a word written by an explicit candidate tap: those are already commits, not prefixes. Completion may keep proposing for the next word; it may not reach back to the last one.

Studying it

Build sequences “finish and confirm → start the next word’s prefix” and record whether characters in the last confirmed word change. Independent variables include confirm method (space, tap, blur), whether completion crosses words, and whether it shares a model with correction; dependent measures include count of rewrites of confirmed words and whether users notice. Separate log channels for completion and correction to see which subsystem rewrote.

Where it stops holding

In composition (pinyin not yet committed), the whole string is still before the boundary; changing it by completion or candidate pick edits the composition, not confirmed text. Grammar-level rewrites after commit, if they exist, should travel a visible correction or formatting channel, not hang off the completion API. Another person’s edit in a collaborative document is not completion; this claim does not forbid collaboration.

Applying it

  • Scope completion to the current unconfirmed prefix; after space, enter, or an explicit tap, remove that word from completion’s writable set.
  • Ghost text must not replace existing glyphs; it may only paint after the caret. Accept is insert, not replace.
  • Regression: after confirming word A, start word B’s prefix; every character of A must hold. Any diff is completion crossing the boundary.

Related

  • Same group: C6.10.1 Autocomplete candidate position and the cost of choosing · C6.10.2 Candidate jumping causes mis-selection
  • Adjacent: C6.11 Autocorrect · C6.16 Undo in text input
  • Search: committed text · autocomplete · ghost text

Cards in the same group

Quick Actions

Share

Share this page

ios_share

https://hci.top/en/handbook/C6.10.3