Refactor Game.removePlayer() to fix a deadlock.
Change chat flood protection from 5 messages per 15 seconds to 3 messages per 10 seconds.
null check to fix junit test
Replace id= with class= for the chat panel.

This is in preparation to support multiple tabs, which will provide a
separate chat tab per running game.

Signed-off-by: Matt Mullins <mmullins@mmlx.us>
Refactor chat button click-handler to be a closure.

This will support having multiple handlers, one per game, in the future.

Signed-off-by: Matt Mullins <mmullins@mmlx.us>
Add generalized arguments to chatsubmit_click

These parameters are used as a closure, so that the generated handler knows
which game it is attached to.

Signed-off-by: Matt Mullins <mmullins@mmlx.us>
Create a new tab for game-specific chat.

Signed-off-by: Matt Mullins <mmullins@mmlx.us>
make per-game chats resize with the window like global chat.
Test per-game chat. Breaks global chat.
Display Per-game chat messages in the correct tab

Errors are displayed in all chat tabs, including the global chat and
all in-game chats.
Send game ID to client for in-game chat
Remove the chat tab when leaving a game
Fix up per-game chats so global chat still works. Fix graphical glitch with game chat tab. Make enter work in game chat box. Clear game chat log when joinging game.
show game-related log messages in the game's log instead of the global log
update changelog
Don't update the game list when it isn't visible (i.e. you're already in a game). The client will refresh it when the player leaves their game anyway. This will hopefully cut down on a lot of bandwidth usage -- that's a lot of data sent around whenever anybody joins or leaves any game, and nobody sees it.
JRE classpaths on my system changed, this should be compatible anyway
card set descriptions
logging
add watermark to add card page