bugfix: calculate grayscale correctly for minimap when the color is in the short format
when the window is resized, resize the canvas/viewport as well
try to autoreconnect the websocket if it becomes disconnected
better error handling when the username/pw doesn't validate