* In place of the Help and Settings buttons, add a hamburger menu
dropdown and place the links under there.
* Also in the dropdown is Close All Cameras and Mute All Cameras (if you
have any cams open; the links are hidden if not)
* Also in the dropdown add a Logout button that just links to a new
/logout route in order to unload the page and align with some users'
expectations (not knowing closing out of the chat page was enough to
log out of the room before)
* Bring back "(offline)" indicators when a user is no longer in the
room.
This commit makes an initial port of the front-end over to a proper Vue
CLI application. It seems to work from surface level testing.
Changes made:
* Rename web/static to public/static to place it into the Vue build path
* Notes: web/static/js/BareRTC.js and web/templates/chat.html are now
deprecated
* Rename web/static/js/sounds.js into src/lib/sounds.js making it a
proper JavaScript module with exports.
* Fill out initial src/App.vue by copying and updating
web/templates/chat.html and web/static/js/BareRTC.js into this module.
* 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.
* 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
* Added a top panel to put your video controls in.
* Broadcaster can mute or unmute their own audio input.
* When viewing others' cams, buttons appear to control their video:
* Their username is displayed in the corner.
* Mute/unmute button to silence their audio.
* "X" button to close their camera.
* Button to show what viewers are currently watching your camera.
* Add an "About" page and config for app branding.
* Add dark theme CSS for prefers-dark browsers.
* Add support for JWT tokens to authenticate users from your external app.
* JWT backed users can have profile pictures, profile URLs, and operator
status (admin). Note that no operator features exist yet.
* Add WelcomeMessages to settings.toml for default ChatServer messages to
write to each public channel directed at a new user logging in.
* Markdown support for chat messages!
* Add configuration system and default public channels support
* Add support for multiple channels and DM threads with users,
with unread badge indicators. DMs rearrange themselves by
most recently updated on top.
* Responsive CSS to work well on mobile devices.
* WebRTC pees exchange local/remote descriptions ("offer" and "answer")
* They don't seem to exchange ICE candidates yet
* Some back and forth happens but the final WebRTC stream connection
isn't established yet.