Release 4chan X v1.13.1.5.

This commit is contained in:
ccd0 2016-11-13 14:45:19 -08:00
parent 181ba93080
commit 95eb71d6c6
13 changed files with 127 additions and 87 deletions

View File

@ -4,6 +4,13 @@
### v1.13.1 ### v1.13.1
**v1.13.1.5** *(2016-11-13)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.1.5/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.1.5/builds/4chan-X-noupdate.crx)]
- Merge v1.13.0.25: Fix bug from v1.13.0.0 causing errors on index refresh in certain cases when creating threads with cookies disabled. #1184
- Merge v1.13.0.25: Better link text in file error message: 'delete' -> 'delete post'. #1186
- Merge v1.13.0.25: Fix bug causing auto-pruning if you refreshed the index too soon after creating a thread.
- Add `Catalog Hover Toggle` setting, which sets whether clicking in the catalog toggles `Catalog Hover Expand`.
- Improved support for those who want to unblock the top banner ads. See the [FAQ](https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions#ads) for how to do so.
**v1.13.1.4** *(2016-11-09)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.1.4/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.1.4/builds/4chan-X-noupdate.crx)] **v1.13.1.4** *(2016-11-09)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.1.4/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.13.1.4/builds/4chan-X-noupdate.crx)]
- Fix deletion cooldown bug from v1.13.1.0. - Fix deletion cooldown bug from v1.13.1.0.

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript== // ==UserScript==
// @name 4chan X beta // @name 4chan X beta
// @version 1.13.1.4 // @version 1.13.1.5
// @minGMVer 1.14 // @minGMVer 1.14
// @minFFVer 26 // @minFFVer 26
// @namespace 4chan-X // @namespace 4chan-X

View File

@ -1,6 +1,6 @@
// ==UserScript== // ==UserScript==
// @name 4chan X beta // @name 4chan X beta
// @version 1.13.1.4 // @version 1.13.1.5
// @minGMVer 1.14 // @minGMVer 1.14
// @minFFVer 26 // @minFFVer 26
// @namespace 4chan-X // @namespace 4chan-X
@ -147,7 +147,7 @@ docSet = function() {
}; };
g = { g = {
VERSION: '1.13.1.4', VERSION: '1.13.1.5',
NAMESPACE: '4chan X.', NAMESPACE: '4chan X.',
boards: {} boards: {}
}; };
@ -385,7 +385,8 @@ Config = (function() {
'Previous Index Mode': 'paged', 'Previous Index Mode': 'paged',
'Index Size': 'small', 'Index Size': 'small',
'Show Replies': [true, 'Show replies in the index, and also in the catalog if "Catalog hover expand" is checked.'], 'Show Replies': [true, 'Show replies in the index, and also in the catalog if "Catalog hover expand" is checked.'],
'Catalog Hover Expand': [true, 'Clicking in the catalog shows more details in the thread you are hovering over.'], 'Catalog Hover Expand': [false, 'Expand the comment and show more details when you hover over a thread in the catalog.'],
'Catalog Hover Toggle': [true, 'Turn "Catalog hover expand" on and off by clicking in the catalog.'],
'Pin Watched Threads': [false, 'Move watched threads to the start of the index.'], 'Pin Watched Threads': [false, 'Move watched threads to the start of the index.'],
'Anchor Hidden Threads': [true, 'Move hidden threads to the end of the index.'], 'Anchor Hidden Threads': [true, 'Move hidden threads to the end of the index.'],
'Refreshed Navigation': [false, 'Refresh index when navigating through pages.'] 'Refreshed Navigation': [false, 'Refresh index when navigating through pages.']
@ -411,7 +412,7 @@ Config = (function() {
'QR.personas': "#options:\"sage\";boards:jp;always", 'QR.personas': "#options:\"sage\";boards:jp;always",
sjisPreview: false sjisPreview: false
}, },
jsWhitelist: 'http://s.4cdn.org\nhttps://s.4cdn.org\nhttp://www.google.com\nhttps://www.google.com\nhttps://www.gstatic.com\nhttp://cdn.mathjax.org\nhttps://cdn.mathjax.org\n\'self\'\n\'unsafe-inline\'\n\'unsafe-eval\'', jsWhitelist: 'http://s.4cdn.org\nhttps://s.4cdn.org\nhttp://www.google.com\nhttps://www.google.com\nhttps://www.gstatic.com\nhttp://cdn.mathjax.org\nhttps://cdn.mathjax.org\n\'self\'\n\'unsafe-inline\'\n\'unsafe-eval\'\n\n# Banner ads\n#http://s.zkcdn.net/ados.js\n#https://s.zkcdn.net/ados.js\n#http://engine.4chan-ads.org\n#https://engine.4chan-ads.org',
captchaLanguage: '', captchaLanguage: '',
time: '%m/%d/%y(%a)%H:%M:%S', time: '%m/%d/%y(%a)%H:%M:%S',
backlink: '>>%id', backlink: '>>%id',
@ -1330,10 +1331,10 @@ body > div[style*=\" top: -10000px;\"] {\n\
:root:not(.ads-loaded) .ad-plea,\n\ :root:not(.ads-loaded) .ad-plea,\n\
:root:not(.ads-loaded) hr.abovePostForm,\n\ :root:not(.ads-loaded) hr.abovePostForm,\n\
:root:not(.ads-loaded) .ad-plea-bottom + hr,\n\ :root:not(.ads-loaded) .ad-plea-bottom + hr,\n\
:root:not(.ads-loaded) #adg-ol + hr {\n\ #adg-ol + hr {\n\
display: none;\n\ display: none;\n\
}\n\ }\n\
:root:not(.ads-loaded) .adg-rects {\n\ .adg-rects {\n\
margin: 0;\n\ margin: 0;\n\
font-size: 0;\n\ font-size: 0;\n\
}\n\ }\n\
@ -2080,8 +2081,8 @@ div[data-checked=\"false\"] > .suboption-list {\n\
display: inline-block;\n\ display: inline-block;\n\
font-style: italic;\n\ font-style: italic;\n\
}\n\ }\n\
.catalog-post > * > .nameBlock,\n\ :root.catalog-hover-expand .catalog-container:hover > * > * > .nameBlock,\n\
.catalog-post > * > .dateTime,\n\ :root.catalog-hover-expand .catalog-container:hover > * > * > .dateTime,\n\
:root.catalog-hover-expand .catalog-container:hover > * > .postMessage:not(:empty) {\n\ :root.catalog-hover-expand .catalog-container:hover > * > .postMessage:not(:empty) {\n\
padding-top: .3em;\n\ padding-top: .3em;\n\
}\n\ }\n\
@ -9318,7 +9319,7 @@ Index = (function() {
}); });
Header.addShortcut('index-refresh', this.button, 590); Header.addShortcut('index-refresh', this.button, 590);
entries = []; entries = [];
inputs = {}; this.inputs = inputs = {};
ref4 = Config.Index; ref4 = Config.Index;
for (name in ref4) { for (name in ref4) {
arr = ref4[name]; arr = ref4[name];
@ -9350,7 +9351,7 @@ Index = (function() {
sortEntry = UI.checkbox('Per-Board Sort Type', 'Per-board sort type', typeof Conf['Index Sort'] === 'object'); sortEntry = UI.checkbox('Per-Board Sort Type', 'Per-board sort type', typeof Conf['Index Sort'] === 'object');
sortEntry.title = 'Set the sorting order of each board independently.'; sortEntry.title = 'Set the sorting order of each board independently.';
$.on(sortEntry.firstChild, 'change', this.cb.perBoardSort); $.on(sortEntry.firstChild, 'change', this.cb.perBoardSort);
entries.splice(2, 0, { entries.splice(3, 0, {
el: sortEntry el: sortEntry
}); });
Header.menu.addEntry({ Header.menu.addEntry({
@ -9398,6 +9399,7 @@ Index = (function() {
}); });
$.on(this.root, 'click', this.cb.hoverToggle); $.on(this.root, 'click', this.cb.hoverToggle);
this.cb.size(); this.cb.size();
this.cb.hover();
this.pagelist = $.el('div', { this.pagelist = $.el('div', {
className: 'pagelist json-index' className: 'pagelist json-index'
}); });
@ -9630,14 +9632,14 @@ Index = (function() {
return Index.buildIndex(); return Index.buildIndex();
}, },
hover: function() { hover: function() {
if (!Conf['Catalog Hover Expand']) { return doc.classList.toggle('catalog-hover-expand', Conf['Catalog Hover Expand']);
return $.rmClass(doc, 'catalog-hover-expand');
}
}, },
hoverToggle: function(e) { hoverToggle: function(e) {
var thread; var input, thread;
if (Conf['Catalog Hover Expand'] && $.hasClass(doc, 'catalog-mode') && !$.modifiedClick(e) && !$.x('ancestor-or-self::a', e.target)) { if (Conf['Catalog Hover Toggle'] && $.hasClass(doc, 'catalog-mode') && !$.modifiedClick(e) && !$.x('ancestor-or-self::a', e.target)) {
$.toggleClass(doc, 'catalog-hover-expand'); input = Index.inputs['Catalog Hover Expand'];
input.checked = !input.checked;
$.event('change', null, input);
if ((thread = Get.threadFromNode(e.target))) { if ((thread = Get.threadFromNode(e.target))) {
Index.cb.catalogReplies.call(thread); Index.cb.catalogReplies.call(thread);
return Index.cb.hoverAdjust.call(thread.OP.nodes); return Index.cb.hoverAdjust.call(thread.OP.nodes);
@ -10706,8 +10708,8 @@ Settings = (function() {
} }
}, },
ads: function(cb) { ads: function(cb) {
return $.onExists(doc, '.ad-cnt, .adg-rects', function(ad) { return $.onExists(doc, '.adg-rects > .desktop', function(ad) {
return $.onExists(ad, 'img, iframe', function() { return $.onExists(ad, 'iframe', function() {
var url; var url;
url = Redirect.to('thread', { url = Redirect.to('thread', {
boardID: 'qa', boardID: 'qa',
@ -18367,14 +18369,18 @@ ThreadWatcher = (function() {
ThreadWatcher.setToggler(toggler, !!data); ThreadWatcher.setToggler(toggler, !!data);
$.on(toggler, 'click', ThreadWatcher.cb.toggle); $.on(toggler, 'click', ThreadWatcher.cb.toggle);
if (data && (data.excerpt == null)) { if (data && (data.excerpt == null)) {
ThreadWatcher.db.extend({ return $.queueTask((function(_this) {
boardID: boardID, return function() {
threadID: threadID, ThreadWatcher.db.extend({
val: { boardID: boardID,
excerpt: Get.threadExcerpt(this.thread) threadID: threadID,
} val: {
}); excerpt: Get.threadExcerpt(_this.thread)
return ThreadWatcher.refresh(); }
});
return ThreadWatcher.refresh();
};
})(this));
} }
}, },
catalogNode: function() { catalogNode: function() {
@ -18467,6 +18473,11 @@ ThreadWatcher = (function() {
if (!(!(data != null ? data.isDead : void 0) && (ref1 = boardID + "." + threadID, indexOf.call(e.detail.threads, ref1) < 0))) { if (!(!(data != null ? data.isDead : void 0) && (ref1 = boardID + "." + threadID, indexOf.call(e.detail.threads, ref1) < 0))) {
continue; continue;
} }
if (!e.detail.threads.some(function(fullID) {
return +fullID.split('.')[1] > threadID;
})) {
continue;
}
nKilled++; nKilled++;
if (Conf['Auto Prune'] || !(data && typeof data === 'object')) { if (Conf['Auto Prune'] || !(data && typeof data === 'object')) {
db["delete"]({ db["delete"]({
@ -22168,7 +22179,7 @@ QR = (function() {
className: className className: className
}); });
$.extend(div, { $.extend(div, {
innerHTML: E(message) + "<br>[<a href=\"javascript:;\">delete</a>] [<a href=\"javascript:;\">delete all</a>]" innerHTML: E(message) + "<br>[<a href=\"javascript:;\">delete post</a>] [<a href=\"javascript:;\">delete all</a>]"
}); });
(this.errors || (this.errors = [])).push(div); (this.errors || (this.errors = [])).push(div);
ref = $$('a', div), rm = ref[0], rmAll = ref[1]; ref = $$('a', div), rm = ref[0], rmAll = ref[1];

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript== // ==UserScript==
// @name 4chan X // @name 4chan X
// @version 1.13.1.4 // @version 1.13.1.5
// @minGMVer 1.14 // @minGMVer 1.14
// @minFFVer 26 // @minFFVer 26
// @namespace 4chan-X // @namespace 4chan-X
@ -147,7 +147,7 @@ docSet = function() {
}; };
g = { g = {
VERSION: '1.13.1.4', VERSION: '1.13.1.5',
NAMESPACE: '4chan X.', NAMESPACE: '4chan X.',
boards: {} boards: {}
}; };
@ -385,7 +385,8 @@ Config = (function() {
'Previous Index Mode': 'paged', 'Previous Index Mode': 'paged',
'Index Size': 'small', 'Index Size': 'small',
'Show Replies': [true, 'Show replies in the index, and also in the catalog if "Catalog hover expand" is checked.'], 'Show Replies': [true, 'Show replies in the index, and also in the catalog if "Catalog hover expand" is checked.'],
'Catalog Hover Expand': [true, 'Clicking in the catalog shows more details in the thread you are hovering over.'], 'Catalog Hover Expand': [false, 'Expand the comment and show more details when you hover over a thread in the catalog.'],
'Catalog Hover Toggle': [true, 'Turn "Catalog hover expand" on and off by clicking in the catalog.'],
'Pin Watched Threads': [false, 'Move watched threads to the start of the index.'], 'Pin Watched Threads': [false, 'Move watched threads to the start of the index.'],
'Anchor Hidden Threads': [true, 'Move hidden threads to the end of the index.'], 'Anchor Hidden Threads': [true, 'Move hidden threads to the end of the index.'],
'Refreshed Navigation': [false, 'Refresh index when navigating through pages.'] 'Refreshed Navigation': [false, 'Refresh index when navigating through pages.']
@ -411,7 +412,7 @@ Config = (function() {
'QR.personas': "#options:\"sage\";boards:jp;always", 'QR.personas': "#options:\"sage\";boards:jp;always",
sjisPreview: false sjisPreview: false
}, },
jsWhitelist: 'http://s.4cdn.org\nhttps://s.4cdn.org\nhttp://www.google.com\nhttps://www.google.com\nhttps://www.gstatic.com\nhttp://cdn.mathjax.org\nhttps://cdn.mathjax.org\n\'self\'\n\'unsafe-inline\'\n\'unsafe-eval\'', jsWhitelist: 'http://s.4cdn.org\nhttps://s.4cdn.org\nhttp://www.google.com\nhttps://www.google.com\nhttps://www.gstatic.com\nhttp://cdn.mathjax.org\nhttps://cdn.mathjax.org\n\'self\'\n\'unsafe-inline\'\n\'unsafe-eval\'\n\n# Banner ads\n#http://s.zkcdn.net/ados.js\n#https://s.zkcdn.net/ados.js\n#http://engine.4chan-ads.org\n#https://engine.4chan-ads.org',
captchaLanguage: '', captchaLanguage: '',
time: '%m/%d/%y(%a)%H:%M:%S', time: '%m/%d/%y(%a)%H:%M:%S',
backlink: '>>%id', backlink: '>>%id',
@ -1330,10 +1331,10 @@ body > div[style*=\" top: -10000px;\"] {\n\
:root:not(.ads-loaded) .ad-plea,\n\ :root:not(.ads-loaded) .ad-plea,\n\
:root:not(.ads-loaded) hr.abovePostForm,\n\ :root:not(.ads-loaded) hr.abovePostForm,\n\
:root:not(.ads-loaded) .ad-plea-bottom + hr,\n\ :root:not(.ads-loaded) .ad-plea-bottom + hr,\n\
:root:not(.ads-loaded) #adg-ol + hr {\n\ #adg-ol + hr {\n\
display: none;\n\ display: none;\n\
}\n\ }\n\
:root:not(.ads-loaded) .adg-rects {\n\ .adg-rects {\n\
margin: 0;\n\ margin: 0;\n\
font-size: 0;\n\ font-size: 0;\n\
}\n\ }\n\
@ -2080,8 +2081,8 @@ div[data-checked=\"false\"] > .suboption-list {\n\
display: inline-block;\n\ display: inline-block;\n\
font-style: italic;\n\ font-style: italic;\n\
}\n\ }\n\
.catalog-post > * > .nameBlock,\n\ :root.catalog-hover-expand .catalog-container:hover > * > * > .nameBlock,\n\
.catalog-post > * > .dateTime,\n\ :root.catalog-hover-expand .catalog-container:hover > * > * > .dateTime,\n\
:root.catalog-hover-expand .catalog-container:hover > * > .postMessage:not(:empty) {\n\ :root.catalog-hover-expand .catalog-container:hover > * > .postMessage:not(:empty) {\n\
padding-top: .3em;\n\ padding-top: .3em;\n\
}\n\ }\n\
@ -9318,7 +9319,7 @@ Index = (function() {
}); });
Header.addShortcut('index-refresh', this.button, 590); Header.addShortcut('index-refresh', this.button, 590);
entries = []; entries = [];
inputs = {}; this.inputs = inputs = {};
ref4 = Config.Index; ref4 = Config.Index;
for (name in ref4) { for (name in ref4) {
arr = ref4[name]; arr = ref4[name];
@ -9350,7 +9351,7 @@ Index = (function() {
sortEntry = UI.checkbox('Per-Board Sort Type', 'Per-board sort type', typeof Conf['Index Sort'] === 'object'); sortEntry = UI.checkbox('Per-Board Sort Type', 'Per-board sort type', typeof Conf['Index Sort'] === 'object');
sortEntry.title = 'Set the sorting order of each board independently.'; sortEntry.title = 'Set the sorting order of each board independently.';
$.on(sortEntry.firstChild, 'change', this.cb.perBoardSort); $.on(sortEntry.firstChild, 'change', this.cb.perBoardSort);
entries.splice(2, 0, { entries.splice(3, 0, {
el: sortEntry el: sortEntry
}); });
Header.menu.addEntry({ Header.menu.addEntry({
@ -9398,6 +9399,7 @@ Index = (function() {
}); });
$.on(this.root, 'click', this.cb.hoverToggle); $.on(this.root, 'click', this.cb.hoverToggle);
this.cb.size(); this.cb.size();
this.cb.hover();
this.pagelist = $.el('div', { this.pagelist = $.el('div', {
className: 'pagelist json-index' className: 'pagelist json-index'
}); });
@ -9630,14 +9632,14 @@ Index = (function() {
return Index.buildIndex(); return Index.buildIndex();
}, },
hover: function() { hover: function() {
if (!Conf['Catalog Hover Expand']) { return doc.classList.toggle('catalog-hover-expand', Conf['Catalog Hover Expand']);
return $.rmClass(doc, 'catalog-hover-expand');
}
}, },
hoverToggle: function(e) { hoverToggle: function(e) {
var thread; var input, thread;
if (Conf['Catalog Hover Expand'] && $.hasClass(doc, 'catalog-mode') && !$.modifiedClick(e) && !$.x('ancestor-or-self::a', e.target)) { if (Conf['Catalog Hover Toggle'] && $.hasClass(doc, 'catalog-mode') && !$.modifiedClick(e) && !$.x('ancestor-or-self::a', e.target)) {
$.toggleClass(doc, 'catalog-hover-expand'); input = Index.inputs['Catalog Hover Expand'];
input.checked = !input.checked;
$.event('change', null, input);
if ((thread = Get.threadFromNode(e.target))) { if ((thread = Get.threadFromNode(e.target))) {
Index.cb.catalogReplies.call(thread); Index.cb.catalogReplies.call(thread);
return Index.cb.hoverAdjust.call(thread.OP.nodes); return Index.cb.hoverAdjust.call(thread.OP.nodes);
@ -10706,8 +10708,8 @@ Settings = (function() {
} }
}, },
ads: function(cb) { ads: function(cb) {
return $.onExists(doc, '.ad-cnt, .adg-rects', function(ad) { return $.onExists(doc, '.adg-rects > .desktop', function(ad) {
return $.onExists(ad, 'img, iframe', function() { return $.onExists(ad, 'iframe', function() {
var url; var url;
url = Redirect.to('thread', { url = Redirect.to('thread', {
boardID: 'qa', boardID: 'qa',
@ -18367,14 +18369,18 @@ ThreadWatcher = (function() {
ThreadWatcher.setToggler(toggler, !!data); ThreadWatcher.setToggler(toggler, !!data);
$.on(toggler, 'click', ThreadWatcher.cb.toggle); $.on(toggler, 'click', ThreadWatcher.cb.toggle);
if (data && (data.excerpt == null)) { if (data && (data.excerpt == null)) {
ThreadWatcher.db.extend({ return $.queueTask((function(_this) {
boardID: boardID, return function() {
threadID: threadID, ThreadWatcher.db.extend({
val: { boardID: boardID,
excerpt: Get.threadExcerpt(this.thread) threadID: threadID,
} val: {
}); excerpt: Get.threadExcerpt(_this.thread)
return ThreadWatcher.refresh(); }
});
return ThreadWatcher.refresh();
};
})(this));
} }
}, },
catalogNode: function() { catalogNode: function() {
@ -18467,6 +18473,11 @@ ThreadWatcher = (function() {
if (!(!(data != null ? data.isDead : void 0) && (ref1 = boardID + "." + threadID, indexOf.call(e.detail.threads, ref1) < 0))) { if (!(!(data != null ? data.isDead : void 0) && (ref1 = boardID + "." + threadID, indexOf.call(e.detail.threads, ref1) < 0))) {
continue; continue;
} }
if (!e.detail.threads.some(function(fullID) {
return +fullID.split('.')[1] > threadID;
})) {
continue;
}
nKilled++; nKilled++;
if (Conf['Auto Prune'] || !(data && typeof data === 'object')) { if (Conf['Auto Prune'] || !(data && typeof data === 'object')) {
db["delete"]({ db["delete"]({
@ -22168,7 +22179,7 @@ QR = (function() {
className: className className: className
}); });
$.extend(div, { $.extend(div, {
innerHTML: E(message) + "<br>[<a href=\"javascript:;\">delete</a>] [<a href=\"javascript:;\">delete all</a>]" innerHTML: E(message) + "<br>[<a href=\"javascript:;\">delete post</a>] [<a href=\"javascript:;\">delete all</a>]"
}); });
(this.errors || (this.errors = [])).push(div); (this.errors || (this.errors = [])).push(div);
ref = $$('a', div), rm = ref[0], rmAll = ref[1]; ref = $$('a', div), rm = ref[0], rmAll = ref[1];

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript== // ==UserScript==
// @name 4chan X // @name 4chan X
// @version 1.13.1.4 // @version 1.13.1.5
// @minGMVer 1.14 // @minGMVer 1.14
// @minFFVer 26 // @minFFVer 26
// @namespace 4chan-X // @namespace 4chan-X

View File

@ -1,6 +1,6 @@
// ==UserScript== // ==UserScript==
// @name 4chan X // @name 4chan X
// @version 1.13.1.4 // @version 1.13.1.5
// @minGMVer 1.14 // @minGMVer 1.14
// @minFFVer 26 // @minFFVer 26
// @namespace 4chan-X // @namespace 4chan-X
@ -147,7 +147,7 @@ docSet = function() {
}; };
g = { g = {
VERSION: '1.13.1.4', VERSION: '1.13.1.5',
NAMESPACE: '4chan X.', NAMESPACE: '4chan X.',
boards: {} boards: {}
}; };
@ -385,7 +385,8 @@ Config = (function() {
'Previous Index Mode': 'paged', 'Previous Index Mode': 'paged',
'Index Size': 'small', 'Index Size': 'small',
'Show Replies': [true, 'Show replies in the index, and also in the catalog if "Catalog hover expand" is checked.'], 'Show Replies': [true, 'Show replies in the index, and also in the catalog if "Catalog hover expand" is checked.'],
'Catalog Hover Expand': [true, 'Clicking in the catalog shows more details in the thread you are hovering over.'], 'Catalog Hover Expand': [false, 'Expand the comment and show more details when you hover over a thread in the catalog.'],
'Catalog Hover Toggle': [true, 'Turn "Catalog hover expand" on and off by clicking in the catalog.'],
'Pin Watched Threads': [false, 'Move watched threads to the start of the index.'], 'Pin Watched Threads': [false, 'Move watched threads to the start of the index.'],
'Anchor Hidden Threads': [true, 'Move hidden threads to the end of the index.'], 'Anchor Hidden Threads': [true, 'Move hidden threads to the end of the index.'],
'Refreshed Navigation': [false, 'Refresh index when navigating through pages.'] 'Refreshed Navigation': [false, 'Refresh index when navigating through pages.']
@ -411,7 +412,7 @@ Config = (function() {
'QR.personas': "#options:\"sage\";boards:jp;always", 'QR.personas': "#options:\"sage\";boards:jp;always",
sjisPreview: false sjisPreview: false
}, },
jsWhitelist: 'http://s.4cdn.org\nhttps://s.4cdn.org\nhttp://www.google.com\nhttps://www.google.com\nhttps://www.gstatic.com\nhttp://cdn.mathjax.org\nhttps://cdn.mathjax.org\n\'self\'\n\'unsafe-inline\'\n\'unsafe-eval\'', jsWhitelist: 'http://s.4cdn.org\nhttps://s.4cdn.org\nhttp://www.google.com\nhttps://www.google.com\nhttps://www.gstatic.com\nhttp://cdn.mathjax.org\nhttps://cdn.mathjax.org\n\'self\'\n\'unsafe-inline\'\n\'unsafe-eval\'\n\n# Banner ads\n#http://s.zkcdn.net/ados.js\n#https://s.zkcdn.net/ados.js\n#http://engine.4chan-ads.org\n#https://engine.4chan-ads.org',
captchaLanguage: '', captchaLanguage: '',
time: '%m/%d/%y(%a)%H:%M:%S', time: '%m/%d/%y(%a)%H:%M:%S',
backlink: '>>%id', backlink: '>>%id',
@ -1330,10 +1331,10 @@ body > div[style*=\" top: -10000px;\"] {\n\
:root:not(.ads-loaded) .ad-plea,\n\ :root:not(.ads-loaded) .ad-plea,\n\
:root:not(.ads-loaded) hr.abovePostForm,\n\ :root:not(.ads-loaded) hr.abovePostForm,\n\
:root:not(.ads-loaded) .ad-plea-bottom + hr,\n\ :root:not(.ads-loaded) .ad-plea-bottom + hr,\n\
:root:not(.ads-loaded) #adg-ol + hr {\n\ #adg-ol + hr {\n\
display: none;\n\ display: none;\n\
}\n\ }\n\
:root:not(.ads-loaded) .adg-rects {\n\ .adg-rects {\n\
margin: 0;\n\ margin: 0;\n\
font-size: 0;\n\ font-size: 0;\n\
}\n\ }\n\
@ -2080,8 +2081,8 @@ div[data-checked=\"false\"] > .suboption-list {\n\
display: inline-block;\n\ display: inline-block;\n\
font-style: italic;\n\ font-style: italic;\n\
}\n\ }\n\
.catalog-post > * > .nameBlock,\n\ :root.catalog-hover-expand .catalog-container:hover > * > * > .nameBlock,\n\
.catalog-post > * > .dateTime,\n\ :root.catalog-hover-expand .catalog-container:hover > * > * > .dateTime,\n\
:root.catalog-hover-expand .catalog-container:hover > * > .postMessage:not(:empty) {\n\ :root.catalog-hover-expand .catalog-container:hover > * > .postMessage:not(:empty) {\n\
padding-top: .3em;\n\ padding-top: .3em;\n\
}\n\ }\n\
@ -9318,7 +9319,7 @@ Index = (function() {
}); });
Header.addShortcut('index-refresh', this.button, 590); Header.addShortcut('index-refresh', this.button, 590);
entries = []; entries = [];
inputs = {}; this.inputs = inputs = {};
ref4 = Config.Index; ref4 = Config.Index;
for (name in ref4) { for (name in ref4) {
arr = ref4[name]; arr = ref4[name];
@ -9350,7 +9351,7 @@ Index = (function() {
sortEntry = UI.checkbox('Per-Board Sort Type', 'Per-board sort type', typeof Conf['Index Sort'] === 'object'); sortEntry = UI.checkbox('Per-Board Sort Type', 'Per-board sort type', typeof Conf['Index Sort'] === 'object');
sortEntry.title = 'Set the sorting order of each board independently.'; sortEntry.title = 'Set the sorting order of each board independently.';
$.on(sortEntry.firstChild, 'change', this.cb.perBoardSort); $.on(sortEntry.firstChild, 'change', this.cb.perBoardSort);
entries.splice(2, 0, { entries.splice(3, 0, {
el: sortEntry el: sortEntry
}); });
Header.menu.addEntry({ Header.menu.addEntry({
@ -9398,6 +9399,7 @@ Index = (function() {
}); });
$.on(this.root, 'click', this.cb.hoverToggle); $.on(this.root, 'click', this.cb.hoverToggle);
this.cb.size(); this.cb.size();
this.cb.hover();
this.pagelist = $.el('div', { this.pagelist = $.el('div', {
className: 'pagelist json-index' className: 'pagelist json-index'
}); });
@ -9630,14 +9632,14 @@ Index = (function() {
return Index.buildIndex(); return Index.buildIndex();
}, },
hover: function() { hover: function() {
if (!Conf['Catalog Hover Expand']) { return doc.classList.toggle('catalog-hover-expand', Conf['Catalog Hover Expand']);
return $.rmClass(doc, 'catalog-hover-expand');
}
}, },
hoverToggle: function(e) { hoverToggle: function(e) {
var thread; var input, thread;
if (Conf['Catalog Hover Expand'] && $.hasClass(doc, 'catalog-mode') && !$.modifiedClick(e) && !$.x('ancestor-or-self::a', e.target)) { if (Conf['Catalog Hover Toggle'] && $.hasClass(doc, 'catalog-mode') && !$.modifiedClick(e) && !$.x('ancestor-or-self::a', e.target)) {
$.toggleClass(doc, 'catalog-hover-expand'); input = Index.inputs['Catalog Hover Expand'];
input.checked = !input.checked;
$.event('change', null, input);
if ((thread = Get.threadFromNode(e.target))) { if ((thread = Get.threadFromNode(e.target))) {
Index.cb.catalogReplies.call(thread); Index.cb.catalogReplies.call(thread);
return Index.cb.hoverAdjust.call(thread.OP.nodes); return Index.cb.hoverAdjust.call(thread.OP.nodes);
@ -10706,8 +10708,8 @@ Settings = (function() {
} }
}, },
ads: function(cb) { ads: function(cb) {
return $.onExists(doc, '.ad-cnt, .adg-rects', function(ad) { return $.onExists(doc, '.adg-rects > .desktop', function(ad) {
return $.onExists(ad, 'img, iframe', function() { return $.onExists(ad, 'iframe', function() {
var url; var url;
url = Redirect.to('thread', { url = Redirect.to('thread', {
boardID: 'qa', boardID: 'qa',
@ -18367,14 +18369,18 @@ ThreadWatcher = (function() {
ThreadWatcher.setToggler(toggler, !!data); ThreadWatcher.setToggler(toggler, !!data);
$.on(toggler, 'click', ThreadWatcher.cb.toggle); $.on(toggler, 'click', ThreadWatcher.cb.toggle);
if (data && (data.excerpt == null)) { if (data && (data.excerpt == null)) {
ThreadWatcher.db.extend({ return $.queueTask((function(_this) {
boardID: boardID, return function() {
threadID: threadID, ThreadWatcher.db.extend({
val: { boardID: boardID,
excerpt: Get.threadExcerpt(this.thread) threadID: threadID,
} val: {
}); excerpt: Get.threadExcerpt(_this.thread)
return ThreadWatcher.refresh(); }
});
return ThreadWatcher.refresh();
};
})(this));
} }
}, },
catalogNode: function() { catalogNode: function() {
@ -18467,6 +18473,11 @@ ThreadWatcher = (function() {
if (!(!(data != null ? data.isDead : void 0) && (ref1 = boardID + "." + threadID, indexOf.call(e.detail.threads, ref1) < 0))) { if (!(!(data != null ? data.isDead : void 0) && (ref1 = boardID + "." + threadID, indexOf.call(e.detail.threads, ref1) < 0))) {
continue; continue;
} }
if (!e.detail.threads.some(function(fullID) {
return +fullID.split('.')[1] > threadID;
})) {
continue;
}
nKilled++; nKilled++;
if (Conf['Auto Prune'] || !(data && typeof data === 'object')) { if (Conf['Auto Prune'] || !(data && typeof data === 'object')) {
db["delete"]({ db["delete"]({
@ -22168,7 +22179,7 @@ QR = (function() {
className: className className: className
}); });
$.extend(div, { $.extend(div, {
innerHTML: E(message) + "<br>[<a href=\"javascript:;\">delete</a>] [<a href=\"javascript:;\">delete all</a>]" innerHTML: E(message) + "<br>[<a href=\"javascript:;\">delete post</a>] [<a href=\"javascript:;\">delete all</a>]"
}); });
(this.errors || (this.errors = [])).push(div); (this.errors || (this.errors = [])).push(div);
ref = $$('a', div), rm = ref[0], rmAll = ref[1]; ref = $$('a', div), rm = ref[0], rmAll = ref[1];

Binary file not shown.

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'> <gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='lacclbnghgdicfifcamcmcnilckjamag'> <app appid='lacclbnghgdicfifcamcmcnilckjamag'>
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.13.1.4' /> <updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.13.1.5' />
</app> </app>
</gupdate> </gupdate>

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'> <gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='lacclbnghgdicfifcamcmcnilckjamag'> <app appid='lacclbnghgdicfifcamcmcnilckjamag'>
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.13.1.4' /> <updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.13.1.5' />
</app> </app>
</gupdate> </gupdate>

View File

@ -1,4 +1,4 @@
{ {
"version": "1.13.1.4", "version": "1.13.1.5",
"date": "2016-11-09T23:17:32.436Z" "date": "2016-11-13T22:03:43.907Z"
} }