* Variable '*' collides with imported package name
* Variable 'error' collides with builtin interface
* '*' may have 'nil' or other unexpected value as its corresponding error variable may be not 'nil'
* WIP with new transcoder progress monitor
* A whole different WIP in progress monitoring via local PUTs
* Use an actual hls playlist parser to rewrite master playlist
* Cleanup
* Private vs public path for thumbnail generation
* Allow each storage provider to make decisions of how to store different types of files
* Simplify inbound file writes
* Revert
* Split out set stream as connected/disconnected state methods
* Update videojs
* Add comment about the hls handler
* Rework of the offline stream state. For #85
* Delete old unreferenced video segment files from disk
* Cleanup all segments and revert to a completely offline state after 5min
* Stop thumbnail generation on stream stop. Copy logo to thumbnail on cleanup.
* Update transcoder test
* Add comment
* Return http 200 on success to transcoder. Tweak how files are written to disk
* Force pixel color format in transcoder
* Add debugging info for S3 transfers. Add default ACL.
* Fix cleanup timer
* Reset session stats when we cleanup the session.
* Put log file back
* Update test
* File should not be a part of this commit
* Add centralized shared performance timer for use anywhere
* Post-rebase cleanup
* Support returning nil from storage provider save
* Updates to reflect package changes + other updates in master
* Fix storage providers being overwritten
* Do not return pointer in save. Support cache headers with S3 providers
* Split out videojs + vhs and point to specific working versions of them
* Bump vjs and vhs versions
* Fix test
* Remove unused
* Update upload warning message
* No longer valid comment
* Pin videojs and vhs versions
* Render and sanitize chat messages server-side. Closes#235
* Render content.md server-side and return it in the client config
* Remove showdown from web project
* Update api spec
* Move example user content file
* Add support for ending the inbound stream. Closes#191
* Add a simple success response to API requests
* Connected clients API with geo details
* Post-rebase cleanup
* Make setting and reading geo details separate operations to unblock and speed up
* Rename file
* Fire geoip api call behind goroutine
* Add comment
* Post-rebase fixes
* Add support for the MaxMind GeoLite2 GeoIP database
* Add support for ending the inbound stream. Closes#191
* Add a simple success response to API requests
* Store inbound broadcast details for admin purposes
* Add /api/admin/broadcaster endpoint
* Reset broadcaster on disconnect
* Move controller to admin directory
* Spike: Ping YP service with instance details
* WIP: Add to the config to support YP
* Add YP response endpoint
* Handle YP errors. Use config. Off by default
* Show message about YP support on launch
* Add animated gif preview when generating thumb
* Increase quality of preview gif and only create it if YP is enabled
* Do not allow re-registration by clearing the key
* Make large and small logos actually structured
* Change log level
* Fix default YP service URL
* Point to default hostname
* Set default value for YP to false
* Transcoder updates for validator warnings (gop, max-bitrates) for #50
* Make the variant settings easier to set/read in code
* Update test to reflect update to transcoder
* Reduce the buffer to give it a little more room to improve the quality. It feels a bit crunched right now.
* Fix test due to changed bitrate buffer ratios
* Tweak buffer size one more time to get errors in the validator to zero
* Saw errors w/ different bitrates, so tweaking it again
* Send PONG responses to PINGs
* Split out client IDs for viewer counts vs. websocket IDs
* WIP username change event
* Display username changes
* Revert commented out code
* Add support for building from the current branch
* Fix PONG
* Make username changes have a unique ID
* Add a version param to js to cachebust
* Change placeholder when chat is disabled
* Use the /chat endpoint for bulk chat history population instead of websocket. For #47
* Force LiveUI/seek bar during live to show. Closes#11.
* Change pulling chat history into app.js
* Force new messages to have visability = true