Release 4chan X v1.11.0.4.
This commit is contained in:
parent
9538fa5cd7
commit
213301cb68
@ -4,6 +4,9 @@ The links to individual versions below are to copies of the script with the upda
|
||||
|
||||
## v1.11.0
|
||||
|
||||
**v1.11.0.4** *(2015-06-20)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.0.4/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.0.4/builds/4chan-X-noupdate.crx "Chromium version")]
|
||||
- Noscript captcha improvements, including the ability to click the image rather than the little checkbox.
|
||||
|
||||
**v1.11.0.3** *(2015-06-19)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.0.3/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.0.3/builds/4chan-X-noupdate.crx "Chromium version")]
|
||||
- Merge v1.10.14.4: Update script for new non-Javascript captcha using image selection.
|
||||
|
||||
|
||||
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
// ==UserScript==
|
||||
// @name 4chan X beta
|
||||
// @version 1.11.0.3
|
||||
// @version 1.11.0.4
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X beta
|
||||
// @version 1.11.0.3
|
||||
// @version 1.11.0.4
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -237,7 +237,7 @@
|
||||
'Auto-load captcha': [false, 'Automatically load the captcha in the QR even if your post is empty.', 1],
|
||||
'Post on Captcha Completion': [false, 'Submit the post immediately when the captcha is completed.', 1],
|
||||
'Bottom QR Link': [true, 'Places a link on the bottom of threads to open the QR.', 1],
|
||||
'Captcha Fixes': [true, 'Make captcha more keyboard-navigable.']
|
||||
'Captcha Fixes': [true, 'Make captcha easier to use, especially with the keyboard.']
|
||||
},
|
||||
'Quote Links': {
|
||||
'Quote Backlinks': [true, 'Add quote backlinks.'],
|
||||
@ -399,7 +399,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.11.0.3',
|
||||
VERSION: '1.11.0.4',
|
||||
NAMESPACE: '4chan X.',
|
||||
boards: {}
|
||||
};
|
||||
@ -7616,12 +7616,15 @@
|
||||
|
||||
Captcha.fixes = {
|
||||
css: '.rc-imageselect-target > div:focus {\n outline: 2px solid #4a90e2;\n}\n.rc-button-default:focus {\n box-shadow: inset 0 0 0 2px #0063d6;\n}',
|
||||
cssNoscript: '.fbc-payload-imageselect {\n position: relative;\n}\n.fbc-payload-imageselect > label {\n position: absolute;\n display: block;\n height: 93.3px;\n width: 93.3px;\n}\nlabel[data-row="0"] {top: 0px;}\nlabel[data-row="1"] {top: 93.3px;}\nlabel[data-row="2"] {top: 186.6px;}\nlabel[data-col="0"] {left: 0px;}\nlabel[data-col="1"] {left: 93.3px;}\nlabel[data-col="2"] {left: 186.6px;}',
|
||||
init: function() {
|
||||
switch (location.pathname.split('/')[3]) {
|
||||
case 'anchor':
|
||||
return this.initMain();
|
||||
case 'frame':
|
||||
return this.initPopup();
|
||||
case 'fallback':
|
||||
return this.initNoscript();
|
||||
}
|
||||
},
|
||||
initMain: function() {
|
||||
@ -7651,6 +7654,10 @@
|
||||
});
|
||||
return $.on(d, 'keydown', this.keybinds.bind(this));
|
||||
},
|
||||
initNoscript: function() {
|
||||
$.addStyle(this.cssNoscript);
|
||||
return this.addLabels();
|
||||
},
|
||||
fixImages: function() {
|
||||
var img, k, len1, ref;
|
||||
this.images = $$('.rc-imageselect-target > div');
|
||||
@ -7660,6 +7667,27 @@
|
||||
img.tabIndex = 0;
|
||||
}
|
||||
},
|
||||
addLabels: function() {
|
||||
var checkbox, i, imageSelect, label, labels;
|
||||
imageSelect = $('.fbc-payload-imageselect');
|
||||
labels = (function() {
|
||||
var k, len1, ref, results;
|
||||
ref = $$('input', imageSelect);
|
||||
results = [];
|
||||
for (i = k = 0, len1 = ref.length; k < len1; i = ++k) {
|
||||
checkbox = ref[i];
|
||||
checkbox.id = "checkbox-" + i;
|
||||
label = $.el('label', {
|
||||
htmlFor: checkbox.id
|
||||
});
|
||||
label.dataset.row = Math.floor(i / 3);
|
||||
label.dataset.col = i % 3;
|
||||
results.push(label);
|
||||
}
|
||||
return results;
|
||||
})();
|
||||
return $.add(imageSelect, labels);
|
||||
},
|
||||
keybinds: function(e) {
|
||||
var dx, reload, verify, x;
|
||||
if (!(this.images && doc.contains(this.images[0]) && d.activeElement)) {
|
||||
@ -16063,17 +16091,16 @@
|
||||
$.ready(function() {
|
||||
return Captcha.noscript.initFrame();
|
||||
});
|
||||
} else {
|
||||
$.get('Captcha Fixes', true, function(arg) {
|
||||
var enabled;
|
||||
enabled = arg['Captcha Fixes'];
|
||||
if (enabled) {
|
||||
return $.ready(function() {
|
||||
return Captcha.fixes.init();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
$.get('Captcha Fixes', true, function(arg) {
|
||||
var enabled;
|
||||
enabled = arg['Captcha Fixes'];
|
||||
if (enabled) {
|
||||
return $.ready(function() {
|
||||
return Captcha.fixes.init();
|
||||
});
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (location.hostname === 'www.4chan.org') {
|
||||
@ -17223,6 +17250,9 @@
|
||||
"#thread-watcher {\n" +
|
||||
" z-index: 10;\n" +
|
||||
"}\n" +
|
||||
":root.fixed:not(.gallery-open) #header-bar:not(.autohide) {\n" +
|
||||
" z-index: 5;\n" +
|
||||
"}\n" +
|
||||
"/* Header */\n" +
|
||||
".fixed.top-header body {\n" +
|
||||
" padding-top: 2em;\n" +
|
||||
@ -18187,6 +18217,10 @@
|
||||
" min-width: 300px;\n" +
|
||||
" border-radius: 3px 3px 0 0;\n" +
|
||||
"}\n" +
|
||||
"#qr > form {\n" +
|
||||
" max-height: calc(100vh - 75px);\n" +
|
||||
" overflow-y: auto;\n" +
|
||||
"}\n" +
|
||||
"#qrtab {\n" +
|
||||
" border-radius: 3px 3px 0 0;\n" +
|
||||
"}\n" +
|
||||
@ -18285,9 +18319,9 @@
|
||||
"#qr-captcha-iframe {\n" +
|
||||
" width: 302px;\n" +
|
||||
" height: 423px;\n" +
|
||||
" max-width: 100vw;\n" +
|
||||
" max-height: calc(100vh - 210px);\n" +
|
||||
" overflow: auto;\n" +
|
||||
" border: 0;\n" +
|
||||
" display: block;\n" +
|
||||
" margin: auto;\n" +
|
||||
"}\n" +
|
||||
".goog-bubble-content {\n" +
|
||||
" max-width: 100vw;\n" +
|
||||
@ -18488,6 +18522,8 @@
|
||||
"}\n" +
|
||||
".textarea {\n" +
|
||||
" position: relative;\n" +
|
||||
" display: -webkit-flex;\n" +
|
||||
" display: flex;\n" +
|
||||
"}\n" +
|
||||
":root.webkit .textarea {\n" +
|
||||
" margin-bottom: -2px;\n" +
|
||||
|
||||
Binary file not shown.
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.11.0.3
|
||||
// @version 1.11.0.4
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -236,7 +236,7 @@
|
||||
'Auto-load captcha': [false, 'Automatically load the captcha in the QR even if your post is empty.', 1],
|
||||
'Post on Captcha Completion': [false, 'Submit the post immediately when the captcha is completed.', 1],
|
||||
'Bottom QR Link': [true, 'Places a link on the bottom of threads to open the QR.', 1],
|
||||
'Captcha Fixes': [true, 'Make captcha more keyboard-navigable.']
|
||||
'Captcha Fixes': [true, 'Make captcha easier to use, especially with the keyboard.']
|
||||
},
|
||||
'Quote Links': {
|
||||
'Quote Backlinks': [true, 'Add quote backlinks.'],
|
||||
@ -398,7 +398,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.11.0.3',
|
||||
VERSION: '1.11.0.4',
|
||||
NAMESPACE: '4chan X.',
|
||||
boards: {}
|
||||
};
|
||||
@ -7615,12 +7615,15 @@
|
||||
|
||||
Captcha.fixes = {
|
||||
css: '.rc-imageselect-target > div:focus {\n outline: 2px solid #4a90e2;\n}\n.rc-button-default:focus {\n box-shadow: inset 0 0 0 2px #0063d6;\n}',
|
||||
cssNoscript: '.fbc-payload-imageselect {\n position: relative;\n}\n.fbc-payload-imageselect > label {\n position: absolute;\n display: block;\n height: 93.3px;\n width: 93.3px;\n}\nlabel[data-row="0"] {top: 0px;}\nlabel[data-row="1"] {top: 93.3px;}\nlabel[data-row="2"] {top: 186.6px;}\nlabel[data-col="0"] {left: 0px;}\nlabel[data-col="1"] {left: 93.3px;}\nlabel[data-col="2"] {left: 186.6px;}',
|
||||
init: function() {
|
||||
switch (location.pathname.split('/')[3]) {
|
||||
case 'anchor':
|
||||
return this.initMain();
|
||||
case 'frame':
|
||||
return this.initPopup();
|
||||
case 'fallback':
|
||||
return this.initNoscript();
|
||||
}
|
||||
},
|
||||
initMain: function() {
|
||||
@ -7650,6 +7653,10 @@
|
||||
});
|
||||
return $.on(d, 'keydown', this.keybinds.bind(this));
|
||||
},
|
||||
initNoscript: function() {
|
||||
$.addStyle(this.cssNoscript);
|
||||
return this.addLabels();
|
||||
},
|
||||
fixImages: function() {
|
||||
var img, k, len1, ref;
|
||||
this.images = $$('.rc-imageselect-target > div');
|
||||
@ -7659,6 +7666,27 @@
|
||||
img.tabIndex = 0;
|
||||
}
|
||||
},
|
||||
addLabels: function() {
|
||||
var checkbox, i, imageSelect, label, labels;
|
||||
imageSelect = $('.fbc-payload-imageselect');
|
||||
labels = (function() {
|
||||
var k, len1, ref, results;
|
||||
ref = $$('input', imageSelect);
|
||||
results = [];
|
||||
for (i = k = 0, len1 = ref.length; k < len1; i = ++k) {
|
||||
checkbox = ref[i];
|
||||
checkbox.id = "checkbox-" + i;
|
||||
label = $.el('label', {
|
||||
htmlFor: checkbox.id
|
||||
});
|
||||
label.dataset.row = Math.floor(i / 3);
|
||||
label.dataset.col = i % 3;
|
||||
results.push(label);
|
||||
}
|
||||
return results;
|
||||
})();
|
||||
return $.add(imageSelect, labels);
|
||||
},
|
||||
keybinds: function(e) {
|
||||
var dx, reload, verify, x;
|
||||
if (!(this.images && doc.contains(this.images[0]) && d.activeElement)) {
|
||||
@ -16062,17 +16090,16 @@
|
||||
$.ready(function() {
|
||||
return Captcha.noscript.initFrame();
|
||||
});
|
||||
} else {
|
||||
$.get('Captcha Fixes', true, function(arg) {
|
||||
var enabled;
|
||||
enabled = arg['Captcha Fixes'];
|
||||
if (enabled) {
|
||||
return $.ready(function() {
|
||||
return Captcha.fixes.init();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
$.get('Captcha Fixes', true, function(arg) {
|
||||
var enabled;
|
||||
enabled = arg['Captcha Fixes'];
|
||||
if (enabled) {
|
||||
return $.ready(function() {
|
||||
return Captcha.fixes.init();
|
||||
});
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (location.hostname === 'www.4chan.org') {
|
||||
@ -17222,6 +17249,9 @@
|
||||
"#thread-watcher {\n" +
|
||||
" z-index: 10;\n" +
|
||||
"}\n" +
|
||||
":root.fixed:not(.gallery-open) #header-bar:not(.autohide) {\n" +
|
||||
" z-index: 5;\n" +
|
||||
"}\n" +
|
||||
"/* Header */\n" +
|
||||
".fixed.top-header body {\n" +
|
||||
" padding-top: 2em;\n" +
|
||||
@ -18186,6 +18216,10 @@
|
||||
" min-width: 300px;\n" +
|
||||
" border-radius: 3px 3px 0 0;\n" +
|
||||
"}\n" +
|
||||
"#qr > form {\n" +
|
||||
" max-height: calc(100vh - 75px);\n" +
|
||||
" overflow-y: auto;\n" +
|
||||
"}\n" +
|
||||
"#qrtab {\n" +
|
||||
" border-radius: 3px 3px 0 0;\n" +
|
||||
"}\n" +
|
||||
@ -18284,9 +18318,9 @@
|
||||
"#qr-captcha-iframe {\n" +
|
||||
" width: 302px;\n" +
|
||||
" height: 423px;\n" +
|
||||
" max-width: 100vw;\n" +
|
||||
" max-height: calc(100vh - 210px);\n" +
|
||||
" overflow: auto;\n" +
|
||||
" border: 0;\n" +
|
||||
" display: block;\n" +
|
||||
" margin: auto;\n" +
|
||||
"}\n" +
|
||||
".goog-bubble-content {\n" +
|
||||
" max-width: 100vw;\n" +
|
||||
@ -18487,6 +18521,8 @@
|
||||
"}\n" +
|
||||
".textarea {\n" +
|
||||
" position: relative;\n" +
|
||||
" display: -webkit-flex;\n" +
|
||||
" display: flex;\n" +
|
||||
"}\n" +
|
||||
":root.webkit .textarea {\n" +
|
||||
" margin-bottom: -2px;\n" +
|
||||
|
||||
Binary file not shown.
@ -1,6 +1,6 @@
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.11.0.3
|
||||
// @version 1.11.0.4
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// Generated by CoffeeScript
|
||||
// ==UserScript==
|
||||
// @name 4chan X
|
||||
// @version 1.11.0.3
|
||||
// @version 1.11.0.4
|
||||
// @minGMVer 1.14
|
||||
// @minFFVer 26
|
||||
// @namespace 4chan-X
|
||||
@ -237,7 +237,7 @@
|
||||
'Auto-load captcha': [false, 'Automatically load the captcha in the QR even if your post is empty.', 1],
|
||||
'Post on Captcha Completion': [false, 'Submit the post immediately when the captcha is completed.', 1],
|
||||
'Bottom QR Link': [true, 'Places a link on the bottom of threads to open the QR.', 1],
|
||||
'Captcha Fixes': [true, 'Make captcha more keyboard-navigable.']
|
||||
'Captcha Fixes': [true, 'Make captcha easier to use, especially with the keyboard.']
|
||||
},
|
||||
'Quote Links': {
|
||||
'Quote Backlinks': [true, 'Add quote backlinks.'],
|
||||
@ -399,7 +399,7 @@
|
||||
doc = d.documentElement;
|
||||
|
||||
g = {
|
||||
VERSION: '1.11.0.3',
|
||||
VERSION: '1.11.0.4',
|
||||
NAMESPACE: '4chan X.',
|
||||
boards: {}
|
||||
};
|
||||
@ -7616,12 +7616,15 @@
|
||||
|
||||
Captcha.fixes = {
|
||||
css: '.rc-imageselect-target > div:focus {\n outline: 2px solid #4a90e2;\n}\n.rc-button-default:focus {\n box-shadow: inset 0 0 0 2px #0063d6;\n}',
|
||||
cssNoscript: '.fbc-payload-imageselect {\n position: relative;\n}\n.fbc-payload-imageselect > label {\n position: absolute;\n display: block;\n height: 93.3px;\n width: 93.3px;\n}\nlabel[data-row="0"] {top: 0px;}\nlabel[data-row="1"] {top: 93.3px;}\nlabel[data-row="2"] {top: 186.6px;}\nlabel[data-col="0"] {left: 0px;}\nlabel[data-col="1"] {left: 93.3px;}\nlabel[data-col="2"] {left: 186.6px;}',
|
||||
init: function() {
|
||||
switch (location.pathname.split('/')[3]) {
|
||||
case 'anchor':
|
||||
return this.initMain();
|
||||
case 'frame':
|
||||
return this.initPopup();
|
||||
case 'fallback':
|
||||
return this.initNoscript();
|
||||
}
|
||||
},
|
||||
initMain: function() {
|
||||
@ -7651,6 +7654,10 @@
|
||||
});
|
||||
return $.on(d, 'keydown', this.keybinds.bind(this));
|
||||
},
|
||||
initNoscript: function() {
|
||||
$.addStyle(this.cssNoscript);
|
||||
return this.addLabels();
|
||||
},
|
||||
fixImages: function() {
|
||||
var img, k, len1, ref;
|
||||
this.images = $$('.rc-imageselect-target > div');
|
||||
@ -7660,6 +7667,27 @@
|
||||
img.tabIndex = 0;
|
||||
}
|
||||
},
|
||||
addLabels: function() {
|
||||
var checkbox, i, imageSelect, label, labels;
|
||||
imageSelect = $('.fbc-payload-imageselect');
|
||||
labels = (function() {
|
||||
var k, len1, ref, results;
|
||||
ref = $$('input', imageSelect);
|
||||
results = [];
|
||||
for (i = k = 0, len1 = ref.length; k < len1; i = ++k) {
|
||||
checkbox = ref[i];
|
||||
checkbox.id = "checkbox-" + i;
|
||||
label = $.el('label', {
|
||||
htmlFor: checkbox.id
|
||||
});
|
||||
label.dataset.row = Math.floor(i / 3);
|
||||
label.dataset.col = i % 3;
|
||||
results.push(label);
|
||||
}
|
||||
return results;
|
||||
})();
|
||||
return $.add(imageSelect, labels);
|
||||
},
|
||||
keybinds: function(e) {
|
||||
var dx, reload, verify, x;
|
||||
if (!(this.images && doc.contains(this.images[0]) && d.activeElement)) {
|
||||
@ -16063,17 +16091,16 @@
|
||||
$.ready(function() {
|
||||
return Captcha.noscript.initFrame();
|
||||
});
|
||||
} else {
|
||||
$.get('Captcha Fixes', true, function(arg) {
|
||||
var enabled;
|
||||
enabled = arg['Captcha Fixes'];
|
||||
if (enabled) {
|
||||
return $.ready(function() {
|
||||
return Captcha.fixes.init();
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
$.get('Captcha Fixes', true, function(arg) {
|
||||
var enabled;
|
||||
enabled = arg['Captcha Fixes'];
|
||||
if (enabled) {
|
||||
return $.ready(function() {
|
||||
return Captcha.fixes.init();
|
||||
});
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
if (location.hostname === 'www.4chan.org') {
|
||||
@ -17223,6 +17250,9 @@
|
||||
"#thread-watcher {\n" +
|
||||
" z-index: 10;\n" +
|
||||
"}\n" +
|
||||
":root.fixed:not(.gallery-open) #header-bar:not(.autohide) {\n" +
|
||||
" z-index: 5;\n" +
|
||||
"}\n" +
|
||||
"/* Header */\n" +
|
||||
".fixed.top-header body {\n" +
|
||||
" padding-top: 2em;\n" +
|
||||
@ -18187,6 +18217,10 @@
|
||||
" min-width: 300px;\n" +
|
||||
" border-radius: 3px 3px 0 0;\n" +
|
||||
"}\n" +
|
||||
"#qr > form {\n" +
|
||||
" max-height: calc(100vh - 75px);\n" +
|
||||
" overflow-y: auto;\n" +
|
||||
"}\n" +
|
||||
"#qrtab {\n" +
|
||||
" border-radius: 3px 3px 0 0;\n" +
|
||||
"}\n" +
|
||||
@ -18285,9 +18319,9 @@
|
||||
"#qr-captcha-iframe {\n" +
|
||||
" width: 302px;\n" +
|
||||
" height: 423px;\n" +
|
||||
" max-width: 100vw;\n" +
|
||||
" max-height: calc(100vh - 210px);\n" +
|
||||
" overflow: auto;\n" +
|
||||
" border: 0;\n" +
|
||||
" display: block;\n" +
|
||||
" margin: auto;\n" +
|
||||
"}\n" +
|
||||
".goog-bubble-content {\n" +
|
||||
" max-width: 100vw;\n" +
|
||||
@ -18488,6 +18522,8 @@
|
||||
"}\n" +
|
||||
".textarea {\n" +
|
||||
" position: relative;\n" +
|
||||
" display: -webkit-flex;\n" +
|
||||
" display: flex;\n" +
|
||||
"}\n" +
|
||||
":root.webkit .textarea {\n" +
|
||||
" margin-bottom: -2px;\n" +
|
||||
|
||||
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://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.11.0.3' />
|
||||
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.11.0.4' />
|
||||
</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://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.11.0.3' />
|
||||
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.11.0.4' />
|
||||
</app>
|
||||
</gupdate>
|
||||
|
||||
|
||||
@ -3,8 +3,8 @@
|
||||
"description": "Cross-browser userscript for maximum lurking on 4chan.",
|
||||
"meta": {
|
||||
"name": "4chan X",
|
||||
"version": "1.11.0.3",
|
||||
"date": "2015-06-19T22:55:10.677Z",
|
||||
"version": "1.11.0.4",
|
||||
"date": "2015-06-20T18:31:37.633Z",
|
||||
"repo": "https://github.com/ccd0/4chan-x/",
|
||||
"page": "https://github.com/ccd0/4chan-x",
|
||||
"downloads": "https://ccd0.github.io/4chan-x/builds/",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user