Composer: 'Spellcheck in composer' setting, off by default on touch #14

Closed
void wants to merge 0 commits from void/composer-spellcheck into main
Member

Meta (Gboard) reported the red underline in the composer and, when the caret touches a flagged word, the keyboard replaced by a useless suggestion modal.

Cause: the composer's Editable (src/app/components/editor/Editor.tsx) set none of spellCheck, autoCorrect, autoCapitalize, inputMode, so the browser default (spellcheck on) applied. Only the developer-tool editors set spellCheck="false".

Change: new setting composerSpellcheck (Settings > General > Editor, 'Spellcheck in composer'). Default is off when (pointer: coarse) matches (phones), on otherwise. Off sets spellCheck=false and autoCorrect=off; autoCapitalize and inputMode are left alone. Applies to the room composer and the message editor (both use CustomEditor). The default is computed once per device and is persisted on the first settings save.

Verification: vitest run: 63 pass, including new tests for the coarse/fine/no-matchMedia default and the attribute mapping. eslint and prettier clean on touched files. tsc shows the same 934 pre-existing matrix-js-sdk typing errors with and without the change.

Not verified: no browser or phone here, so the Gboard behaviour itself is untested. autoCorrect=off is honoured by Chrome/Android as far as I know but unconfirmed on a device. Needs a check on a phone.

Preview build (base /void/composer-spellcheck/): staged at /srv/minds-web/void/composer-spellcheck/.

🤖 Generated with Claude Code

Meta (Gboard) reported the red underline in the composer and, when the caret touches a flagged word, the keyboard replaced by a useless suggestion modal. **Cause:** the composer's `Editable` (`src/app/components/editor/Editor.tsx`) set none of `spellCheck`, `autoCorrect`, `autoCapitalize`, `inputMode`, so the browser default (spellcheck on) applied. Only the developer-tool editors set `spellCheck="false"`. **Change:** new setting `composerSpellcheck` (Settings > General > Editor, 'Spellcheck in composer'). Default is off when `(pointer: coarse)` matches (phones), on otherwise. Off sets `spellCheck=false` and `autoCorrect=off`; `autoCapitalize` and `inputMode` are left alone. Applies to the room composer and the message editor (both use `CustomEditor`). The default is computed once per device and is persisted on the first settings save. **Verification:** `vitest run`: 63 pass, including new tests for the coarse/fine/no-matchMedia default and the attribute mapping. eslint and prettier clean on touched files. `tsc` shows the same 934 pre-existing matrix-js-sdk typing errors with and without the change. **Not verified:** no browser or phone here, so the Gboard behaviour itself is untested. `autoCorrect=off` is honoured by Chrome/Android as far as I know but unconfirmed on a device. Needs a check on a phone. Preview build (base `/void/composer-spellcheck/`): staged at `/srv/minds-web/void/composer-spellcheck/`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
brand: Ratatoskr replaces Cinny in the user-facing surface
Some checks failed
CLA Assistant / CLAssistant (pull_request_target) Has been cancelled
Check PR title / lint (pull_request_target) Has been cancelled
Build pull request / Build pull request (pull_request) Has been cancelled
9e12f6cbe4
Squirrel logo, favicons and app icons generated from shapes by scripts/gen-brand.mjs;
titles, meta, manifest, device names, welcome, auth, splash and About are Ratatoskr.
About, the auth footer and the welcome page credit Cinny (AGPL-3.0) with source links.
LICENSE and notices untouched; storage keys and protocol names are unchanged.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
composer: spellcheck setting, off by default on touch devices
Some checks failed
CLA Assistant / CLAssistant (pull_request_target) Has been cancelled
Check PR title / lint (pull_request_target) Has been cancelled
Build pull request / Build pull request (pull_request) Has been cancelled
56f360233a
The composer's Editable set no spellCheck/autoCorrect/autoCapitalize/inputMode,
so the browser default (spellcheck on) applied. On Gboard that draws the red
underline and swaps the keyboard for a correction modal when the caret touches
a flagged word. Add 'Spellcheck in composer' (Settings > General > Editor),
defaulting to off when the primary pointer is coarse and on otherwise. Off also
sets autoCorrect=off, since spellCheck alone leaves the suggestion UI in place.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Author
Member

Closing: landed in dev's history (head is an ancestor of dev 64edacac, brought in through the preview-all merges). spellcheck.ts, its test, the Editor.tsx hook and the composerSpellcheck setting are identical on dev. Nothing left to merge.

Closing: landed in dev's history (head is an ancestor of dev 64edacac, brought in through the preview-all merges). spellcheck.ts, its test, the Editor.tsx hook and the composerSpellcheck setting are identical on dev. Nothing left to merge.
void closed this pull request 2026-11-10 17:18:59 +00:00
Some checks failed
CLA Assistant / CLAssistant (pull_request_target) Has been cancelled
Check PR title / lint (pull_request_target) Has been cancelled
Build pull request / Build pull request (pull_request) Has been cancelled

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/Ratatoskr!14
No description provided.