Skip to content

Instantly share code, notes, and snippets.

@calzoneman
Last active December 19, 2015 05:49
Show Gist options
  • Save calzoneman/5906661 to your computer and use it in GitHub Desktop.
Save calzoneman/5906661 to your computer and use it in GitHub Desktop.
CyTube Changelog and TODO

===

Changelog and major TODO list

3.1

Server

  • Refactored behavior of the Channel prototype into a small core with several modules
  • Refactored User prototype to be compatible with new Channel prototype
  • Refactored the way ranks/aliases are stored in User objects.
  • Added json-typecheck node module to abstract typechecking of incoming socket messages
  • Added support for IPv6 connections with IP masking and banning
  • Changed playback handler to automatically refresh Google Docs videos

Client

  • Removed SSL user option in favor of defaulting to SSL if the server supports it
  • Added /rank command for managing channel ranks via chat. Syntax: /rank <username> <rank>

3.0

UI

  • Updated Bootstrap to 3.0
  • Redesigned playlist controls
  • Redesigned channel moderator settings
  • Added HD layout
  • Added Slate and Cyborg themes
  • Moved guest login form to chatbox
  • Added aliases list to profile box (for moderators)

Webserver

  • Changed from static HTML + AJAX to Jade templates rendered serverside
  • Changed login system to httpOnly cookies
    • More secure, more convenient, solves the problem of being logged in on multiple devices
  • Changed account management system
  • Refactored web handlers

Server

  • Changed configuration to YAML
  • Changed the way config keys are handled/read
  • Changed database format
  • Refactored channel code
  • Refactored database code
  • Changed to persist global announcements in the database after reboot
  • Added database version key
    • Can be used to automate updates in the future

Misc

  • Improve type-checking and (where applicable) truncating of user supplied data
  • Change login system and get rid of that iframe login page mess
  • Replace node-validator dependency with in-house XSS solution

v2.4.6

  • Synchronize volume level calzoneman/sync#322
  • Fix a strange corner case bug in Channel.userJoin
  • Fix a potential cause for the mysterious crash that doesn't log any errors

v2.4.5 I guess?

  • possible google drive embed example link <iframe src="https://docs.google.com/file/d/0BwMmuYY4RxzSMnQzdk4yeWN2V1U/preview"></iframe>
    • Has limitations
  • Channel passwords

v2.4.4

  • Change the way mute is handled
  • Change broadcastUserUpdate to only send specific changes

v2.4.3

  • new system of asynchronous event queueing
  • decouple media lookups and permissions from playlist.js
  • Fix /clean
  • Clientside throttle for comma separated queues
  • Combine multiple queuefails
  • Improve the way the link filter works
  • possibly include the link that failed in queueFail
  • supposedly there's something wrong with /clean

v2.4.1 / v2.4.2

  • Fix UTF-8 encoding in the database
  • Fix banning guest names
  • Don't query the database for unregistered channels
  • Don't query the database for livestreams
  • Fix typos
  • Add an extra clientside check for stuck duplicate names
  • Allow renaming custom embeds
  • Fix video durations not showing up in the library
  • Fix giving administrator rank to guest logins on empty channels
  • Fix #255
  • Fix name hover getting stuck when someone joins
  • Video transition time

v2.4

  • Refactor API
    • Change endpoint locations to be more logical/clear (e.g. GET /api/users/:user/profile, POST /api/account/passwordchange)
    • Use POST for endpoints which require passwords (e.g. POST /api/login)
  • Refactor database to use the mysql module instead of mysql-libmysqlclient
    • mysql is written in JS, thus it doesn't require the libmysqlclient-dev system package
    • Refactored database to be asynchronous - should improve performance
    • All queries to the database are abstracted through database.js, which should make future changes and additions smoother (since the queries aren't spread out across files)
  • Instead of caching the entire channel library in RAM, media additions are queried to the channel library in the database - should reduce memory usage
  • Add defer attribute to the API <script> tags in channel.html - should improve load time
  • Revisit the ban system
    • Ensure that IP bans work as intended
    • Check global rank as well as channel rank to prevent IP banning site admins
  • Address some issues with IP masking for non-siteadmins

v2.3.2

  • Clear afk timer regardless of whether someone is afk when voteskipping
  • Move custom embed permission next to queue livestream
  • Fix paginator still showing 5 buttons when there's less pages
  • Remove modestbranding youtube param so people can have their like/dislike buttons
  • [Tentative] options for userlist sort
    • Default
    • Admins/mods at the top
    • AFKers at the bottom
  • Show usercount breakdown on hover
  • Clientside handling of attempted chat impersonation
  • Fix issues with returning leader to server
  • Clear playlist event queue when new playlist arrives
  • Change "Loaded Channels" to "Public Channels"

v2.3.1 (client-only changes)

  • Add back quick promotion buttons to userlist
    • Decided to add a dropdown selector instead of the old single-step promote/demote buttons
  • Change 'Take Leader' to 'Remove Leader' and only show if they are a leader
    • Clarification: there is one button. If someone is a leader, it reads 'Remove Leader', otherwise it reads 'Give Leader'
  • Investigate using a lock icon button on the same row as voteskip
  • Add volume slider to Soundcloud

v2.3

  • Refactor media lookup
  • Add GDATA v3 API
    • Note: v3 of the YouTube API is only implemented for single video retrieval. For playlists and search, it doesn't return the video length, so I would have to make a second request, which makes it not really worth switching to
  • Support YouTube API v2 developer keys
    • Note: This developer key is applied when available to playlists, searches, and (when enable-ytv3 is set to false) individual videos
  • My Channels interface on Account page
  • List user channels in ACP
  • Allow channel admins to view channel log
  • Log voteskips
  • Log video adds/moves/deletes
  • Custom embed support (iframe and object)
  • Refactor clientside player loader
  • Add setting for wmode=transparent
  • Change "Show Library" to "Show Library/YouTube search"

v2.2-intermediate

  • Make voteskips suck less
  • Move resizing calculation away from #queue
  • [FIX] Check for NO_WEBSOCKETS || USEROPTS.altsocket instead of just NO_WEBSOCKETS
  • [FIX] setAFK italics
  • [FIX] calzoneman/sync#244
  • [FIX] calzoneman/sync#247

v2.2

  • Use paginator.js for ACP
  • Use paginator.js for channel ranks, library/search
  • Instead of SELECT * FROM actionlog, query the action names, and have the client request them specifically
  • Only record administrator logins for login-success
  • Linewrap index page because people use stupid URLs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment