More updates! But first...
Bug tracking (tickets) can be posted to:
http://trac.destrealm.org/cited if you're interested. You can also go here to visually browse the code. I'll be adding this link to the main thread for anyone who might be curious about assisting with development.
Features--the Good Stuff
Random per-user colors have been added. Turus made this suggestion about a week ago, and I finally got around to it. Since colors are completely chosen at random, there is the possibility that the client may wind up picking identical colors for multiple users. There's also the possibility that the random colors may wind up being very similar to your own (your color will ALWAYS be blue). There are some limitations to these colors, so colors close to blue shouldn't be picked, and colors that are "too bright" should also be avoided.
You can now turn timestamps off and on using a radio button. This operation is performed tag-by-tag, so if you have a fairly large chatlog, toggling timestamps may be a fairly process-intensive operation.
Timestamps will now ALWAYS appear on output by default, rather than for messages.
You can now change the poll interval of the client. By default, the poll interval is set to 2 seconds. If your connection enjoys low latency, you can reduce the poll interval to as little as one second. Likewise, if your connection suffers from relatively high latencies, you might want to increase the poll interval to 2 seconds or more. AJAX sucks for things like chat, so the performance of your client is directly correlated to your latency. Higher latency means that your client may miss chat messages with shorter poll intervals.
Auto-throttling has been enabled and is still considered experimental. How this works is that when you tab out from your web browser (or switch to a different tab in the same browser), the chat client will take note of your activity. If you come back to the chat client within 10 seconds, the client will continue polling the server at your set interval (see above). However, if you stay away from your chat client for more than 10 seconds, the poll interval is automatically throttled to once every 20 seconds. Then, when you come back to the client, the poll interval is reset and you receive all messages that have been waiting in queue for your client. This means that you could feasibly receive hundreds of chat messages every 20 seconds while you're tabbed out (but this isn't too much of a big deal since it's the poll rate, not the data sent that affects your client the most). This is still a potential problem, and I might set up a flag that users can set that will allow them to log their messages while they're gone so they can retrieve them from a separate URL. Or maybe even something like /nomessage where any messages destined for that client are trashed until the command is sent again... I'm not too sure what the best option might be, so we'll see how this affects your clients.
No new commands have been added this round.
Bug fixes
Several bugs have been fixed. The only ones I can remember off-hand are:
Topics no longer appear twice when you first log in to the server.
I left some debugging code in several revisions back when I was trying to enable streaming for Internet Explorer (before I learned that it just doesn't work), so the PHP script that shuttles database between your browser and the server was sending about 3KiB of data every poll. This doesn't sound like much, but when you're polling every two seconds, this can generate in upwards of 5-10MiB over the course of an hour
while doing absolutely nothing when no one is on the server. Don't get me wrong, the current setup isn't much better because you still receive data from the web server that I can't
stop from being sent, but this makes things a bit more efficient.
Some outstanding, known bugs:
The user list still doesn't work. I'm getting around to that, but I haven't found a reasonable manner in which to get it working for
both Firefox and MSIE.
Soon to be implemented features
More appropriate /who commands.
Better access control for /topic commands.
/kick, /kill, and /ban commands.
/op command to grant specific users operator status in the channel.
Working /join and /part commands for creating/joining new channels.
And the most important feature yet: Remember each user's login.