…"bounce" glitches. Everything now looks good. Next: I have to store the user's grid on/off preference back on the appengine side.
… jumpy now.
…w in Firefox and Safari, though. There must be a better way to do this.
…rint anything out in our handlers.
…. Fix surprisingly many mismatched tags, missing close tags, etc. Overall things look much nicer across the three browsers now.
…F3, Safari 3, Chrome)
…game. So, to get started, start moving to XHTML 1.0 STRICT and running my pages through the W3C validator...
…sired grid square and easily enter it into the chat textbox.
… (top-left) or S19 (bottom-right). Next up: the ability to select a square and have its name automatically pop into your chat textbox.
…. There's no better way and it doesn't make sense to let people turn it on and off. So do what I can to make things look nicer, given that the scroll bar is going to show up when you chat a lot.
…content, or (2) the chat textbox has focus. Otherwise, hide this unnecessary number.
…ry. Decrease server load by only returning chat blobs that haven't yet been seen. Show number of characters remaining in the chat.
…wait for a browser refresh to do it.
…ct. This will prevent services like gmail from bundling up "identical" emails.
Load all chats into memory, keyed by move number, and then parcel them out into each move node as we iterate through the game history.
Each state gives access to the _last_ move, but has whose_move for the _current_ player. Switch how we lookup whether we output B or W to the SGF file to be the opposite of whose_move.
Ensure that we can get newlines consistently for handling elsewhere. Without this, messages may or may not have a trailing newline, depending on whether the user clicked update or pressed enter.
Remove potentially bad logging lines from the twitter code. I had them in for testing and meant to take them out before pushing live.