- * Licensed under the MIT license.
- * https://github.com/MayhemYDG/4chan-x/blob/master/LICENSE
- *
- * Contributors:
- * https://github.com/MayhemYDG/4chan-x/graphs/contributors
- * Non-GitHub contributors:
- * ferongr, xat-, Ongpot, thisisanon and Anonymous - favicon contributions
- * e000 - cooldown sanity check
- * Seiba - chrome quick reply focusing
- * herpaderpderp - recaptcha fixes
- * WakiMiko - recaptcha tab order http://userscripts.org/scripts/show/82657
- *
- * All the people who've taken the time to write bug reports.
- *
- * Thank you.
- */
-
+/*
+* Linkify based on:
+* http://downloads.mozdev.org/greasemonkey/linkify.user.js
+* https://github.com/MayhemYDG/LinkifyPlusFork
+*
+* Originally written by Anthony Lieuallen of http://arantius.com/
+* Licensed for unlimited modification and redistribution as long as
+* this notice is kept intact.
+*/
(function() {
var $, $$, Anonymize, ArchiveLink, Board, Build, CatalogLinks, Clone, Conf, Config, CustomCSS, DataBoard, DataBoards, DeleteLink, DownloadLink, Emoji, ExpandComment, ExpandThread, FappeTyme, Favicon, FileInfo, Filter, Fourchan, Get, Header, ImageExpand, ImageHover, ImageReplace, Keybinds, Linkify, Main, Menu, Nav, Notification, PSAHiding, Polyfill, Post, PostHiding, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, Recursive, Redirect, RelativeDates, Report, ReportLink, RevealSpoilers, Sauce, Settings, Thread, ThreadExcerpt, ThreadHiding, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, c, d, doc, g,
__slice = [].slice,
@@ -169,7 +228,7 @@
'Bottom Header': false,
'Header catalog links': false,
'Bottom Board List': false,
- 'Custom Board Navigation': false
+ 'Custom Board Navigation': true
},
boardnav: '[ toggle-all ] [current-title]',
time: '%m/%d/%y(%a)%H:%M:%S',
@@ -179,8 +238,8 @@
usercss: '',
hotkeys: {
'Toggle board list': ['Ctrl+b', 'Toggle the full board list.'],
- 'Open empty QR': ['l', 'Open QR without post number inserted.'],
- 'Open QR': ['Shift+l', 'Open QR with post number inserted.'],
+ 'Open empty QR': ['i', 'Open QR without post number inserted.'],
+ 'Open QR': ['Shift+i', 'Open QR with post number inserted.'],
'Open settings': ['Alt+o', 'Open Settings.'],
'Close': ['Esc', 'Close Settings, Notifications or QR.'],
'Spoiler tags': ['Ctrl+s', 'Insert spoiler tags.'],
@@ -230,7 +289,7 @@
doc = d.documentElement;
g = {
- VERSION: '3.2.0',
+ VERSION: '1.1.0',
NAMESPACE: '4chan X.',
boards: {},
threads: {},
@@ -4845,7 +4904,7 @@
}
boardList = $.el('span', {
id: 'board-list',
- innerHTML: " - " + fourchannav.innerHTML + ""
+ innerHTML: "[ - ] " + fourchannav.innerHTML + ""
});
fullBoardList = $('#full-board-list', boardList);
btn = $('.hide-board-list-button', fullBoardList);
@@ -5008,7 +5067,7 @@
editCustomNav: function() {
var settings;
- Settings.open('Rice');
+ Settings.open('Advanced');
settings = $.id('fourchanx-settings');
return $('input[name=boardnav]', settings).focus();
},
@@ -6575,29 +6634,27 @@
if (Conf['Unread Line']) {
$.on(d, 'visibilitychange', Unread.setLine);
}
- if (!Conf['Scroll to Last Read Post']) {
+ if (Conf['Scroll to Last Read Post']) {
+ return $.on(window, 'load', Unread.scroll);
+ }
+ },
+ scroll: function() {
+ var hash, posts, root;
+
+ if ((hash = location.hash.match(/\d+/)) && hash[0] in Unread.thread.posts) {
return;
}
- return $.on(window, 'load', function() {
- var hash, root;
-
- if ((hash = location.hash.match(/\d+/)) && hash[0] in this.posts) {
- return;
- }
- if (Unread.posts.length) {
- while (root = $.x('preceding-sibling::div[contains(@class,"postContainer")][1]', Unread.posts[0].nodes.root)) {
- if (!(Get.postFromRoot(root)).isHidden) {
- break;
- }
+ if (Unread.posts.length) {
+ while (root = $.x('preceding-sibling::div[contains(@class,"postContainer")][1]', Unread.posts[0].nodes.root)) {
+ if (!(Get.postFromRoot(root)).isHidden) {
+ break;
}
- if (!root) {
- return;
- }
- return root.scrollIntoView(false);
- } else if (posts.length) {
- return Header.scrollToPost(posts[posts.length - 1].nodes.root);
}
- });
+ root.scrollIntoView(false);
+ return;
+ }
+ posts = Object.keys(Unread.thread.posts);
+ return Header.scrollToPost(Unread.thread.posts[posts[posts.length - 1]].nodes.root);
},
sync: function() {
var lastReadPost;
@@ -8764,7 +8821,7 @@
}
prev = previous.match(/\d+/g).map(Number);
curr = g.VERSION.match(/\d+/g).map(Number);
- changelog = 'https://github.com/MayhemYDG/4chan-x/blob/v3/CHANGELOG.md';
+ changelog = 'https://github.com/seaweedchan/4chan-x/blob/master/CHANGELOG.md';
el = $.el('span', {
innerHTML: "4chan X has been updated to version " + g.VERSION + "."
});
@@ -8780,7 +8837,7 @@
Settings.addSection('Main', Settings.main);
Settings.addSection('Filter', Settings.filter);
Settings.addSection('Sauce', Settings.sauce);
- Settings.addSection('Rice', Settings.rice);
+ Settings.addSection('Advanced', Settings.advanced);
Settings.addSection('Keybinds', Settings.keybinds);
$.on(d, 'AddSettingsSection', Settings.addSection);
$.on(d, 'OpenSettings', function(e) {
@@ -8801,7 +8858,7 @@
return;
}
$.event('CloseMenu');
- html = "\n
\n";
+ html = "\n
\n";
Settings.overlay = overlay = $.el('div', {
id: 'overlay'
});
@@ -9159,10 +9216,10 @@
});
return $.on(sauce, 'change', $.cb.value);
},
- rice: function(section) {
+ advanced: function(section) {
var archiver, event, input, inputs, items, name, toSelect, _i, _j, _len, _len1, _ref;
- section.innerHTML = "\n\n\n\n\n\n\n\n\n\n\n\n\n";
+ section.innerHTML = "\n\n\n\n\n\n\n\n\n\n\n\n\n";
items = {};
inputs = {};
_ref = ['boardnav', 'time', 'backlink', 'fileInfo', 'favicon', 'sageEmoji', 'emojiPos', 'usercss'];
@@ -9614,7 +9671,7 @@
if (items.lastupdate > now - freq || items.lastchecked > now - $.DAY) {
return;
}
- return $.ajax('https://4chan-x.just-believe.in/builds/version', {
+ return $.ajax('http://seaweedchan.github.io/4chan-x/version', {
onload: function() {
var el, version;
@@ -9631,7 +9688,7 @@
}
$.set('lastchecked', now);
el = $.el('span', {
- innerHTML: "Update: 4chan X v" + version + " is out, get it here."
+ innerHTML: "Update: 4chan X v" + version + " is out, get it here."
});
return new Notification('info', el, 120);
}
@@ -9693,7 +9750,7 @@
errors = Main.errors.map(function(d) {
return d.message + ' ' + d.error.stack;
});
- return $.ajax('https://4chan-x.just-believe.in/errors', {}, {
+ return $.ajax('http://seaweedchan.github.io/4chan-x/errors', {}, {
sync: true,
form: $.formData({
n: "4chan X v" + g.VERSION,
@@ -9712,7 +9769,7 @@
}
return Main.thisPageIsLegit;
},
- css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n#boardNavDesktop {\ndisplay: none !important;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #header-bar,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #header-bar {\nz-index: 10;\n}\n/* Header */\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n.fixed #header-bar {\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #header-bar {\ntop: 0;\n}\n.fixed.bottom #header-bar {\nbottom: 0;\n}\n#header-bar {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #header-bar {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #header-bar {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #header-bar .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #header-bar.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #header-bar.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #header-bar.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#scroll-marker {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#header-bar #scroll-marker {\ndisplay: none;\n}\n.fixed #header-bar #scroll-marker {\ndisplay: block;\n}\n.fixed.top #header-bar #scroll-marker {\ntop: 100%;\n}\n.fixed.bottom #header-bar #scroll-marker {\nbottom: 100%;\n}\n#header-bar a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#shortcuts {\nfloat: right;\n}\n#navbotright,\n#navtopright {\ndisplay: none;\n}\n#toggleMsgBtn {\ndisplay: none !important;\n}\n\n/* Notifications */\n#notifications {\nposition: fixed;\ntop: 0;\nheight: 0;\ntext-align: center;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #header-bar #notifications {\nposition: absolute;\ntop: 100%;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 5px;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n:root.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\nmargin: auto;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n#toggleMsgBtn {\ndisplay: none;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\nmax-height: 80vh;\nmax-width: 50vw;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* Quote Threading */\n.threadContainer {\nmargin-left: 20px;\nborder-left: 1px solid rgba(128,128,128,.3);\n}\n.threadOP {\nclear: both;\n} \n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n.fappeTyme .thread > .noFile,\n.fappeTyme .threadContainer > .noFile {\ndisplay: none;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select,\n#file-n-submit:not(.has-file) #qr-filerm {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.qr-link {\ntext-align: center;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filename-container:hover {\ncursor: text;\n}\n#qr-filerm {\nposition: relative;\nright: 14px;\nbottom: 6px;\nmargin-right: -8px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\ncursor: pointer;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.left>.entry.has-submenu {\npadding-right: 17px !important;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.left .has-submenu::after {\nborder-left: 0;\nborder-right: .5em solid;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n.imp-exp-result {\nposition: absolute;\ntext-align: center;\nmargin: auto;\nright: 0px;\nleft: 0px;\nwidth: 200px;\n}\n.export, .import {\ncursor: pointer;\ntext-decoration: none !important;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n"
+ css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n#boardNavDesktop {\ndisplay: none !important;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #header-bar,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #header-bar {\nz-index: 10;\n}\n/* Header */\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n.fixed #header-bar {\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #header-bar {\ntop: 0;\n}\n.fixed.bottom #header-bar {\nbottom: 0;\n}\n#header-bar {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #header-bar {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #header-bar {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #header-bar .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #header-bar.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #header-bar.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #header-bar.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#scroll-marker {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#header-bar #scroll-marker {\ndisplay: none;\n}\n.fixed #header-bar #scroll-marker {\ndisplay: block;\n}\n.fixed.top #header-bar #scroll-marker {\ntop: 100%;\n}\n.fixed.bottom #header-bar #scroll-marker {\nbottom: 100%;\n}\n#header-bar a:not(.entry):not(.close) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#shortcuts {\nfloat: right;\n}\n#navbotright,\n#navtopright {\ndisplay: none;\n}\n#toggleMsgBtn {\ndisplay: none !important;\n}\n\n/* Notifications */\n#notifications {\nposition: fixed;\ntop: 0;\nheight: 0;\ntext-align: center;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #header-bar #notifications {\nposition: absolute;\ntop: 100%;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 5px;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n:root.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\nmargin: auto;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-advanced ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-advanced li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-advanced .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-advanced textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n#toggleMsgBtn {\ndisplay: none;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\nmax-height: 80vh;\nmax-width: 50vw;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* Quote Threading */\n.threadContainer {\nmargin-left: 20px;\nborder-left: 1px solid rgba(128,128,128,.3);\n}\n.threadOP {\nclear: both;\n} \n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n.fappeTyme .thread > .noFile,\n.fappeTyme .threadContainer > .noFile {\ndisplay: none;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select,\n#file-n-submit:not(.has-file) #qr-filerm {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.qr-link {\ntext-align: center;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filename-container:hover {\ncursor: text;\n}\n#qr-filerm {\nposition: relative;\nright: 14px;\nbottom: 6px;\nmargin-right: -8px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\ncursor: pointer;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.left>.entry.has-submenu {\npadding-right: 17px !important;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.left .has-submenu::after {\nborder-left: 0;\nborder-right: .5em solid;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n.imp-exp-result {\nposition: absolute;\ntext-align: center;\nmargin: auto;\nright: 0px;\nleft: 0px;\nwidth: 200px;\n}\n.export, .import {\ncursor: pointer;\ntext-decoration: none !important;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar, :root.yotsuba #notifications {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a, :root.yotsuba #notifications a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar, :root.yotsuba-b #notifications {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a, :root.yotsuba-b #notifications a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar, :root.futaba #notifications {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a, :root.futaba #notifications a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar, :root.burichan #header-bar #notifications {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a, :root.burichan #header-bar #notifications a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar, :root.tomorrow #notifications {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a, :root.tomorrow #notifications a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar, :root.photon #notifications {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a, :root.photon #notifications a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n"
};
Main.init();
diff --git a/builds/crx/manifest.json b/builds/crx/manifest.json
index c339bb2f0..dcc6950e3 100644
--- a/builds/crx/manifest.json
+++ b/builds/crx/manifest.json
@@ -1,8 +1,8 @@
{
"name": "4chan X",
- "version": "3.2.0",
+ "version": "1.1.0",
"manifest_version": 2,
- "description": "Cross-browser extension for productive lurking on 4chan.",
+ "description": "Cross-browser userscript for maximum lurking on 4chan.",
"icons": {
"16": "icon16.png",
"48": "icon48.png",
@@ -14,7 +14,7 @@
"all_frames": true,
"run_at": "document_start"
}],
- "homepage_url": "https://4chan-x.just-believe.in/",
+ "homepage_url": "http://seaweedchan.github.io/4chan-x/",
"minimum_chrome_version": "26",
"permissions": [
"storage"
diff --git a/builds/crx/script.js b/builds/crx/script.js
index e3324f813..6e99d709e 100644
--- a/builds/crx/script.js
+++ b/builds/crx/script.js
@@ -125,7 +125,7 @@
'Bottom Header': false,
'Header catalog links': false,
'Bottom Board List': false,
- 'Custom Board Navigation': false
+ 'Custom Board Navigation': true
},
boardnav: '[ toggle-all ] [current-title]',
time: '%m/%d/%y(%a)%H:%M:%S',
@@ -135,8 +135,8 @@
usercss: '',
hotkeys: {
'Toggle board list': ['Ctrl+b', 'Toggle the full board list.'],
- 'Open empty QR': ['l', 'Open QR without post number inserted.'],
- 'Open QR': ['Shift+l', 'Open QR with post number inserted.'],
+ 'Open empty QR': ['i', 'Open QR without post number inserted.'],
+ 'Open QR': ['Shift+i', 'Open QR with post number inserted.'],
'Open settings': ['Alt+o', 'Open Settings.'],
'Close': ['Esc', 'Close Settings, Notifications or QR.'],
'Spoiler tags': ['Ctrl+s', 'Insert spoiler tags.'],
@@ -186,7 +186,7 @@
doc = d.documentElement;
g = {
- VERSION: '3.2.0',
+ VERSION: '1.1.0',
NAMESPACE: '4chan X.',
boards: {},
threads: {},
@@ -4768,7 +4768,7 @@
}
boardList = $.el('span', {
id: 'board-list',
- innerHTML: " - " + fourchannav.innerHTML + ""
+ innerHTML: "[ - ] " + fourchannav.innerHTML + ""
});
fullBoardList = $('#full-board-list', boardList);
btn = $('.hide-board-list-button', fullBoardList);
@@ -4931,7 +4931,7 @@
editCustomNav: function() {
var settings;
- Settings.open('Rice');
+ Settings.open('Advanced');
settings = $.id('fourchanx-settings');
return $('input[name=boardnav]', settings).focus();
},
@@ -6498,29 +6498,27 @@
if (Conf['Unread Line']) {
$.on(d, 'visibilitychange', Unread.setLine);
}
- if (!Conf['Scroll to Last Read Post']) {
+ if (Conf['Scroll to Last Read Post']) {
+ return $.on(window, 'load', Unread.scroll);
+ }
+ },
+ scroll: function() {
+ var hash, posts, root;
+
+ if ((hash = location.hash.match(/\d+/)) && hash[0] in Unread.thread.posts) {
return;
}
- return $.on(window, 'load', function() {
- var hash, root;
-
- if ((hash = location.hash.match(/\d+/)) && hash[0] in this.posts) {
- return;
- }
- if (Unread.posts.length) {
- while (root = $.x('preceding-sibling::div[contains(@class,"postContainer")][1]', Unread.posts[0].nodes.root)) {
- if (!(Get.postFromRoot(root)).isHidden) {
- break;
- }
+ if (Unread.posts.length) {
+ while (root = $.x('preceding-sibling::div[contains(@class,"postContainer")][1]', Unread.posts[0].nodes.root)) {
+ if (!(Get.postFromRoot(root)).isHidden) {
+ break;
}
- if (!root) {
- return;
- }
- return root.scrollIntoView(false);
- } else if (posts.length) {
- return Header.scrollToPost(posts[posts.length - 1].nodes.root);
}
- });
+ root.scrollIntoView(false);
+ return;
+ }
+ posts = Object.keys(Unread.thread.posts);
+ return Header.scrollToPost(Unread.thread.posts[posts[posts.length - 1]].nodes.root);
},
sync: function() {
var lastReadPost;
@@ -8668,7 +8666,7 @@
}
prev = previous.match(/\d+/g).map(Number);
curr = g.VERSION.match(/\d+/g).map(Number);
- changelog = 'https://github.com/MayhemYDG/4chan-x/blob/v3/CHANGELOG.md';
+ changelog = 'https://github.com/seaweedchan/4chan-x/blob/master/CHANGELOG.md';
el = $.el('span', {
innerHTML: "4chan X has been updated to version " + g.VERSION + "."
});
@@ -8684,7 +8682,7 @@
Settings.addSection('Main', Settings.main);
Settings.addSection('Filter', Settings.filter);
Settings.addSection('Sauce', Settings.sauce);
- Settings.addSection('Rice', Settings.rice);
+ Settings.addSection('Advanced', Settings.advanced);
Settings.addSection('Keybinds', Settings.keybinds);
$.on(d, 'AddSettingsSection', Settings.addSection);
$.on(d, 'OpenSettings', function(e) {
@@ -8705,7 +8703,7 @@
return;
}
$.event('CloseMenu');
- html = "\n
\n";
+ html = "\n
\n";
Settings.overlay = overlay = $.el('div', {
id: 'overlay'
});
@@ -9061,10 +9059,10 @@
});
return $.on(sauce, 'change', $.cb.value);
},
- rice: function(section) {
+ advanced: function(section) {
var archiver, event, input, inputs, items, name, toSelect, _i, _j, _len, _len1, _ref;
- section.innerHTML = "\n\n\n\n\n\n\n\n\n\n\n\n\n";
+ section.innerHTML = "\n\n\n\n\n\n\n\n\n\n\n\n\n";
items = {};
inputs = {};
_ref = ['boardnav', 'time', 'backlink', 'fileInfo', 'favicon', 'sageEmoji', 'emojiPos', 'usercss'];
@@ -9516,7 +9514,7 @@
if (items.lastupdate > now - freq || items.lastchecked > now - $.DAY) {
return;
}
- return $.ajax('https://4chan-x.just-believe.in/builds/version', {
+ return $.ajax('http://seaweedchan.github.io/4chan-x/version', {
onload: function() {
var el, version;
@@ -9533,7 +9531,7 @@
}
$.set('lastchecked', now);
el = $.el('span', {
- innerHTML: "Update: 4chan X v" + version + " is out, get it here."
+ innerHTML: "Update: 4chan X v" + version + " is out, get it here."
});
return new Notification('info', el, 120);
}
@@ -9595,7 +9593,7 @@
errors = Main.errors.map(function(d) {
return d.message + ' ' + d.error.stack;
});
- return $.ajax('https://4chan-x.just-believe.in/errors', {}, {
+ return $.ajax('http://seaweedchan.github.io/4chan-x/errors', {}, {
sync: true,
form: $.formData({
n: "4chan X v" + g.VERSION,
@@ -9614,7 +9612,7 @@
}
return Main.thisPageIsLegit;
},
- css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n#boardNavDesktop {\ndisplay: none !important;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #header-bar,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #header-bar {\nz-index: 10;\n}\n/* Header */\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n.fixed #header-bar {\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #header-bar {\ntop: 0;\n}\n.fixed.bottom #header-bar {\nbottom: 0;\n}\n#header-bar {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #header-bar {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #header-bar {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #header-bar .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #header-bar.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #header-bar.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #header-bar.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#scroll-marker {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#header-bar #scroll-marker {\ndisplay: none;\n}\n.fixed #header-bar #scroll-marker {\ndisplay: block;\n}\n.fixed.top #header-bar #scroll-marker {\ntop: 100%;\n}\n.fixed.bottom #header-bar #scroll-marker {\nbottom: 100%;\n}\n#header-bar a:not(.entry) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#shortcuts {\nfloat: right;\n}\n#navbotright,\n#navtopright {\ndisplay: none;\n}\n#toggleMsgBtn {\ndisplay: none !important;\n}\n\n/* Notifications */\n#notifications {\nposition: fixed;\ntop: 0;\nheight: 0;\ntext-align: center;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #header-bar #notifications {\nposition: absolute;\ntop: 100%;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 5px;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n:root.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\nmargin: auto;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-rice ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-rice li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-rice .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-rice textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n#toggleMsgBtn {\ndisplay: none;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\nmax-height: 80vh;\nmax-width: 50vw;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* Quote Threading */\n.threadContainer {\nmargin-left: 20px;\nborder-left: 1px solid rgba(128,128,128,.3);\n}\n.threadOP {\nclear: both;\n} \n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n.fappeTyme .thread > .noFile,\n.fappeTyme .threadContainer > .noFile {\ndisplay: none;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select,\n#file-n-submit:not(.has-file) #qr-filerm {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.qr-link {\ntext-align: center;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field,\n.selectrice {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filename-container:hover {\ncursor: text;\n}\n#qr-filerm {\nposition: relative;\nright: 14px;\nbottom: 6px;\nmargin-right: -8px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\ncursor: pointer;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.left>.entry.has-submenu {\npadding-right: 17px !important;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.left .has-submenu::after {\nborder-left: 0;\nborder-right: .5em solid;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n.imp-exp-result {\nposition: absolute;\ntext-align: center;\nmargin: auto;\nright: 0px;\nleft: 0px;\nwidth: 200px;\n}\n.export, .import {\ncursor: pointer;\ntext-decoration: none !important;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n"
+ css: "/* General */\n.dialog {\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder: 1px solid;\ndisplay: block;\npadding: 0;\n}\n.captcha-img,\n.field {\nbackground-color: #FFF;\nborder: 1px solid #CCC;\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\ncolor: #333;\nfont: 13px sans-serif;\noutline: none;\ntransition: color .25s, border-color .25s;\ntransition: color .25s, border-color .25s;\n}\n.field::-moz-placeholder,\n.field:hover::-moz-placeholder {\ncolor: #AAA !important;\nfont-size: 13px !important;\nopacity: 1.0 !important;\n}\n.captch-img:hover,\n.field:hover {\nborder-color: #999;\n}\n.field:hover, .field:focus {\ncolor: #000;\n}\n.field[disabled] {\nbackground-color: #F2F2F2;\ncolor: #888;\n}\n.move {\ncursor: move;\noverflow: hidden;\n}\nlabel, .favicon {\ncursor: pointer;\n}\na[href=\"javascript:;\"] {\ntext-decoration: none;\n}\n.warning {\ncolor: red;\n}\n#boardNavDesktop {\ndisplay: none !important;\n}\n\n/* 4chan style fixes */\n.opContainer, .op {\ndisplay: block !important;\noverflow: visible !important;\n}\n[hidden] {\ndisplay: none !important;\n}\n\n/* fixed, z-index */\n#overlay,\n#fourchanx-settings,\n#qp, #ihover,\n#updater, #thread-stats,\n#navlinks, .fixed #header-bar,\n#qr {\nposition: fixed;\n}\n#watcher {\nposition: absolute;\n}\n#fourchanx-settings {\nz-index: 999;\n}\n#overlay {\nz-index: 900;\n}\n#notifications {\nz-index: 70;\n}\n#qp, #ihover {\nz-index: 60;\n}\n#menu {\nz-index: 50;\n}\n#navlinks, #updater, #thread-stats {\nz-index: 40;\n}\n#qr {\nz-index: 30;\n}\n#watcher {\nz-index: 20;\n}\n.fixed #header-bar {\nz-index: 10;\n}\n/* Header */\n.fixed.top body {\npadding-top: 2em;\n}\n.fixed.bottom body {\npadding-bottom: 2em;\n}\n.fixed #header-bar {\nright: 0;\nleft: 0;\npadding: 3px 4px 4px;\n}\n.fixed.top #header-bar {\ntop: 0;\n}\n.fixed.bottom #header-bar {\nbottom: 0;\n}\n#header-bar {\nborder-width: 0;\ntransition: all .1s .05s ease-in-out;\n}\n.fixed.top #header-bar {\nborder-bottom-width: 1px;\n}\n.fixed.bottom #header-bar {\nbox-shadow: 0 -1px 2px rgba(0, 0, 0, .15);\nborder-top-width: 1px;\n}\n.fixed.bottom #header-bar .menu-button i {\nborder-top: none;\nborder-bottom: 6px solid;\n}\n#board-list {\ntext-align: center;\n}\n.fixed #header-bar.autohide:not(:hover) {\nbox-shadow: none;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #header-bar.autohide:not(:hover) {\nmargin-bottom: -1em;\n-webkit-transform: translateY(-100%);\ntransform: translateY(-100%);\n}\n.fixed.bottom #header-bar.autohide:not(:hover) {\n-webkit-transform: translateY(100%);\ntransform: translateY(100%);\n}\n#scroll-marker {\nleft: 0;\nright: 0;\nheight: 10px;\nposition: absolute;\n}\n#header-bar #scroll-marker {\ndisplay: none;\n}\n.fixed #header-bar #scroll-marker {\ndisplay: block;\n}\n.fixed.top #header-bar #scroll-marker {\ntop: 100%;\n}\n.fixed.bottom #header-bar #scroll-marker {\nbottom: 100%;\n}\n#header-bar a:not(.entry):not(.close) {\ntext-decoration: none;\npadding: 1px;\n}\n#shortcuts:empty {\ndisplay: none;\n}\n.brackets-wrap::before {\ncontent: \"\\00a0[\";\n}\n.brackets-wrap::after {\ncontent: \"]\\00a0\";\n}\n.disabled,\n.expand-all-shortcut {\nopacity: .45;\n}\n#shortcuts {\nfloat: right;\n}\n#navbotright,\n#navtopright {\ndisplay: none;\n}\n#toggleMsgBtn {\ndisplay: none !important;\n}\n\n/* Notifications */\n#notifications {\nposition: fixed;\ntop: 0;\nheight: 0;\ntext-align: center;\nright: 0;\nleft: 0;\ntransition: all .8s .6s cubic-bezier(.55, .055, .675, .19);\n}\n.fixed.top #header-bar #notifications {\nposition: absolute;\ntop: 100%;\n}\n.notification {\ncolor: #FFF;\nfont-weight: 700;\ntext-shadow: 0 1px 2px rgba(0, 0, 0, .5);\nbox-shadow: 0 1px 2px rgba(0, 0, 0, .15);\nborder-radius: 2px;\nmargin: 1px auto;\nwidth: 500px;\nmax-width: 100%;\nposition: relative;\ntransition: all .25s ease-in-out;\n}\n.notification.error {\nbackground-color: hsla(0, 100%, 38%, .9);\n}\n.notification.warning {\nbackground-color: hsla(36, 100%, 38%, .9);\n}\n.notification.info {\nbackground-color: hsla(200, 100%, 38%, .9);\n}\n.notification.success {\nbackground-color: hsla(104, 100%, 38%, .9);\n}\n.notification a {\ncolor: white;\n}\n.notification > .close {\npadding: 6px;\ntop: 0;\nright: 5px;\nposition: absolute;\n}\n.message {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\npadding: 6px 20px;\nmax-height: 200px;\nwidth: 100%;\noverflow: auto;\n}\n\n/* Settings */\n:root.fourchan-x body {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\n}\n#overlay {\nbackground-color: rgba(0, 0, 0, .5);\ntop: 0;\nleft: 0;\nheight: 100%;\nwidth: 100%;\n}\n#fourchanx-settings {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nbox-shadow: 0 0 15px rgba(0, 0, 0, .15);\nheight: 600px;\nmin-height: 0;\nmax-height: 100%;\nwidth: 900px;\nmin-width: 0;\nmax-width: 100%;\nmargin: auto;\npadding: 3px;\ntop: 50%;\nleft: 50%;\n-moz-transform: translate(-50%, -50%);\n-webkit-transform: translate(-50%, -50%);\n-o-transform: translate(-50%, -50%);\ntransform: translate(-50%, -50%);\n}\n#fourchanx-settings > nav {\npadding: 2px 2px 0;\nheight: 15px;\n}\n#fourchanx-settings > nav a {\ntext-decoration: underline;\n}\n#fourchanx-settings > nav a.close {\ntext-decoration: none;\npadding: 2px;\n}\n.section-container {\noverflow: auto;\nposition: absolute;\ntop: 2.1em;\nright: 5px;\nbottom: 5px;\nleft: 5px;\npadding-top: 10px;\n}\n.sections-list {\npadding: 0 3px;\nfloat: left;\n}\n.credits {\nfloat: right;\n}\n.tab-selected {\nfont-weight: 700;\n}\n.section-sauce ul,\n.section-advanced ul {\nlist-style: none;\nmargin: 0;\npadding: 8px;\n}\n.section-sauce li,\n.section-advanced li {\npadding-left: 4px;\n}\n.section-main label {\ntext-decoration: underline;\n}\n.section-filter ul {\npadding: 0;\n}\n.section-filter li {\nmargin: 10px 40px;\n}\n.section-filter textarea {\nheight: 500px;\n}\n.section-sauce textarea {\nheight: 350px;\n}\n.section-advanced .field[name=\"boardnav\"] {\nwidth: 100%;\n}\n.section-advanced textarea {\nheight: 150px;\n}\n#fourchanx-settings fieldset {\nborder: 1px solid;\nborder-radius: 3px;\n}\n#fourchanx-settings legend {\nfont-weight: 700;\n}\n#fourchanx-settings textarea {\nfont-family: monospace;\nmin-width: 100%;\nmax-width: 100%;\n}\n#fourchanx-settings code {\ncolor: #000;\nbackground-color: #FFF;\npadding: 0 2px;\n}\n.unscroll {\noverflow: hidden;\n}\n\n/* Announcement Hiding */\n:root.hide-announcement #globalMessage {\ndisplay: none;\n}\na.hide-announcement {\nfloat: left;\n}\n#toggleMsgBtn {\ndisplay: none;\n}\n\n/* Unread */\n#unread-line {\nmargin: 0;\n}\n\n/* Thread Updater */\n#updater:not(:hover) {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n#updater > .move {\npadding: 0 3px;\n}\n#updater > div:last-child {\ntext-align: center;\n}\n#updater input[type=number] {\nwidth: 4em;\n}\n#updater:not(:hover) > div:not(.move) {\ndisplay: none;\n}\n#updater input[type=\"button\"] {\nwidth: 100%;\n}\n.new {\ncolor: limegreen;\n}\n\n/* Thread Watcher */\n#watcher {\npadding-bottom: 3px;\noverflow: hidden;\nwhite-space: nowrap;\n}\n#watcher:not(:hover) {\nmax-height: 220px;\n}\n#watcher > .move {\npadding-top: 3px;\n}\n#watcher > div {\nmax-width: 200px;\noverflow: hidden;\npadding-left: 3px;\npadding-right: 3px;\ntext-overflow: ellipsis;\n}\n#watcher a {\ntext-decoration: none;\n}\n\n/* Thread Stats */\n#thread-stats {\nbackground: none;\nborder: none;\nbox-shadow: none;\n}\n\n/* Quote */\n.deadlink {\ntext-decoration: none !important;\n}\n.backlink.deadlink:not(.forwardlink), .quotelink.deadlink:not(.forwardlink) {\ntext-decoration: underline !important;\n}\n.inlined {\nopacity: .5;\n}\n#qp input, .forwarded {\ndisplay: none;\n}\n.quotelink.forwardlink,\n.backlink.forwardlink {\ntext-decoration: none;\nborder-bottom: 1px dashed;\n}\n.filtered {\ntext-decoration: underline line-through;\n}\n.inline {\nborder: 1px solid;\ndisplay: table;\nmargin: 2px 0;\n}\n.inline .post {\nborder: 0 !important;\nbackground-color: transparent !important;\ndisplay: table !important;\nmargin: 0 !important;\npadding: 1px 2px !important;\n}\n#qp > .opContainer::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n#qp .post {\nborder: none;\nmargin: 0;\npadding: 2px 2px 5px;\n}\n#qp img {\nmax-height: 300px;\nmax-width: 500px;\nmax-height: 80vh;\nmax-width: 50vw;\n}\n.qphl {\noutline: 2px solid rgba(216, 94, 49, .7);\n}\n\n/* Quote Threading */\n.threadContainer {\nmargin-left: 20px;\nborder-left: 1px solid rgba(128,128,128,.3);\n}\n.threadOP {\nclear: both;\n} \n\n/* File */\n.fileText:hover .fntrunc,\n.fileText:not(:hover) .fnfull,\n.expanded-image > .post > .file > .fileThumb > img[data-md5],\n:not(.expanded-image) > .post > .file > .fileThumb > .full-image {\ndisplay: none;\n}\n.expanding {\nopacity: .5;\n}\n.expanded-image {\nclear: both;\n}\n.expanded-image > .op > .file::after {\ncontent: '';\nclear: both;\ndisplay: table;\n}\n:root.fit-width .full-image {\nmax-width: 100%;\n}\n:root.gecko.fit-width .full-image,\n:root.presto.fit-width .full-image {\nwidth: 100%;\n}\n#ihover {\n-moz-box-sizing: border-box;\nbox-sizing: border-box;\nmax-height: 100%;\nmax-width: 75%;\npadding-bottom: 16px;\n}\n.fappeTyme .thread > .noFile,\n.fappeTyme .threadContainer > .noFile {\ndisplay: none;\n}\n\n/* Index/Reply Navigation */\n#navlinks {\nfont-size: 16px;\ntop: 25px;\nright: 10px;\n}\n\n/* Filter */\n.opContainer.filter-highlight {\nbox-shadow: inset 5px 0 rgba(255, 0, 0, .5);\n}\n.filter-highlight > .reply {\nbox-shadow: -5px 0 rgba(255, 0, 0, .5);\n}\n\n/* Thread & Reply Hiding */\n.hide-thread-button,\n.hide-reply-button {\nfloat: left;\nmargin-right: 2px;\n}\n.stub ~ .sideArrows,\n.stub ~ .hide-reply-button,\n.stub ~ .post {\ndisplay: none !important;\n}\n.stub input {\ndisplay: inline-block;\n}\n\n/* QR */\n:root.hide-original-post-form #postForm,\n:root.hide-original-post-form .postingMode,\n:root.hide-original-post-form #togglePostForm,\n#qr.autohide:not(.has-focus):not(:hover) > form,\n.postingMode ~ #qr select,\n#file-n-submit:not(.has-file) #qr-filerm {\ndisplay: none;\n}\n#qr select, #dump-button, .remove, .captcha-img {\ncursor: pointer;\n}\n#qr {\nz-index: 20;\nposition: fixed;\npadding: 1px;\nborder: 1px solid transparent;\nmin-width: 248px;\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nborder-radius: 3px 3px 0 0;\n}\n#qrtab {\nmargin-bottom: 1px;\n}\n#qr .close {\nfloat: right;\npadding: 0 3px;\n}\n#qr .warning {\nmin-height: 1.6em;\nvertical-align: middle;\npadding: 0 1px;\nborder-width: 1px;\nborder-style: solid;\n}\n.qr-link {\ntext-align: center;\n}\n.persona {\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-button {\nbackground: linear-gradient(#EEE, #CCC);\nborder: 1px solid #CCC; \nwidth: 10%;\nmargin: 0;\nfont: 13px sans-serif;\npadding: 1px 0px 2px;\n}\n.persona .field:not(#dump) {\nwidth: 95px;\nmin-width: 30%;\nmax-width: 30%;\n}\n#qr textarea.field {\nheight: 14.8em;\nmin-height: 9em;\n}\n#qr.has-captcha textarea.field {\nheight: 9em;\n}\ninput.field.tripped:not(:hover):not(:focus) {\ncolor: transparent !important; text-shadow: none !important;\n}\n#qr textarea {\nresize: both;\n}\n.captcha-img {\nmargin: 0px;\ntext-align: center;\nbackground-image: #fff;\nfont-size: 0px;\nmin-height: 59px;\nmin-width: 302px;\n}\n.captcha-input {\nwidth: 100%;\nmargin: 1px 0 0;\n}\n.field {\n-moz-box-sizing: border-box;\nmargin: 0px;\npadding: 2px 4px 3px;\n}\n#qr textarea {\nmin-width: 100%;\n}\n#qr [type='submit'] {\nwidth: 25%;\nvertical-align: top;\n}\n/* Fake File Input */\n#qr-filename,\n.has-file #qr-no-file {\ndisplay: none;\n}\n#qr-no-file,\n.has-file #qr-filename {\ndisplay: block;\npadding: 0px 4px;\nmargin-bottom: 2px;\n}\n#qr-no-file {\ncolor: #AAA;\n}\n#qr-filename-container {\n-moz-box-sizing: border-box;\ndisplay: inline-block;\nposition: relative;\nwidth: 100px;\nmin-width: 74.6%;\nmax-width: 74.6%;\nmargin-right: 0.4%;\nmargin-top: 1px;\noverflow: hidden;\npadding: 2px 1px 0;\n}\n#qr-filename-container:hover {\ncursor: text;\n}\n#qr-filerm {\nposition: relative;\nright: 14px;\nbottom: 6px;\nmargin-right: -8px;\nz-index: 2;\n}\n#file-n-submit {\nheight: 23px;\n}\n#qr input[type=file] {\ndisplay: none;\n}\n/* Thread Select / Spoiler Label */\n#qr select {\nfloat: right;\n}\n/* Dumping UI */\n.dump #dump-list-container {\ndisplay: block;\n}\n#dump-list-container {\ndisplay: none;\nposition: relative;\noverflow-y: hidden;\nmargin-top: 1px;\n}\n#dump-list {\noverflow-x: auto;\noverflow-y: hidden;\nwhite-space: pre;\nwidth: 248px;\nmax-width: 100%;\nmin-width: 100%;\n}\n#dump-list:hover {\noverflow-x: auto;\n}\n.qr-preview {\n-moz-box-sizing: border-box;\ncounter-increment: thumbnails;\ncursor: move;\ndisplay: inline-block;\nheight: 90px;\nwidth: 90px;\npadding: 2px;\nopacity: .5;\noverflow: hidden;\nposition: relative;\ntext-shadow: 0 1px 1px #000;\n-moz-transition: opacity .25s ease-in-out;\nvertical-align: top;\n}\n.qr-preview:hover,\n.qr-preview:focus {\nopacity: .9;\n}\n.qr-preview::before {\ncontent: counter(thumbnails);\ncolor: #fff;\nposition: absolute;\ntop: 3px;\nright: 3px;\ntext-shadow: 0 0 3px #000, 0 0 8px #000;\n}\n.qr-preview#selected {\nopacity: 1;\n}\n.qr-preview.drag {\nbox-shadow: 0 0 10px rgba(0,0,0,.5);\n}\n.qr-preview.over {\nborder-color: #fff;\n}\n.qr-preview > span {\ncolor: #fff;\n}\n.remove {\nbackground: none;\ncolor: #e00;\nfont-weight: 700;\npadding: 3px;\n}\na:only-of-type > .remove {\ndisplay: none;\n}\n.remove:hover::after {\ncontent: \" Remove\";\n}\n.qr-preview > label {\nbackground: rgba(0,0,0,.5);\ncolor: #fff;\nright: 0; bottom: 0; left: 0;\nposition: absolute;\ntext-align: center;\n}\n.qr-preview > label > input {\nmargin: 0;\n}\n#add-post {\ncursor: pointer;\nfont-size: 2em;\nposition: absolute;\ntop: 50%;\nright: 10px;\n-moz-transform: translateY(-50%);\n}\n.textarea {\nposition: relative;\n}\n#char-count {\ncolor: #000;\nbackground: hsla(0, 0%, 100%, .5);\nfont-size: 8pt;\nposition: absolute;\nbottom: 1px;\nright: 1px;\npointer-events: none;\n}\n\n/* Menu */\n.menu-button {\ndisplay: inline-block;\nposition: relative;\ncursor: pointer;\n}\n.menu-button i {\nborder-top: 6px solid;\nborder-right: 4px solid transparent;\nborder-left: 4px solid transparent;\ndisplay: inline-block;\nmargin: 2px;\nvertical-align: middle;\n}\n#menu {\nposition: fixed;\noutline: none;\nz-index: 22;\n}\n.entry {\nborder-bottom: 1px solid rgba(0,0,0,.25);\ncursor: pointer;\ndisplay: block;\noutline: none;\npadding: 3px 7px;\nposition: relative;\ntext-decoration: none;\nwhite-space: nowrap;\n}\n.left>.entry.has-submenu {\npadding-right: 17px !important;\n}\n.entry:last-child {\nborder-bottom: 0;\n}\n.has-submenu::after {\ncontent: \"\";\nborder-left: .5em solid;\nborder-top: .3em solid transparent;\nborder-bottom: .3em solid transparent;\ndisplay: inline-block;\nmargin: .3em;\nposition: absolute;\nright: 3px;\n}\n.left .has-submenu::after {\nborder-left: 0;\nborder-right: .5em solid;\n}\n.submenu {\ndisplay: none;\nposition: absolute;\nleft: 100%;\ntop: -1px;\n}\n.focused .submenu {\ndisplay: block;\n}\n.imp-exp-result {\nposition: absolute;\ntext-align: center;\nmargin: auto;\nright: 0px;\nleft: 0px;\nwidth: 200px;\n}\n.export, .import {\ncursor: pointer;\ntext-decoration: none !important;\n}\n\n/* General */\n:root.yotsuba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.yotsuba #header-bar, :root.yotsuba #notifications {\nfont-size: 9pt;\ncolor: #B86;\n}\n:root.yotsuba #header-bar a, :root.yotsuba #notifications a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.yotsuba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.yotsuba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.yotsuba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.yotsuba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba #menu {\ncolor: #800000;\n}\n:root.yotsuba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 10pt;\n}\n:root.yotsuba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.yotsuba-b .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.yotsuba-b #header-bar, :root.yotsuba-b #notifications {\nfont-size: 9pt;\ncolor: #89A;\n}\n:root.yotsuba-b #header-bar a, :root.yotsuba-b #notifications a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.yotsuba-b #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.yotsuba-b .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.yotsuba-b .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.yotsuba-b #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.yotsuba-b .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.yotsuba-b #menu {\ncolor: #000;\n}\n:root.yotsuba-b .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 10pt;\n}\n:root.yotsuba-b .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.futaba .dialog {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.futaba #header-bar, :root.futaba #notifications {\nfont-size: 11pt;\ncolor: #B86;\n}\n:root.futaba #header-bar a, :root.futaba #notifications a {\ncolor: #800000;\n}\n\n/* Settings */\n:root.futaba #fourchanx-settings fieldset {\nborder-color: #D9BFB7;\n}\n\n/* Quote */\n:root.futaba .backlink.deadlink {\ncolor: #00E !important;\n}\n:root.futaba .inline {\nborder-color: #D9BFB7;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.futaba #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #F0E0D6;\nborder-color: #D9BFB7;\n}\n:root.futaba .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.futaba #menu {\ncolor: #800000;\n}\n:root.futaba .entry {\nborder-bottom: 1px solid #D9BFB7;\nfont-size: 12pt;\n}\n:root.futaba .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.burichan .dialog {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .field:focus {\nborder-color: #98E;\n}\n\n/* Header */\n:root.burichan #header-bar, :root.burichan #header-bar #notifications {\nfont-size: 11pt;\ncolor: #89A;\n}\n:root.burichan #header-bar a, :root.burichan #header-bar #notifications a {\ncolor: #34345C;\n}\n\n/* Settings */\n:root.burichan #fourchanx-settings fieldset {\nborder-color: #B7C5D9;\n}\n\n/* Quote */\n:root.burichan .backlink.deadlink {\ncolor: #34345C !important;\n}\n:root.burichan .inline {\nborder-color: #B7C5D9;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.burichan #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #D6DAF0;\nborder-color: #B7C5D9;\n}\n:root.burichan .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.burichan #menu {\ncolor: #000000;\n}\n:root.burichan .entry {\nborder-bottom: 1px solid #B7C5D9;\nfont-size: 12pt;\n}\n:root.burichan .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n\n/* General */\n:root.tomorrow .dialog {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow .field:focus {\nborder-color: #000;\n}\n\n/* Header */\n:root.tomorrow #header-bar, :root.tomorrow #notifications {\nfont-size: 9pt;\ncolor: #C5C8C6;\n}\n:root.tomorrow #header-bar a, :root.tomorrow #notifications a {\ncolor: #81A2BE;\n}\n\n/* Settings */\n:root.tomorrow #fourchanx-settings fieldset {\nborder-color: #111;\n}\n\n/* Quote */\n:root.tomorrow .backlink.deadlink {\ncolor: #81A2BE !important;\n}\n:root.tomorrow .inline {\nborder-color: #111;\nbackground-color: rgba(0, 0, 0, .14);\n}\n\n/* QR */\n.tomorrow #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #282A2E;\nborder-color: #111;\n}\n:root.tomorrow #qr select {\ncolor: #C5C8C6;\n}\n:root.tomorrow #qr option {\ncolor: #000;\n}\n:root.tomorrow .qr-preview {\nbackground-color: rgba(255, 255, 255, .15);\n}\n\n/* Menu */\n:root.tomorrow #menu {\ncolor: #C5C8C6;\n}\n:root.tomorrow .entry {\nborder-bottom: 1px solid #111;\nfont-size: 10pt;\n}\n:root.tomorrow .focused.entry {\nbackground: rgba(0, 0, 0, .33);\n}\n\n/* General */\n:root.photon .dialog {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .field:focus {\nborder-color: #EA8;\n}\n\n/* Header */\n:root.photon #header-bar, :root.photon #notifications {\nfont-size: 9pt;\ncolor: #333;\n}\n:root.photon #header-bar a, :root.photon #notifications a {\ncolor: #FF6600;\n}\n\n/* Settings */\n:root.photon #fourchanx-settings fieldset {\nborder-color: #CCC;\n}\n\n/* Quote */\n:root.photon .backlink.deadlink {\ncolor: #F60 !important;\n}\n:root.photon .inline {\nborder-color: #CCC;\nbackground-color: rgba(255, 255, 255, .14);\n}\n\n/* QR */\n.photon #dump-list::-webkit-scrollbar-thumb {\nbackground-color: #DDD;\nborder-color: #CCC;\n}\n:root.photon .qr-preview {\nbackground-color: rgba(0, 0, 0, .15);\n}\n\n/* Menu */\n:root.photon #menu {\ncolor: #333;\n}\n:root.photon .entry {\nborder-bottom: 1px solid #CCC;\nfont-size: 10pt;\n}\n:root.photon .focused.entry {\nbackground: rgba(255, 255, 255, .33);\n}\n"
};
Main.init();
diff --git a/changelog b/changelog
new file mode 100644
index 000000000..66ee17193
--- /dev/null
+++ b/changelog
@@ -0,0 +1,71 @@
+master
+
+1.0.10:
+-Add message pertaining to rewrite
+
+1.0.9:
+ihavenoface:
+ -Implement Announcement Hiding
+seaweedchan:
+ -Change #options back to inheriting colors from replies
+ -Fix script breaking when disabling image expansion
+
+1.0.8:
+seaweedchan:
+ -Redo settings menu styling
+ -Move Export/Import buttons and dialog
+ -Update license and use banner.js for license
+
+1.0.7:
+qqueue:
+ -Relative post dates
+MayhemYDG:
+ -Exporting/importing settings
+
+1.0.6
+seaweedchan:
+ -Update supported boards for archive redirection and custom navigation
+ -Point to github.io instead of github.com for pages
+ -Fix post archive link for InstallGentoo and Foolz
+ -Make InstallGentoo default for /g/
+ -Fix embedding issues
+
+1.0.5:
+seaweedchan:
+ -Added keybind to toggle Fappe Tyme
+ -Fix code tag keybind
+Zixaphir:
+ -Add 'yourPost' class to own replies
+
+1.0.4:
+seaweedchan:
+ -Fix Fappe Tyme
+ -Re-add label for image expanding
+ -Move restore button to left side as per RiDeag
+
+1.0.3
+seaweedchan:
+ -Add ad-blocking CSS into Custom CSS examples
+Zixaphir:
+ -Fix ctrl+s bringing up save dialog
+ -Fix issues with soundcloud embedding
+
+1.0.2:
+seaweedchan:
+ -New Rice option: Emoji Position
+ -New layout for Rice tab
+ -No more Yotsuba / Yotsuba B in options
+
+1.0.1:
+-New option: Emoji
+-New Rice option: Sage Emoji
+seaweedchan:
+ -Prettier error messages
+
+1.0.0
+-Initial release
+zixaphir:
+ -Fix unread post count for filtered posts
+ -Fix issues when switching from ihavenoface's fork
+ -Fix backlinks not receiving filtered class
+ -Fix QR position not saving on refresh
diff --git a/changelog-old b/changelog-old
deleted file mode 100644
index 1c0046608..000000000
--- a/changelog-old
+++ /dev/null
@@ -1,1320 +0,0 @@
-master
-- Zixaphir
- Removed "Mayhem"chan X v3 Header.
- Anything that was previously in the header has been moved back to it's 4chan X pre-v3 position, but with v3 "enhancements".
- Added Linkification, Embedding, and Title Link.
- Added External Catalog Links.
- Removed Updater Limitier.
- Added Thumbnail Replacement for PNG, GIF, and JP(E)Gs.
- GIF thumbnail replacement, unlike Auto-GIF, actually works in /gif/ and /wsg/.
- Various little performance and readability tweaks.
-
-2.39.3
-- Mayhem
- Add /fa/ and /s4s/ archive redirection.
-
-2.39.2
-- Mayhem
- Fix importing settings containing unicode characters.
-
-2.39.1
-- Mayhem
- Add /gd/, /out/, /vp/ and /vr/ archive redirection.
-
-2.39.0
-- Queue
- Fix rare bug in Relative Post Dates.
-- Mayhem
- Add Import/Export settings.
-
-2.38.1
-- Mayhem
- Fix a little regression introduced in 2.38.0 for webkit browsers.
-
-2.38.0
-- Queue
- Add Relative Post Dates ("35 seconds ago"), disabled by default.
-- Mayhem
- Add /int/ archive redirection for threads, and post resurrection.
-
-2.37.6
-- Mayhem
- Fix image expanding.
-
-2.37.5
-- Mayhem
- Fix quoting inside inlined backlinks.
-
-2.37.4
-- James Campos
- Don't expand pdfs
-- Mayhem
- Add /po/ archive redirection for threads, images and post resurrection.
- Fix quoting.
-
-2.37.3
-- Mayhem
- Fix successful posting causing errors.
- Fix 4chan X trying to interact with >>>/board/rules links.
-
-2.37.2
-- aeosynth
- Beep on new post to completely read thread
-- Mayhem
- Fix dead quotes.
-
-2.37.1
-- noface
- Fix Anonymize not working on stubs.
-- Mayhem
- Fix selection quoting on Opera.
- Fix history bug with Persistent QR enabled on Chrome.
- Fix posting warning not displaying the reason.
- Fix deadquotes showing up in code-tags.
-
-2.37.0
-- noface
- Add Catalog Links toggle.
- Fix Anonymize not working on hovered posts.
-- Mayhem
- Added catalog support.
- Sync thread hiding between index and catalog.
- Add /c/ archived thread and image redirection.
-
-2.36.3
-- Mayhem
- Fix next/previous page keybinds.
-
-2.36.2
-- noface
- Add tags support on /f/.
-- Mayhem
- Add /mu/ archived image redirection.
-
-2.36.1
-- noface
- The Menu now has search links for Archivers.
-- Mayhem
- Added possibility to display unix timestamps with File Info Formatting.
-
-2.36.0
-- Mayhem
- Added thread creation QR cooldown.
- Fix QR cooldown timer between non-sage and sage posts. You can submit a non-sage post 30 seconds after a sage one.
- Fix /q/ QR cooldowns for image and sage posts.
-
-2.35.4
-- Mayhem
- Removed the obnoxious 4chan Pass ad in captcha errors when posting.
- Fix 'Administrator/Moderator/Developer Replies' creating extra backlinks on /q/, again.
-
-2.35.3
-- Mayhem
- Larger Comment text input by default for 4chan Pass users and on /f/ (no captcha).
-
-2.35.2
-- Mayhem
- Fix 4chan Pass with QR on Firefox.
-
-2.35.1
-- Mayhem
- Add support for 4chan Pass.
- You can now use 'Enter' in keybind combinations.
-
-2.35.0
-- Mayhem
- Use 4chan's API to fetch posts for:
- - Thread Updater.
- - Quote Inlining.
- - Quote Previewing.
- - Thread Expansion.
- - Comment Expansion.
- This will make fetching faster, and reduce bandwidth usage.
- Add an option to disable 4chan's inline extension. Enabled by default.
- Fix compatibility with Scriptish's auto-udpater.
-
-2.34.10
-- Mayhem
- Fix 4chan X. Blame moot.
-
-2.34.9
-- Mayhem
- Add /g/, /k/, /w/, /an/, /cgl/, /ck/, /lit/, /toy/ and /x/ archived image redirection.
- One-word-captcha now works in the report window.
- Fix duplicate file upload error link.
-
-2.34.8
-- Mayhem
- One-word-captcha: you don't need to input an extra space anymore, the true word will be duplicated.
-
-2.34.7
-- Mayhem
- Fix one-word-captcha, you'll need to leave a space for the fake word now.
-
-2.34.6
-- Mayhem
- Fix error caused by change in 4chan's HTML about hidden filename in case of spoiler.
-
-2.34.5
-- Mayhem
- Fix cooldown on /q/.
- Fix thread creation with no file on /q/.
- Fix 'Administrator/Moderator/Developer Replies' creating extra backlinks on /q/.
- Add /mlp/ archive redirection.
-
-2.34.4
-- Mayhem
- Add /q/ archive redirection.
-
-2.34.3
-- Mayhem
- Update /k/ archive redirection.
-
-2.34.2
-- Mayhem
- Adjust background tabs max update interval down to 5 minutes instead of 10.
- Divide the Delete Link in the Menu into a Post and Image deletion links.
- The Delete Links in the Menu now have a cooldown.
- Add /fit/ archive redirection.
-
-2.34.1
-- Mayhem
- Add /wsg/ archive redirection.
-
-2.34.0
-- Mayhem
- New feature: Menu, which
- - replaces and includes Report Button and Delete Button.
- - add one-click Filter buttons.
- - add download links to automatically save the file with its original filename. Chrome-only currently.
- - add archive links.
- - can integrate features from external userscripts/extensions, see https://github.com/MayhemYDG/4chan-x/wiki/Menu-API
- The updater's refresh interval will now increase gradually in inactive threads:
- - "Inactive thread" defines a thread that has not received any replies since its last refresh.
- - Threads receiving a reply will have its updater interval reset to user's setting.
- - The refresh interval will grow up to 90 seconds on visible tabs.
- - Unfocused tabs will grow up to 120, 300, then 600 seconds.
- - It takes at least 230 seconds to get to 120, at least 350 seconds to get to 300, and at least 650 seconds to get to 600.
- - Focusing back to a tab will reset its inactivity state to normal.
- - It basically changes nothing, but it salvages 4chan from being slaughtered by a massive amount of concurrent connections.
- - see http://www.4chan.org/tmp/extensions.html
- The updater's refresh interval is now limited to 5 seconds minimum.
- Fix the Settings' window size on small screens, should be useable on Opera Mobile.
-
-2.33.8
-- Mayhem
- Add Country filtering.
-
-2.33.7
-- Mayhem
- Add /ck/ archive redirection.
-
-2.33.6
-- Mayhem
- Update/fix archive redirection method.
-
-2.33.5
-- Mayhem
- Add /sp/ archive redirection.
-
-2.33.4
-- Mayhem
- Fix QR with the new captcha loading method.
- The QR will now work on /f/ too.
-
-2.33.3
-- Mayhem
- Revert changes that broke fetchers in Firefox.
-
-2.33.2
-- Mayhem
- After 1000+ characters, a character counter will appear in the QR.
- Add /soc/ archive redirection.
-
-2.33.1
-- Mayhem
- Add /r9k/ archive redirection.
-
-2.33.0
-- btmcsweeney
- Allow users to specify text for sauce links.
-- Mayhem
- Dead quotes can now be previewed or inlined with compatible archivers.
- Opera fixes.
- /f/ fixes.
-
-2.32.1
-- Mayhem
- Fix images uploaded as spoilers.
-
-2.32.0
-- aeosynth
- delete button
-- Mayhem
- Fix spoiler/code tag keybinds being ignored on post submission.
-
-2.31.6
-- Mayhem
- Update captcha longevity to 5 minutes max, as according to 4chan's change.
-
-2.31.5
-- Mayhem
- Fix spoiler and code tag keybinds regression.
-
-2.31.4
-- Mayhem
- Add /an/ and /toy/ archive redirection.
-
-2.31.3
-- Mayhem
- Add /cgl/, /e/, /mu/ and /w/ archive redirection.
-
-2.31.2
-- Mayhem
- Add /x/ archive redirection.
-
-2.31.1
-- Mayhem
- Fix some stub issues.
-
-2.31.0
-- Mayhem
- Add a per filter stub setting.
-
-2.30.8
-- Mayhem
- Fix quote previewing of forward hidden posts.
-
-2.30.7
-- aeosynth
- Fix expanding comments.
-- Mayhem
- Fix file size info in case of spoiler image.
-
-2.30.6
-- Mayhem
- Fix file size formatting always using integers.
-
-2.30.5
-- Mayhem
- Fix syntax highlighting in code of fetched posts on /g/.
- Add quick [code] tags keybind (alt+c).
-
-2.30.4
-- Mayhem
- Add /co/ and /k/ archive redirection.
- Fix quote resurrection of existing posts.
-
-2.30.3
-- Mayhem
- Various bug fixes.
-
-2.30.2
-- Mayhem
- Various bug fixes.
- Add seconds as a supported Time Formatting specifier.
-
-2.30.1
-- Mayhem
- Fix 4chan X not affecting fetched posts on Firefox Stable and Opera.
-
-2.30.0
-- Mayhem
- Support 4chan's new HTML.
- Add Spoiler indicator option in File Info Formatting
- Remove archive.no-ip.org archive redirections.
-
-2.29.5
-- Mayhem
- Fix QR filetype checking on /w/.
-
-2.29.4
-- Mayhem
- Auto-GIF will not run in /gif/.
- Fix QR filetype checking.
-
-2.29.3
-- Mayhem
- Update Quick Reply posting method, this fixes compatibility for uncommon browsers such as
- Opera Mobile 12 and Luakit for example.
-
-2.29.2
-- Mayhem
- Add HTTPS support.
- Ban support improvements and fixes.
-
-2.29.1
-- Mayhem
- Update posting support to use https with sys.4chan.org according to 4chan's latest change. This fixes the 'referer' error.
- Update redirection to installgentoo's archives.
-
-2.29.0
-- Mayhem
- New feature: Quote Resurrection, automatically linkifying dead quotes to archives.
-
-2.28.1
-- Mayhem
- General performance improvements.
- Threads will now be updated instantly after posting through the QR.
- Your own posts will not count toward the unread count after posting through the QR.
- Performance issues are now lessened with QR thumbnails of high-res pictures.
- You can now use Shift+Click on the file input to remove the selected reply's file.
- Reply navigation keybinds will now scroll as you navigate.
-- noface
- Add unique ID to filter.
-
-2.28.0
-- ahodesuka
- Reply/Thread File Info Formatting:
- - Link: %l, %L (Original file names are shown inside threads).
- - Size: %B (Bytes), %K (KB), %M (MB), %s (4chan default).
- - Resolution/PDF: %r
- - Original filename: %n, %N.
-- noface
- Update imagelimit for /mlp/.
- Fix stubs if poster has unique ID.
-- Mayhem
- You can now filter or highlight admin/mod posts.
- New sauce parameter. $4: Current board.
-
-2.27.1
-- Mayhem
- Fix stubs with the new filter.
- Fix mail filtering.
- The MD5 will now check for exact string matching, it will not use regular expressions.
-
-2.27.0
-- aeosynth / ahodesuka
- new option: expand images from current position
-- ahodesuka
- Add Open Reply in New Tab option for replies made from the main board (not dumping).
- Scroll back up (top of anchor - 42px) when unexpanding images.
-- Mayhem
- The Filter now has per filter settings:
- - Filter the OP only along its thread, replies only, or both.
- - Per boards, or global.
- - Highlight, or hide.
- - Highlighted OPs will have their threads put on top of the board page by default.
- New filter group: Image dimensions.
- Fix posting on Safari.
- Fix rare case where the QR would not accept certain image types.
-
-2.26.4
-- Mayhem
- Add /vg/ archive redirection.
- Update ban support with the QR.
- Fix history issues on Chrome.
-
-2.26.3
-- Mayhem
- Ensure fresh captcha on QR load.
- There is now a reply counter in the QR dump list.
- Fix unXXXifier on pages starting with not XXXed numbers.
- Update image limit indicator for /vg/.
-
-2.26.2
-- Mayhem
- New option to fix XXX'd post numbers.
- Fix post number quoting on /b/ and /v/.
- Update archive redirection for /v/.
-
-2.26.1
-- Mayhem
- You can now drag replies in the dump list to reorder them.
- Fix sauce links with spoiled thumbnails.
-
-2.26.0
-- desuwa
- New option: remember the size of the QR on Firefox.
-- aeosynth
- prevent post form flicker
-- Mayhem
- Load QR's iframe to sys.4chan.org faster, unless you use Greasemonkey. Thanks desuwa.
- Increase Sauce linking possibilites:
- Thumbnails, full images, MD5 hashes.
- New option: Recursive Filtering: Filter replies of filtered posts.
- Unread Favicon is now optional, independent of Unread Count.
- Fix some compatibility issues with file drag and drop, notably with QuickDrag extension.
-
-2.25.5
-- Mayhem
- Hide the normal post form by default, optional.
-
-2.25.4
-- Mayhem
- Fix text inputs not sent/saved correctly in the QR when pasted for example.
- Revert hidding normal post form.
-
-2.25.3
-- Mayhem
- Fix image spoiler always enabled, bug introduced in 2.25.2.
-
-2.25.2
-- Mayhem
- Reverted updater's scrolling behavior.
- Fix image posting on Firefox along with Unicode characters in the form.
- Ghettofix Greasemonkey compatibility with the new QR.
- Greasemonkey is still NOT RECOMMENDED, use Scriptish instead.
-
-2.25.1
-- Mayhem
- Fix missing image filename uploads. Thanks desuwa.
-
-2.25.0
-- Mayhem
- Fix 4chan X on /f/.
- Support for the normal post form has been phased out in favor of the new QR.
- New rewritten and redesigned Quick Reply. Highlights include:
- - Easy dumping for image, text, or samefagging.
- - Toggle auto-posting by trying to submit during the cooldown.
- - Multiple file selection.
- - Image thumbnails.
- - Drag and drop files on the page will add these files to the QR.
- - Cache captchas with Shift + Enter.
- - Create new threads with the QR, will auto-noko.
- - Also includes all the previous features:
- - Cooldown and auto-posting.
- - Posting error detection and prevention.
- - Captcha reloading on backspace.
- - Auto Watch on reply/thread creation.
- - Text selection to quote.
- - Etc...
- CAUTION:
- Images posted with the new QR on Firefox/Aurora/Nightly will have their filename missing.
- see https://github.com/MayhemYDG/4chan-x/issues/137
- Greasemonkey is buggy, use Scriptish instead.
-
-2.24.5
-- Mayhem
- Index Navigation and the See next/previous thread keybinds will not cycle through board pages anymore.
- Fix archive redirection in Opera.
- Opera support will now be temporarily on hold.
- see https://github.com/MayhemYDG/4chan-x/issues/136
-
-2.24.4
-- ahodesuka
- Scroll back up when unexpanding images.
-- e000
- Prevent absurd cooldown durations.
-- Mayhem
- Better image expanding reload, should fool CloudFlare's cache.
-- seaweed
- Prevent the hover image to be partially masked by the url preview/status bar.
-
-2.24.3
-- Mayhem
- Set image limit in Thread Stats to 252 for /a/ and /v/, default to 152.
- Fix 4chan X in locked threads.
-
-2.24.2
-- mayhem
- fix options popping up everytime a page loads
-
-2.24.1
-- mayhem
- fix Open thread in new tab keybind for Safari with Ninjakit
- fix Index/Reply Navigation working in both cases when only one is enabled
-
-2.24.0
-- mayhem
- redirect 404'd pictures to archives when possible
- new keybind to open the options: ctrl+o
- the unread count will decrease when inlining quotes of unread posts
- the report button can open multiple popups again
- add omploader to the list of optional flavors (http://ompldr.org/upload?url1=)
- update archive redirections, add /lit/ and /u/
- fit horizontally for Image Hover
-
-2.23.7
-- mayhem
- update archive redirections
-
-2.23.6
-- mayhem
- fix empty sauce or all flavors commented out from breaking 4chan X
-
-2.23.5
-- mayhem
- increase the thread updater retry timeout limit at each retry
- fix selection to quote when selecting started from the end of a line on Firefox
-
-2.23.4
-- mayhem
- thread updater network optimization
- prevent regexp errors with the filter
-
-2.23.3
-- mayhem
- fix 2.32.2 regression duplicating new posts in rare cases
-
-2.23.2
-- mayhem
- hide original posts from inlined backlinks - optional
- enable autoposting when submitting a captcha while on cooldown
- fix caret position when quoting on Opera
-
-2.23.1
-- mayhem
- fix favicon updating on Opera
- fix compatibility with Tampermonkey
-
-2.23.0
-- mayhem
- multiple unread favicons to chose in the options
- quotes are now inserted at the caret position in the QR
- quotes also replace the text selection in the QR
- open QR focused when using the `Open QR without post number inserted` keybind
- fix thread updater for Opera
-- aeosynth
- update the captcha caching expiration date to 30mins
-
-2.22.2
-- mayhem
- indicate if the settings require a feature to be enabled
- fix obscure and continuous prompts to auto update
-
-2.22.1
-- mayhem
- change 'Duckroll' for 'Cross-thread'
- fix image expanding fitness with an inlined backlink on Firefox
-
-2.22.0
-- mayhem
- new Indicate Duckrolls feature
- put regex.info sauce back - disabled by default
- fix for auto image reloading in 404'd threads on Firefox
-
-2.21.4
-- mayhem
- fix 4chan X version updater
-
-2.21.3
-- mayhem
- fix locked thread icons with fit width/screen enabled on Firefox
- fix fit width on Opera
- for userstylers: you can use the rendering engine body class
-
-2.21.2
-- mayhem
- fix time formatting year in Opera
- fix QR keybinds
- fix QR posts getting swallowed by sys.4chan.org
-
-2.21.1
-- mayhem
- fix Opera
-
-2.21.0
-- mayhem
- initiate 4chan X earlier
- performance improvements
- regular expressions based filter
- remove image preloading
- automatically reload expanded pictures on error
- handle bans with the thread updater
- use unread favicons by ferongr
-
-2.20.3
-- mayhem
- fix DST for two days of the year
-
-2.20.2
-- mayhem
- update archive redirection
-- aeosynth
- hopefully fix qr error / update messages
- rm support throd link
-
-2.20.1
-- mayhem
- fix regression: qr not preventing errors
-
-2.20.0
-- mayhem
- do not display inlined quotes within the quote preview
- fix cross threads quotes in expanded threads or inlined cross quotes
- default post styling for quote previews
-- aeosynth
- script auto updating
-
-2.19.3
-- mayhem
- quote inlining default styling (by xat)
- add up/down/right/left keybinding support
-- aeosynth
- fixed bug that caused script to fail when time formatting enabled
-
-2.19.2
-- mayhem
- update archives redirections
-- aeosynth
- change unread favicons (by xat-)
-
-2.19.1
-- mayhem
- fix OP indication in expanded comments
- fix no.id links within cross thread/board inlined quote
-
-2.19.0
-- mayhem
- backlink formatting
- distinguishable unread favicons on white backgrounds
- fix updater refreshing 404'd threads
- fix backlinks added into inlined quotes
-- aeosynth
- fix tab title for 404d threads
-
-2.18.3
-- mayhem
- fix quote features in expanded comments
- fix scrolling onto a quote not showing the preview
-
-2.18.2
-- aeosynth:
- fix long thread watcher titles
- fix normal form errors with an open empty QR
-
-2.18.1
-- mayhem:
- fix persistent qr not cleaning the file input
-- aeosynth:
- updater: scroll background tabs
-
-2.18.0
-- mayhem:
- back to normal versioning
- bring back auto posting
- don't start the cooldown on thread creation
- limit the file upload dialog to the accepted file types (qr)
-- aeosynth:
- show linebreaks as spaces in title & watcher
- auto posting fixes
- option to remember qr spoiler state
-
-11.8.15
-- aeosynth:
- convert qr from hidden iframes to ajax
- derp, nevermind. ajaxing reverted, still working on it in dev branch
-
-11.8.11.1
-- aeosynth:
- fix qr autohiding
-
-11.8.11.0
-- aeosynth:
- - rm auto post checkbox
- if (captcha filled or cached) and (text or file)
- auto post after cooldown
- - options updated immediately instead of requiring page refresh
-
-11.8.10.1
-- aeosynth:
- - persistent captchas (expiring after 4 hours, 55 minutes)
- - files upload in 'correct' order
- - manually submitting will use cached captchas
-
-11.8.10.0
-- aeosynth:
- - fix captcha caching on blank content
-
-11.8.9.0
-- aeosynth:
- - change green oval archive to gentoomen
- - validate filesize asap
- - show correct captcha cache length when creating qr
- - 1s delay when autoposting after errors to not look so automated
- - cache captcha on blank text / file
-
-11.8.6.0
-- mayhem:
- - fix post links in expanded threads
- - fix 4chan X in closed threads
-- aeosynth:
- - only auto scroll focused tabs
- - quote inlining: only work on unmodified left-click
- - select multiple files (one at a time)
- - captcha caching
- - qr: optional auto hiding
- - copy old textarea value
- - scroll to bottom of page if post isn't found (thumbnail generation takes
- time)
- - only scroll focused tabs
- - time: %e, %k, %l
- - reverted hovering fix
-
-2.17.1
-- mayhem:
- - fix updater when there is a hash in the url
-- aeosynth:
- - better hovering fix
-
-2.17.0
-- mayhem:
- - Make updater's settings dynamic
- - Multi-line quoting
- - keybinds: z: reset unread count (useful when page is not scrollable)
- - fix remember updater's interval settings
- - fix wrong keybind input in options
- - fix time preview
- - fix backlink inlining removing its container
- - fix options key/keybinds key variables.
-- aeosynth:
- - new imgur upload link commented out in the sauces
- - link to dup file in the QR error
- - fix bug with hovering elements not disappearing
-
-2.16.1
-- mayhem:
- - fix updater's custom settings
-
-2.16.0
-- mayhem:
- - Thread Stats performance fix, especially on long threads
- - Sauce performance improvement
- - fix Quote Inlining for a pattern
- - other minor performance improvements and bug fixes
-- aeosynth:
- - fix an upgrading problem (1.x -> 2.x)
- - fix minor bugs with auto-posting
- - add updater scrolling
- - enable auto-updating by default
- - alphabetize option groups
-
-2.15.1
-- mayhem:
- - prevent upload of too large files
- - fix options height for netbooks
- - /a/ is now archived on easymodo
-
-2.15.0
-- mayhem:
- - custom hotkey binding
- - image spoiler revealer
- - optional auto noko
- - add a class for reply stubs
- - fix options centering on Opera
- - fix append '#watch' only when auto watch is enabled
- - fix cooldown with the normal post form
- - fix `Select next reply` hotkey behaviour
-- aeosynth:
- - keep options dialog at constant size
- - drop firefox 3.6 support (again...)
- - comment out tineye
- - trying to post during cooldown will enable auto-post
- - fix errors w/ noscript
-
-2.14.0
-- mayhem:
- - firstrun dialog
- - fix backlinking future posts
- - fix op non-backlinking
- - fix thread expansion on /t/
- - fix sage cooldown
- - fix extra link area around images
- - fix persistent qr
-- aeosynth:
- - reply navigation
- - fix time formatting of xhr posts
- - fix %P time formatting
-
-2.13.0
-- mayhem:
- - fix various bugs
- - keybinds: 0: actually refresh page 0
- - auto posting
- - add google sauce
-- arbitrary time formatting
-- rewrite options dialog, lightboxing
-- various fixes
-
-2.12.0
-- revert the status bar blocking changes
-- add a 5px padding-bottom to #qp
-
-2.11.4
-- fix another quoting bug
-
-2.11.3
-- really fix quoting
-
-2.11.2
-- fix quoting stuff
-
-2.11.1
-- work on firefox < 6.0
-
-2.11.0
-mayhem:
- - fix quote highlighting
-- block status bar when hovering quotes / images (may break image leeching)
-
-2.10.0
-mayhem:
- space between backlinks (to prevent them from spilling out of the page)
- thread stats: fix wrong selector id when image limit reached
- fix localized time + inlined quotes
-- fix edge hovering (flip to left of mouse @ right screen edge)
-- work on closed threads (some stickies)
-- op backlinking option
-- quote highlighting option
-- (maybe) work on fx3
-
-2.9.0
-- mayhem:
- better placement of inlined backquotes
- fix qr in expanded threads
- inline quote fixes
- fetch name, mail and pass in cookies at each qr opening
- highlight quoted post during quote preview
- add ' (OP)' to op quotes
- am/pm localized time
- give visual feedback on which quote has been inlined
- fix paypal link
- cooldown: alert only when posting from normal post form
- fix cooldown
- thread stats
- auto noko
- fix jumping hover dialogs
-- forwardlinks
-- rewrite image expansion/fitting
-- image expansion option: fit height
-- keybind: e - toggle thread expansion
-- fix bug where x-board links on chrome are unclickable
-- fix x-board / x-thread quoting
-
-2.8.1
-- tab over captcha
-
-2.8.0
-- mayhem:
- redesigned options
- don't backlink op on index pages
- base64 donate button
-- fix qr replying to wrong thread
-- small tweaks
-
-2.7.0
-- mayhem:
- add class to reply hider and report buttons
- fix anonymizer
-- inline quoting
-- don't break on >>>/board/ links (links w/o an id)
-- remove op backlinking
-- fix qr on expanded posts
-- image hover: fit height
-
-2.6.0
-- mayhem:
- start backlinks
- fix watcher refresh false positive
-- backlinks
-- cross-board previews
-- fix menu for opera
-- slightly bigger qr textarea
-
-2.5.0
-- mayhem:
- qp: better cross-thread op quoting
- qp: fix overflowing preview
- qr: prevent email field from popping out
- qr: fix cloning values
-- keybinds: fix m
-
-2.4.2
-- fix nodeInserted (work on new posts)
-- qr: remember name
-
-2.4.1
-- fix image expansion bug
-
-2.4.0
-- mayhem:
- auto watch reply
- fix report button splitting over two lines
- start merging /b/ackwash
-- quote previews
-- qr remix
-
-2.3.0
-- mayhem:
- refresh watcher list on un/watch
- auto refresh watcher list
- update no-ip.org archive
- fix auto-watch
-- flavor comments
-
-2.2.2
-- hopefully fix upgrading issues
-
-2.2.1
-- mayhem:
- fix op image expansion bug
- fix op comment expansion
-
-- fix /b/ackwash multiple links bug
-- make cooldown timer optional, disabled by default
-
-2.2.0
-- mayhem:
- - don't select text when moving dialogs
- - fix thread watcher's padding
- - remove captcha logos from quick reply
- - post in title - show default title when no subject/comment
- - update tab title on 404
- - chrome - fix favicons
- - fix 404 favicon
- - fix updater retrying
- - set timer to 0 on manual update
- - fix threading when op's file is deleted
-
-- fix navigating past hidden threads
-- fix updater option - verbose
-- only navigate to pages that exist
-- use Greasemonkey api (sigh)
-- rewrite, reenable cooldown
-- better image resize algorithm
-
-2.1.0
-- added back the 0 keybind - go to board's front page
-
-2.0.0
-- [chrome] qr error notifications
-- x-browser auto-watch
-- image expansion w/o horizontal scrollbars
-- removed reply nav
-- floating thread nav
-- fix /b/ thread nav
-- ignore middle clicks on images
-- smarter redirect
-- remove all GM_ functions
-- [chrome] fix slow scrolling w/ unread post count in titlebar
-- keybind: x: hide thread
-- qr: remove `auto`
-- rewrite / reorganize code
-
-1.27.8
-- fix qr image posting
-- fix thread hiding
-- fix movement
-
-1.27.7
-- fix qr persist
-- fix updater defaults
-
-1.27.6
-- fix 'update now' button
-
-1.27.5
-- fix regression - reload captcha after posting
-
-1.27.4
-- fix imageHover on chrome
-
-1.27.3
-- fix regression - movement
-
-1.27.2
-- fix regression - close / refresh qr on chrome
-- add updateURL for scriptish
-
-1.27.1
-- fix regression - unhide qr when quoting
-
-1.27.0
-- x-browser qr error checking (except for batshit insane chrome - see
- http://code.google.com/p/chromium/issues/detail?id=20773)
-- fix opera movement, again
-- bigger options button
-- move updater to bottom-right by default
-
-1.26.3
-- don't enable reply nav by default
-- reset file input after posting (persistent qr)
-- remove restore ids
-- check for dst
-
-1.26.2
-- fix thread watcher position; remember new position
-
-1.26.1
-- fix unread count for opera
-- fix default thread watcher placement
-
-1.26.0
-- image hover
-- support/donate
-
-1.25.0
-- auto gif
-- only preload in threads
-- fix autohide
-- sage cooldown = 60s
-
-1.24.0
-- image preloading
-
-1.23.1
-- fix updater notifications
-
-1.23.0
-- 'verbose' updater option
-- remove /new/, /r9k/ from archivers
-- tweak 'fit width' to get rid of horizontal scrollbar, only partially working
-
-1.22.0
-- update archives
-- tweak updater feedback/ui
-
-1.21.0
-- image expansion types
-- move global auto update option to updater dialog
-
-1.20.4
-- fix options
-
-1.20.3
-- update archives
-- fool the cache
-
-1.20.2
-- fix qr again
-
-1.20.1
-- fix disappearing updater bug
-- only restore ids on /b/ and /v/
-- fix JK keybinds
-
-1.20.0
-- keybinds
- - add u - update now
- - remove hHlLjk, numerical prefixes
- - use [vimus](http://userscripts.org/scripts/show/93187) for non-chan keybinds
-- fix slow scrolling
-- add replies in original order so backlinks resolve properly
-- fix qr quoting
-
-1.19.0
-- restore ids
-- thread updater
-
-1.18.4
-- fix qr quoting of selected text
-
-1.18.3
-- fix w / i / I keybinds
-- git rid of body padding
-
-1.18.2
-- logic fail
-
-1.18.1
-- only adding padding when not in replies
-
-1.18.0
-- body { padding-bottom } when Thread Navigation
-- keybinds
- - insert mode
- ^s - quick spoiler
- escape - remove quick reply
- - normal mode
- h/l - scroll left/right, H/L - move pages
- m/M - expand selected / all images
- w - watch thread (changed from m)
-
-1.17.5
-- fix threading
-- fix images
-
-1.17.4
-- yeah i guess margin is cool too
-
-1.17.3
-- a img { float: left; }
-
-1.17.2
-- expand images in new posts
-
-1.17.1
-- don't affect image clicks when ctrl | alt | shift held
-- add .hide class so thumbnail hiding works
-
-1.17.0
-- image expansion
-
-1.16.0
-- I - open blank quick reply
-
-1.15.0
-- add archive at 173.74.0.45
-
-1.14.1
-- fix thread nav
-
-1.14.0
-- reply keybinds: i, J, K
-
-1.13.0
-- localize time
-
-1.12.1
-- actually disable keybinds by default
-
-1.12.0
-- disable keybinds by default
-- qr to replies
-- J/K - select next / previous reply
-- smarter scrolling
-
-1.11.1
-- fix reply mode switching (bringing up quick reply now correctly disables
-keybinds)
-
-1.11.0
-- reply keybinds
-- repeatable keybinds
-- change keybinds:
- - o = open thread in new tab
- - i = enter insert mode and open quick reply
-
-1.10.1
-- fix kb thread nav
-- hack to focus qr
-- absolute positioning for `g` keybind
-
-1.10.0
-- keyboard actions:
- - m to _mark (watch) threads
- - t to open threads in _tabs
- - o to _open quick reply
-- better mode switching
-- turn on keyboard actions
-
-1.9.1
-- add `count` for keynav
-- disable keynav when quick replying
-- make keynav disabled by default
-
-1.9.0
-- add keyboard navigation
-
-1.8.3
-- try to fix remaining bugs by making global variables explicitly global
-
-1.8.2
-- fix chromium
-
-1.8.1
-- fix bugs in 1.8.0
-
-1.8.0
-- add backspace recaptcha refreshing to reports page
-
-1.7.4
-- fix thread watching
-
-1.7.3
-- fixed descriptions
-
-1.7.2
-- add option descriptions
-
-1.7.0
-- add auto in qr
-
-1.6.0
-- add cooldown timer
-
-1.5.0
-1.4.4
-- mirror options button on bottom of page
-- add 4chan sauce
-- add 404 redirect
-- add post in title
-- reload captcha on backspace
-
-1.4.3
-- clear captcha on submit
-
-1.4.2
-- fix for firefox 4.0b6
-
-1.4.1
-- unhide qr when reply link clicked
-- clear textarea on successful qr
-- reload captcha AFTER removing qr
-
-1.4
-- add 'Persistent QR'
-- QR autohiding
-
-1.3
-- auto reload captcha on success
-
-1.2
-- alert on no captcha
-
-1.1
-- re-add button to clear hidden posts.
-
-1.0
-- Complete rewrite (well, like 98%).
-- Split off updater - 4chan x Updater
-
-0.26
-- Fix /b/ quick reply
-- Add initial 'Auto Watch' implementation
-
-0.25
-- fix Opera 10.50 thread updater bug
-- require Opera 10.50
-- remove 'Quick Post' (just use noko)
-- remove / automate 'manual clear'
-- make thread stubs clickable
-
-0.24 - Worksafe threads show the correct favicon. Thanks for the art, Ongpot!
-
-0.23 - Show post count for hidden threads
-
-0.22 - thread navigating now can navigate to previous pages, fixed opera issue
-
-0.21 - chrome compatibility
-
-0.20 - added selection quoting, quick post, unread reply count in title.
-
-0.19 - added quick reply error notifications
-
-0.17 - added 'Update Favicon' option. Thanks thisisanon!
-
-0.16 - added new reply notifications. scroll to end of thread to remove them.
-
-0.15 - added thread updater button
-
-0.14 - moved reply hiding to 4chan filter
-
-0.13 - added thread watcher close button, thread watcher toggle button
-
-0.12 - added Show Hidden (NOTE: not fully compatible w/ 4chan filter yet); thread updater works through connection problems
-
-0.11 - made hidden replies persistent, added Clear Hidden.
-
-0.10 - report button added
-
-0.9 - forced anon added
-
-0.8 - all watched threads visible all the time
-
-0.7 - added reply nav buttons
-
-0.6 - added thread updating
-
-0.4.1/0.5 - added options, quick reply shading
-
-0.4 - added quick reply
-
-0.3 - added thread watching
-
-0.2 - added post expanding
-
-0.1 - added post hiding
-
-0.0 - thread hiding, expanding, navigating
diff --git a/package.json b/package.json
index 9290db6e5..70bc72387 100644
--- a/package.json
+++ b/package.json
@@ -1,19 +1,22 @@
{
"name": "4chan-X",
- "version": "3.2.0",
- "description": "Cross-browser extension for productive lurking on 4chan.",
+ "version": "1.1.0",
+ "description": "Cross-browser userscript for maximum lurking on 4chan.",
"meta": {
"name": "4chan X",
- "repo": "https://github.com/MayhemYDG/4chan-x/",
- "page": "https://4chan-x.just-believe.in/",
- "buildsPath": "builds/",
- "mainBranch": "v3",
+ "repo": "https://github.com/seaweedchan/4chan-x/",
+ "page": "http://seaweedchan.github.io/4chan-x/",
+ "mainBranch": "master",
"matches": [
"*://api.4chan.org/*",
"*://boards.4chan.org/*",
"*://images.4chan.org/*",
"*://sys.4chan.org/*"
- ]
+ ],
+ "files": {
+ "metajs": "4chan_X.meta.js",
+ "userjs": "4chan_X.user.js"
+ }
},
"devDependencies": {
"grunt": "~0.4.1",
@@ -29,10 +32,12 @@
},
"repository": {
"type": "git",
- "url": "git://github.com/MayhemYDG/4chan-x.git"
+ "url": "https://github.com/seaweedchan/4chan-x.git"
},
- "author": "Nicolas Stepien ",
+ "author": "seaweedchan ",
"contributors": [
+ "Zixaphir",
+ "Nicolas Stepien ",
"James Campos "
],
"license": "MIT",
diff --git a/src/config.coffee b/src/config.coffee
index b99062b8a..eb730bef7 100644
--- a/src/config.coffee
+++ b/src/config.coffee
@@ -401,7 +401,7 @@ http://iqdb.org/?url=%TURL
'Bottom Header': false
'Header catalog links': false
'Bottom Board List': false
- 'Custom Board Navigation': false
+ 'Custom Board Navigation': true
boardnav: '[ toggle-all ] [current-title]'
@@ -422,11 +422,11 @@ http://iqdb.org/?url=%TURL
'Toggle the full board list.'
]
'Open empty QR': [
- 'l'
+ 'i'
'Open QR without post number inserted.'
]
'Open QR': [
- 'Shift+l'
+ 'Shift+i'
'Open QR with post number inserted.'
]
'Open settings': [
diff --git a/src/css/burichan.css b/src/css/burichan.css
index 0c941526c..2561cf07c 100644
--- a/src/css/burichan.css
+++ b/src/css/burichan.css
@@ -8,11 +8,11 @@
}
/* Header */
-:root.burichan #header-bar {
+:root.burichan #header-bar, :root.burichan #header-bar #notifications {
font-size: 11pt;
color: #89A;
}
-:root.burichan #header-bar a {
+:root.burichan #header-bar a, :root.burichan #header-bar #notifications a {
color: #34345C;
}
diff --git a/src/css/futaba.css b/src/css/futaba.css
index 30099ef0c..33f937c0d 100644
--- a/src/css/futaba.css
+++ b/src/css/futaba.css
@@ -8,11 +8,11 @@
}
/* Header */
-:root.futaba #header-bar {
+:root.futaba #header-bar, :root.futaba #notifications {
font-size: 11pt;
color: #B86;
}
-:root.futaba #header-bar a {
+:root.futaba #header-bar a, :root.futaba #notifications a {
color: #800000;
}
diff --git a/src/css/photon.css b/src/css/photon.css
index cd4d9a702..50cd3e041 100644
--- a/src/css/photon.css
+++ b/src/css/photon.css
@@ -8,11 +8,11 @@
}
/* Header */
-:root.photon #header-bar {
+:root.photon #header-bar, :root.photon #notifications {
font-size: 9pt;
color: #333;
}
-:root.photon #header-bar a {
+:root.photon #header-bar a, :root.photon #notifications a {
color: #FF6600;
}
diff --git a/src/css/style.css b/src/css/style.css
index 8d4c80c18..8d9eaf62e 100644
--- a/src/css/style.css
+++ b/src/css/style.css
@@ -166,7 +166,7 @@ a[href="javascript:;"] {
.fixed.bottom #header-bar #scroll-marker {
bottom: 100%;
}
-#header-bar a:not(.entry) {
+#header-bar a:not(.entry):not(.close) {
text-decoration: none;
padding: 1px;
}
@@ -312,13 +312,13 @@ a[href="javascript:;"] {
font-weight: 700;
}
.section-sauce ul,
-.section-rice ul {
+.section-advanced ul {
list-style: none;
margin: 0;
padding: 8px;
}
.section-sauce li,
-.section-rice li {
+.section-advanced li {
padding-left: 4px;
}
.section-main label {
@@ -336,10 +336,10 @@ a[href="javascript:;"] {
.section-sauce textarea {
height: 350px;
}
-.section-rice .field[name="boardnav"] {
+.section-advanced .field[name="boardnav"] {
width: 100%;
}
-.section-rice textarea {
+.section-advanced textarea {
height: 150px;
}
#fourchanx-settings fieldset {
@@ -646,8 +646,7 @@ input.field.tripped:not(:hover):not(:focus) {
width: 100%;
margin: 1px 0 0;
}
-.field,
-.selectrice {
+.field {
-moz-box-sizing: border-box;
margin: 0px;
padding: 2px 4px 3px;
diff --git a/src/css/tomorrow.css b/src/css/tomorrow.css
index 2d03d4498..b6ba5d9fb 100644
--- a/src/css/tomorrow.css
+++ b/src/css/tomorrow.css
@@ -8,11 +8,11 @@
}
/* Header */
-:root.tomorrow #header-bar {
+:root.tomorrow #header-bar, :root.tomorrow #notifications {
font-size: 9pt;
color: #C5C8C6;
}
-:root.tomorrow #header-bar a {
+:root.tomorrow #header-bar a, :root.tomorrow #notifications a {
color: #81A2BE;
}
diff --git a/src/css/yotsuba-b.css b/src/css/yotsuba-b.css
index 20b1214fe..308be8eed 100644
--- a/src/css/yotsuba-b.css
+++ b/src/css/yotsuba-b.css
@@ -8,11 +8,11 @@
}
/* Header */
-:root.yotsuba-b #header-bar {
+:root.yotsuba-b #header-bar, :root.yotsuba-b #notifications {
font-size: 9pt;
color: #89A;
}
-:root.yotsuba-b #header-bar a {
+:root.yotsuba-b #header-bar a, :root.yotsuba-b #notifications a {
color: #34345C;
}
diff --git a/src/css/yotsuba.css b/src/css/yotsuba.css
index 2cf8b83ba..474f50416 100644
--- a/src/css/yotsuba.css
+++ b/src/css/yotsuba.css
@@ -8,11 +8,11 @@
}
/* Header */
-:root.yotsuba #header-bar {
+:root.yotsuba #header-bar, :root.yotsuba #notifications {
font-size: 9pt;
color: #B86;
}
-:root.yotsuba #header-bar a {
+:root.yotsuba #header-bar a, :root.yotsuba #notifications a {
color: #800000;
}
diff --git a/src/features/misc/header.coffee b/src/features/misc/header.coffee
index 5a8092967..f4e3c7fa1 100644
--- a/src/features/misc/header.coffee
+++ b/src/features/misc/header.coffee
@@ -103,7 +103,7 @@ Header =
boardList = $.el 'span',
id: 'board-list'
- innerHTML: " - #{fourchannav.innerHTML}"
+ innerHTML: "[ - ] #{fourchannav.innerHTML}"
fullBoardList = $ '#full-board-list', boardList
btn = $ '.hide-board-list-button', fullBoardList
$.on btn, 'click', Header.toggleBoardList
@@ -257,7 +257,7 @@ Header =
Header.setCustomNav @checked
editCustomNav: ->
- Settings.open 'Rice'
+ Settings.open 'Advanced'
settings = $.id 'fourchanx-settings'
$('input[name=boardnav]', settings).focus()
diff --git a/src/features/monitoring/unread.coffee b/src/features/monitoring/unread.coffee
index 8ff735c2a..738742ab8 100644
--- a/src/features/monitoring/unread.coffee
+++ b/src/features/monitoring/unread.coffee
@@ -26,21 +26,20 @@ Unread =
$.on d, 'ThreadUpdate', Unread.onUpdate
$.on d, 'scroll visibilitychange', Unread.read
$.on d, 'visibilitychange', Unread.setLine if Conf['Unread Line']
+ $.on window, 'load', Unread.scroll if Conf['Scroll to Last Read Post']
- return unless Conf['Scroll to Last Read Post']
-
- $.on window, 'load', ->
- # Let the header's onload callback handle it.
- return if (hash = location.hash.match /\d+/) and hash[0] of @posts
- if Unread.posts.length
- # Scroll to before the first unread post.
- while root = $.x 'preceding-sibling::div[contains(@class,"postContainer")][1]', Unread.posts[0].nodes.root
- break unless (Get.postFromRoot root).isHidden
- return unless root
- root.scrollIntoView false
- else if posts.length
- # Scroll to the last read post.
- Header.scrollToPost (posts[posts.length - 1]).nodes.root
+ scroll: ->
+ # Let the header's onload callback handle it.
+ return if (hash = location.hash.match /\d+/) and hash[0] of Unread.thread.posts
+ if Unread.posts.length
+ # Scroll to before the first unread post.
+ while root = $.x 'preceding-sibling::div[contains(@class,"postContainer")][1]', Unread.posts[0].nodes.root
+ break unless (Get.postFromRoot root).isHidden
+ root.scrollIntoView false
+ return
+ # Scroll to the last read post.
+ posts = Object.keys Unread.thread.posts
+ Header.scrollToPost Unread.thread.posts[posts[posts.length - 1]].nodes.root
sync: ->
lastReadPost = Unread.db.get
diff --git a/src/img/changelog/3.2.0/0.png b/src/img/changelog/3.2.0/0.png
new file mode 100644
index 000000000..d73ba75fe
Binary files /dev/null and b/src/img/changelog/3.2.0/0.png differ
diff --git a/src/meta/banner.js b/src/meta/banner.js
index f7d4ace23..df2518609 100644
--- a/src/meta/banner.js
+++ b/src/meta/banner.js
@@ -1,21 +1,80 @@
-/* <%= meta.name %> - Version <%= version %> - <%= grunt.template.today('yyyy-mm-dd') %>
- * <%= meta.page %>
- *
- * Copyright (c) 2009-2011 James Campos
- * Copyright (c) 2012-<%= grunt.template.today('yyyy') %> Nicolas Stepien
- * Licensed under the MIT license.
- * <%= meta.repo %>blob/master/LICENSE
- *
- * Contributors:
- * <%= meta.repo %>graphs/contributors
- * Non-GitHub contributors:
- * ferongr, xat-, Ongpot, thisisanon and Anonymous - favicon contributions
- * e000 - cooldown sanity check
- * Seiba - chrome quick reply focusing
- * herpaderpderp - recaptcha fixes
- * WakiMiko - recaptcha tab order http://userscripts.org/scripts/show/82657
- *
- * All the people who've taken the time to write bug reports.
- *
- * Thank you.
- */
+/*
+* <%= meta.name %> - Version <%= version %> - <%= grunt.template.today('yyyy-mm-dd') %>
+*
+* Licensed under the MIT license.
+* <%= meta.repo %>blob/master/LICENSE
+*
+* Appchan X Copyright © 2013-<%= grunt.template.today('yyyy') %> Zixaphir
+* http://zixaphir.github.io/appchan-x/
+* 4chan x Copyright © 2009-2011 James Campos
+* https://github.com/aeosynth/4chan-x
+* 4chan x Copyright © 2012-<%= grunt.template.today('yyyy') %> Nicolas Stepien
+* https://4chan-x.just-believe.in/
+* 4chan x Copyright © 2013-<%= grunt.template.today('yyyy') %> Jordan Bates
+* http://seaweedchan.github.io/4chan-x/
+* 4chan x Copyright © 2012-<%= grunt.template.today('yyyy') %> ihavenoface
+* http://ihavenoface.github.io/4chan-x/
+* OneeChan Copyright © 2011-<%= grunt.template.today('yyyy') %> Jordan Bates
+* http://seaweedchan.github.io/oneechan/
+* 4chan SS Copyright © 2011-<%= grunt.template.today('yyyy') %> Ahodesuka
+* https://github.com/ahodesuka/4chan-Style-Script/
+* Raphael Icons Copyright © <%= grunt.template.today('yyyy') %> Dmitry Baranovskiy
+* http://raphaeljs.com/icons/
+*
+* Permission is hereby granted, free of charge, to any person
+* obtaining a copy of this software and associated documentation
+* files (the "Software"), to deal in the Software without
+* restriction, including without limitation the rights to use,
+* copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to whom the
+* Software is furnished to do so, subject to the following
+* conditions:
+*
+* The above copyright notice and this permission notice shall be
+* included in all copies or substantial portions of the Software.
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+* OTHER DEALINGS IN THE SOFTWARE.
+*
+* Contributors:
+* aeosynth
+* mayhemydg
+* noface
+* !K.WeEabo0o
+* blaise
+* that4chanwolf
+* desuwa
+* seaweed
+* e000
+* ahodesuka
+* Shou
+* ferongr
+* xat
+* Ongpot
+* thisisanon
+* Anonymous
+* Seiba
+* herpaderpderp
+* WakiMiko
+* btmcsweeney
+* AppleBloom
+*
+* All the people who've taken the time to write bug reports.
+*
+* Thank you.
+*/
+
+/*
+* Linkify based on:
+* http://downloads.mozdev.org/greasemonkey/linkify.user.js
+* https://github.com/MayhemYDG/LinkifyPlusFork
+*
+* Originally written by Anthony Lieuallen of http://arantius.com/
+* Licensed for unlimited modification and redistribution as long as
+* this notice is kept intact.
+*/
\ No newline at end of file
diff --git a/src/meta/metadata.js b/src/meta/metadata.js
index ea29732e7..2b8122848 100644
--- a/src/meta/metadata.js
+++ b/src/meta/metadata.js
@@ -3,8 +3,10 @@
// @version <%= version %>
// @namespace <%= name %>
// @description <%= description %>
-// @copyright 2009-2011 James Campos
-// @copyright 2012-<%= grunt.template.today('yyyy') %> Nicolas Stepien
+// @copyright 2013-<%= grunt.template.today('yyyy') %> Zixaphir
+// @copyright 2013-<%= grunt.template.today('yyyy') %> Jordan Bates
+// @copyright 2009-2011 James Campos
+// @copyright 2012-<%= grunt.template.today('yyyy') %> Nicolas Stepien
// @license MIT; http://en.wikipedia.org/wiki/Mit_license
<%=
meta.matches.map(function(match) {
@@ -16,7 +18,7 @@
// @grant GM_deleteValue
// @grant GM_openInTab
// @run-at document-start
-// @updateURL <%= meta.page %><%= meta.buildsPath %><%= name %>.meta.js
-// @downloadURL <%= meta.page %><%= meta.buildsPath %><%= name %>.user.js
+// @updateURL <%= meta.repo %>raw/stable/builds/<%= meta.files.metajs %>
+// @downloadURL <%= meta.repo %>raw/stable/builds/<%= meta.files.userjs %>
// @icon data:image/png;base64,<%= grunt.file.read('src/img/icon48.png', {encoding: 'base64'}) %>
-// ==/UserScript==
+// ==/UserScript==
\ No newline at end of file
diff --git a/src/settings.coffee b/src/settings.coffee
index a623d1384..d2da79e1d 100644
--- a/src/settings.coffee
+++ b/src/settings.coffee
@@ -30,7 +30,7 @@ Settings =
Settings.addSection 'Main', Settings.main
Settings.addSection 'Filter', Settings.filter
Settings.addSection 'Sauce', Settings.sauce
- Settings.addSection 'Rice', Settings.rice
+ Settings.addSection 'Advanced', Settings.advanced
Settings.addSection 'Keybinds', Settings.keybinds
$.on d, 'AddSettingsSection', Settings.addSection
@@ -375,7 +375,7 @@ Settings =
sauce.value = item['sauces']
$.on sauce, 'change', $.cb.value
- rice: (section) ->
+ advanced: (section) ->
section.innerHTML = """