* Deadlock detection: the chatbot handlers will spin off a background goroutine
to ping DMs at itself and test for responsiveness. If the echoes don't return
for a minute, issue a /api/shutdown command to the HTTP server to force a
reboot.
* New admin API endpoint: /api/shutdown, equivalent to the operator '/shutdown'
command sent in chat. Requires your AdminAPIKey to call it. Used by the chatbot
as part of deadlock detection.
* Adjust some uses of mutexes to hopefully mitigate deadlocks a bit.
* Do Not Disturb: if users opt to "Ignore unsolicited DMs" they will set a DND
status on the server which will grey-out their DM icon for other chatters.
* Bring back an option for ChatServer to notify you when somebody begins watching
your camera (on by default).
* Automatically focus the message entry box when changing channels.
* Lower webcam resolution hints to 480p to test performance implications.
* New "Misc" tab added to the Settings modal with options to reduce spam
and improve privacy.
* Opt in (or out) for public channel join/leave presence
notifications
* New option to auto-ignore unsolicited DMs
* New sound effects for Watched and Unwatched (your camera)
* Reduces spam so ChatServer doesn't need to tell you every time
somebody opens your camera.
* New spinner icon when opening someone else's camera.
* If their cam takes a while to appear, the video button shows a
spinner icon as feedback so we avoid ChatClient spam giving you
acknowledgement of the cam trying to open.
* Added support for Webhooks and you can configure a Report Message hook
to let users report messages on chat.
* Add /reconfigure command to dynamically reload the server
settings.toml
* TODO: documentation for the webhooks.
* Color code usernames on video windows to be blue or red depending on
their local cam explicit setting
* Attempt to detect freezes on RTCPeerConnection videos by registering a
video onmute handler. If a freeze is detected, show a cyan mountain
icon by their name. Clicking the icon will re-connect their video.
* Update the video buttons on the Who List to always re-connect video
instead of toggling it opened and closed. The X buttons on videos are
now how you close a video.
* New API endpoint: /api/blocklist where your site can pre-deliver muted
username lists for users before they enter the chat.
* Image sharing in DMs is allowed if either party is an operator.
* Add a scrollback buffer option to the chat Settings to trim room history
so your browser can manage its memory usage
* Update the wording that ChatServer sends to users when the /nsfw command
has been used on them
* Fix the ordering of active DMs for Chromium browsers so the most recently
updated DM thread moves to the top of the list
* Show an indicator on videos whether the person you watch also watches
you back
* Fix the "X" button on the photo modal not functioning correctly
* 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