View Issue Details

IDProjectCategoryView StatusLast Update
0006257SOGoWeb Mailpublic2026-10-16 07:31
Reporterrd Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionopen 
Product Version5.12.10 
Summary0006257: Cyrillic "б" and "ж" act as recipient separators in the To field unless the UI language is Russian (0004042 fix is incomplete)
Description

In the message composer, typing "б" or "ж" with the Ukrainian keyboard layout in the To/Cc/Bcc field doesn't insert the letter. Instead, the text typed so far is turned into a recipient chip, and the letter is lost. Contacts with these letters in their names can't be searched or entered.

This is the same problem as 0004042, fixed in commit c2eed78 ("use different email separator keys depending on locale"). That fix removes the comma and semicolon separators only when the interface language is "ru". On the Ukrainian layout, "б" and "ж" share physical keys with "," (keyCode 188) and ";" (keyCode 186), so the bug still occurs with any other interface language.

Tested:

  • UI language Ukrainian + Ukrainian layout -> bug
  • UI language English + Ukrainian layout -> bug
  • UI language Russian + Ukrainian layout -> works correctly
Steps To Reproduce
  1. Set the SOGo interface language to Ukrainian (or English).
  2. Switch the keyboard layout to Ukrainian.
  3. Compose a new message and type a name containing "б" or "ж" (not as the first character) in the To field.

Expected: the letter is inserted, and autocomplete keeps working.
Actual: the text before the letter becomes a recipient chip, and the letter is dropped (see screenshots).

Additional Information

The root cause is that separators are detected by keyCode (physical key) rather than by the typed character. The UI language and the keyboard layout are independent, so a locale-based exception can't cover all cases (e.g. English UI with a Ukrainian layout). The same applies to the Italian case from 0003513 ("@" on the ";" key).

Suggested fix: treat keyCode 186/188 as separators only when the typed character is actually ";" or "," (event.key).

Working workaround, tested on our server, loaded via SOGoUIAdditionalJSFiles (in mailcow: data/conf/sogo/custom-sogo.js):

(function () {
window.addEventListener('keydown', function (e) {
if ((e.keyCode === 188 || e.keyCode === 186) &&
e.key !== ',' && e.key !== ';' &&
e.target && e.target.closest &&
e.target.closest('md-chips, md-contact-chips')) {
e.stopPropagation();
}
}, true);
})();

The listener runs in the capture phase and stops the keydown event before it reaches md-chips, but only when the physical key is comma/semicolon and the typed character is not. The letter is inserted normally, and "," / ";" typed on the Latin layout still work as separators. Verified with Ukrainian and English UI languages.

Environment: SOGo 5.12.10, mailcow 2026-07b, browser chrome / OS Windows&Linux

TagsNo tags attached.

Activities

rd

rd

2026-10-16 07:31

reporter  

1.png (8,240 bytes)   
1.png (8,240 bytes)   
2.png (10,765 bytes)   
2.png (10,765 bytes)   

Issue History

Date Modified Username Field Change
2026-10-16 07:31 rd New Issue
2026-10-16 07:31 rd File Added: 1.png
2026-10-16 07:31 rd File Added: 2.png