- A tapped shift (on or off) survives the field re-reporting its context:
it lasts until a character is typed, the hint changes or a field is focused
- An input-method reset forgets the guessed text and pending dead key, so
double-space can't delete a character the keyboard never saw
- Fields that state typing preferences only get capitals if they ask
- Trackpad moves in fields without surrounding text make the guess unknown;
Backspace removes a whole grapheme cluster from it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- TextContext: field purpose/hints and text before the cursor, reported by
the backend (KWin content_type + surrounding_text)
- TextRules: sentence-start and double-space heuristics, deletion helpers
- KeyRepeater: held backspace repeats, then deletes whole words (Ctrl+BS)
- Controller keeps a best-guess of the text before the cursor so rules work
instantly and in fields that don't report surrounding text
- No auto-capitalization or smart punctuation in password/URL/email fields
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>