* When JWT tokens are used to join the chat and the username conflicts:
instead of renaming the new user to add a "2" it will disconnect the
original login (sending a message that they have signed in somewhere
else and are logged out now)
* When disconnected the text entry box will be greyed out.
* Improvements for the mobile user experience: if you're viewing the
chat history panel and have unread messages or DMs, a number indicator
appears on the channels button. It is grey for public channel messages
or red if any of them are DMs
* Fix the emoji picker drop-down on the first messages of a DM thread
* Consolidate all the Video flags (active, nsfw, mutual, mutualOpen)
into a bitmask flag (single integer)
* New video flag for when the source has muted their video, to show a
crossed out grey mic on their camera for other chatters
* Bugfixes around syncing the mute state for self and other videos when
videos are opened, closed and opened again
* Profile pictures on the DMs list
* Add a distinctly colored title and background for DM threads apart
from the public channels
* On the Who List, the profile picture is clickable to open profile
links
* Fix auto-scrolling issues: it won't autoscroll if the new message was
in a different channel, and when toggling between channels always
scroll back to the bottom of that channel
* The who list now sorts alphabetically instead of random
* New user controls when they share video:
* Require users to also be sharing before they open ours
* We auto-open a viewer's video when they open ours
* Users can now boot viewers off their camera. From the viewer's POV the
booter has just turned off their camera and it will remain "off" for
the remainder of the booter's session.
* Users can now mute one another: if you mute a user, you will no longer
see that user's messages or DMs; and the muted user will never see
your video as being active (like a boot but revokable if you unmute
later).
* Track the window focus/blur events. Leaving the tab while in a channel
now means you may still hear sound effects in that channel.
* Add a CORS JSON API /v1/statistics to get details from the server
about who is online. The CORSHosts whitelist in the settings.toml
limits domain access to the endpoint.