Commit Graph

59 Commits

Author SHA1 Message Date
d8c92800f3 Fixes for admins, VIP and blocking + Frontend tweaks
Changes to the chat server:
* Blocking will not apply to admin user accounts (operators)
* Users who block an admin will instead mute them, but the admin can
  still DM them if required
* Messages to VIP channels are broadcast to admins even if they are not
  VIPs, e.g. so moderator chatbots can see
* On the Who List: VIP-only cameras to highlight with the VIP background
  color on those buttons
2023-09-07 19:43:03 -07:00
e728644a77 Port front-end over to Vue CLI (create-vue)
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.
2023-09-06 17:15:02 -07:00
a7342988ba Null exception fix 2023-09-05 14:09:07 -07:00
7ffa6b4dbd More thorough blocking behavior 2023-09-05 13:57:11 -07:00
940f14e2d6 VIP-only chat channels 2023-09-03 12:48:21 -07:00
6e2aa517f5 Support for VIP users via JWT Auth 2023-09-03 12:08:23 -07:00
0acb729175 Update admin icon from gavel to peace 2023-08-30 13:31:21 -07:00
fd82a463f3 Deadlock detection, DND, and Frontend Fixes
* 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.
2023-08-29 15:54:40 -07:00
b5429226d6 A muted admin user can still DM you 2023-08-13 22:59:35 -07:00
9c05af2c2e BareBot Chatbot Client 2023-08-13 19:21:27 -07:00
59a611b05a Update README 2023-08-12 22:04:24 -07:00
05eb852bb9 Webhooks and Report Users
* 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.
2023-08-12 21:35:41 -07:00
ef496b5642 Update messaging on /nsfw command 2023-08-11 16:32:47 -07:00
a6866bd129 Order the Who List by Logged-in Time 2023-08-06 21:06:27 -07:00
6d26c2f141 Broadcast bans and kicks to everybody 2023-08-06 20:37:41 -07:00
52b1271591 Emojis and gender flags for users 2023-08-05 19:38:04 -07:00
974ee25b48 Commands: /ban and /op 2023-08-04 20:31:21 -07:00
e0dcc33519 Better admin moderator controls over webcams 2023-08-04 19:24:42 -07:00
029f25029d Cached Blocklist from your website
* 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.
2023-07-30 10:32:08 -07:00
84da298c12 Don't lock the subscriber list longer than necessary 2023-07-29 17:54:49 -07:00
f3517bec87 No pictures shared over chat DMs 2023-07-27 22:29:56 -07:00
e111899404 Spit and polish
* 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
2023-07-22 18:30:45 -07:00
75c7511410 Kick off conflicting usernames + Frontend mobile fixes
* 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
2023-07-17 20:38:07 -07:00
5f4b14ecc4 Emoji reactions 2023-06-30 20:00:21 -07:00
2445d45d3f Video Status Bitflags + Improvements
* 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
2023-06-30 18:42:40 -07:00
0f270a0390 Bugfix with MessageIDs in DM threads 2023-06-24 13:47:20 -07:00
b19a4821e4 Message Takebacks 2023-06-24 13:08:15 -07:00
4be18ea3a2 Add TURN server support 2023-06-13 21:57:31 -07:00
b07baca245 Statistics API: also show blue v. red cameras 2023-06-10 12:54:13 -07:00
6f51a4c739 Bugfix on command parsing 2023-06-10 12:27:27 -07:00
fb11295168 Re-sign JWT tokens for safer server deployments 2023-04-19 19:55:39 -07:00
219413ae6d Display names and WIP multiple camera support 2023-04-18 22:18:12 -07:00
2c2d140e57 Skip non-auth users from Who List 2023-04-01 23:44:15 -07:00
063b3c2f04 Bugfix when recipient has camera tagged nsfw by the operator 2023-04-01 22:02:53 -07:00
4a2fc9c923 Sort the WhoList + Mutual Video options
* 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
2023-03-31 19:46:42 -07:00
3f6e2193c8 Disable WebSocket compression 2023-03-31 12:40:55 -07:00
4466bb0ef5 Revert "Disable WebSocket compression and see if it helps with Safari"
This reverts commit f3354f2f1c.
2023-03-31 12:40:15 -07:00
f3354f2f1c Disable WebSocket compression and see if it helps with Safari 2023-03-31 12:36:49 -07:00
dd9f4b4dd4 Bugfixes with user status 2023-03-28 18:34:50 -07:00
e69449124e Chat status updates 2023-03-28 18:09:13 -07:00
3560e63096 User status and idle detection 2023-03-27 21:13:04 -07:00
75fbed4a4d YouTube link embeds 2023-03-24 22:47:58 -07:00
c5c8d08c7a Boot and Mute
* 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).
2023-03-22 20:21:04 -07:00
d819a1181d Photo sharing support 2023-03-21 21:29:24 -07:00
368902e801 Draggable resizable video panels 2023-03-13 21:31:34 -07:00
4397006186 Stringify WebRTC candidate/sdp payloads 2023-02-24 17:42:38 -08:00
15ebc42bd3 NSFW Cameras and Moderator Commands 2023-02-10 22:46:39 -08:00
b966f85ecc Spit and polish
* 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.
2023-02-09 23:03:06 -08:00
a55b4b2b49 A bit more logging to debug WebSocket issues 2023-02-08 20:01:06 -08:00
11cd2c821b Add screenshot and update README 2023-02-06 14:21:08 -08:00