Release 4chan X v1.11.7.0.

This commit is contained in:
ccd0 2015-08-02 13:44:00 -07:00
parent 8f45172cae
commit 8a030b78e5
13 changed files with 157 additions and 75 deletions

View File

@ -2,6 +2,13 @@
Sometimes the changelog has notes (not comprehensive) acknowledging people's work. This does not mean the changes are their fault, only that their code was used. All changes to the script are chosen by and the fault of the maintainer (ccd0).
### v1.11.7
**v1.11.7.0** *(2015-08-02)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.7.0/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.7.0/builds/4chan-X-noupdate.crx "Chromium version")]
- Based on v1.11.6.0.
- Turn `Custom Board Navigation` off by default. To turn it back on, check `Header` > `Custom board navigation` in the header menu.
- Experimental MS Edge support via https://github.com/ccd0/4chan-x-proxy.
### v1.11.6
**v1.11.6.0** *(2015-07-19)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.6.0/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.6.0/builds/4chan-X-noupdate.crx "Chromium version")]

Binary file not shown.

View File

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

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X beta
// @version 1.11.6.0
// @version 1.11.7.0
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -300,7 +300,7 @@
tripcode: "# Filter any tripfag\n#/^!/",
capcode: "# Set a custom class for mods:\n#/Mod$/;highlight:mod;op:yes\n# Set a custom class for moot:\n#/Admin$/;highlight:moot;op:yes",
subject: "# Filter Generals on /v/:\n#/general/i;boards:v;op:only",
comment: "# Filter Stallman copypasta on /g/:\n#/what you\'re refer+ing to as linux/i;boards:g\n# Filter posts with 20 or more quote links:\n#/(?:>>\\d(?:(?!>>\\d)[^])*){20}/",
comment: "# Filter Stallman copypasta on /g/:\n#/what you\'re refer+ing to as linux/i;boards:g\n# Filter posts with 20 or more quote links:\n#/(?:>>\\d(?:(?!>>\\d)[^])*){20}/\n# Filter posts like T H I S / H / I / S:\n#/^>?\\s?\\w\\s?(\\w)\\s?(\\w)\\s?(\\w).*$[\\s>]+\\1[\\s>]+\\2[\\s>]+\\3/im",
flag: '',
filename: '',
dimensions: "# Highlight potential wallpapers:\n#/1920x1080/;op:yes;highlight;top:no;boards:w,wg",
@ -331,7 +331,7 @@
'Header catalog links': false,
'Bottom Board List': true,
'Shortcut Icons': true,
'Custom Board Navigation': true
'Custom Board Navigation': false
},
boardnav: "[ toggle-all ]\na-replace\nc-replace\ng-replace\nk-replace\nv-replace\nvg-replace\nvr-replace\nck-replace\nco-replace\nfit-replace\njp-replace\nmu-replace\nsp-replace\ntv-replace\nvp-replace\n[external-text:\"FAQ\",\"https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions\"]",
QR: {
@ -411,7 +411,7 @@
doc = d.documentElement;
g = {
VERSION: '1.11.6.0',
VERSION: '1.11.7.0',
NAMESPACE: '4chan X.',
boards: {}
};
@ -631,6 +631,14 @@
if (el = $(selector, root)) {
return cb(el);
}
if ($.engine === 'edge' && d.readyState === 'loading') {
$.asap((function() {
return d.readyState !== 'loading' || $(selector, root);
}), function() {
return $.onExists(root, selector, subtree, cb);
});
return;
}
observer = new MutationObserver(function() {
if (el = $(selector, root)) {
observer.disconnect();
@ -696,7 +704,7 @@
};
$.rm = function(el) {
return el.remove();
return el != null ? el.remove() : void 0;
};
$.rmAll = function(root) {
@ -872,6 +880,9 @@
};
$.engine = (function() {
if (/Edge\//.test(navigator.userAgent)) {
return 'edge';
}
if (/Chrome\//.test(navigator.userAgent)) {
return 'blink';
}
@ -1313,9 +1324,19 @@
quote: $('.postNum > a:nth-of-type(2)', info),
comment: $('.postMessage', post),
links: [],
quotelinks: [],
backlinks: info.getElementsByClassName('backlink')
quotelinks: []
};
if ($.engine === 'edge') {
Object.defineProperty(this.nodes, 'backlinks', {
configurable: true,
enumerable: true,
get: function() {
return info.getElementsByClassName('backlink');
}
});
} else {
this.nodes.backlinks = info.getElementsByClassName('backlink');
}
if (!(this.isReply = $.hasClass(post, 'reply'))) {
this.thread.OP = this;
this.thread.isArchived = !!$('.archivedIcon', info);
@ -1605,9 +1626,19 @@
nameBlock: $('.nameBlock', info),
quote: $('.postNum > a:nth-of-type(2)', info),
comment: $('.postMessage', post),
quotelinks: [],
backlinks: info.getElementsByClassName('backlink')
quotelinks: []
};
if ($.engine === 'edge') {
Object.defineProperty(this.nodes, 'backlinks', {
configurable: true,
enumerable: true,
get: function() {
return info.getElementsByClassName('backlink');
}
});
} else {
this.nodes.backlinks = info.getElementsByClassName('backlink');
}
ref1 = $$('.inline', post);
for (q = 0, len2 = ref1.length; q < len2; q++) {
inline = ref1[q];
@ -3211,7 +3242,7 @@
$.asap((function() {
return $('.board > .thread > .postContainer', doc) || d.readyState !== 'loading';
}), function() {
var board, el, len3, len4, ref6, ref7, ref8, threadRoot, topNavPos, u, v;
var board, el, len3, len4, ref6, ref7, threadRoot, topNavPos, u, v;
if (!Main.isThisPageLegit()) {
return;
}
@ -3232,9 +3263,7 @@
el = ref7[v];
$.rm(el);
}
if ((ref8 = $.id('search-box')) != null) {
ref8.parentNode.remove();
}
$.rm($.id('ctrl-top'));
topNavPos = $.id('delform').previousElementSibling;
$.before(topNavPos, $.el('hr'));
return $.before(topNavPos, Index.navLinks);
@ -8049,13 +8078,9 @@
if (!this.isEnabled) {
return;
}
if (this.nodes.img) {
$.rm(this.nodes.img);
}
$.rm(this.nodes.img);
delete this.nodes.img;
if (this.nodes.iframe) {
$.rm(this.nodes.iframe);
}
$.rm(this.nodes.iframe);
delete this.nodes.iframe;
delete this.occupied;
return this.beforeSetup();
@ -9330,7 +9355,7 @@
if (!(node = QR.nodes[name])) {
continue;
}
node.value = this[name] || node.dataset["default"] || null;
node.value = this[name] || node.dataset["default"] || '';
}
(this.thread !== 'new' ? $.addClass : $.rmClass)(QR.nodes.el, 'reply-to-thread');
this.showFileData();
@ -10568,9 +10593,7 @@
}
$.rmClass(post.nodes.root, 'expanded-image');
$.rmClass(file.thumb, 'expanding');
if (file.videoControls) {
$.rm(file.videoControls);
}
$.rm(file.videoControls);
file.thumb.parentNode.href = file.url;
file.thumb.parentNode.target = '_blank';
ref = ['isExpanding', 'isExpanded', 'videoControls', 'wasPlaying', 'scrollIntoView'];
@ -18312,6 +18335,7 @@
" flex: auto;\n" +
" display: -webkit-flex;\n" +
" display: flex;\n" +
" width: 0px; /* XXX Fixes Edge not shrinking the board list below default size when needed */\n" +
" }\n" +
" :root.fixed:not(.centered-links) #full-board-list > .boardList > a,\n" +
" :root.fixed:not(.centered-links) #full-board-list > .boardList > span:not(.space):not(.spacer) {\n" +
@ -19316,6 +19340,7 @@
".has-file #qr-filename {\n" +
" -webkit-flex: 1 1 auto;\n" +
" flex: 1 1 auto;\n" +
" width: 0px; /* XXX Fixes filename not shrinking to allow space for buttons in Edge */\n" +
" display: inline-block;\n" +
" padding: 0;\n" +
" padding-left: 3px;\n" +

Binary file not shown.

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
// @version 1.11.6.0
// @version 1.11.7.0
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -299,7 +299,7 @@
tripcode: "# Filter any tripfag\n#/^!/",
capcode: "# Set a custom class for mods:\n#/Mod$/;highlight:mod;op:yes\n# Set a custom class for moot:\n#/Admin$/;highlight:moot;op:yes",
subject: "# Filter Generals on /v/:\n#/general/i;boards:v;op:only",
comment: "# Filter Stallman copypasta on /g/:\n#/what you\'re refer+ing to as linux/i;boards:g\n# Filter posts with 20 or more quote links:\n#/(?:>>\\d(?:(?!>>\\d)[^])*){20}/",
comment: "# Filter Stallman copypasta on /g/:\n#/what you\'re refer+ing to as linux/i;boards:g\n# Filter posts with 20 or more quote links:\n#/(?:>>\\d(?:(?!>>\\d)[^])*){20}/\n# Filter posts like T H I S / H / I / S:\n#/^>?\\s?\\w\\s?(\\w)\\s?(\\w)\\s?(\\w).*$[\\s>]+\\1[\\s>]+\\2[\\s>]+\\3/im",
flag: '',
filename: '',
dimensions: "# Highlight potential wallpapers:\n#/1920x1080/;op:yes;highlight;top:no;boards:w,wg",
@ -330,7 +330,7 @@
'Header catalog links': false,
'Bottom Board List': true,
'Shortcut Icons': true,
'Custom Board Navigation': true
'Custom Board Navigation': false
},
boardnav: "[ toggle-all ]\na-replace\nc-replace\ng-replace\nk-replace\nv-replace\nvg-replace\nvr-replace\nck-replace\nco-replace\nfit-replace\njp-replace\nmu-replace\nsp-replace\ntv-replace\nvp-replace\n[external-text:\"FAQ\",\"https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions\"]",
QR: {
@ -410,7 +410,7 @@
doc = d.documentElement;
g = {
VERSION: '1.11.6.0',
VERSION: '1.11.7.0',
NAMESPACE: '4chan X.',
boards: {}
};
@ -630,6 +630,14 @@
if (el = $(selector, root)) {
return cb(el);
}
if ($.engine === 'edge' && d.readyState === 'loading') {
$.asap((function() {
return d.readyState !== 'loading' || $(selector, root);
}), function() {
return $.onExists(root, selector, subtree, cb);
});
return;
}
observer = new MutationObserver(function() {
if (el = $(selector, root)) {
observer.disconnect();
@ -695,7 +703,7 @@
};
$.rm = function(el) {
return el.remove();
return el != null ? el.remove() : void 0;
};
$.rmAll = function(root) {
@ -871,6 +879,9 @@
};
$.engine = (function() {
if (/Edge\//.test(navigator.userAgent)) {
return 'edge';
}
if (/Chrome\//.test(navigator.userAgent)) {
return 'blink';
}
@ -1312,9 +1323,19 @@
quote: $('.postNum > a:nth-of-type(2)', info),
comment: $('.postMessage', post),
links: [],
quotelinks: [],
backlinks: info.getElementsByClassName('backlink')
quotelinks: []
};
if ($.engine === 'edge') {
Object.defineProperty(this.nodes, 'backlinks', {
configurable: true,
enumerable: true,
get: function() {
return info.getElementsByClassName('backlink');
}
});
} else {
this.nodes.backlinks = info.getElementsByClassName('backlink');
}
if (!(this.isReply = $.hasClass(post, 'reply'))) {
this.thread.OP = this;
this.thread.isArchived = !!$('.archivedIcon', info);
@ -1604,9 +1625,19 @@
nameBlock: $('.nameBlock', info),
quote: $('.postNum > a:nth-of-type(2)', info),
comment: $('.postMessage', post),
quotelinks: [],
backlinks: info.getElementsByClassName('backlink')
quotelinks: []
};
if ($.engine === 'edge') {
Object.defineProperty(this.nodes, 'backlinks', {
configurable: true,
enumerable: true,
get: function() {
return info.getElementsByClassName('backlink');
}
});
} else {
this.nodes.backlinks = info.getElementsByClassName('backlink');
}
ref1 = $$('.inline', post);
for (q = 0, len2 = ref1.length; q < len2; q++) {
inline = ref1[q];
@ -3210,7 +3241,7 @@
$.asap((function() {
return $('.board > .thread > .postContainer', doc) || d.readyState !== 'loading';
}), function() {
var board, el, len3, len4, ref6, ref7, ref8, threadRoot, topNavPos, u, v;
var board, el, len3, len4, ref6, ref7, threadRoot, topNavPos, u, v;
if (!Main.isThisPageLegit()) {
return;
}
@ -3231,9 +3262,7 @@
el = ref7[v];
$.rm(el);
}
if ((ref8 = $.id('search-box')) != null) {
ref8.parentNode.remove();
}
$.rm($.id('ctrl-top'));
topNavPos = $.id('delform').previousElementSibling;
$.before(topNavPos, $.el('hr'));
return $.before(topNavPos, Index.navLinks);
@ -8048,13 +8077,9 @@
if (!this.isEnabled) {
return;
}
if (this.nodes.img) {
$.rm(this.nodes.img);
}
$.rm(this.nodes.img);
delete this.nodes.img;
if (this.nodes.iframe) {
$.rm(this.nodes.iframe);
}
$.rm(this.nodes.iframe);
delete this.nodes.iframe;
delete this.occupied;
return this.beforeSetup();
@ -9329,7 +9354,7 @@
if (!(node = QR.nodes[name])) {
continue;
}
node.value = this[name] || node.dataset["default"] || null;
node.value = this[name] || node.dataset["default"] || '';
}
(this.thread !== 'new' ? $.addClass : $.rmClass)(QR.nodes.el, 'reply-to-thread');
this.showFileData();
@ -10567,9 +10592,7 @@
}
$.rmClass(post.nodes.root, 'expanded-image');
$.rmClass(file.thumb, 'expanding');
if (file.videoControls) {
$.rm(file.videoControls);
}
$.rm(file.videoControls);
file.thumb.parentNode.href = file.url;
file.thumb.parentNode.target = '_blank';
ref = ['isExpanding', 'isExpanded', 'videoControls', 'wasPlaying', 'scrollIntoView'];
@ -18311,6 +18334,7 @@
" flex: auto;\n" +
" display: -webkit-flex;\n" +
" display: flex;\n" +
" width: 0px; /* XXX Fixes Edge not shrinking the board list below default size when needed */\n" +
" }\n" +
" :root.fixed:not(.centered-links) #full-board-list > .boardList > a,\n" +
" :root.fixed:not(.centered-links) #full-board-list > .boardList > span:not(.space):not(.spacer) {\n" +
@ -19315,6 +19339,7 @@
".has-file #qr-filename {\n" +
" -webkit-flex: 1 1 auto;\n" +
" flex: 1 1 auto;\n" +
" width: 0px; /* XXX Fixes filename not shrinking to allow space for buttons in Edge */\n" +
" display: inline-block;\n" +
" padding: 0;\n" +
" padding-left: 3px;\n" +

Binary file not shown.

View File

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

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
// @version 1.11.6.0
// @version 1.11.7.0
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -300,7 +300,7 @@
tripcode: "# Filter any tripfag\n#/^!/",
capcode: "# Set a custom class for mods:\n#/Mod$/;highlight:mod;op:yes\n# Set a custom class for moot:\n#/Admin$/;highlight:moot;op:yes",
subject: "# Filter Generals on /v/:\n#/general/i;boards:v;op:only",
comment: "# Filter Stallman copypasta on /g/:\n#/what you\'re refer+ing to as linux/i;boards:g\n# Filter posts with 20 or more quote links:\n#/(?:>>\\d(?:(?!>>\\d)[^])*){20}/",
comment: "# Filter Stallman copypasta on /g/:\n#/what you\'re refer+ing to as linux/i;boards:g\n# Filter posts with 20 or more quote links:\n#/(?:>>\\d(?:(?!>>\\d)[^])*){20}/\n# Filter posts like T H I S / H / I / S:\n#/^>?\\s?\\w\\s?(\\w)\\s?(\\w)\\s?(\\w).*$[\\s>]+\\1[\\s>]+\\2[\\s>]+\\3/im",
flag: '',
filename: '',
dimensions: "# Highlight potential wallpapers:\n#/1920x1080/;op:yes;highlight;top:no;boards:w,wg",
@ -331,7 +331,7 @@
'Header catalog links': false,
'Bottom Board List': true,
'Shortcut Icons': true,
'Custom Board Navigation': true
'Custom Board Navigation': false
},
boardnav: "[ toggle-all ]\na-replace\nc-replace\ng-replace\nk-replace\nv-replace\nvg-replace\nvr-replace\nck-replace\nco-replace\nfit-replace\njp-replace\nmu-replace\nsp-replace\ntv-replace\nvp-replace\n[external-text:\"FAQ\",\"https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions\"]",
QR: {
@ -411,7 +411,7 @@
doc = d.documentElement;
g = {
VERSION: '1.11.6.0',
VERSION: '1.11.7.0',
NAMESPACE: '4chan X.',
boards: {}
};
@ -631,6 +631,14 @@
if (el = $(selector, root)) {
return cb(el);
}
if ($.engine === 'edge' && d.readyState === 'loading') {
$.asap((function() {
return d.readyState !== 'loading' || $(selector, root);
}), function() {
return $.onExists(root, selector, subtree, cb);
});
return;
}
observer = new MutationObserver(function() {
if (el = $(selector, root)) {
observer.disconnect();
@ -696,7 +704,7 @@
};
$.rm = function(el) {
return el.remove();
return el != null ? el.remove() : void 0;
};
$.rmAll = function(root) {
@ -872,6 +880,9 @@
};
$.engine = (function() {
if (/Edge\//.test(navigator.userAgent)) {
return 'edge';
}
if (/Chrome\//.test(navigator.userAgent)) {
return 'blink';
}
@ -1313,9 +1324,19 @@
quote: $('.postNum > a:nth-of-type(2)', info),
comment: $('.postMessage', post),
links: [],
quotelinks: [],
backlinks: info.getElementsByClassName('backlink')
quotelinks: []
};
if ($.engine === 'edge') {
Object.defineProperty(this.nodes, 'backlinks', {
configurable: true,
enumerable: true,
get: function() {
return info.getElementsByClassName('backlink');
}
});
} else {
this.nodes.backlinks = info.getElementsByClassName('backlink');
}
if (!(this.isReply = $.hasClass(post, 'reply'))) {
this.thread.OP = this;
this.thread.isArchived = !!$('.archivedIcon', info);
@ -1605,9 +1626,19 @@
nameBlock: $('.nameBlock', info),
quote: $('.postNum > a:nth-of-type(2)', info),
comment: $('.postMessage', post),
quotelinks: [],
backlinks: info.getElementsByClassName('backlink')
quotelinks: []
};
if ($.engine === 'edge') {
Object.defineProperty(this.nodes, 'backlinks', {
configurable: true,
enumerable: true,
get: function() {
return info.getElementsByClassName('backlink');
}
});
} else {
this.nodes.backlinks = info.getElementsByClassName('backlink');
}
ref1 = $$('.inline', post);
for (q = 0, len2 = ref1.length; q < len2; q++) {
inline = ref1[q];
@ -3211,7 +3242,7 @@
$.asap((function() {
return $('.board > .thread > .postContainer', doc) || d.readyState !== 'loading';
}), function() {
var board, el, len3, len4, ref6, ref7, ref8, threadRoot, topNavPos, u, v;
var board, el, len3, len4, ref6, ref7, threadRoot, topNavPos, u, v;
if (!Main.isThisPageLegit()) {
return;
}
@ -3232,9 +3263,7 @@
el = ref7[v];
$.rm(el);
}
if ((ref8 = $.id('search-box')) != null) {
ref8.parentNode.remove();
}
$.rm($.id('ctrl-top'));
topNavPos = $.id('delform').previousElementSibling;
$.before(topNavPos, $.el('hr'));
return $.before(topNavPos, Index.navLinks);
@ -8049,13 +8078,9 @@
if (!this.isEnabled) {
return;
}
if (this.nodes.img) {
$.rm(this.nodes.img);
}
$.rm(this.nodes.img);
delete this.nodes.img;
if (this.nodes.iframe) {
$.rm(this.nodes.iframe);
}
$.rm(this.nodes.iframe);
delete this.nodes.iframe;
delete this.occupied;
return this.beforeSetup();
@ -9330,7 +9355,7 @@
if (!(node = QR.nodes[name])) {
continue;
}
node.value = this[name] || node.dataset["default"] || null;
node.value = this[name] || node.dataset["default"] || '';
}
(this.thread !== 'new' ? $.addClass : $.rmClass)(QR.nodes.el, 'reply-to-thread');
this.showFileData();
@ -10568,9 +10593,7 @@
}
$.rmClass(post.nodes.root, 'expanded-image');
$.rmClass(file.thumb, 'expanding');
if (file.videoControls) {
$.rm(file.videoControls);
}
$.rm(file.videoControls);
file.thumb.parentNode.href = file.url;
file.thumb.parentNode.target = '_blank';
ref = ['isExpanding', 'isExpanded', 'videoControls', 'wasPlaying', 'scrollIntoView'];
@ -18312,6 +18335,7 @@
" flex: auto;\n" +
" display: -webkit-flex;\n" +
" display: flex;\n" +
" width: 0px; /* XXX Fixes Edge not shrinking the board list below default size when needed */\n" +
" }\n" +
" :root.fixed:not(.centered-links) #full-board-list > .boardList > a,\n" +
" :root.fixed:not(.centered-links) #full-board-list > .boardList > span:not(.space):not(.spacer) {\n" +
@ -19316,6 +19340,7 @@
".has-file #qr-filename {\n" +
" -webkit-flex: 1 1 auto;\n" +
" flex: 1 1 auto;\n" +
" width: 0px; /* XXX Fixes filename not shrinking to allow space for buttons in Edge */\n" +
" display: inline-block;\n" +
" padding: 0;\n" +
" padding-left: 3px;\n" +

Binary file not shown.

View File

@ -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://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.11.6.0' />
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.11.7.0' />
</app>
</gupdate>

View File

@ -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://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.11.6.0' />
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.11.7.0' />
</app>
</gupdate>

View File

@ -3,8 +3,8 @@
"description": "Cross-browser userscript for maximum lurking on 4chan.",
"meta": {
"name": "4chan X",
"version": "1.11.6.0",
"date": "2015-07-20T02:05:39.061Z",
"version": "1.11.7.0",
"date": "2015-08-02T20:43:11.702Z",
"repo": "https://github.com/ccd0/4chan-x/",
"page": "https://github.com/ccd0/4chan-x",
"downloads": "https://ccd0.github.io/4chan-x/builds/",