We add a resize handler to the window when the ChatContainer is created. If a
second ChatContainer is created due to React redrawing, remove the old handler.
Co-authored-by: janWilejan <>
Firefox only breaks at word boundaries by default, meaning we need a horizontal
scrollbar to handle long words like AAAAAAAAAAAAAAAAAAAAAAAAAAAAA.
Co-authored-by: janWilejan <>
* Name change: better unicode handling
Client-side:
* Changes the NameChangeModal to show text "Over limit" when a proposed display
name is too long.
* Allows names to go over limit to prevent splitting graphemes on input.
Server-side:
* Changes the MakeSafeStringOfLength to count number of unicode code points
instead of string bytes.
* name modal: check that newName is defined before iterating
* change chat from a sidebar to a column
Using a 2-column layout prevents the chat scrollbar from overlapping the page
scrollbar. Also, it no longer needs to calculate extra padding for elements.
* remove unused Sidebar.tsx
* fix css for chat column
* re-center "Go to last message" button
* main content column always uses maximum height
* lint
* re-hide scrollbars in mainContent on chromium
* fix chat column width when input is over-full
* chat is only fixed-width in desktop
---------
Co-authored-by: janWilejan <>
* core: remove file extension from emoji name
* web: transform emotes to labels when sending
* chat: replace br with line break
* core: implement emoji cache
* chat: send shortcodes for custom emoji
* chat: correct esling errors
* core: move emoji injection into dedicated function
* emoji: integrate emoji into markdown renderer, fix formatting
* chat protocol: correct golangci-lint findings
* chat field: specify that the contentEditable is an HTMLElement
* admin: mention that emoji should have unique names
* Prettified Code!
* regenerate pack-lock
* chat: correct the emphasis tag, provide fallback for other elements
---------
Co-authored-by: jprjr <jprjr@users.noreply.github.com>
* highlighting: make case-insensitive, support unicode
* highlighting: also highlight simplified/normalized form
* highlighting: use MDN-recommended escape pattern