Cleaned up some synchronization around ConnectedUsers.users while I was in there. The list itself wasn't synchronized, which could have been a slight problem.
The black card "What are two cards in your hand that you want to get rid of?" obviously wants you to play 2 cards, but it doesn't have any blanks in it, so the automatic card importer had no idea that it wants you to play two cards.
Users can specify an identification code when they connect (8-100 characters), only if they are using HTTPS. This code is combined with their nickname and a server-side secret, hashed with SHA-256, and condensed down to 64 bits by XORing every 8th byte with each other, and finally converted to base64 (with the trailing = removed). This code is displayed in a tooltip when hovering over the user's chat (TODO: mobile way to view it).
Sigils have been added to be displayed before the user's name in the chat. Admins get @, users with an ID code get +, and normal users get nothing. The IS_ADMIN field is now deprecated, as this can be determined from the user's sigil. It will be removed eventually, but is still being included in events even though the official client should not be using it anymore.
Kicks and bans are now always displayed to all users, even if the server isn't transmitting quit events normally.
* Fix not being able to scroll the index page. Oops. Cleaned up how that was managed.
* Clean up things in changelog and known issues and future features. Some of it has been done for years, oops.
* Make the label for the join button for passworded games word-wrap.
Fix removing cookies.
Add per-server instance unique IDs for games and users, which will not collide between servers or when servers restart.
Add GeoIP capability.
Add beginning of framework for logging card plays.
I've spent multiple hours trying to figure out why it isn't actually working, and at this point I'm giving up on it. If you want an alternate web UI, send pull requests or run your own servers. My servers will only officially support my UI, though you are free to use other UIs if you can make them work with them (but I provide no guarantees that updates won't break things).