diff --git a/.gitignore b/.gitignore index 2d22fb2f..fb3e9c14 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ node_modules npm-debug.log build +dist Extension Building Old Files badges diff --git a/README.md b/README.md index 4b8f5dd0..cbf1a4ce 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ FrankerFaceZ ============ -Copyright (c) 2016 Dan Salvato LLC +Copyright (c) 2017 Dan Salvato LLC Licensed under the Apache License, Version 2.0. See LICENSE. @@ -12,26 +12,18 @@ Developing FrankerFaceZ uses node.js to manage development dependencies and to run an HTTP server for development. To get everything you need: -1. Install node.js -2. Run ```npm install -g gulp``` to install the ```gulp``` command line utility. -3. Run ```npm install``` within the FrankerFaceZ directory. +1. Install node.js and npm +2. Run ```npm install`` within the FrankerFaceZ directory. -From there, you can use gulp to build the extension from source simply by -running ```gulp```. For development, you can instruct gulp to watch the source -files for changes and re-build automatically with ```gulp watch``` +From there, you can use npm to build the extension from source simply by +running ```npm run build```. For development, you can instruct gulp to watch +the source files for changes and re-build automatically with ```npm start``` FrankerFaceZ comes with a local development server that listens on port 8000 and it serves up local development copies of files, falling back to the CDN -when a local copy of a file isn't present. To start the server, -run ```gulp server``` +when a local copy of a file isn't present. -For convenience, the server is run automatically along with ```gulp watch``` - - -Use the command ```/ffz developer_mode on``` or ```/ffz developer_mode off``` -in Twitch chat to toggle developer mode on or off. You must then refresh the -page for changes to take effect. If FFZ is not working or the command otherwise -fails to work, you can open the JavaScript console on twitch.tv and run -```localStorage.ffzDebugMode = true;``` or -```localStorage.ffzDebugMode = false;``` to enable or disable the feature. \ No newline at end of file +To make FrankerFaceZ load from your local development server, you must set +the local storage variable ```ffzDebugMode``` to true. Just run the following +in your console on Twitch: ```localStorage.ffzDebugMode = true;``` diff --git a/changelog.html b/changelog.html index b38085b3..96dad766 100644 --- a/changelog.html +++ b/changelog.html @@ -1,70 +1,7 @@ -
3.5.536
+
4.0.0-beta1
- -
3.5.535
- - -
3.5.534
- - -
3.5.533
- - -
3.5.532
- - -
3.5.531
- - -
3.5.530
- - -
3.5.529
- - -
3.5.528
- - -
3.5.527
- - -
3.5.526
- - -
3.5.525
-
View Older
diff --git a/dark.css b/dark.css deleted file mode 100644 index e4689ba3..00000000 --- a/dark.css +++ /dev/null @@ -1,2216 +0,0 @@ -/* host mode */ -.ffz-dark #hostmode,.hostmode{ - background-color:rgb(16,16,16)!important; -} - -.ffz-dark div#channel > .target-frame { - background-color:rgb(16,16,16)!important; -} - -.ffz-dark .hostmode-title-container{ - background-color:rgb(16,16,16)!important; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.4) inset; -} - -.ffz-dark div.hostmode-title.clearfix{ - background-color:rgb(24,24,24)!important; - box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.4) inset; -} - -.ffz-dark .close-hostmode{ - background-color:rgb(16,16,16)!important; - border-top: 1px solid rgba(255, 255, 255, 0.05); -} - -.ffz-dark .offlineChannelStatus { - background-color: rgba(255,255,255, 0.05); -} - -.ffz-dark .close-hostmode a:before, -.ffz-dark .close-hostmode a:after { - border-bottom-color: rgba(255,255,255, 0.05); -} - - -/* hidden chat */ -.ffz-dark .card__img, -.ffz-dark .ember-chat .chat-hidden-overlay{ - background-color:rgb(24,24,24)!important; -} - - - -/* edit icon */ -.ffz-dark .js-video-stats__video-header + a svg, -.ffz-dark .subscription-modal__balloon svg, -.ffz-dark #channel .player-column #broadcast-meta .info .edit-link svg path{ - fill:rgba(255,255,255,0.5)!important; -} - -/* vod icons */ -.ffz-dark #stats .stat svg:not(.svg-glyph_live) path, -.ffz-dark #main_col .content #stats_and_actions #channel_stats .stat svg path{ - fill:rgba(255,255,255,0.5)!important; -} - - -/* hover icon for chats menu */ -.ffz-dark .ember-chat .chat-menu-button-container:hover svg path{ - fill:#fff!important; -} - - -/* dropdown arrows */ -.ffz-dark .button.drop:after{ - border-color: rgba(255, 255, 255, 0.35) transparent transparent!important;; -} - -/* hovering buttons */ -.ffz-dark .button:not(.primary):not(.ffz-donate):hover{ - color:rgb(222,222,222)!important; -} - -.ffz-dark .moderation-card .button:not(.button--icon-only):hover { - color: #fff !important; -} - -/* stats */ -.ffz-dark .ct-tags--extracted { border-bottom: none } - -.ffz-dark .stats-and-actions, -.ffz-dark #main_col .content #stats_and_actions { - border-bottom-color: rgba(255,255,255,0.2); -} - -.ffz-dark #channel .player-column .stats-and-actions .channel-stats .stat svg:not(.svg-glyph_live) path{ - fill:rgba(255,255,255,0.35)!important; -} - -/* Scrollbar */ -.ffz-dark .tse-scrollbar .drag-handle { - background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.6)!important; -} - - -/* Team Pages */ - -.ffz-dark #stats_and_description { border-color: rgba(255,255,255,0.1) } -.ffz-dark #stats_and_description .stat { color: #808080 } -.ffz-dark #stats_and_description .stat:not(#channel_viewer_count) { -webkit-filter: invert(100%) } - -.ffz-dark .profile-card__content, -.ffz-dark .member.js-playing a { color: #fff !important } -.ffz-dark .member { box-shadow: none !important } -.ffz-dark .member.live { background-color: #222; } -.ffz-dark .member:hover { background-color: #333 } -.ffz-dark .member .channel_count { color: #ccc } - - -/* main column */ -.ffz-dark .fp-container, -body.ffz-dark:not([data-page="teams#show"]), -.ffz-dark .app-main, -.ffz-dark[data-page="teams#show"] .main, -.ffz-dark:not([data-page="teams#show"]) div#mantle_skin, -.ffz-dark div#main_col { - background:rgb(16,16,16); - color:rgb(195,195,195)!important; - border-right: 0 !important; /*1px solid rgb(0,0,0)!important;*/ -} - -.ffz-dark.ffz-portrait div#left_col .column, -.ffz-dark.ffz-portrait div#main_col { - border-right: none !important; - border-bottom: 1px solid rgb(0,0,0) !important; -} - - -/* stream title */ -.ffz-dark span.real_title{ - color:rgb(245,245,245)!important; -} - -/* name playing x on x */ -.ffz-dark span.playing,span#team_membership,.ffz-dark #channel .player-column #broadcast-meta .info .channel { - color:rgb(195,195,195)!important; -} - -.ffz-dark div.title > span.real, -.ffz-dark div.title > span.over, -.ffz-dark #broadcast-meta .info .title { - color: #DEDEDE !important; - background-color: rgba(16,16,16,0.3) !important; -} - -.ffz-dark .player-placeholder { background: #000 } - -.ffz-dark div.title > span.over:hover, -.ffz-dark div.title > span.real:hover, -.ffz-dark #broadcast-meta .info .title:hover { - color: #fff !important; - background-color: #101010 !important; -} - - -/* Right Column */ - -.ffz-dark .ct-banner--off .ct-banner__toggle, -.ffz-dark #right_col { - background-color: rgb(25,25,31); - color: #fff; -} - -.ffz-dark.ffz-no-blue #right_col, -.ffz-dark.ffz-no-blue .no-login-contain li, -.ffz-dark.ffz-no-blue .following-col .following-list .load-more span, -.ffz-dark.ffz-no-blue .viewall a, -.ffz-dark.ffz-no-blue #new-user-prompt { - background-color: rgb(25,25,25); -} - - -/* Popups */ - -.ffz-dark #commission_modal { - background-color: #101010 !important; - border-color: #32323e !important; -} - -.ffz-dark .twitch_subwindow_container.two-factor-auth .card, -.ffz-dark .card#passport_modal { - color: #000; -} - -.ffz-dark .subdash-feature-notice, -.ffz-dark #channel-prompt, -.ffz-dark .balloon, -.ffz-dark .balloon:after, -.ffz-dark .conversation-settings-menu, -.ffz-dark .ember-chat .chat-interface .ffz-ui-popup.emoticon-selector .emoticon-selector-box, -.ffz-dark .twitch_subwindow_container:not(.two-factor-auth) .card:not(#passport_modal), -.ffz-dark #flyout .content, -.ffz-dark .whatisthis, -.ffz-dark .ui-menu, -.ffz-dark .dropmenu, -.ffz-dark .sort-contain .sort-options, -.ffz-dark .top-dropdown, -.ffz-dark form.js-new_panel_form, -.ffz-dark .js-new_panel_btn, -.ffz-dark .manager .videos-grid .video .meta, -.ffz-dark .ember-chat .chat-room-list, -.ffz-dark .st-autocomplete-sidebar, -.ffz-dark .st-autocomplete-small, -.ffz-dark .st-autocomplete, -.ffz-dark .st-autocomplete-small, -.ffz-dark .player-menu__menu { - background-color: rgb(16,16,16); - color: rgb(195,195,195); /*#acacbf;*/ - border-color: #32323e; - box-shadow: rgba(255,255,255,0.2) 0 0 0 1px inset; -} - -.ffz-dark .balloon--tooltip:after, -.ffz-dark .balloon--tooltip { - background-color: #000; -} - -.ffz-dark .chat-container { border-color: rgba(0,0,0,0.2) } - -.ffz-dark #flyout .content, -.ffz-dark .ffz-ui-popup.emoticon-selector .emoticon-selector-box { border: none } - -.ffz-dark .balloon--right.balloon--up:after, -.ffz-dark .balloon--up:after { box-shadow: 1px 1px 0 rgba(255,255,255,0.2) } -.ffz-dark .balloon--right.balloon--down:after, -.ffz-dark .balloon--down:after { box-shadow: -1px -1px 0 rgba(255,255,255,0.2) } -.ffz-dark .balloon--left:after { box-shadow: 1px -1px 0 rgba(255,255,255,0.2) } -.ffz-dark .balloon--right:after { box-shadow: -1px 1px 0 rgba(255,255,255,0.2) } - -.ffz-dark .filter-bar__balloon-footer, -.ffz-dark .balloon__footer { - background-color: rgb(25,25,25); - border: 1px solid rgba(255,255,255,0.2); -} - - -.ffz-dark .player-menu__header { color: #c3c3c3 } -.ffz-dark .player-menu__section { border-bottom-color: rgba(255,255,255,0.2) } - -/*.ffz-dark .balloon:after { box-shadow: none }*/ - -.ffz-dark .st-autocomplete-sidebar .label, -.ffz-dark .st-autocomplete-small .label, -.ffz-dark .st-autocomplete .label, -.ffz-dark .st-autocomplete-small .label { - background-color: rgb(24,24,24); -} - -.ffz-dark .js-new_panel_btn:hover { - background-color: rgb(24,24,24); -} - -.ffz-dark .player-menu__menu:before, -.ffz-dark .player-menu__menu:after { - border-top-color: rgb(16,16,16); -} - -.ffz-dark .st-autocomplete-sidebar:before, -.ffz-dark #flyout .point:before { - border-right-color: rgb(16,16,16); /*rgb(25,25,31);*/ -} - -.ffz-dark .st-autocomplete-sidebar:after, -.ffz-dark #flyout .point:after { - border-right-color: #32323e; -} - -.ffz-dark .notification-controls .toggle-notification-menu { - background-color: #0f8a4d; -} - -.ffz-dark .notification-controls .toggle-notification-menu:hover { - background-color: #119754; -} - -.ffz-dark .pika-input, -.ffz-dark .video-stats .form__input[type=search], -.ffz-dark .change-banner .banner-preview, -.ffz-dark .ct-banner--off .ct-banner__inputbox, -.ffz-dark form.js-new_panel_form input, -.ffz-dark form.js-new_panel_form textarea, -.ffz-dark .conversation-input-bar textarea, -.ffz-dark .card input, -.ffz-dark .card textarea, -.ffz-dark .dropmenu input, -.ffz-dark input.text, -.ffz-dark input.string, -.ffz-dark #sidebar_query_small, -.ffz-dark textarea, -.ffz-dark select, -.ffz-dark option, -.ffz-dark #mantle_skin .dropdown, -.ffz-dark .directory_header #custom_filter input { - background-color: rgba(255,255,255,0.05); - border-color: rgba(255,255,255,0.1); - color: #fff; -} - -.ffz-dark option { - background-color: #191919; -} - -.ffz-dark select.pl-form__input, -.ffz-dark .video-stats .form__input[type=search]:not(:focus):not(:hover) { - box-shadow: inset 0 0 1px rgba(255,255,255,0.2); -} - -.ffz-dark .video-stats .table__cell--header, -.ffz-dark .video-stats__table-title { - color: #ccc; - box-shadow: inset 0 -1px 0 rgba(255,255,255,0.2); -} - -.ffz-dark .video-stats .table__header { - background-color: #191919; - color: #ccc; -} - -.ffz-dark .video-stats .table { - border-color: rgba(255,255,255,0.2); - background-color: #101010; - box-shadow: 0 2px 4px 0 rgba(255,255,255,0.2); -} - -.ffz-dark .video-stats .table__row { - background-color: #101010; - color: #999; -} - -.ffz-dark .video-stats .table__cell { - border-color: rgba(255,255,255,0.2); - color: #999; -} - - -/* Other stuff */ - -.ffz-dark #channel .player-column #broadcast-meta .info .edit-link span { - color: inherit; -} - -.ffz-dark .no-login-contain li { - background-color: rgb(25,25,31); -} - -.ffz-dark .no-login-contain h3 { - color: #ccc; -} - -.ffz-dark .panel-formatting .panel { - color: #8c8c9c; -} - -.ffz-dark .balloon .balloon__link { color: #a68ed2 !important } -.ffz-dark .balloon .balloon__link--active, -.ffz-dark .balloon .balloon__link--selected, -.ffz-dark .balloon .balloon__link:hover { color: #fff !important } -.ffz-dark .balloon .balloon__link--selected { background-color: #6441a5 !important } - -.ffz-dark .st-autocomplete-sidebar .all p:not(.active), -.ffz-dark .st-autocomplete-small .all p:not(.active), -.ffz-dark .st-autocomplete .all p:not(.active), -.ffz-dark .st-autocomplete-small .all p:not(.active), -.ffz-dark .st-autocomplete-sidebar .list ul .result:not(.active) p, -.ffz-dark .st-autocomplete-small .list ul .result:not(.active) p, -.ffz-dark .st-autocomplete .list ul .result:not(.active) p, -.ffz-dark .st-autocomplete-small .list ul .result:not(.active) p, -.ffz-dark .manager .videos-grid .video:hover .meta .actions li a, -.ffz-dark .ember-chat .chat-room-list .room:not(:hover) p.room-title, -.ffz-dark .dropmenu_action:not(:hover), -.ffz-dark .dropmenu_action:not(:hover) span, -.ffz-dark .chat-menu-content button.font-color-purple, -.ffz-dark .player a.player-text-link, -.ffz-dark .cn-metabar .cn-metabar__title a, -.ffz-dark a { -/*.ffz-dark a:not(.profile-card__content):not(.filter-item):not(.ui-state-focus):not(.button):not(.switch):not(.follow):not(.fb_button):not(.what) {*/ - color: #a68ed2; -} - -.ffz-dark .balloon--cols .balloon__list~.balloon__list { - box-shadow: -1px 0 0 rgba(255,255,255,0.2); -} - -.ffz-dark .top-nav__nav-link:hover { color: #fff !important } - -.ffz-dark .warp__item a.js-language-select, -.ffz-dark .top-nav__nav-link, -.ffz-dark .warp__item > a { color: #d5d4d9 !important } - -.ffz-dark .warp__item--toggled a.js-language-select, -.ffz-dark .warp__item > a:hover, -.ffz-dark .warp__item--toggled > a { color: #eae9ec !important } - -.ffz-dark .exit-theatre > a { color: #000 !important; } - -.ffz-dark .cheermote-tier { - background-color: #111; - border-color: #474747; -} - -.ffz-dark .progress-bar { - background-color: #444; -} - -.ffz-dark .c-background-graph { background-color: #444 !important } - -.ffz-dark .shadow-border--bottom-right { - box-shadow: 1px 0 0 0 #474747, 0 1px 0 0 #474747; -} - -.ffz-dark .switch, -.ffz-dark .button, -.ffz-dark .pl-button--hollow, -.ffz-dark .pl-button--hollow:hover, -.ffz-dark .player-switch, -.ffz-dark .follow-button a, -.ffz-dark a.dropmenu_action:hover { - color: #fff; -} - -.ffz-dark .button:disabled { - background-color: #242424; -} - -.ffz-dark .pl-button--hollow, -.ffz-dark .button--hollow { box-shadow: inset 0 0 0 1px #4b367c } - -.ffz-dark .panel-formatting .panel h3 { - color: inherit; -} - -.ffz-dark .follow-button .notify:before, -.ffz-dark .button.drop:after, -.ffz-dark .follow-button .drop.follow:after { - border: 5px solid rgba(255,255,255,0.35); - border-left-color: transparent; - border-right-color: transparent; - border-bottom-color: transparent; -} - -.ffz-dark .follow-button .notify { - background-color: #25252a; -} - -.ffz-dark .message-button, -.ffz-dark .button--text, -.ffz-dark .button.ffz-no-bg { - color: #a68ed2; -} - -.ffz-dark .form__icon svg { fill: rgba(255,255,255,0.2) } - -.ffz-dark .button--icon.button--hollow figure svg, -.ffz-dark .button.button--icon-only svg { - fill: #a68ed2; -} - -.ffz-dark .button.button--icon-only:hover svg { - fill: #fff; -} - -.ffz-dark .button.primary.subscribe-button { - color: #fff; -} - -.ffz-dark .ember-chat .moderation-card img.channel_logo { - border-color: rgb(16,16,16); -} - -/* Upsell banner */ -.ffz-dark .bookmark-meta, -.ffz-dark .upsell-banner { - background-color: rgba(25,25,31, 0.7); -} - -.ffz-dark.ffz-no-blue .bookmark-meta, -.ffz-dark.ffz-no-blue .upsell-banner { - background-color: rgba(25,25,25, 0.7); -} - -.ffz-dark .bookmark-meta .bookmark-title, -.ffz-dark .upsell-banner .message .title { - color: #ccc; -} - -.ffz-dark .bookmark-meta { - box-shadow: none; -} - -/* VoD Description */ - -.ffz-dark .archives-contain .videos { - padding: 0 0; -} - -.ffz-dark #right_col a.bottom, -.ffz-dark .archives-contain .list-video { - padding: 10px 20px; - border-color: rgba(255,255,255,0.2); -} - -.ffz-dark #right_col a.bottom { - padding: 0 20px; - margin: 0 !important; -} - -.ffz-dark .archives-contain .list-video .meta .title { - color: rgb(195,195,195); -} - -.ffz-dark #right_col #archives { background-color: transparent; } - -.ffz-dark .archives-contain .list-video .meta .info p.broadcaster, -.ffz-dark #right_col #archives .more_archives { - color: #a68ed2; - box-shadow: none; -} - -.ffz-dark #right_col a.bottom:hover, -.ffz-dark .archives-contain .list-video:hover, -.ffz-dark #right_col #archives .more_archives:hover { - background-color: rgba(255,255,255,0.1); -} - -.ffz-dark #main_col .content .archive_info p, -.ffz-dark #main_col .content .archive_info time { - color: #888; -} - - -/* Video Manager */ - -.ffz-dark .player-menu-options, -.ffz-dark ul.tabs:before, -.ffz-dark .directory_header .nav:before, -.ffz-dark ul.tabs_fake:before, -.ffz-dark #right_col #archives .more_archives, -.ffz-dark .manager .videos-grid .video .meta .actions { - border-top-color: rgba(255,255,255,0.25); -} - -.ffz-dark .twitch_subwindow_container .card .text-content .content-header, -.ffz-dark .kraken-embed .card .text-content .content-header, -.ffz-dark .kraken-page .card .text-content .content-header, -.ffz-dark .twitch_subwindow_container .card .buttons, -.ffz-dark .kraken-embed .card .buttons, -.ffz-dark .kraken-page .card .buttons, -.ffz-dark .card--bordered, -.ffz-dark .card-vod-edit { - border-color: #474747; -} - -.ffz-dark .playlist-menu-create { - background-color: #101010; - border-color: #474747; -} - -.ffz-dark .button--disabled { - background-color: #333; -} - -.ffz-dark .card-vod-edit { - box-shadow: 0 2px 4px 0 rgba(255,255,255,0.1); -} - -.ffz-dark #highlighter .highlight-content .form-container li label { - color: #fff; -} - -.ffz-dark .tabs.tabs--fullwidth li:not(.selected) a:hover { - color: #fff !important; - background: #24242a; - border-color: #8c8c9c; -} - -.ffz-dark .tabs li.selected a { - color: #fff !important; - border-color: #a68cd4 !important; -} - - -/* Subscriptions Page */ - -.ffz-dark .ticket__benefits, -.ffz-dark .tickets .ticket .benefits { - background-color: rgb(16,16,16); - color: rgb(195,195,195); /*#acacbf;*/ - border-color: #32323e; -} - - -/* Directory Pages */ - -.ffz-dark .following-col .col-header .search-contain .search .search-button svg path { - fill: rgba(255,255,255,0.25); -} - -.ffz-dark .following-col .col-header .search-contain .search .search-button:hover svg path { - fill: rgba(255,255,255,0.5); -} - -.ffz-dark .following-col .following-list .load-more span, -.ffz-dark .viewall a { - background-color: rgb(25,25,31); -} - -.ffz-dark .following-col .following-list .load-more:hover span { - color: #fff; -} - -.ffz-dark .following-col .following-list .load-more:hover span, -.ffz-dark .viewall a:hover { - background-color: rgb(35,35,41); -} - -.ffz-dark.ffz-no-blue .following-col .following-list .load-more:hover span, -.ffz-dark.ffz-no-blue .viewall a:hover { - background-color: rgb(35,35,35); -} - -.ffz-dark .viewall a .text span:first-child { - color: #a68ed2; -} - - -/* Profile page fixes */ - -.ffz-dark pre { - background-color: rgb(8,8,8); - box-shadow: inset 0 0 0 1px #333; - border-left-color: #6441a5; -} - -.ffz-dark .form__label, -.ffz-dark .form__input[type=checkbox] + label, -.ffz-dark .form__input[type=radio] + label, -.ffz-dark label, -.ffz-dark code { - color: #999; -} - -.ffz-dark .card__boxpin, -.ffz-dark .streams .stream .content .thumb .boxart, -.ffz-dark .videos .video .content .thumb .boxart { - border-color: rgb(16,16,16); -} - -.ffz-dark .ember-chat .moderation-card img.channel_logo, -.ffz-dark .channel-link .profile-photo { - background-color: rgb(16,16,16); -} - -.ffz-dark .event-img--card { box-shadow: 1px 0 0 #101010 } - -.ffz-dark .toggle__button { background-color: #666 } -.ffz-dark .toggle__button:after { background-color: #242424 } -.ffz-dark .toggle input[type=checkbox]:checked+.toggle__button { background-color: #0f8a4d } - - -.ffz-dark .card__title, -.ffz-dark .card .card__title a, -.ffz-dark .card .card__info a, -.ffz-dark .items-grid .meta .title, -.ffz-dark .items-grid .meta p a { - color: #9c9c9c; -} - -.ffz-dark .event-calendar { - background: #101010; - color: #ccc; -} - -.ffz-dark .subscription-dash .video-quality-list li.non-selectables .option, -.ffz-dark .subscription-dash .video-quality-list li { - background-color: #191919; - border-color: #474747; -} - -.ffz-dark .subscription-dash .video-quality-list li .quality-setting { - background-color: #000; -} - -.ffz-dark .subscription-dash .video-quality-list li.selectable.over { - background-image: none; - background-color: #242424; -} - -.ffz-dark .subscription-dash .video-quality-list li.selectable.restricted { - background-color: #cc2b2b; - border-color: #801b1b; -} - -.ffz-dark .subscription-dash .video-quality-list li.selectable.restricted.over { - background-color: #fc3636; -} - -.ffz-dark .card__info, -.ffz-dark .items-grid .meta .info { - color: #6c6c6c; -} - -.ffz-dark .mininav li > a, -.ffz-dark ul.tabs li > a, -.ffz-dark .directory_header .nav li > a, -.ffz-dark .tw-tabs__item > button, -.ffz-dark ul.tabs_fake li > a { - color: #a68ed2; -} - -.ffz-dark .tw-tabs, -.ffz-dark .tabs { box-shadow: 0 -1px 0 rgba(255,255,255,0.2) inset; } - -.ffz-dark .tw-tabs__item > a:hover, -.ffz-dark .tabs>.tab:hover, -.ffz-dark .tabs>li:hover, -.ffz-dark .tabs__item:hover, -.ffz-dark .tabs__item--active, -.ffz-dark .tabs__item.active, -.ffz-dark .tabs__item.selected, -.ffz-dark .tabs>li.selected, -.ffz-dark .tabs>li>a.active { box-shadow: 0 -1px 0 #a68cd4 inset } - -.ffz-dark .mininav, -.ffz-dark ul.tabs:before, -.ffz-dark .direcotry_header .nav:before, -.ffz-dark ul.tabs_fake:before { - border-color: #32323e; -} - -.ffz-dark .tw-tabs__item > button:hover, -.ffz-dark .tw-tabs__item > a.active, -.ffz-dark .tw-tabs__item > button.active { - color: #ccc; - box-shadow: 0 -1px 0 #ccc inset; -} - -.ffz-dark .contract-amendments-window { - border-color: #474747; - background-color: #000; -} - -.ffz-dark .game-details__nav > li > a.active { color: #fff } - -.ffz-dark .mininav li > a:hover, -.ffz-dark ul.mininav li.active, -.ffz-dark ul.tabs li.selected a, -.ffz-dark .directory_header .nav li.selected a, -.ffz-dark ul.tabs_fake li.selected a, -.ffz-dark ul.tabs li>a:hover, -.ffz-dark .directory_header .nav li>a:hover, -.ffz-dark ul.tabs_fake li>a:hover, -.ffz-dark ul.tabs li>a.active, -.ffz-dark .directory_header .nav li>a.active, -.ffz-dark ul.tabs_fake li>a.active { - color: #aaa; - border-color: #ccc !important; -} - -/* Hide the chat Dark Mode control */ -.ffz-dark #theme-toggle, -.ffz-dark .toggle-darkmode { display: none; } - -/* Chat Text Contrast */ - -.ffz-dark .ember-chat .chat-settings .chat-colors .chat-colors-swatch:hover, -.ffz-dark .ember-chat .chat-settings .chat-colors .chat-colors-switch.selected { - border-color: #777; - box-shadow: inset 0 0 0 1px #32323e; -} - - -/* Autocomplete Suggestions */ - -.ffz-dark .ember-chat .chat-interface .suggestions { - background-color: rgb(16,16,16); - border-color: rgba(255,255,255,0.2); -} - - -/* FrankerFaceZ Menu */ - -/*.ffz-dark .ember-chat .chat-menu .list-header { - border-top-color: rgba(255,255,255,0.2); -} - -.ffz-dark .chat-menu.ffz-ui-popup .ffz-ui-menu-page .chat-menu-content .heading, -.ffz-dark .chat-menu.ffz-ui-popup .ffz-ui-menu-page .emoticon-grid .heading, -.ffz-dark .ffz-ui-popup ul.menu, -.ffz-dark .ffz-ui-popup ul.menu a, -.ffz-sidebar-swap.ffz-dark .ffz-ui-popup ul.menu a { - border-color: #32323e; -} - -.ffz-dark .ffz-ui-popup ul.menu { - background-color: rgb(33,33,33); -} - -.ffz-dark .ffz-ui-popup ul.menu li.active { - background-color: rgb(16,16,16); -} - -.ffz-dark .ffz-ui-popup ul.menu li.active a { - border-top-color: rgb(16,16,16); -}*/ - -/* New User Prompt */ - -.ffz-dark #new-user-prompt { - background-color: rgb(25,25,31); - color: #acacbf; -} - -.ffz-dark #new-user-prompt .message .title { - color: #fff; -} - -/* Messages Table */ - -.ffz-dark .messages #send_message_form #bottom_buttons, -.messages #reply_message_form #bottom_buttons { - border-color: rgba(255,255,255,0.2); - box-shadow: none; -} - -.ffz-dark .messages #send_message_form .button_group, -.ffz-dark .messages #reply_message_form .button_group, -.ffz-dark .messages #send_message_form, -.ffz-dark .messages #reply_message_form { - background: transparent; -} - -.ffz-dark .messages #send_message_form, -.ffz-dark .messages #reply_message_form -{ padding: 10px 0 0 0; } - -.ffz-dark .messages #message_actions { - background-color: rgb(48,48,48); - border-bottom-color: rgba(255,255,255,0.2); -} - -.ffz-dark .messages #send_message_form, -.ffz-dark .messages .divider { - border-color: rgba(255,255,255,0.2); -} - -.ffz-dark .messages .message_action.delete { - display: block; - width: 16px; - height: 16px; - background: url(trash_button.png) no-repeat; -} - -.ffz-dark .messages .message_action.delete img { display: none; } - -.ffz-dark .messages .message_action.block { - background-image: url(block_button.png); - color: #c1c1c1 !important; -} - -.ffz-dark .messages div.message { - border-bottom-color: rgba(255,255,255,0.2); -} - -.ffz-dark .messages div.message:last-of-type { border-bottom-color: transparent; } - -.ffz-dark .messages div.preview { - background-color: rgb(16,16,16); - border-bottom-color: rgba(255,255,255,0.2); - border-left-color: transparent; -} - -.ffz-dark .messages div.preview.unread { - background-color: rgb(32,32,32); - border-left-color: #6441a5; -} - -.ffz-dark .messages div.preview:hover { - background-color: rgb(8,8,8); -} - -.ffz-dark .messages #messages_column { - background-color: transparent; -} - -.ffz-dark .page_links em { - background-color: #EEE; - color: #000; -} - -.ffz-dark .page_links a.disabled.previous_page b, -.ffz-dark .page_links span.disabled.previous_page b { border-right-color: transparent; } - -.ffz-dark .page_links a.disabled.next_page b, -.ffz-dark .page_links span.disabled.next_page b { border-left-color: transparent; } - -/* Tshirts are weird */ - -.ffz-dark .teespring-panel-progress { - background-color: #393939; -} - -.ffz-dark .teespring-panel-image a { - cursor: pointer; -} - -.ffz-dark .teespring-panel-image img { - filter: drop-shadow(0px 0px 10px white); - -moz-filter: drop-shadow(0px 0px 10px white); - -webkit-filter: drop-shadow(0px 0px 10px white); -} - -.ffz-dark .teespring-panel { - cursor: inherit; - background-color: rgb(8,8,8); - border-color: rgba(255,255,255,0.2); -} - -/* Settings */ - -.ffz-dark .app_title { color: #ccc; } - -.ffz-dark .connect_items .connect-item-info .details-toggle, -.ffz-dark .connect_items .connect-item-info, -.ffz-dark ul.manage_simple span.obj { - background-color: rgb(8,8,8); -} - -.ffz-dark .connect_items .connect-item-info .details-toggle { - border-color: rgba(255,255,255,0.2); -} - -.ffz-dark .connect_items .connect-item-info .details-toggle:hover { - border-color: rgba(255,255,255,0.4); -} - -.ffz-dark .connect_items .connect-item-info .status, -.ffz-dark #settings #followers_content .hdr, -.ffz-dark table.simple_table th { - background-color: rgb(32,32,32); - border-color: transparent; -} - -.ffz-dark .multi_select li form:hover, -.ffz-dark .multi_select li .ms-int:hover, -.ffz-dark .multi_select li label:hover { - background-color: rgb(8,8,8); -} - -.ffz-dark #turbo_chat_color, -.ffz-dark #turbo_emote_set { - background-color: rgba(255,255,255,0.05); -} - -.ffz-dark .ui-slider-horizontal:not(.player-slider) { - background-color: rgba(255,255,255,0.2); -} - -.ffz-dark .subscription-dash .list-head th { - border-color: #474747; - color: #ccc; -} - -.ffz-dark .section ul, -.ffz-dark .section ul li, -.ffz-dark .subdash-feature-section, -.ffz-dark .subdash-feature-header__back, -.ffz-dark .subdash-feature-header, -.ffz-dark .subdash-feature-row--border, -.ffz-dark .cl-container .section-header .header-content.indented, -.ffz-dark .cl-container .section-header .header-back { - border-color: rgba(255,255,255,0.2); -} - -.ffz-dark .subdash-feature-header__back:hover, -.ffz-dark .cl-container .section-header .header-back:hover { - background-color: rgba(255,255,255,0.2); -} - -.ffz-dark .new-dashboard .dashboard-section .submit-button-fieldset, -.ffz-dark .subdash-feature-header, -.ffz-dark .cl-container .section-header, -.ffz-dark .cl-container .cl-section .cl-subheader { - background-color: rgb(32,32,32); -} - -.ffz-dark .cl-container .cl-section { - background-color: rgb(16,16,16); -} - -.ffz-dark fieldset { - border-color: transparent; -} - -.ffz-dark .connect_items .connect-item-details, -.ffz-dark .connect_items .connect-item-details-legal, -.ffz-dark .connect_items, -.ffz-dark .premium_setup_contain #turbo_setup, -.ffz-dark table.simple_table td, -.ffz-dark table.simple_table th, -.ffz-dark .cl-container .section-header, -.ffz-dark .cl-container fieldset { - border-bottom-color: rgba(255,255,255,0.2); -} - -.ffz-dark .cl-container fieldset .cl-input-container label { color: #fff } - -.ffz-dark .subdash-feature-row__title, -.ffz-dark .cl-container fieldset .label-wrapper label { - color: #ccc; -} - -.ffz-dark .subdash-feature, -.ffz-dark #emoticons #emote_switch .set-button, -.ffz-dark #example .line { - background-color: #19191f; - color: #acacbf; -} - -/* Dashboard */ - -.ffz-dark .dash-tabs__item--active .dash-tabs__label:after { - border-color: #191919; -} - -.ffz-dark .dash-tabs__item { - background-color: #151515; - border-color: rgba(255,255,255,0.2); -} - -.ffz-dark .dash-tabs__item--active { background-color: #191919 } - -.ffz-dark .game-details__carousel-wrapper:hover .game-details__carousel-arrow, -.ffz-dark .card-carousel__button, -.ffz-dark .carousel__button { - background-color: #101010; -} - -.ffz-dark .game-details__carousel-wrapper:hover .game-details__carousel-arrow:before, -.ffz-dark .card-carousel__arrow:before, -.ffz-dark .carousel__arrow:before { - border-color: #a68ed2; -} - -.ffz-dark .card-carousel__button:hover .card-carousel__arrow:before -.ffz-dark .carousel__button:hover .carousel__arrow:before { - border-color: #fff; -} - -.ffz-dark .card .brick, -.ffz-dark .brick.brick--theme-grey, -.ffz-dark .card-carousel__button:hover -.ffz-dark .carousel__button:hover { - background-color: #191919; -} - -.ffz-dark .brick { - background-color: #121212; -} - -.ffz-dark .dash-brick, -.ffz-dark .dash-tabs__item--active .dash-tabs__label, -.ffz-dark .ct-type-grey { color: #ccc } - -.ffz-dark .brick--marked.brick--theme-white, -.ffz-dark .brick--marked.brick--theme-grey { - box-shadow: 3px 0 0 #9a7fcc inset,0 0 0 1px rgba(255,255,255,0.2) inset; -} - -.ffz-dark .brick--faint, -.ffz-dark .brick--block { - background-color: rgb(25,25,25); -} - -.ffz-dark .brick, -.ffz-dark .brick--faint, -.ffz-dark .brick--block, -.ffz-dark #action_feed .action, -.ffz-dark .revHeader__item { - border-color: rgba(255,255,255,0.2); -} - -.ffz-dark #mantle_skin .what { background-color: #6441a5; } -.ffz-dark #action_feed .action { padding-bottom: 20px } - -.ffz-dark .js-stream-key-button-container .button { - margin: 15px auto; -} - -.ffz-dark .js-show-stream-key, -.ffz-dark .js-reset-stream-key { - display: block; - margin: 15px auto; - padding: 0; - text-align: center; - width: 100px; - color: #fff !important; -} - -.ffz-dark .js-show-stream-key { background-color: #804400; } -.ffz-dark .js-reset-stream-key { border-color: rgb(128,0,0); } - -.ffz-dark .js-show-stream-key:hover, -.ffz-dark .js-show-stream-key:focus, -.ffz-dark .js-reset-stream-key:hover, -.ffz-dark .js-reset-stream-key:focus { - padding: 5px; - margin: 10px auto; -} - -.ffz-dark .stream-key { - background: #000; - color: #f2f2f2; -} - -.ffz-dark .js-show-stream-key:hover, -.ffz-dark .js-show-stream-key:focus { background-color: rgb(192,102,0); } - -.ffz-dark .js-reset-stream-key:hover, -.ffz-dark .js-reset-stream-key:focus { background-color: rgb(192,0,0); } - -.ffz-dark .statchart_aggregator .statchart_first_column { - background-color: rgb(32,32,32); - color: #ccc; - text-shadow: none; -} - -.ffz-dark .statchart_aggregator { - margin-top: 10px; -} - -.ffz-dark .statchart_aggregator td { - border-color: #3f3f42; -} - -.ffz-dark .statchart_aggregator .statchart_first_column[style="color: #6441A5"] { - color: #a68ed2 !important; -} - -.ffz-dark .whatisthis { - box-shadow: 0 0 0 1px rgba(255,255,255,0.2); -} - -.ffz-dark .whatisthis:before { - border-top-color: #101010; -} - -.ffz-dark .whatisthis:after { - border-top-color: #32323e; -} - -.ffz-dark #chart_container svg rect[fill="#FFFFFF"] { - fill: rgb(32,32,32) !important; -} - -.ffz-dark #chart_container svg rect[fill="rgb(255,255,255)"] { - fill: rgb(8,8,8) !important; -} - -.ffz-dark #chart_container svg text[x="5"] { - color: #fff !important; - fill: #fff !important; -} - -.ffz-dark #chart_container svg text.highcharts-title { - fill: #a68ed2 !important; -} - -.ffz-dark #chart_container svg text { - fill: #fff; -} - -.ffz-dark ul.subtabs li.selected { - background-color: #333; - border-radius: 4px; -} - -.ffz-dark .dropmenu .menu-divider { - border-bottom-color: rgba(255,255,255,0.2); -} - -.ffz-dark #header_logo svg path { - fill: #fff; -} - -.ffz-dark #dash_main .action .content .data, -.ffz-dark #site_header { - background-color: rgb(32,32,32); -} - -.ffz-dark .header_divider { - border-right-color: rgba(255,255,255,0.2); -} - -.ffz-dark #dash_main .dash-player-contain.collapsed #player_overlay, -.ffz-dark .dash-hostmode-contain { - background: #202020; -} - -.ffz-dark #dash_main #delay_controls, -.ffz-dark #dash_main #commercial_buttons, -.ffz-dark .dash-hostmode-list-contain { - border-top-color: rgba(255,255,255,0.2); -} - -.ffz-dark #dash_main #controls_column .section_header { - color: #ccc; -} - -.ffz-dark .main, -.ffz-dark .fullwidth_main { - color: #ccc; - background-color: transparent; -} - -.ffz-dark .following-col .col-header, -.ffz-dark .following-col .header, -.ffz-dark .whatisthis .actions .divider, -.ffz-dark .dash-chat-column { - border-color: rgba(255,255,255,0.2); -} - -.ffz-dark .dash-column { border: none } -.ffz-dark .js-dashboard-chat-module > div { border-right: none !important } - - -.ffz-dark .vod-vertical-nav { - background-color: #191919; - border-color: #474747; -} - - -.ffz-dark .vod-vertical-nav__list-item .active, -.ffz-dark .vod-vertical-nav__list-item .active:hover, -.ffz-dark .vod-vertical-nav__list-item .active:active, -.ffz-dark .vod-vertical-nav__list-item .active:focus { - background-color: #6441a5; -} - -.ffz-dark .vod-vertical-nav__link:hover, -.ffz-dark .vod-vertical-nav__link:active, -.ffz-dark .vod-vertical-nav__link:focus { - background-color: #392e5c; -} - -.ffz-dark .dashboard-page div[style*="background"][style*="#f9f8fc"] { - background-color: #191919 !important -} - - -/* Front Page: Pulse */ - -.ffz-dark .newsfeed { - background-color: #101010; -} - - - -/* /p/ Pages */ - -.ffz-dark .header-announcement__link, -.ffz-dark .front-page-announcement__link { color: inherit } - -.ffz-dark .header-announcement { - color: #fff; -} - -.ffz-dark #mantle_skin .wrapper { - background-color: transparent; -} - -.ffz-dark #mantle_skin div[style^=" display:background:#ffffff"], -.ffz-dark #mantle_skin .social_links img { - background-color: #fff; -} - -.ffz-dark #mantle_skin div[style^=" display:background:#ffffff"] .extraspace { color: #333 } - -.ffz-dark #mantle_skin ul.vtabs li .not_linked, -.ffz-dark #mantle_skin ul.vtabs li a { - color: #acacbf; -} - -.ffz-dark #partner_application .partner_reqs { - background-color: #191919; - border-color: #404040; -} - -.ffz-dark #mantle_skin ul.vtabs li.selected a, -.ffz-dark #mantle_skin ul.submenu li a:hover, -.ffz-dark .sort-contain .sort-options li a:hover, -.ffz-dark #mantle_skin ul.submenu .active a { - color: #fff !important; -} - -.ffz-dark #mantle_skin ul.vtabs li a:hover { - color: rgb(222,222,222); - background-color: transparent; -} - -.ffz-dark #mantle_skin .press_list .callout { - color: #acacbf; - border-left-color: #575757; -} - -.ffz-dark .legal_page ol.legal li { - color: rgb(222,222,222); -} - -.ffz-dark .static-page h1 { - color: #fff !important; - -webkit-text-stroke: none !important; -} - -.ffz-dark .static-page p.p2 { - color: #ccc; - -webkit-text-stroke: none; -} - -.ffz-dark .static-page td, -.ffz-dark .static-page td { - border-color: #474747; -} - -.ffz-dark .legal_page ol.legal li p { - color: #ccc; -} - -/* Search */ - -.ffz-dark ul.subtabs, -.ffz-dark .user_list .user, -.ffz-dark .mixed_list .user, -.ffz-dark .video_list .video, -.ffz-dark .mixed_list .video { - border-bottom-color: rgba(255,255,255,0.2); -} - -.ffz-dark .user_list .user .user_stats .followers_count, -.ffz-dark .mixed_list .user .user_stats .followers_count, -.ffz-dark .clmgr-meta-special figure, -.ffz-dark li.video.vods img.video_type { - filter: invert(100%); - -webkit-filter: invert(100%); -} - -.ffz-dark .form__input[type=range] { - background-color: transparent; -} - -.ffz-dark .form__input[type=text], -.ffz-dark .form__input[type=email], -.ffz-dark .form__input[type=search], -.ffz-dark select.pl-form__input, -.ffz-dark textarea.form__input, -.ffz-dark select.form__input, -.ffz-dark .new-header-search input { - color: #fff; - background-color: rgba(255,255,255,0.05); - box-shadow: rgba(255,255,255,0.2) 0 0 0 1px inset; -} - -.ffz-dark .form__input[type=text]:focus, -.ffz-dark .form__input[type=email]:focus, -.ffz-dark .form__input[type=search]:focus, -.ffz-dark textarea.form__input:focus, -.ffz-dark select.form__input:focus, -.ffz-dark .new-header-search input:focus { - box-shadow: rgba(255,255,255,0.4) 0 0 0 1px inset; -} - -/* Playlist */ - -.ffz-dark .cn-chat-replay-header { - background: transparent; - border: none; -} - -.ffz-dark .cn-chat-replay-header, -.ffz-dark .ember-chat .chat-header { - box-shadow: inset 0 -1px 0 0 rgba(255,255,255,0.2); -} - -.ffz-dark .playlist-controller, -.ffz-dark .playlist-item { - border-color: rgba(255,255,255,0.2); -} - -.ffz-dark .playlist-container:not(.playlist-enabled) .playlist-item:hover, -.ffz-dark .playlist-container:not(.playlist-enabled) .ui-sortable-helper { - background-color: rgba(255,255,255,0.2); -} - - -/* VoDs */ - -.ffz-dark .app-main .chatReplay .notice-wrapper .svg-logo_glitch { - fill: #242424 !important; -} - -.ffz-dark .app-main .chatReplay.dark, -.ffz-dark .app-main .chatReplay .noticeWrap, -.ffz-dark .app-main .chatReplay .notice-wrapper { - background-color: #19191f; -} - -.ffz-dark.ffz-no-blue .app-main .chatReplay.dark, -.ffz-dark.ffz-no-blue .app-main .chatReplay .noticeWrap, -.ffz-dark.ffz-no-blue .app-main .chatReplay .notice-wrapper { - background-color: #191919; -} - -.ffz-dark .chatReplay .loading-spinner-container { - background: rgba(25,25,25,0.65); -} - - -/* Conversations */ - -.ffz-dark .conversations-list-bottom-bar { - background-color: #19191f; - color: #8c8c9c; - border-color: rgba(255,255,255,0.1); -} - -.ffz-dark .conversation-list-bottom-bar:hover { - color: #fff; -} - -.ffz-dark .conversations-list { - background-color: #19191f; - border: 1px solid #32323e; - color: #fff; -} - -.ffz-dark .conversations-list:before { - right: 9px; - border-color: rgba(50,50,62,0); - border-top-color: #32323e; -} - -.ffz-dark .conversations-list:after { - border-color: rgba(25,25,31,0); - border-top-color: #19191f; - border-width: 10px; - margin-left: -10px; -} - -.ffz-dark .conversations-list .conversations-list-header { - background-color: #121217; - border-bottom: 1px solid #32323e; - color: #fff; -} - -.ffz-dark .conversations-list .conversation-preview-line { - color: #8c8c9c; -} - -.ffz-dark .conversations-list .search-divider, -.ffz-dark .conversations-list .conversations-list-item { - border-bottom: 1px solid #32323e; -} - -.ffz-dark .conversations-list .conversations-list-item:hover { - background-color: #121217; -} - -.ffz-dark .conversation-window { - background-color: #19191f; - box-shadow: none; - color: #8c8c9c; -} - -.ffz-dark .conversations-list .search-divider, -.ffz-dark .convoHeader { - background-color: #121217; - box-shadow: none; -} - -.ffz-dark .conversation-input-actions .button, -.ffz-dark .conversation-input-actions .follow-button:not(.ember-follow) .follow, -.ffz-dark .follow-button:not(.ember-follow) .conversation-input-actions .follow { - background-color: #444; -} - -.ffz-dark .conversation-window.has-focus .convoHeader { - background-color: #121217; -} - -.ffz-dark .conversation-window.has-focus .convoHeader .username { - color: #fff; -} - -.ffz-dark .conversation-window.has-focus .conversation-input-bar textarea:focus { - border-color: rgba(255,255,255,0.2); -} - -.ffz-dark .conversation-window.has-focus .conversation-input-actions .button, -.ffz-dark .conversation-window.has-focus .conversation-input-actions .follow-button:not(.ember-follow) .follow, -.ffz-dark .follow-button:not(.ember-follow) .conversation-window.has-focus .conversation-input-actions .follow { - background-color: #6441a5; -} - -.ffz-dark .conversation-system-message { - background-color: #19191f; - color: #8c8c9c; - border-bottom: 1px solid #32323e; -} - -.ffz-dark .conversation-input-bar .emoticon-selector-toggle svg path { - fill: rgba(255,255,255,0.2); -} - -.ffz-dark .conversation-input-bar .emoticon-selector-toggle:hover svg path { - fill: rgba(255,255,255,0.5); -} - -.ffz-dark .emoticon-selector-box .emote-set { - border-color: #323232 !important; -} - -.ffz-dark .conversation-input-bar .emoticon-selector-box .emoticon-grid { - background-color: #191919; -} - -.ffz-dark .ember-chat .chat-settings .experimental-options { - border-top-color: rgba(255,255,255, 0.2); -} - -.ffz-dark .dash-widget__divider, -.ffz-dark .conversation-settings-menu .options-divider { - border-bottom-color: rgba(255,255,255,0.2); -} - -.ffz-dark .conversation-settings-menu:before { - border-color: transparent; - border-bottom-color: #32323e; -} - -.ffz-dark .conversation-settings-menu:after { - border-color: transparent; - border-bottom-color: rgb(16,16,16); -} - -.ffz-dark .conversation-window { - border: 1px solid rgba(255,255,255,0.2); -} - -.ffz-dark:not(.ffz-top-conversations) .conversation-window { - border-bottom: none; -} - -.ffz-dark.ffz-top-conversations .conversation-window { - border-top: none; -} - -.ffz-dark .conversation-window:not(.collapsed) .convoHeader { - border-bottom: 1px solid rgba(255,255,255,0.2); -} - - -/* Creative UI */ - -.ffz-dark .ct-spotlight__right { - background-color: #121212; -} - -.ffz-dark .ct-spotlight__controls-container { - background-color: #161616; - box-shadow: -1px 0 0 #303030 inset; -} - -.ffz-dark .ct-bar { - background-color: #121212; - box-shadow: - 0 2px 6px -2px rgba(255,255,255,0.1), - 0 1px 0 rgba(255,255,255,0.05), - 0 -1px 0 rgba(255,255,255,0.05); -} - -.ffz-dark .ct-banner__name, -.ffz-dark .ct-banner__status, -.ffz-dark .ct-type-2, -.ffz-dark .ct-type-4 { - color: #aaa; -} - -.ffz-dark .ct-type-grey-light { - color: #ccc; -} - - -.ffz-dark .ct-crumb:after { - box-shadow: 12px -6px 24px -8px rgba(255,255,255,0.1); - border-color: #303030; -} - -.ffz-dark .ct-spotlight__avatar { - box-shadow: 0 0 0 1px #303030, 0 2px 3px #303030; -} - -.ffz-dark .ct-spotlight__right--col .ct-spotlight__card-container { - box-shadow: 0 -1px 0 #303030 inset; -} - -.ffz-dark hr, -.ffz-dark .ct-spotlight__section, -.ffz-dark .balloon__stroke, -.ffz-dark .ct-spotlight__avatar, -.ffz-dark .ct-bar__item { - border-color: #303030; -} - -.ffz-dark .ct-crumb--1:after, -.ffz-dark .ct-crumb--1 .ct-crumb__label { - background-color: #121212; -} - -.ffz-dark .ct-crumb--2:after, -.ffz-dark .ct-crumb--2 .ct-crumb__label { - background-color: #161616; -} - - -/* Creative Tags */ - -.ffz-dark .ct-tags__tag { - background-color: #121212; - color: #999 !important; -} - -.ffz-dark .ct-tag--light .ct-tag__link:hover { color: #ccc !important } - -.ffz-dark .ct-tags__tag:hover { - background-color: #000; - color: #ccc !important; -} - -.ffz-dark .ct-tags__tag.ct-tags__tag--current { - background-color: #7d5bbc; - color: #fff !important; -} - -.ffz-dark .ct-banner--off .ct-banner__header { color: #999 } -.ffz-dark .ct-banner--off .ct-banner__link { color: #ccc } - - -/* Activity Feeds */ - -.button.alert { color: #fff !important } - -.ffz-dark .activity-notice { background-color: rgba(24,24,24,0.9) } -.ffz-dark .pill { background-color: rgba(255,255,255,0.2) } - -.ffz-dark .activity-list-end svg { fill: #474747 } - -.ffz-dark .activity-meta { - box-shadow: 0 1px 0 #474747; -} - -.ffz-dark .activity-meta-divider:before { - background-color: #191919; - border-top-color: #474747; - border-left-color: #474747; -} - -.ffz-dark .activity-button:hover { - border-color: #d5d5d5; - background-color: #242424; -} - -.ffz-dark .activity-create:not(.activity-create--expand) { border-color: #474747 } - -.ffz-dark .activity-create__actions { - background-color: #191919; - border-color: #474747; - box-shadow: none; -} - -.ffz-dark .activity-create__container, -.ffz-dark .activity-button { - border-color: #474747; - color: #fff !important; - background-color: #191919; -} - -.ffz-dark .activity-card { - border: 1px solid; - background-color: #191919; -} - -.ffz-dark .activity-card__reason { - background-color: #141414; - color: #ccc; - box-shadow: none; -} - -.ffz-dark .list-load-more, -.ffz-dark .activity-card { - border-color: #474747; -} - -.ffz-dark .activity-card__status { - background-color: #191919; -} - -.ffz-dark .activity-meta-divider { - box-shadow: inset 0 -1px 0 #474747; -} - -.ffz-dark a.balloon__link:hover { color: #fff !important } -.ffz-dark .activity-meta__name { color: #ccc } - - -.ffz-dark .activity-reaction__emote-contain { - background-color: #101010; -} - - -.ffz-dark .activity-comments { - border-color: #474747; -} - -.ffz-dark .activity-comment:hover { - background-color: rgba(255,255,255,0.2); -} - -.ffz-dark .activity-card__comments { - background-color: #121212; - box-shadow:inset 0 1px 0 #474747; -} - -.ffz-dark .activity-create { - background-color: #101010; - box-shadow: none; /*inset 0 0 0 1px #474747;*/ -} - -.ffz-dark .activity-create--card { - box-shadow: 0 1px 2px rgba(255,255,255,0.2); -} - -.ffz-dark .c-background { background: #101010 !important } - -.ffz-dark .activity-create--focus { - background-color: #191919; - /*box-shadow: none; inset 0 0 0 1px #474747;*/ - border-color: rgba(255,255,255,0.4) !important; -} - -.ffz-dark .c-text { color: #aaa !important } -.ffz-dark .c-text-alt { color: #999 !important } - -.ffz-dark .activity-add-comment__textarea:before { - background: #1d1d1d; - border-left-color: #474747; - border-bottom-color: #474747; -} - -.ffz-dark .mod-dashboard__video-title, -.ffz-dark .activity-card { color: #ccc } - -.inherit-color { color: inherit !important } - -.ffz-dark .tw-button--icon-only figure svg { - fill: #a68cd4; -} - -.ffz-dark .mod-comment { - background-color: #191919; - box-shadow: inset 0 0 0 1px #474747; -} - -.ffz-dark .mod-comment__timestamp { - color: #a68cd4; - background-color: #222; -} - -.ffz-dark .mod-comment__video a:active, -.ffz-dark .mod-comment__video a:focus, -.ffz-dark .mod-comment__video a:hover { background-color: #333 !important } - -.ffz-dark .mod-comment:active, -.ffz-dark .mod-comment:focus, -.ffz-dark .mod-comment:hover { - box-shadow: 0 2px 2px 0 rgba(255,255,255,.05), inset 0 0 0 1px #474747; -} - -.ffz-dark .c-background-alt-2 { - background-color: #222 !important -} - -.ffz-dark .automod-words__item { - border-color: #474747; - background-color: #111; -} - -.ffz-dark .automod-words__item--selected { - background-color: #333; -} - -.ffz-dark .automod-words__text { color: #ccc } - -.ffz-dark .automod-words__fade-mask { - background: none; -} - -/* VOD Messages */ - -.ffz-dark .vod-chat { - color: #ccc; - background-color: #191919; -} - -.ffz-dark .vod-chat__header { - box-shadow: inset 0 -1px 0 0 #474747; -} - -.ffz-dark .vod-message.vod-message--focused .vod-message__reply, -.ffz-dark .vod-message:hover .vod-message__reply, -.ffz-dark .vod-message__reply { - box-shadow: inset 3px 0 0 0 #474747; -} - -.ffz-dark .vod-message__reply-button { - color: #a68cd4; -} - -.ffz-dark .vod-chat__input { - background-color: #191919; - box-shadow: inset 0 1px 0 0 #474747; -} - -.ffz-dark .vod-message.vod-message--focused, -.ffz-dark .vod-message:hover { - background-color: #333; -} - -/* Search Panel */ - -.ffz-dark[data-current-path="user.channel.index.index"] .search-panel { background-color: rgba(16,16,16,0.9) } - -.ffz-dark .search-panel { - background-color: #101010; - color: #C3C3C3; -} - -.ffz-dark .search-panel--fly:before, -.ffz-dark .search-panel--fly:after { - border-bottom-color: #404040; -} - -.ffz-dark .search-panel__title-bar { - background-color: #090909; -} - -.ffz-dark .search-panel, -.ffz-dark .search-panel__title-bar, -.ffz-dark .search-panel__title-back { - border-color: rgba(255,255,255,0.2) -} - -.ffz-dark .search-panel__title { color: #999 } - -.ffz-dark .search-panel__title-back:hover, -.ffz-dark .search-result-view__block.isActive { background-color: #222 } - -.ffz-dark .search-result-view__titlesep:hover, -.ffz-dark a:hover .card__title, -.ffz-dark .card__title a:hover, -.ffz-dark .card__info a:hover { - color: #ccd; -} - -.ffz-dark .search-result-view__block .card__info span, -.ffz-dark .search-result-view__block .card__title, -.ffz-dark .search-result-view__title-more { color: #a68ed2 !important } -.ffz-dark .search-result-view__titlesep { - background-color: #090909; -} - -.ffz-dark .search-result-view__block .card__layout:hover .card__info span, -.ffz-dark .search-result-view__block .card__layout:hover .card__title { - color: #fff !important -} - - -/* Channel Redesign */ - -.ffz-dark .cn-bar { - background-color: #101010; - box-shadow: inset 0 -1px 0 #161616, -1px 1px rgba(255,255,255,0.065); -} - -.ffz-dark .twitchbot-settings__border-more, -.ffz-dark .border-t, -.ffz-dark .border-b, -.ffz-dark .cn-metabar__more { - border-color: rgba(255,255,255,0.2) !important; -} - -.ffz-dark .twitchbot-settings__hover-text-help, -.ffz-dark .twitchbot-settings__rule-container:hover, -.ffz-dark .twitchbot-settings__right-container { - background-color: #191919; -} - - -.ffz-dark .cn-bar__button--resubscribe, -.ffz-dark .button--icon.cn-bar__button--subscribed { - background-color: #161616; - box-shadow: 0 0 0 1px rgba(255,255,255,0.065) inset; -} - - -.ffz-dark .twitchbot-settings__help, -.ffz-dark .twitchbot-settings__level-context, -.ffz-dark .cn-bar__avatar-wrap { - background-color: #101010; - border-color: #101010; -} - -.ffz-dark .twitchbot-settings__arrow-up { - border-bottom-color: #101010; -} - -.ffz-dark .cn-bar__displayname { - color: #c3c3c3; -} - -.ffz-dark .cn-tabs__item--withseparator:after { - border-color: rgba(255,255,255,0.2); -} - -.ffz-dark .cn-tabs__item > a { - color: #999; -} - -.ffz-dark .cn-tabs__item > a.active, -.ffz-dark .cn-tabs__item > a:hover { - color: #a68ed2; -} - -.ffz-dark .cn-tabs__item > a:hover:after { - border-color: #a68ed2; -} - -.ffz-dark .offer-list__core:after, -.ffz-dark .offer-item__ci:after { - background-image: linear-gradient(rgba(16,16,16,0) 0,#101010 100%) -} - -/* Video Uploads */ - -.ffz-dark .vod-vertical-nav + div .card > div[style], -.ffz-dark #video-manager .card > div[style], -.ffz-dark .videos.uploads .card > div[style] { - background-color: #101010 !important; -} - -.ffz-dark .cn-vod-info__divider { background-color: rgba(255,255,255,0.2) } -.ffz-dark .card__body--theme-grey { - background-color: #161616; -} - -.ffz-dark .drop-zone__border, -.ffz-dark .subscription-modal__right, -.ffz-dark .subscription-modal__bar { - border-color: rgba(255,255,255,0.2); -} - -.ffz-dark .subscription-modal__sub-tabs input:checked+.subscription-modal__sub-tabs-label { - color: #ccc; - box-shadow: 0 -2px 0 #a68ed2 inset, 0 4px 6px -4px #a68cd4; -} - -.ffz-dark .subscription-modal__sub-tabs-label { - color: #a68cd4; -} - -.ffz-dark .balloon .filter-bar__balloon-link--active { - color: #fff !important; - background-color: #6441a5 !important; -} - - -/* New Dashboard */ - -.ffz-dark .gu-transit, -.ffz-dark .dash-widget { - background-color: #191919; - border-color: rgba(255,255,255,0.2); - box-shadow: 0 2px 2px 0 rgba(255,255,255,0.05); - color: #c3c3c3; -} - -.ffz-dark .form__input[type=checkbox]:not(:checked)+label:before, -.ffz-dark .form__input[type=radio]:not(:checked)+label:before, -.ffz-dark .dash-widget__header { - background-color: #232323; - border-color: rgba(255,255,255,0.2); -} - -.ffz-dark .dash-widget-watchparty-card:hover { - background-color: rgba(255,255,255,0.1); -} - - -/* Notification Center */ - -.ffz-dark .notification-center { - background-color: #101010; - color: #C3C3C3; - box-shadow: 0 0 0 1px rgba(255,255,255,0.2); -} - -.ffz-dark .notification-center-balloon:before, -.ffz-dark .notification-center-balloon:after { display: none } - -.ffz-dark .friend-requests__empty, -.ffz-dark .friend-request__content-msg, -.ffz-dark .friend-requests__footer a:hover, -.ffz-dark .notification-center__unread-container, -.ffz-dark .notification-center__subheader-text, -.ffz-dark .notification__content-msg, -.ffz-dark .notification-center__header-text { color: #C3C3C3 } -.ffz-dark .notification__details { color: #777 } - -.ffz-dark .notification__dismiss svg, -.ffz-dark .notification__details svg { fill: #777 } - -.ffz-dark .notification__dismiss:hover svg { fill: #AAA } -.ffz-dark .notification__dismiss svg polygon { fill: #333 } - -.ffz-dark .notification-center__subheader { - background-color: #1a1a1a; - border-color: rgba(255,255,255,0.2); -} - -.ffz-dark .sc-onboarding .sc-onboarding__content, -.ffz-dark .sc-onboarding .sc-onboarding__close { - background-color: #101010; - box-shadow: -0.1rem 0 0 #474747 inset; -} - -.ffz-dark .sc-onboarding { - box-shadow: 0 0 0 0.1rem #474747; -} - -.ffz-dark .offer-item__ci--wrap { border-color: #474747 } - -.ffz-dark .offer-item__background--purple, -.ffz-dark .offer-item--title, -.ffz-dark .notification-center__footer, -.ffz-dark .notification-center__header { - border-color: rgba(255,255,255,0.2); - background-color: #101010; -} - -.ffz-dark .offer-item__background--gray, -.ffz-dark .notification-center__core { - background-color: rgba(255,255,255,0.05); -} - -.ffz-dark .notification-center__core-end { - box-shadow: inset 0.1rem 0.4rem 1rem -.5rem; - color: rgba(255,255,255,0.2); -} - -.ffz-dark .friend-requests__empty, -.ffz-dark .friend-requests__footer, -.ffz-dark .notification--read, -.ffz-dark .notification { - background-color: rgba(255,255,255,0.01); - border-color: rgba(255,255,255,0.1); -} - -.ffz-dark .notification--unread { - background-color: rgba(255,255,255,0.05); - border-color: rgba(255,255,255,0.1); -} - -.ffz-dark .friend-requests__footer:hover, -.ffz-dark .notification--read:hover, -.ffz-dark .notification--unread:hover { - background-color: rgba(255,255,255,0.1); -} - -.ffz-dark .friend-requests__footer a { - color: #a68ed2; -} - -/* Playlists are Stupid */ - -.ffz-dark .playlist-card__title { color: #ccc } -.ffz-dark .playlist-card-meta__stat { color: #a68cd4 } - -.ffz-dark .playlist-add-search-card__layout { - border-color: transparent !important; - box-shadow: none !important; -} - -.ffz-dark .playlist-add-search-card--selected:before { - background-color: rgba(255,255,255,0.1); -} - -.ffz-dark .playlist-card { - color: #ccc; - background-color: #161616; -} - -.ffz-dark .dash-widget-watchparty-card__gripper, -.ffz-dark .playlist-editor-card__gripper { - background-color: #242424; - box-shadow: -8px 0 5px -5px #202020; -} - -.ffz-dark img[src="https://static-cdn.jtvnw.net/ttv-playlists-thumbnails-prod/missing-video-thumb-640x360.png"] { - filter: grayscale(100%) invert(100%); -} - -/* Front Page is Stupid */ - -.ffz-dark .fp-side { - background-color: #191919; - box-shadow: inset 0 0 0 1px #474747; -} - -.ffz-dark .fp-side__footer { - background-color: #121212; - box-shadow: - inset 0 -1px 0 #474747, - inset -1px 0 0 #474747, - inset 1px 0 0 #474747; -} - -.ffz-dark .fp-carousel-nav__item:not(.fp-carousel-nav__item--active) { - border-color: #474747; -} - -.ffz-dark .fp-carousel__title, -.ffz-dark .fp-carousel__desc p, -.ffz-dark .fp-carousel__name, -.ffz-dark .fp-side__header { color: #c3c3c3 } - -/* Game Pages */ - -.ffz-dark .game-details-igc__details, -.ffz-dark .game-details__section--white { - background-color: #060606; -} - -.ffz-dark .game-details__section--grey { - background-color: #101010; -} - -.ffz-dark .inventory-header, -.ffz-dark .game-details-igc__card, -.ffz-dark .cmrc-igc-line--with-separators, -.ffz-dark .game-details__section--white+.game-details__section--grey, -.ffz-dark .game-details__section--grey+.game-details__section--white { - border-color: #474747; -} - -.ffz-dark .icon-platform-windows--black svg { - fill: #ccc; -} - -.ffz-dark .activity--not-included { background-color: #202020; } - -.ffz-dark .activity--level-0 { background-color: rgba(100,65,164,.1) } -.ffz-dark .activity--level-1 { background-color: rgba(100,65,164,.25) } -.ffz-dark .activity--level-2 { background-color: rgba(100,65,164,.4) } -.ffz-dark .activity--level-3 { background-color: rgba(100,65,164,.55) } -.ffz-dark .activity--level-4 { background-color: rgba(100,65,164,.7) } -.ffz-dark .activity--level-5 { background-color: rgba(100,65,164,.85) } -.ffz-dark .activity--level-6 { background-color: rgba(100,65,164,1) } - -.ffz-dark .inventory-item__image { - background-color: #191919; - border-color: #474747; -} - -.ffz-dark .border-r { - border-color: #474747; -} - -.ffz-dark .bg--grey { - background-color: #242424; -} - -.ffz-dark .clmgr-table__cell-wrapper:nth-child(even) .clmgr-table__cell--collapsed { - background-color: rgba(255,255,255,0.1); -} - -.ffz-dark .clmgr-table__cell-wrapper:nth-child(even) .clmgr-table__cell--collapsed:hover, -.ffz-dark .clmgr-table__cell--collapsed:hover { - background-color: rgba(255,255,255,0.2); -} - -.ffz-dark .stats-table__header { - background-color: #101010; -} - -.ffz-dark .border, -.ffz-dark .stats-table__cell, -.ffz-dark .stats-table { - border-color: #474747; -} - -.ffz-dark .stats-table__cell { color: #ccc } - -.ffz-dark .stats-table__row:nth-child(even) { - background-color: #191919; -} - -.ffz-dark .stats-table__row:hover { - background-color: #333; -} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js deleted file mode 100644 index a6a4b08c..00000000 --- a/gulpfile.js +++ /dev/null @@ -1,292 +0,0 @@ -// Dependencies -var fs = require('fs'), - gulp = require('gulp'), - browserify = require('gulp-browserify'), - header = require('gulp-header'), - footer = require('gulp-footer'), - concat = require('gulp-concat'), - clean = require('gulp-clean'), - util = require('gulp-util'), - rename = require('gulp-rename'), - uglify = require('gulp-uglify'); - -// Templates -var jsEscape = require('gulp-js-escape'), - wrap = require('gulp-wrap'), - declare = require('gulp-declare'), - cleanCSS = require('gulp-clean-css'); - - -// LESS -var less = require('gulp-less'), - sourcemaps = require('gulp-sourcemaps'); - - -// Deploy Dependencies -var ftp = require('vinyl-ftp'), - request = require('request'); - - -// Server Dependencies -var http = require("http"), - https = require("https"), - net = require('net'), - path = require("path"), - request = require("request"), - url = require("url"); - -var server_version = "0.1.1"; - - -// Tasks - -gulp.task('clean', function() { - return gulp.src('build', {read:false}) - .pipe(clean()); -}); - -gulp.task('prepare', ['clean'], function() { - return gulp.src(['src/**/*']) - .pipe(gulp.dest('build/')); -}); - - -//gulp.task('templates', ['prepare'], function() { -// return gulp.src(['build/templates/**/*.hbs']) -// .pipe(jsEscape()) -// .pipe(wrap('Handlebars.compile(<%= contents %>)')) -// .pipe(declare({ -// root: 'exports', -// noRedeclare: true, -// processName: function(filePath) { -// var match = filePath.match(/build[\\\/]templates[\\\/](.*)\.hbs$/); -// return declare.processNameByPath((match && match.length > 1) ? match[1] : filePath); -// } -// })) -// .pipe(concat('templates.js')) -// .pipe(gulp.dest('build/')) -// .on('error', util.log); -//}); - -gulp.task('styles', ['prepare'], function() { - //return; - return gulp.src(['build/less/*.less', '!build/less/style.less']) - .pipe(sourcemaps.init()) - .pipe(less()) - .pipe(sourcemaps.write()) - .pipe(gulp.dest(__dirname)) - .on('error', util.log); -}); - - -gulp.task('embedded_styles', ['prepare'], function() { - return gulp.src(['build/styles/**/*.css']) - .pipe(cleanCSS()) - .pipe(jsEscape()) - .pipe(declare({ - root: 'exports', - noRedeclare: true, - processName: function(filePath) { - var match = filePath.match(/build[\\\/]styles[\\\/](.*)\.css$/); - return declare.processNameByPath((match && match.length > 1) ? match[1] : filePath); - } - })) - .pipe(concat('compiled_styles.js')) - .pipe(gulp.dest('build/')) - .on('error', util.log) -}); - - -gulp.task('scripts', ['embedded_styles'], function() { - return gulp.src(['build/main.js']) - .pipe(browserify()) - .pipe(concat('script.js')) - .pipe(header('(function(window) {')) - .pipe(footer(';window.ffz = new FrankerFaceZ()}(window));')) - .pipe(gulp.dest(__dirname)) - .on('error', util.log); -}); - - -gulp.task('watch', ['default', 'server'], function() { - return gulp.watch('src/**/*', ['default']); -}); - -gulp.task('default', ['styles', 'scripts']); - - -// Deploy - -gulp.task('minify_script', ['scripts'], function() { - return gulp.src(['*.js', '!*.min.js', '!gulpfile.js']) - .pipe(uglify()) - .pipe(rename(function(path) { - path.basename += '.min'; - })) - .pipe(gulp.dest(__dirname)) - .on('error', util.log); -}); - -gulp.task('minify_style', function() { - return gulp.src(['*.css', '!*.min.css']) - .pipe(cleanCSS()) - .pipe(rename(function(path) { - path.basename += '.min'; - })) - .pipe(gulp.dest(__dirname)) - .on('error', util.log); -}); - -gulp.task('minify', ['minify_script', 'minify_style']); - - -gulp.task('upload', ['minify'], function() { - // Load credentials from an external file. - var contents = fs.readFileSync('credentials.json', 'utf8'), - cred = JSON.parse(contents); - - cred.log = util.log; - - // Create the connection. - var conn = ftp.create(cred); - - // What we're transfering. - var ftp_path = cred.remote_path, - - globs = [ - "script.min.js", - "style.min.css", - "dark.min.css", - "changelog.html" - ]; - - util.log(cred.remote_path); - - return gulp.src(globs, {base: '.', buffer: false}) - .pipe(conn.newerOrDifferentSize(ftp_path)) - .pipe(conn.dest(ftp_path)) - .on('error', util.log); -}); - -gulp.task('clear_cache', ['upload'], function(cb) { - // Load credentials from an external file. - var contents = fs.readFileSync('credentials.json', 'utf8'), - cred = JSON.parse(contents); - - // Build the URLs. - var base = "://cdn.frankerfacez.com/script/", - files = [], - globs = [ - "script.min.js", - "style.min.css", - "dark.min.css", - "changelog.html" - ]; - - for(var i=0; i < globs.length; i++) { - files.push("http" + base + globs[i]); - files.push("https" + base + globs[i]); - } - - request({ - method: 'DELETE', - uri: "https://api.cloudflare.com/client/v4/zones/" + cred.cloudflare_zone + "/purge_cache", - headers: { - "X-Auth-Email": cred.cloudflare_email, - "X-Auth-Key": cred.cloudflare_key - }, - json: { - "files": files - } - }, function(error, request, body) { - if ( error ) - return util.log("[FAIL] Error: " + error); - else if ( request.statusCode !== 200 ) - return util.log("[FAIL] Non-200 Status: " + request.statusCode); - - util.log("[SUCCESS] Cache cleared."); - cb(); - }); -}); - -gulp.task('deploy', ['upload', 'clear_cache']); - - -// Server - -gulp.task('server', function() { - var handle_req = function(req, res) { - var uri = url.parse(req.url).pathname, - lpath = path.join(uri).split(path.sep); - - if ( uri == "/dev_server" ) { - util.log("[" + util.colors.cyan("HTTP") + "] " + util.colors.green("200") + " GET " + util.colors.magenta(uri)); - res.writeHead(200, {"Content-Type": "application/json", "Access-Control-Allow-Origin": "*"}); - return res.end(JSON.stringify({path: process.cwd(), version: server_version})); - } - - if ( ! lpath[0] ) - lpath.shift(); - - if ( lpath[0] == "script" ) - lpath.shift(); - else - lpath.splice(0, 0, "cdn"); - - var file = path.join(process.cwd(), lpath.join(path.sep)); - - fs.exists(file, function(exists) { - if ( ! exists ) { - util.log("[" + util.colors.cyan("HTTP") + "] " + util.colors.bold.blue("CDN") + " GET " + util.colors.magenta(uri)); - return request.get("http://cdn.frankerfacez.com/" + uri).on('error', function(err) { res.end() }).pipe(res); - } - - var headers = {"Access-Control-Allow-Origin": "*"}; - - if ( fs.lstatSync(file).isDirectory() ) { - util.log("[" + util.colors.cyan("HTTP") + "] " + util.colors.red("403") + " GET " + util.colors.magenta(uri)); - res.writeHead(403, headers); - res.write('403 Forbidden'); - return res.end(); - } - - if ( file.substr(file.length-4) === ".svg" ) - headers['Content-Type'] = 'image/svg+xml'; - - util.log("[" + util.colors.cyan("HTTP") + "] " + util.colors.green("200") + " GET " + util.colors.magenta(uri)); - res.writeHead(200, headers); - fs.createReadStream(file).pipe(res); - }); - - }; - - if ( fs.existsSync("dev_key.pem") ) { - var https_options = { - key: fs.readFileSync("dev_key.pem"), - cert: fs.readFileSync("dev_cert.pem") - }; - - http.createServer(handle_req).listen(8001, "localhost"); - https.createServer(https_options, handle_req).listen(8002, "localhost"); - - net.createServer(function(conn) { - conn.on('error', function(e) { - util.log("[" + util.colors.cyan("HTTP") + "] Connection Error: " + util.colors.magenta('' + e)); - }); - - conn.once('data', function(buf) { - var address = (buf[0] === 22) ? 8002 : 8001; - var proxy = net.createConnection(address, function() { - proxy.write(buf); - conn.pipe(proxy).pipe(conn); - }); - }); - }).listen(8000); - - util.log("[" + util.colors.cyan("HTTPS") + "] Listening on Port: " + util.colors.magenta("8000")); - - } else { - http.createServer(handle_req).listen(8000, "localhost"); - util.log("[" + util.colors.cyan("HTTP") + "] Listening on Port: " + util.colors.magenta("8000")); - } -}); \ No newline at end of file diff --git a/old_changes.html b/old_changes.html index 06de919b..687d4547 100644 --- a/old_changes.html +++ b/old_changes.html @@ -1,3 +1,72 @@ +
3.5.536
+ + +
3.5.535
+ + +
3.5.534
+ + +
3.5.533
+ + +
3.5.532
+ + +
3.5.531
+ + +
3.5.530
+ + +
3.5.529
+ + +
3.5.528
+ + +
3.5.527
+ + +
3.5.526
+ + +
3.5.525
+ +
3.5.524