diff --git a/src/app/components/editor/autocomplete/RoomMentionAutocomplete.tsx b/src/app/components/editor/autocomplete/RoomMentionAutocomplete.tsx index 91fffbab0..2935245ac 100644 --- a/src/app/components/editor/autocomplete/RoomMentionAutocomplete.tsx +++ b/src/app/components/editor/autocomplete/RoomMentionAutocomplete.tsx @@ -140,7 +140,8 @@ export function RoomMentionAutocomplete({ }; useKeyDown(window, (evt: KeyboardEvent) => onTabPress(evt, pickTop)); - useAutocompleteEnter(true, pickTop); + // Same rule as people: a fully typed #alias:server sends as typed. + useAutocompleteEnter(!query.text.includes(':'), pickTop); return ( Rooms} requestClose={requestClose}> diff --git a/src/app/components/editor/autocomplete/UserMentionAutocomplete.tsx b/src/app/components/editor/autocomplete/UserMentionAutocomplete.tsx index 9ab348290..48fbbb070 100644 --- a/src/app/components/editor/autocomplete/UserMentionAutocomplete.tsx +++ b/src/app/components/editor/autocomplete/UserMentionAutocomplete.tsx @@ -140,9 +140,9 @@ export function UserMentionAutocomplete({ }; useKeyDown(window, (evt: KeyboardEvent) => onTabPress(evt, pickTop)); - // The list always shows a suggestion (a member, or the typed id), so Enter - // always picks rather than sending "hey @bo". - useAutocompleteEnter(true, pickTop); + // Enter picks while a partial name is being typed ("hey @bo"). Once a full + // user ID has been typed ("/kick @alice:server"), Enter sends as typed. + useAutocompleteEnter(!query.text.includes(':'), pickTop); const getName = (member: RoomMember) => getMemberName(room, member.userId);