Ao investigar Private Topics Plugin - #109 by thoka, descobri que uma menção a um usuário em uma categoria restrita não é relatada quando o nome de usuário contém letras maiúsculas.
Se eu mencionar @SomeUser, o editor solicita /composer/mentions.json?names[]=SomeUser&topic_id=10728
e, no resultado, o nome de usuário é retornado em minúsculas, sem user_reasons definido.
Uma consulta ao nome de usuário em letras minúsculas retorna "user_reasons": {"someuser":"category"}.
Se eu usar letras minúsculas para os nomes de usuário no compositor, avisos para usuários sem direitos suficientes serão exibidos.
Se alguém usar a autocompletar fornecida pelo editor, os nomes de usuário digitados em minúsculas serão substituídos por nomes em maiúsculas e, portanto, não serão relatados.
No entanto, se name não estiver em minúsculas, users[name] não existe.
Correção:
if user = users[name.downcase]
...
elsif group = groups[name.downcase]
...
Ou melhor: converta todos os nomes para minúsculas no início do método, pois há muitos problemas ali. groups faz corretamente .where("lower(name) IN (?)", @names.map(&:downcase)), mas funções como visible_group_ids_for_allowed_check, topic_allowed_group_ids, mentionable_group_ids e members_visible_group_ids todas usam where(name: @names), o que também introduz problemas de sensibilidade a maiúsculas e minúsculas.