Release 4chan X v1.11.28.1.
This commit is contained in:
parent
1d22cb7b71
commit
6ff8eba6f4
@ -4,6 +4,10 @@ Sometimes the changelog has notes (not comprehensive) acknowledging people's wor
|
||||
|
||||
### v1.11.28
|
||||
|
||||
**v1.11.28.1** *(2016-03-16)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.28.1/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.28.1/builds/4chan-X-noupdate.crx "Chromium version")]
|
||||
- Add option to the header menu in threads to set the maximum number of replies to show. Currently off by default. Not yet compatible with `Quote Threading`.
|
||||

|
||||
|
||||
**v1.11.28.0** *(2016-03-13)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.28.0/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.28.0/builds/4chan-X-noupdate.crx "Chromium version")]
|
||||
- Based on v1.11.27.2.
|
||||
- New sorting mode: `Last long reply` sorts threads by time of last visible reply over 100 characters, or time of creation if no such reply exists.
|
||||
|
||||
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
// ==UserScript==
|
||||
// @name 4chan X beta
|
||||
// @version 1.11.28.0
|
||||
// @version 1.11.28.1
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X beta
|
||||
// @version 1.11.28.0
|
||||
// @version 1.11.28.1
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -119,7 +119,7 @@
|
||||
'use strict';
|
||||
|
||||
(function() {
|
||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, Build, Callbacks, Captcha, CatalogLinks, CatalogThread, Clone, Conf, Config, Connection, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, E, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, ImageCommon, ImageExpand, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, NormalizeURL, Notice, PSAHiding, PassLink, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadExcerpt, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume, c, d, doc, g,
|
||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, Build, Callbacks, Captcha, CatalogLinks, CatalogThread, Clone, Conf, Config, Connection, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, E, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, ImageCommon, ImageExpand, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, NormalizeURL, Notice, PSAHiding, PassLink, Polyfill, Post, PostHiding, PostSuccessful, PruneReplies, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadExcerpt, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume, c, d, doc, g,
|
||||
slice = [].slice,
|
||||
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
|
||||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||
@ -427,7 +427,11 @@
|
||||
'Interval': 30
|
||||
},
|
||||
customCooldown: 0,
|
||||
customCooldownEnabled: true
|
||||
customCooldownEnabled: true,
|
||||
pruneReplies: {
|
||||
'Prune Replies': false,
|
||||
'Max Replies': 1000
|
||||
}
|
||||
};
|
||||
|
||||
Conf = {};
|
||||
@ -439,7 +443,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.11.28.0',
|
||||
VERSION: '1.11.28.1',
|
||||
NAMESPACE: '4chan X.',
|
||||
boards: {}
|
||||
};
|
||||
@ -13244,6 +13248,88 @@
|
||||
}
|
||||
};
|
||||
|
||||
PruneReplies = {
|
||||
init: function() {
|
||||
var el, label;
|
||||
if (!(g.VIEW === 'thread' && !Conf['Quote Threading'])) {
|
||||
return;
|
||||
}
|
||||
label = UI.checkbox('Prune Replies', 'Show Last');
|
||||
el = $.el('span', {
|
||||
title: 'Maximum number of replies to show.'
|
||||
}, {
|
||||
innerHTML: " <input type=\"number\" name=\"Max Replies\" min=\"0\" step=\"1\" value=\"" + E(Conf["Max Replies"]) + "\" class=\"field\">"
|
||||
});
|
||||
$.prepend(el, label);
|
||||
this.inputs = {
|
||||
enabled: label.firstElementChild,
|
||||
replies: el.lastElementChild
|
||||
};
|
||||
$.on(this.inputs.enabled, 'change', $.cb.checked);
|
||||
$.on(this.inputs.replies, 'change', $.cb.value);
|
||||
Header.menu.addEntry({
|
||||
el: el,
|
||||
order: 190
|
||||
});
|
||||
return Thread.callbacks.push({
|
||||
name: 'Prune Replies',
|
||||
cb: this.node
|
||||
});
|
||||
},
|
||||
position: 0,
|
||||
hidden: 0,
|
||||
total: 0,
|
||||
node: function() {
|
||||
PruneReplies.thread = this;
|
||||
PruneReplies.total = this.posts.keys.length - 1;
|
||||
$.on(PruneReplies.inputs.enabled, 'change', PruneReplies.setEnabled);
|
||||
$.on(PruneReplies.inputs.enabled, 'change', PruneReplies.update);
|
||||
if (Conf['Prune Replies']) {
|
||||
PruneReplies.setEnabled();
|
||||
return PruneReplies.update();
|
||||
}
|
||||
},
|
||||
setEnabled: function() {
|
||||
var onOff;
|
||||
PruneReplies.container || (PruneReplies.container = $.frag());
|
||||
onOff = Conf['Prune Replies'] ? $.on : $.off;
|
||||
onOff(PruneReplies.inputs.replies, 'change', PruneReplies.update);
|
||||
return onOff(d, 'ThreadUpdate', PruneReplies.update);
|
||||
},
|
||||
update: function(e) {
|
||||
var OP, frag, hidden2, post, posts, ref, results;
|
||||
if (e && e.type === 'ThreadUpdate' && !e.detail[404]) {
|
||||
PruneReplies.total += e.detail.newPosts.length;
|
||||
}
|
||||
hidden2 = Conf['Prune Replies'] ? Math.max(PruneReplies.total - +Conf["Max Replies"], 0) : 0;
|
||||
ref = PruneReplies.thread, posts = ref.posts, OP = ref.OP;
|
||||
if (PruneReplies.hidden < hidden2) {
|
||||
results = [];
|
||||
while (PruneReplies.hidden < hidden2 && PruneReplies.position < posts.keys.length) {
|
||||
post = posts[posts.keys[PruneReplies.position++]];
|
||||
if (post.isReply && !post.isFetchedQuote) {
|
||||
$.add(PruneReplies.container, post.nodes.root);
|
||||
results.push(PruneReplies.hidden++);
|
||||
} else {
|
||||
results.push(void 0);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
} else if (PruneReplies.hidden > hidden2) {
|
||||
frag = $.frag();
|
||||
while (PruneReplies.hidden > hidden2 && PruneReplies.position > 0) {
|
||||
post = posts[posts.keys[--PruneReplies.position]];
|
||||
if (post.isReply && !post.isFetchedQuote) {
|
||||
$.prepend(frag, post.nodes.root);
|
||||
PruneReplies.hidden--;
|
||||
}
|
||||
}
|
||||
$.after(OP.nodes.root, frag);
|
||||
return $.event('PostsInserted');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
ThreadExcerpt = {
|
||||
init: function() {
|
||||
if (g.BOARD.ID !== 'f' || g.VIEW !== 'thread' || !Conf['Thread Excerpt']) {
|
||||
@ -14793,14 +14879,13 @@
|
||||
return Unread.update();
|
||||
},
|
||||
read: $.debounce(100, function(e) {
|
||||
var ID, count, data, height, ref, ref1, root;
|
||||
var ID, count, data, ref, ref1, root;
|
||||
if (!Unread.posts.size && Unread.readCount !== Unread.thread.posts.keys.length) {
|
||||
Unread.saveLastReadPost();
|
||||
}
|
||||
if (d.hidden || !Unread.posts.size) {
|
||||
return;
|
||||
}
|
||||
height = doc.clientHeight;
|
||||
count = 0;
|
||||
while (Unread.position) {
|
||||
ref = Unread.position, ID = ref.ID, data = ref.data;
|
||||
@ -19609,6 +19694,10 @@
|
||||
".credits {\n" +
|
||||
" float: right;\n" +
|
||||
"}\n" +
|
||||
".export, .import, .reset {\n" +
|
||||
" cursor: pointer;\n" +
|
||||
" text-decoration: none !important;\n" +
|
||||
"}\n" +
|
||||
".tab-selected {\n" +
|
||||
" font-weight: 700;\n" +
|
||||
"}\n" +
|
||||
@ -20836,6 +20925,9 @@
|
||||
" position: relative;\n" +
|
||||
" top: 2px;\n" +
|
||||
"}\n" +
|
||||
".entry input[type=\"number\"] {\n" +
|
||||
" width: 4.5em;\n" +
|
||||
"}\n" +
|
||||
".entry.has-shortcut-text {\n" +
|
||||
" display: flex;\n" +
|
||||
" justify-content: space-between;\n" +
|
||||
@ -20879,10 +20971,6 @@
|
||||
" left: 0px;\n" +
|
||||
" width: 200px;\n" +
|
||||
"}\n" +
|
||||
".export, .import, .reset {\n" +
|
||||
" cursor: pointer;\n" +
|
||||
" text-decoration: none !important;\n" +
|
||||
"}\n" +
|
||||
"/* Custom Board Titles */\n" +
|
||||
".boardTitle, .boardSubtitle {\n" +
|
||||
" white-space: pre-line;\n" +
|
||||
@ -21212,9 +21300,6 @@
|
||||
":root.gal-hide-thumbnails:.gal-fit-height:not(.gal-pdf) .gal-count {\n" +
|
||||
" right: 28px !important;\n" +
|
||||
"}\n" +
|
||||
".field[name=\"Slide Delay\"] {\n" +
|
||||
" width: 4em;\n" +
|
||||
"}\n" +
|
||||
":root.gallery-open.fixed #header-bar:not(.autohide),\n" +
|
||||
":root.gallery-open.fixed #header-bar:not(.autohide) #shortcuts .fa::before {\n" +
|
||||
" visibility: hidden;\n" +
|
||||
@ -21735,7 +21820,7 @@
|
||||
cssWWW: "#captcha-cnt {\n" +
|
||||
" height: auto;\n" +
|
||||
"}",
|
||||
features: [['Polyfill', Polyfill], ['Normalize URL', NormalizeURL], ['Captcha Configuration', Captcha.replace], ['Redirect', Redirect], ['Header', Header], ['Catalog Links', CatalogLinks], ['Settings', Settings], ['Index Generator', Index], ['Disable Autoplay', AntiAutoplay], ['Announcement Hiding', PSAHiding], ['Fourchan thingies', Fourchan], ['Color User IDs', IDColor], ['Highlight by User ID', IDHighlight], ['Custom CSS', CustomCSS], ['Thread Links', ThreadLinks], ['Linkify', Linkify], ['Reveal Spoilers', RemoveSpoilers], ['Resurrect Quotes', Quotify], ['Filter', Filter], ['Thread Hiding Buttons', ThreadHiding], ['Reply Hiding Buttons', PostHiding], ['Recursive', Recursive], ['Strike-through Quotes', QuoteStrikeThrough], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Pass Link', PassLink], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Edit Link', QR.oekaki.menu], ['Download Link', DownloadLink], ['Archive Link', ArchiveLink], ['Quote Inlining', QuoteInline], ['Quote Previewing', QuotePreview], ['Quote Backlinks', QuoteBacklink], ['Mark Quotes of You', QuoteYou], ['Mark OP Quotes', QuoteOP], ['Mark Cross-thread Quotes', QuoteCT], ['Anonymize', Anonymize], ['Time Formatting', Time], ['Relative Post Dates', RelativeDates], ['File Info Formatting', FileInfo], ['Fappe Tyme', FappeTyme], ['Gallery', Gallery], ['Gallery (menu)', Gallery.menu], ['Sauce', Sauce], ['Image Expansion', ImageExpand], ['Image Expansion (Menu)', ImageExpand.menu], ['Reveal Spoiler Thumbnails', RevealSpoilers], ['Image Loading', ImageLoader], ['Image Hover', ImageHover], ['Volume Control', Volume], ['WEBM Metadata', Metadata], ['Comment Expansion', ExpandComment], ['Thread Expansion', ExpandThread], ['Thread Excerpt', ThreadExcerpt], ['Favicon', Favicon], ['Unread', Unread], ['Quote Threading', QuoteThreading], ['Thread Stats', ThreadStats], ['Thread Updater', ThreadUpdater], ['Thread Watcher', ThreadWatcher], ['Thread Watcher (Menu)', ThreadWatcher.menu], ['Mark New IPs', MarkNewIPs], ['Index Navigation', Nav], ['Keybinds', Keybinds], ['Banner', Banner], ['Flash Features', Flash]]
|
||||
features: [['Polyfill', Polyfill], ['Normalize URL', NormalizeURL], ['Captcha Configuration', Captcha.replace], ['Redirect', Redirect], ['Header', Header], ['Catalog Links', CatalogLinks], ['Settings', Settings], ['Index Generator', Index], ['Disable Autoplay', AntiAutoplay], ['Announcement Hiding', PSAHiding], ['Fourchan thingies', Fourchan], ['Color User IDs', IDColor], ['Highlight by User ID', IDHighlight], ['Custom CSS', CustomCSS], ['Thread Links', ThreadLinks], ['Linkify', Linkify], ['Reveal Spoilers', RemoveSpoilers], ['Resurrect Quotes', Quotify], ['Filter', Filter], ['Thread Hiding Buttons', ThreadHiding], ['Reply Hiding Buttons', PostHiding], ['Recursive', Recursive], ['Strike-through Quotes', QuoteStrikeThrough], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Pass Link', PassLink], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Edit Link', QR.oekaki.menu], ['Download Link', DownloadLink], ['Archive Link', ArchiveLink], ['Quote Inlining', QuoteInline], ['Quote Previewing', QuotePreview], ['Quote Backlinks', QuoteBacklink], ['Mark Quotes of You', QuoteYou], ['Mark OP Quotes', QuoteOP], ['Mark Cross-thread Quotes', QuoteCT], ['Anonymize', Anonymize], ['Time Formatting', Time], ['Relative Post Dates', RelativeDates], ['File Info Formatting', FileInfo], ['Fappe Tyme', FappeTyme], ['Gallery', Gallery], ['Gallery (menu)', Gallery.menu], ['Sauce', Sauce], ['Image Expansion', ImageExpand], ['Image Expansion (Menu)', ImageExpand.menu], ['Reveal Spoiler Thumbnails', RevealSpoilers], ['Image Loading', ImageLoader], ['Image Hover', ImageHover], ['Volume Control', Volume], ['WEBM Metadata', Metadata], ['Comment Expansion', ExpandComment], ['Thread Expansion', ExpandThread], ['Thread Excerpt', ThreadExcerpt], ['Favicon', Favicon], ['Unread', Unread], ['Quote Threading', QuoteThreading], ['Thread Stats', ThreadStats], ['Thread Updater', ThreadUpdater], ['Thread Watcher', ThreadWatcher], ['Thread Watcher (Menu)', ThreadWatcher.menu], ['Mark New IPs', MarkNewIPs], ['Index Navigation', Nav], ['Keybinds', Keybinds], ['Banner', Banner], ['Flash Features', Flash], ['Prune Replies', PruneReplies]]
|
||||
};
|
||||
|
||||
Main.init();
|
||||
|
||||
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.11.28.0
|
||||
// @version 1.11.28.1
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -119,7 +119,7 @@
|
||||
'use strict';
|
||||
|
||||
(function() {
|
||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, Build, Callbacks, Captcha, CatalogLinks, CatalogThread, Clone, Conf, Config, Connection, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, E, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, ImageCommon, ImageExpand, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, NormalizeURL, Notice, PSAHiding, PassLink, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadExcerpt, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume, c, d, doc, g,
|
||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, Build, Callbacks, Captcha, CatalogLinks, CatalogThread, Clone, Conf, Config, Connection, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, E, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, ImageCommon, ImageExpand, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, NormalizeURL, Notice, PSAHiding, PassLink, Polyfill, Post, PostHiding, PostSuccessful, PruneReplies, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadExcerpt, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume, c, d, doc, g,
|
||||
slice = [].slice,
|
||||
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
|
||||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||
@ -427,7 +427,11 @@
|
||||
'Interval': 30
|
||||
},
|
||||
customCooldown: 0,
|
||||
customCooldownEnabled: true
|
||||
customCooldownEnabled: true,
|
||||
pruneReplies: {
|
||||
'Prune Replies': false,
|
||||
'Max Replies': 1000
|
||||
}
|
||||
};
|
||||
|
||||
Conf = {};
|
||||
@ -439,7 +443,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.11.28.0',
|
||||
VERSION: '1.11.28.1',
|
||||
NAMESPACE: '4chan X.',
|
||||
boards: {}
|
||||
};
|
||||
@ -13244,6 +13248,88 @@
|
||||
}
|
||||
};
|
||||
|
||||
PruneReplies = {
|
||||
init: function() {
|
||||
var el, label;
|
||||
if (!(g.VIEW === 'thread' && !Conf['Quote Threading'])) {
|
||||
return;
|
||||
}
|
||||
label = UI.checkbox('Prune Replies', 'Show Last');
|
||||
el = $.el('span', {
|
||||
title: 'Maximum number of replies to show.'
|
||||
}, {
|
||||
innerHTML: " <input type=\"number\" name=\"Max Replies\" min=\"0\" step=\"1\" value=\"" + E(Conf["Max Replies"]) + "\" class=\"field\">"
|
||||
});
|
||||
$.prepend(el, label);
|
||||
this.inputs = {
|
||||
enabled: label.firstElementChild,
|
||||
replies: el.lastElementChild
|
||||
};
|
||||
$.on(this.inputs.enabled, 'change', $.cb.checked);
|
||||
$.on(this.inputs.replies, 'change', $.cb.value);
|
||||
Header.menu.addEntry({
|
||||
el: el,
|
||||
order: 190
|
||||
});
|
||||
return Thread.callbacks.push({
|
||||
name: 'Prune Replies',
|
||||
cb: this.node
|
||||
});
|
||||
},
|
||||
position: 0,
|
||||
hidden: 0,
|
||||
total: 0,
|
||||
node: function() {
|
||||
PruneReplies.thread = this;
|
||||
PruneReplies.total = this.posts.keys.length - 1;
|
||||
$.on(PruneReplies.inputs.enabled, 'change', PruneReplies.setEnabled);
|
||||
$.on(PruneReplies.inputs.enabled, 'change', PruneReplies.update);
|
||||
if (Conf['Prune Replies']) {
|
||||
PruneReplies.setEnabled();
|
||||
return PruneReplies.update();
|
||||
}
|
||||
},
|
||||
setEnabled: function() {
|
||||
var onOff;
|
||||
PruneReplies.container || (PruneReplies.container = $.frag());
|
||||
onOff = Conf['Prune Replies'] ? $.on : $.off;
|
||||
onOff(PruneReplies.inputs.replies, 'change', PruneReplies.update);
|
||||
return onOff(d, 'ThreadUpdate', PruneReplies.update);
|
||||
},
|
||||
update: function(e) {
|
||||
var OP, frag, hidden2, post, posts, ref, results;
|
||||
if (e && e.type === 'ThreadUpdate' && !e.detail[404]) {
|
||||
PruneReplies.total += e.detail.newPosts.length;
|
||||
}
|
||||
hidden2 = Conf['Prune Replies'] ? Math.max(PruneReplies.total - +Conf["Max Replies"], 0) : 0;
|
||||
ref = PruneReplies.thread, posts = ref.posts, OP = ref.OP;
|
||||
if (PruneReplies.hidden < hidden2) {
|
||||
results = [];
|
||||
while (PruneReplies.hidden < hidden2 && PruneReplies.position < posts.keys.length) {
|
||||
post = posts[posts.keys[PruneReplies.position++]];
|
||||
if (post.isReply && !post.isFetchedQuote) {
|
||||
$.add(PruneReplies.container, post.nodes.root);
|
||||
results.push(PruneReplies.hidden++);
|
||||
} else {
|
||||
results.push(void 0);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
} else if (PruneReplies.hidden > hidden2) {
|
||||
frag = $.frag();
|
||||
while (PruneReplies.hidden > hidden2 && PruneReplies.position > 0) {
|
||||
post = posts[posts.keys[--PruneReplies.position]];
|
||||
if (post.isReply && !post.isFetchedQuote) {
|
||||
$.prepend(frag, post.nodes.root);
|
||||
PruneReplies.hidden--;
|
||||
}
|
||||
}
|
||||
$.after(OP.nodes.root, frag);
|
||||
return $.event('PostsInserted');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
ThreadExcerpt = {
|
||||
init: function() {
|
||||
if (g.BOARD.ID !== 'f' || g.VIEW !== 'thread' || !Conf['Thread Excerpt']) {
|
||||
@ -14793,14 +14879,13 @@
|
||||
return Unread.update();
|
||||
},
|
||||
read: $.debounce(100, function(e) {
|
||||
var ID, count, data, height, ref, ref1, root;
|
||||
var ID, count, data, ref, ref1, root;
|
||||
if (!Unread.posts.size && Unread.readCount !== Unread.thread.posts.keys.length) {
|
||||
Unread.saveLastReadPost();
|
||||
}
|
||||
if (d.hidden || !Unread.posts.size) {
|
||||
return;
|
||||
}
|
||||
height = doc.clientHeight;
|
||||
count = 0;
|
||||
while (Unread.position) {
|
||||
ref = Unread.position, ID = ref.ID, data = ref.data;
|
||||
@ -19609,6 +19694,10 @@
|
||||
".credits {\n" +
|
||||
" float: right;\n" +
|
||||
"}\n" +
|
||||
".export, .import, .reset {\n" +
|
||||
" cursor: pointer;\n" +
|
||||
" text-decoration: none !important;\n" +
|
||||
"}\n" +
|
||||
".tab-selected {\n" +
|
||||
" font-weight: 700;\n" +
|
||||
"}\n" +
|
||||
@ -20836,6 +20925,9 @@
|
||||
" position: relative;\n" +
|
||||
" top: 2px;\n" +
|
||||
"}\n" +
|
||||
".entry input[type=\"number\"] {\n" +
|
||||
" width: 4.5em;\n" +
|
||||
"}\n" +
|
||||
".entry.has-shortcut-text {\n" +
|
||||
" display: flex;\n" +
|
||||
" justify-content: space-between;\n" +
|
||||
@ -20879,10 +20971,6 @@
|
||||
" left: 0px;\n" +
|
||||
" width: 200px;\n" +
|
||||
"}\n" +
|
||||
".export, .import, .reset {\n" +
|
||||
" cursor: pointer;\n" +
|
||||
" text-decoration: none !important;\n" +
|
||||
"}\n" +
|
||||
"/* Custom Board Titles */\n" +
|
||||
".boardTitle, .boardSubtitle {\n" +
|
||||
" white-space: pre-line;\n" +
|
||||
@ -21212,9 +21300,6 @@
|
||||
":root.gal-hide-thumbnails:.gal-fit-height:not(.gal-pdf) .gal-count {\n" +
|
||||
" right: 28px !important;\n" +
|
||||
"}\n" +
|
||||
".field[name=\"Slide Delay\"] {\n" +
|
||||
" width: 4em;\n" +
|
||||
"}\n" +
|
||||
":root.gallery-open.fixed #header-bar:not(.autohide),\n" +
|
||||
":root.gallery-open.fixed #header-bar:not(.autohide) #shortcuts .fa::before {\n" +
|
||||
" visibility: hidden;\n" +
|
||||
@ -21735,7 +21820,7 @@
|
||||
cssWWW: "#captcha-cnt {\n" +
|
||||
" height: auto;\n" +
|
||||
"}",
|
||||
features: [['Polyfill', Polyfill], ['Normalize URL', NormalizeURL], ['Captcha Configuration', Captcha.replace], ['Redirect', Redirect], ['Header', Header], ['Catalog Links', CatalogLinks], ['Settings', Settings], ['Index Generator', Index], ['Disable Autoplay', AntiAutoplay], ['Announcement Hiding', PSAHiding], ['Fourchan thingies', Fourchan], ['Color User IDs', IDColor], ['Highlight by User ID', IDHighlight], ['Custom CSS', CustomCSS], ['Thread Links', ThreadLinks], ['Linkify', Linkify], ['Reveal Spoilers', RemoveSpoilers], ['Resurrect Quotes', Quotify], ['Filter', Filter], ['Thread Hiding Buttons', ThreadHiding], ['Reply Hiding Buttons', PostHiding], ['Recursive', Recursive], ['Strike-through Quotes', QuoteStrikeThrough], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Pass Link', PassLink], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Edit Link', QR.oekaki.menu], ['Download Link', DownloadLink], ['Archive Link', ArchiveLink], ['Quote Inlining', QuoteInline], ['Quote Previewing', QuotePreview], ['Quote Backlinks', QuoteBacklink], ['Mark Quotes of You', QuoteYou], ['Mark OP Quotes', QuoteOP], ['Mark Cross-thread Quotes', QuoteCT], ['Anonymize', Anonymize], ['Time Formatting', Time], ['Relative Post Dates', RelativeDates], ['File Info Formatting', FileInfo], ['Fappe Tyme', FappeTyme], ['Gallery', Gallery], ['Gallery (menu)', Gallery.menu], ['Sauce', Sauce], ['Image Expansion', ImageExpand], ['Image Expansion (Menu)', ImageExpand.menu], ['Reveal Spoiler Thumbnails', RevealSpoilers], ['Image Loading', ImageLoader], ['Image Hover', ImageHover], ['Volume Control', Volume], ['WEBM Metadata', Metadata], ['Comment Expansion', ExpandComment], ['Thread Expansion', ExpandThread], ['Thread Excerpt', ThreadExcerpt], ['Favicon', Favicon], ['Unread', Unread], ['Quote Threading', QuoteThreading], ['Thread Stats', ThreadStats], ['Thread Updater', ThreadUpdater], ['Thread Watcher', ThreadWatcher], ['Thread Watcher (Menu)', ThreadWatcher.menu], ['Mark New IPs', MarkNewIPs], ['Index Navigation', Nav], ['Keybinds', Keybinds], ['Banner', Banner], ['Flash Features', Flash]]
|
||||
features: [['Polyfill', Polyfill], ['Normalize URL', NormalizeURL], ['Captcha Configuration', Captcha.replace], ['Redirect', Redirect], ['Header', Header], ['Catalog Links', CatalogLinks], ['Settings', Settings], ['Index Generator', Index], ['Disable Autoplay', AntiAutoplay], ['Announcement Hiding', PSAHiding], ['Fourchan thingies', Fourchan], ['Color User IDs', IDColor], ['Highlight by User ID', IDHighlight], ['Custom CSS', CustomCSS], ['Thread Links', ThreadLinks], ['Linkify', Linkify], ['Reveal Spoilers', RemoveSpoilers], ['Resurrect Quotes', Quotify], ['Filter', Filter], ['Thread Hiding Buttons', ThreadHiding], ['Reply Hiding Buttons', PostHiding], ['Recursive', Recursive], ['Strike-through Quotes', QuoteStrikeThrough], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Pass Link', PassLink], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Edit Link', QR.oekaki.menu], ['Download Link', DownloadLink], ['Archive Link', ArchiveLink], ['Quote Inlining', QuoteInline], ['Quote Previewing', QuotePreview], ['Quote Backlinks', QuoteBacklink], ['Mark Quotes of You', QuoteYou], ['Mark OP Quotes', QuoteOP], ['Mark Cross-thread Quotes', QuoteCT], ['Anonymize', Anonymize], ['Time Formatting', Time], ['Relative Post Dates', RelativeDates], ['File Info Formatting', FileInfo], ['Fappe Tyme', FappeTyme], ['Gallery', Gallery], ['Gallery (menu)', Gallery.menu], ['Sauce', Sauce], ['Image Expansion', ImageExpand], ['Image Expansion (Menu)', ImageExpand.menu], ['Reveal Spoiler Thumbnails', RevealSpoilers], ['Image Loading', ImageLoader], ['Image Hover', ImageHover], ['Volume Control', Volume], ['WEBM Metadata', Metadata], ['Comment Expansion', ExpandComment], ['Thread Expansion', ExpandThread], ['Thread Excerpt', ThreadExcerpt], ['Favicon', Favicon], ['Unread', Unread], ['Quote Threading', QuoteThreading], ['Thread Stats', ThreadStats], ['Thread Updater', ThreadUpdater], ['Thread Watcher', ThreadWatcher], ['Thread Watcher (Menu)', ThreadWatcher.menu], ['Mark New IPs', MarkNewIPs], ['Index Navigation', Nav], ['Keybinds', Keybinds], ['Banner', Banner], ['Flash Features', Flash], ['Prune Replies', PruneReplies]]
|
||||
};
|
||||
|
||||
Main.init();
|
||||
|
||||
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.11.28.0
|
||||
// @version 1.11.28.1
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.11.28.0
|
||||
// @version 1.11.28.1
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -119,7 +119,7 @@
|
||||
'use strict';
|
||||
|
||||
(function() {
|
||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, Build, Callbacks, Captcha, CatalogLinks, CatalogThread, Clone, Conf, Config, Connection, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, E, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, ImageCommon, ImageExpand, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, NormalizeURL, Notice, PSAHiding, PassLink, Polyfill, Post, PostHiding, PostSuccessful, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadExcerpt, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume, c, d, doc, g,
|
||||
var $, $$, Anonymize, AntiAutoplay, ArchiveLink, Banner, Board, Build, Callbacks, Captcha, CatalogLinks, CatalogThread, Clone, Conf, Config, Connection, CrossOrigin, CustomCSS, DataBoard, DeleteLink, DownloadLink, E, Embedding, ExpandComment, ExpandThread, FappeTyme, Favicon, Fetcher, FileInfo, Filter, Flash, Fourchan, Gallery, Get, Header, IDColor, IDHighlight, ImageCommon, ImageExpand, ImageHover, ImageLoader, Index, Keybinds, Linkify, Main, MarkNewIPs, Menu, Metadata, Nav, NormalizeURL, Notice, PSAHiding, PassLink, Polyfill, Post, PostHiding, PostSuccessful, PruneReplies, QR, QuoteBacklink, QuoteCT, QuoteInline, QuoteOP, QuotePreview, QuoteStrikeThrough, QuoteThreading, QuoteYou, Quotify, RandomAccessList, Recursive, Redirect, RelativeDates, RemoveSpoilers, Report, ReportLink, RevealSpoilers, Sauce, Settings, ShimSet, SimpleDict, Thread, ThreadExcerpt, ThreadHiding, ThreadLinks, ThreadStats, ThreadUpdater, ThreadWatcher, Time, UI, Unread, Volume, c, d, doc, g,
|
||||
slice = [].slice,
|
||||
indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; },
|
||||
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
|
||||
@ -427,7 +427,11 @@
|
||||
'Interval': 30
|
||||
},
|
||||
customCooldown: 0,
|
||||
customCooldownEnabled: true
|
||||
customCooldownEnabled: true,
|
||||
pruneReplies: {
|
||||
'Prune Replies': false,
|
||||
'Max Replies': 1000
|
||||
}
|
||||
};
|
||||
|
||||
Conf = {};
|
||||
@ -439,7 +443,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.11.28.0',
|
||||
VERSION: '1.11.28.1',
|
||||
NAMESPACE: '4chan X.',
|
||||
boards: {}
|
||||
};
|
||||
@ -13244,6 +13248,88 @@
|
||||
}
|
||||
};
|
||||
|
||||
PruneReplies = {
|
||||
init: function() {
|
||||
var el, label;
|
||||
if (!(g.VIEW === 'thread' && !Conf['Quote Threading'])) {
|
||||
return;
|
||||
}
|
||||
label = UI.checkbox('Prune Replies', 'Show Last');
|
||||
el = $.el('span', {
|
||||
title: 'Maximum number of replies to show.'
|
||||
}, {
|
||||
innerHTML: " <input type=\"number\" name=\"Max Replies\" min=\"0\" step=\"1\" value=\"" + E(Conf["Max Replies"]) + "\" class=\"field\">"
|
||||
});
|
||||
$.prepend(el, label);
|
||||
this.inputs = {
|
||||
enabled: label.firstElementChild,
|
||||
replies: el.lastElementChild
|
||||
};
|
||||
$.on(this.inputs.enabled, 'change', $.cb.checked);
|
||||
$.on(this.inputs.replies, 'change', $.cb.value);
|
||||
Header.menu.addEntry({
|
||||
el: el,
|
||||
order: 190
|
||||
});
|
||||
return Thread.callbacks.push({
|
||||
name: 'Prune Replies',
|
||||
cb: this.node
|
||||
});
|
||||
},
|
||||
position: 0,
|
||||
hidden: 0,
|
||||
total: 0,
|
||||
node: function() {
|
||||
PruneReplies.thread = this;
|
||||
PruneReplies.total = this.posts.keys.length - 1;
|
||||
$.on(PruneReplies.inputs.enabled, 'change', PruneReplies.setEnabled);
|
||||
$.on(PruneReplies.inputs.enabled, 'change', PruneReplies.update);
|
||||
if (Conf['Prune Replies']) {
|
||||
PruneReplies.setEnabled();
|
||||
return PruneReplies.update();
|
||||
}
|
||||
},
|
||||
setEnabled: function() {
|
||||
var onOff;
|
||||
PruneReplies.container || (PruneReplies.container = $.frag());
|
||||
onOff = Conf['Prune Replies'] ? $.on : $.off;
|
||||
onOff(PruneReplies.inputs.replies, 'change', PruneReplies.update);
|
||||
return onOff(d, 'ThreadUpdate', PruneReplies.update);
|
||||
},
|
||||
update: function(e) {
|
||||
var OP, frag, hidden2, post, posts, ref, results;
|
||||
if (e && e.type === 'ThreadUpdate' && !e.detail[404]) {
|
||||
PruneReplies.total += e.detail.newPosts.length;
|
||||
}
|
||||
hidden2 = Conf['Prune Replies'] ? Math.max(PruneReplies.total - +Conf["Max Replies"], 0) : 0;
|
||||
ref = PruneReplies.thread, posts = ref.posts, OP = ref.OP;
|
||||
if (PruneReplies.hidden < hidden2) {
|
||||
results = [];
|
||||
while (PruneReplies.hidden < hidden2 && PruneReplies.position < posts.keys.length) {
|
||||
post = posts[posts.keys[PruneReplies.position++]];
|
||||
if (post.isReply && !post.isFetchedQuote) {
|
||||
$.add(PruneReplies.container, post.nodes.root);
|
||||
results.push(PruneReplies.hidden++);
|
||||
} else {
|
||||
results.push(void 0);
|
||||
}
|
||||
}
|
||||
return results;
|
||||
} else if (PruneReplies.hidden > hidden2) {
|
||||
frag = $.frag();
|
||||
while (PruneReplies.hidden > hidden2 && PruneReplies.position > 0) {
|
||||
post = posts[posts.keys[--PruneReplies.position]];
|
||||
if (post.isReply && !post.isFetchedQuote) {
|
||||
$.prepend(frag, post.nodes.root);
|
||||
PruneReplies.hidden--;
|
||||
}
|
||||
}
|
||||
$.after(OP.nodes.root, frag);
|
||||
return $.event('PostsInserted');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
ThreadExcerpt = {
|
||||
init: function() {
|
||||
if (g.BOARD.ID !== 'f' || g.VIEW !== 'thread' || !Conf['Thread Excerpt']) {
|
||||
@ -14793,14 +14879,13 @@
|
||||
return Unread.update();
|
||||
},
|
||||
read: $.debounce(100, function(e) {
|
||||
var ID, count, data, height, ref, ref1, root;
|
||||
var ID, count, data, ref, ref1, root;
|
||||
if (!Unread.posts.size && Unread.readCount !== Unread.thread.posts.keys.length) {
|
||||
Unread.saveLastReadPost();
|
||||
}
|
||||
if (d.hidden || !Unread.posts.size) {
|
||||
return;
|
||||
}
|
||||
height = doc.clientHeight;
|
||||
count = 0;
|
||||
while (Unread.position) {
|
||||
ref = Unread.position, ID = ref.ID, data = ref.data;
|
||||
@ -19609,6 +19694,10 @@
|
||||
".credits {\n" +
|
||||
" float: right;\n" +
|
||||
"}\n" +
|
||||
".export, .import, .reset {\n" +
|
||||
" cursor: pointer;\n" +
|
||||
" text-decoration: none !important;\n" +
|
||||
"}\n" +
|
||||
".tab-selected {\n" +
|
||||
" font-weight: 700;\n" +
|
||||
"}\n" +
|
||||
@ -20836,6 +20925,9 @@
|
||||
" position: relative;\n" +
|
||||
" top: 2px;\n" +
|
||||
"}\n" +
|
||||
".entry input[type=\"number\"] {\n" +
|
||||
" width: 4.5em;\n" +
|
||||
"}\n" +
|
||||
".entry.has-shortcut-text {\n" +
|
||||
" display: flex;\n" +
|
||||
" justify-content: space-between;\n" +
|
||||
@ -20879,10 +20971,6 @@
|
||||
" left: 0px;\n" +
|
||||
" width: 200px;\n" +
|
||||
"}\n" +
|
||||
".export, .import, .reset {\n" +
|
||||
" cursor: pointer;\n" +
|
||||
" text-decoration: none !important;\n" +
|
||||
"}\n" +
|
||||
"/* Custom Board Titles */\n" +
|
||||
".boardTitle, .boardSubtitle {\n" +
|
||||
" white-space: pre-line;\n" +
|
||||
@ -21212,9 +21300,6 @@
|
||||
":root.gal-hide-thumbnails:.gal-fit-height:not(.gal-pdf) .gal-count {\n" +
|
||||
" right: 28px !important;\n" +
|
||||
"}\n" +
|
||||
".field[name=\"Slide Delay\"] {\n" +
|
||||
" width: 4em;\n" +
|
||||
"}\n" +
|
||||
":root.gallery-open.fixed #header-bar:not(.autohide),\n" +
|
||||
":root.gallery-open.fixed #header-bar:not(.autohide) #shortcuts .fa::before {\n" +
|
||||
" visibility: hidden;\n" +
|
||||
@ -21735,7 +21820,7 @@
|
||||
cssWWW: "#captcha-cnt {\n" +
|
||||
" height: auto;\n" +
|
||||
"}",
|
||||
features: [['Polyfill', Polyfill], ['Normalize URL', NormalizeURL], ['Captcha Configuration', Captcha.replace], ['Redirect', Redirect], ['Header', Header], ['Catalog Links', CatalogLinks], ['Settings', Settings], ['Index Generator', Index], ['Disable Autoplay', AntiAutoplay], ['Announcement Hiding', PSAHiding], ['Fourchan thingies', Fourchan], ['Color User IDs', IDColor], ['Highlight by User ID', IDHighlight], ['Custom CSS', CustomCSS], ['Thread Links', ThreadLinks], ['Linkify', Linkify], ['Reveal Spoilers', RemoveSpoilers], ['Resurrect Quotes', Quotify], ['Filter', Filter], ['Thread Hiding Buttons', ThreadHiding], ['Reply Hiding Buttons', PostHiding], ['Recursive', Recursive], ['Strike-through Quotes', QuoteStrikeThrough], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Pass Link', PassLink], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Edit Link', QR.oekaki.menu], ['Download Link', DownloadLink], ['Archive Link', ArchiveLink], ['Quote Inlining', QuoteInline], ['Quote Previewing', QuotePreview], ['Quote Backlinks', QuoteBacklink], ['Mark Quotes of You', QuoteYou], ['Mark OP Quotes', QuoteOP], ['Mark Cross-thread Quotes', QuoteCT], ['Anonymize', Anonymize], ['Time Formatting', Time], ['Relative Post Dates', RelativeDates], ['File Info Formatting', FileInfo], ['Fappe Tyme', FappeTyme], ['Gallery', Gallery], ['Gallery (menu)', Gallery.menu], ['Sauce', Sauce], ['Image Expansion', ImageExpand], ['Image Expansion (Menu)', ImageExpand.menu], ['Reveal Spoiler Thumbnails', RevealSpoilers], ['Image Loading', ImageLoader], ['Image Hover', ImageHover], ['Volume Control', Volume], ['WEBM Metadata', Metadata], ['Comment Expansion', ExpandComment], ['Thread Expansion', ExpandThread], ['Thread Excerpt', ThreadExcerpt], ['Favicon', Favicon], ['Unread', Unread], ['Quote Threading', QuoteThreading], ['Thread Stats', ThreadStats], ['Thread Updater', ThreadUpdater], ['Thread Watcher', ThreadWatcher], ['Thread Watcher (Menu)', ThreadWatcher.menu], ['Mark New IPs', MarkNewIPs], ['Index Navigation', Nav], ['Keybinds', Keybinds], ['Banner', Banner], ['Flash Features', Flash]]
|
||||
features: [['Polyfill', Polyfill], ['Normalize URL', NormalizeURL], ['Captcha Configuration', Captcha.replace], ['Redirect', Redirect], ['Header', Header], ['Catalog Links', CatalogLinks], ['Settings', Settings], ['Index Generator', Index], ['Disable Autoplay', AntiAutoplay], ['Announcement Hiding', PSAHiding], ['Fourchan thingies', Fourchan], ['Color User IDs', IDColor], ['Highlight by User ID', IDHighlight], ['Custom CSS', CustomCSS], ['Thread Links', ThreadLinks], ['Linkify', Linkify], ['Reveal Spoilers', RemoveSpoilers], ['Resurrect Quotes', Quotify], ['Filter', Filter], ['Thread Hiding Buttons', ThreadHiding], ['Reply Hiding Buttons', PostHiding], ['Recursive', Recursive], ['Strike-through Quotes', QuoteStrikeThrough], ['Quick Reply', QR], ['Cooldown', QR.cooldown], ['Pass Link', PassLink], ['Menu', Menu], ['Index Generator (Menu)', Index.menu], ['Report Link', ReportLink], ['Thread Hiding (Menu)', ThreadHiding.menu], ['Reply Hiding (Menu)', PostHiding.menu], ['Delete Link', DeleteLink], ['Filter (Menu)', Filter.menu], ['Edit Link', QR.oekaki.menu], ['Download Link', DownloadLink], ['Archive Link', ArchiveLink], ['Quote Inlining', QuoteInline], ['Quote Previewing', QuotePreview], ['Quote Backlinks', QuoteBacklink], ['Mark Quotes of You', QuoteYou], ['Mark OP Quotes', QuoteOP], ['Mark Cross-thread Quotes', QuoteCT], ['Anonymize', Anonymize], ['Time Formatting', Time], ['Relative Post Dates', RelativeDates], ['File Info Formatting', FileInfo], ['Fappe Tyme', FappeTyme], ['Gallery', Gallery], ['Gallery (menu)', Gallery.menu], ['Sauce', Sauce], ['Image Expansion', ImageExpand], ['Image Expansion (Menu)', ImageExpand.menu], ['Reveal Spoiler Thumbnails', RevealSpoilers], ['Image Loading', ImageLoader], ['Image Hover', ImageHover], ['Volume Control', Volume], ['WEBM Metadata', Metadata], ['Comment Expansion', ExpandComment], ['Thread Expansion', ExpandThread], ['Thread Excerpt', ThreadExcerpt], ['Favicon', Favicon], ['Unread', Unread], ['Quote Threading', QuoteThreading], ['Thread Stats', ThreadStats], ['Thread Updater', ThreadUpdater], ['Thread Watcher', ThreadWatcher], ['Thread Watcher (Menu)', ThreadWatcher.menu], ['Mark New IPs', MarkNewIPs], ['Index Navigation', Nav], ['Keybinds', Keybinds], ['Banner', Banner], ['Flash Features', Flash], ['Prune Replies', PruneReplies]]
|
||||
};
|
||||
|
||||
Main.init();
|
||||
|
||||
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
||||
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
||||
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.11.28.0' />
|
||||
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.11.28.1' />
|
||||
</app>
|
||||
</gupdate>
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
||||
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
||||
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.11.28.0' />
|
||||
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.11.28.1' />
|
||||
</app>
|
||||
</gupdate>
|
||||
|
||||
|
||||
BIN
img/1.11.28.1.png
Normal file
BIN
img/1.11.28.1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@ -1,4 +1,4 @@
|
||||
{
|
||||
"version": "1.11.28.0",
|
||||
"date": "2016-03-13T22:50:13.404Z"
|
||||
"version": "1.11.28.1",
|
||||
"date": "2016-03-16T10:59:02.457Z"
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user