• 
      

    Support spell checking, dictation, and AI rewriting in text fields.

    Review Request #14962 — Created March 26, 2026 and updated

    Information

    Review Board
    release-7.1.x

    Reviewers

    For ages now, we've wanted to offer spell checking in text fields. This
    has been one of our most-requested features, but we were limited due to
    the capabilities and limitations of CodeMirror and the lack of browser
    APIs for integrating with the spell checking dictionary. This has
    remained despite my own tries to get PMs from both Chrome and Firefox
    interested in opening up their vendored APIs.

    Last year, we solved this integration and implemented it in our NPM
    CodeMirror Speak-and-Spell library at
    https://www.npmjs.com/package/@beanbag/codemirror-speak-and-spell.

    This not only provides spell checking, but also enables support for the
    browser's dictation and AI rewriting capabilities, amongst others, if
    the browser supports them.

    This change adds support for this within Review Board. There's an opt-in
    feature in My Account -> Settings for enabling this, and once enabled,
    text fields will support spell checking and the other listed features
    in all text fields.

    Spell checking applies to all text, including any code blocks. This
    does not differentiate between any kinds of content within the text
    field.

    The feature is currently opt-in due to behavioral quirks in Chrome and
    Safari. While Firefox will check spelling upon display of the text
    field, Chrome and Safari will check only while typing or when clicking
    on a word. This isn't specific to our implementation, but rather it can
    be seen with any standard text field. That may change in time, at which
    point we'd enable this by default.

    Enabled and tested on Firefox, Chrome, and Safari. Worked in all three
    browsers, with the quirks noted.

    Tested AI rewriting and speech-to-text in iOS Safari.

    Tested that behavior was normal with the setting off.

    Summary ID
    Support spell checking, dictation, and AI rewriting in text fields.
    For ages now, we've wanted to offer spell checking in text fields. This has been one of our most-requested features, but we were limited due to the capabilities and limitations of CodeMirror and the lack of browser APIs for integrating with the spell checking dictionary. This has remained despite my own tries to get PMs from both Chrome and Firefox interested in opening up their vendored APIs. Last year, we solved this integration and implemented it in our NPM CodeMirror Speak-and-Spell library at https://www.npmjs.com/package/@beanbag/codemirror-speak-and-spell. This not only provides spell checking, but also enables support for the browser's dictation and AI rewriting capabilities, amongst others, if the browser supports them. This change adds support for this within Review Board. There's an opt-in feature in My Account -> Settings for enabling this, and once enabled, text fields will support spell checking and the other listed features in all text fields. The feature is currently opt-in due to behavioral quirks in Chrome and Safari. While Firefox will check spelling upon display of the text field, Chrome and Safari will check only while typing or when clicking on a word. This isn't specific to our implementation, but rather it can be seen with any standard text field. That may change in time, at which point we'd enable this by default.
    cd304f9e082417c7695d4cea111dd8cdaed6f938

    Description From Last Updated

    Shouldn't this have a return type of bool | None?

    maubinmaubin

    This should also mention the None return.

    daviddavid

    In the case that self.settings is None, this returns False instead of None. Probably should be: if (profile_settings := self.settings): …

    daviddavid

    enableSpellChecking needs to be added to this interface.

    daviddavid
    maubin
    1. 
        
    2. reviewboard/accounts/models.py (Diff revision 1)
       
       
      Show all issues

      Shouldn't this have a return type of bool | None?

    3. 
        
    chipx86
    maubin
    1. Ship It!
    2. 
        
    chipx86
    david
    1. 
        
    2. reviewboard/accounts/models.py (Diff revision 3)
       
       
       
       
       
      Show all issues

      This should also mention the None return.

    3. reviewboard/accounts/models.py (Diff revision 3)
       
       
       
       
       
      Show all issues

      In the case that self.settings is None, this returns False instead of None. Probably should be:

      if (profile_settings := self.settings):
          return profile_settings.get('enable_spell_checking', None)
      else:
          return None
      
    4. Show all issues

      enableSpellChecking needs to be added to this interface.

    5. 
        
    chipx86
    chipx86
    Review request changed
    Change Summary:

    Added the missing fix for Profile.should_enable_spell_checking.

    Commits:
    Summary ID
    Support spell checking, dictation, and AI rewriting in text fields.
    For ages now, we've wanted to offer spell checking in text fields. This has been one of our most-requested features, but we were limited due to the capabilities and limitations of CodeMirror and the lack of browser APIs for integrating with the spell checking dictionary. This has remained despite my own tries to get PMs from both Chrome and Firefox interested in opening up their vendored APIs. Last year, we solved this integration and implemented it in our NPM CodeMirror Speak-and-Spell library at https://www.npmjs.com/package/@beanbag/codemirror-speak-and-spell. This not only provides spell checking, but also enables support for the browser's dictation and AI rewriting capabilities, amongst others, if the browser supports them. This change adds support for this within Review Board. There's an opt-in feature in My Account -> Settings for enabling this, and once enabled, text fields will support spell checking and the other listed features in all text fields. The feature is currently opt-in due to behavioral quirks in Chrome and Safari. While Firefox will check spelling upon display of the text field, Chrome and Safari will check only while typing or when clicking on a word. This isn't specific to our implementation, but rather it can be seen with any standard text field. That may change in time, at which point we'd enable this by default.
    6b6a4d84364a637bc4a95c0de62970b333a6bbce
    Support spell checking, dictation, and AI rewriting in text fields.
    For ages now, we've wanted to offer spell checking in text fields. This has been one of our most-requested features, but we were limited due to the capabilities and limitations of CodeMirror and the lack of browser APIs for integrating with the spell checking dictionary. This has remained despite my own tries to get PMs from both Chrome and Firefox interested in opening up their vendored APIs. Last year, we solved this integration and implemented it in our NPM CodeMirror Speak-and-Spell library at https://www.npmjs.com/package/@beanbag/codemirror-speak-and-spell. This not only provides spell checking, but also enables support for the browser's dictation and AI rewriting capabilities, amongst others, if the browser supports them. This change adds support for this within Review Board. There's an opt-in feature in My Account -> Settings for enabling this, and once enabled, text fields will support spell checking and the other listed features in all text fields. The feature is currently opt-in due to behavioral quirks in Chrome and Safari. While Firefox will check spelling upon display of the text field, Chrome and Safari will check only while typing or when clicking on a word. This isn't specific to our implementation, but rather it can be seen with any standard text field. That may change in time, at which point we'd enable this by default.
    cd304f9e082417c7695d4cea111dd8cdaed6f938

    Checks run (2 succeeded)

    flake8 passed.
    JSHint passed.
    david
    1. Ship It!
    2.