Sat Sep 21 23:53 2013 CDT * lib/playlist.js, www/assets/js/player.js: Modify the server lead function to have a 3 second lead-in period (to allow buffering). Videos start at -3 seconds; the client is paused until the time reaches 0 seconds. Sat Sep 21 02:21 2013 CDT * www/assets/js/ui.js, www/assets/js/ui.js, www/assets/js/util.js, www/channel.html, www/assets/css/ytsync.css: Add quick buttons for modflair and adminflair Sat Sep 21 00:29 2013 CDT * www/assets/js/util.js: support a "Nobody" permission level (set arbitrarily high) Sat Sep 21 00:23 2013 CDT * www/assets/js/callbacks.js, www/assets/css/ytsync.css: make it more obvious which option was voted for Sat Sep 21 00:08 2013 CDT * lib/playlist.js: Make .clean(filter) an instance method * lib/chatcommand.js: Make a few minor changes to unbibium's /clean Wed Sep 18 18:26 2013 CDT * lib/user.js: Change channel checks to include checking for whether the channel is dead Wed Sep 18 18:14 2013 CDT * lib/channel.js: Add a bunch of checks to prevent callbacks from doing things with a dead channel * tests/channelDeadRace.js: Add a few client tests that cause exceptions in the pre-patched channel code Tue Sep 17 22:24 2013 CDT * lib/user.js: Fix what I assume was a race condition that caused an error message when a user's login callback fired after the channel unloaded. Tue Sep 17 13:16 2013 CDT * lib/get-info.js: Fix ustream for channels that have /channel/ in the path. Fri Sep 13 10:10 2013 CDT * www/reset.html: Fix data.js dependency * lib/api.js: Fix ActionLog trying to record wrong data. How long has this been broken? * www/assets/js/acp.js: Prepend "/reset.html?" in case admins can't remember what the URL is Thu Sep 12 18:41 2013 CDT * www/index.html: Fix index page not showing public channels Thu Sep 12 16:25 2013 CDT * lib/channel.js: Fix an error resulting from calcVoteskipMax being run when the usercount is 0 Thu Sep 12 13:01 2013 CDT * lib/channel.js: Fix the XSS filter hack that allows style attributes to allow more than one in a chat filter replacement Wed Sep 11 22:13 2013 CDT * lib/channel.js, lib/user.js: Remove "afkers" array, replace afkcount with a function that calculates how many users are eligible to voteskip (not AFK + have permission). Check permission before allowing voteskip * lib/api.js: Replace "afkcount" in /api/channels/:channel with voteskip_eligible * www/assets/js/util.js: Add a permissions option for voteskip Wed Sep 11 20:19 2013 CDT * lib/poll.js: Add support for hidden polls * lib/channel.js: Check permissions for viewing hidden polls * lib/chatcommand.js: Add /hpoll for opening hidden polls * www/assets/js/util.js: Update poll interface to include a checkbox for whether or not to hide a poll. Update permissions interface to allow for changing the permission to view obscured polls. Tue Sep 10 22:40 2013 CDT * www/account.html, www/acp.html, www/login.html: Import www/assets/js/data.js for easy access to user preferences * www/assets/js/account.js, www/assets/js/acp.js: remove redundant cookie util functions * www/assets/js/data.js, www/assets/js/util.js, www/assets/js/iourl.js: Add a user option to enable SSL for websockets and API calls * www/assets/js/ui.js: Add a warning if the user loaded the page over SSL (because some media players throw warnings and others don't work at all (Twitch.tv, Justin.tv: go eat a dick) * www/assets/js/player.js: Prevent race conditions for media types that depend on swfobject Tue Sep 10 17:17 2013 CDT * www/assets/js/player.js: Fix loading over SSL for everything except TwitchTV and JustinTV Tue Sep 10 16:45 2013 CDT * lib/channel.js: Don't attempt to emit to SSL sockets if it's disabled Tue Sep 10 16:34 2013 CDT * www/channel.html, www/assets/js/jwplayer.js: Cache jwplayer script locally since their server doesn't support SSL Tue Sep 10 16:10 2013 CDT * lib/server.js, lib/api.js: Implicitly trust X-Forwarded-For when the source ip is 127.0.0.1 Tue Sep 10 14:09 2013 CDT * lib/config.js, lib/server.js: Add a config key for the passphrase to the ssl key. Mon Sep 9 22:10 2013 CDT * lib/acp.js: Change acp-channel-unload callback to duplicate the list of users in the channel to prevent concurrent modification while kicking * lib/channel.js: As an extra precaution, set user.channel = null after kicking a user Mon Sep 9 17:11 2013 CDT * lib/server.js: If SSL is enabled in config, create an additional server listening with SSL for websockets and HTTPS traffic * lib/config.js: Add config keys for SSL * lib/channel.js: Broadcast messages to both regular and SSL sockets * www/assets/js/iourl.js: Add SSL_URL and automatically set WEB_URL and IO_URL to SSL_URL when the protocol is HTTPS * www/assets/js/callbacks.js: Automatically set the secure option on io.connect() * www/assets/js/ui.js, www/index.html, www/channel.html: Fix links to be dependent on the protocol Sun Sep 8 17:41 2013 CDT * lib/server.js: Change behavior of unloadChannel - deletes all object keys in the channel object and then sets channel.dead = true * lib/channel.js: Add extra checks in callbacks to ensure certain things don't happen if the channel is dead * lib/playlist.js: Add extra checks to kill the playlist if the channel it is associated with is dead * lib/database.js: Add extra checks to prevent loading channel data into a dead channel object * tests/fastQuit.js: A simple script to open a connection, join a channel, and disconnect immediately to test for race conditions Sat Sep 7 23:38 2013 CDT * lib/user.js: Add "loggingIn" field to act as a lock on async logins. Delay further login attempts until the current login attempt finishes. Should prevent cases where sending multiple logins quickly in succession caused race conditions and thus odd "duplicate login" kicks. Sat Sep 7 15:43 2013 CDT * lib/channel.js, lib/user.js: Add an extra check for channel.users[i] to write an error message (instead of kicking) when the same user that is connecting is the one being kicked. Fri Sep 6 16:29 2013 CDT * lib/config.js: Add an io-host option to allow binding socket.io to a different IP than the webserver Fri Sep 6 15:51 2013 CDT * lib/utilities.js: Tweak the throttle code for rate limiters to fix incorrect behavior of the burst cap after the cooldown period has been passed * tests/rateLimiter.js: Write a couple quick test cases to ensure that rate limiting is handled properly Thu Sep 5 22:52 2013 CDT * www/assets/js/callbacks.js: Disable the channel registration button and change its text while a registration attempt is being processed (prevents DB errors from impatient people spamming the button) (addresses Issue #276 ) Thu Sep 5 13:45 2013 CDT * acp.js, actionlog.js, api.js, channel.js, chatcommand.js, config.js, customembed.js, database.js, filter.js, get-info.js, logger.js, media.js, notwebsocket.js, playlist.js, poll.js, rank.js, server.js, stats.js, ullist.js, user.js, utilities.js: move server files into lib/ folder to clean up the root directory of the project. * api.js: replace regex with $util.isValidChannelName (L68); fix relative file paths (per moving api.js to lib/) * server.js: fix relative file paths * channel.js: fix relative file paths Wed Sep 4 22:45 2013 CDT * changelog: initialize changelog file Wed Sep 4 17:47 2013 CDT * www/assets/js/data.js: add CHANNEL.usercount variable * www/assets/js/callbacks.js: update CHANNEL.usercount variable when the usercount changes * www/assets/js/util.js: add "Anonymous" to the usercount breakdown display (addresses Issue #270 ) Changelog established on Wed Sep 4 2013