diff --git a/CHANGELOG.md b/CHANGELOG.md
index c1a320e56..2f238129f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,9 @@ Sometimes the changelog has notes (not comprehensive) acknowledging people's wor
### v1.11.18
+**v1.11.18.3** *(2015-11-24)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.18.3/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.18.3/builds/4chan-X-noupdate.crx "Chromium version")]
+- Merge v1.11.17.9: Support solving 4x4 image captchas with keys in 7-0-/-M square.
+
**v1.11.18.2** *(2015-11-23)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.18.2/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.11.18.2/builds/4chan-X-noupdate.crx "Chromium version")]
- The `Use Recaptcha v1` setting takes priority over `Force Noscript Captcha` again.
diff --git a/builds/4chan-X-beta.crx b/builds/4chan-X-beta.crx
index f6b2bff6f..dd4490f90 100644
Binary files a/builds/4chan-X-beta.crx and b/builds/4chan-X-beta.crx differ
diff --git a/builds/4chan-X-beta.meta.js b/builds/4chan-X-beta.meta.js
index 4bd73a43b..2d8422c92 100644
--- a/builds/4chan-X-beta.meta.js
+++ b/builds/4chan-X-beta.meta.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X beta
-// @version 1.11.18.2
+// @version 1.11.18.3
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
diff --git a/builds/4chan-X-beta.user.js b/builds/4chan-X-beta.user.js
index c0a349d90..5cd96e02f 100644
--- a/builds/4chan-X-beta.user.js
+++ b/builds/4chan-X-beta.user.js
@@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X beta
-// @version 1.11.18.2
+// @version 1.11.18.3
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -432,7 +432,7 @@
doc = d.documentElement;
g = {
- VERSION: '1.11.18.2',
+ VERSION: '1.11.18.3',
NAMESPACE: '4chan X.',
boards: {}
};
@@ -7957,6 +7957,7 @@
Captcha.fixes = {
imageKeys: '789456123uiojklm'.split('').concat(['Comma', 'Period']),
+ imageKeys16: '7890uiopjkl'.split('').concat(['Semicolon', 'm', 'Comma', 'Period', 'Slash']),
css: '.rc-imageselect-target > div:focus {\n outline: 2px solid #4a90e2;\n}\n.rc-imageselect-target td:focus {\n box-shadow: inset 0 0 0 2px #4a90e2;\n outline: none;\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;}\n.fbc-payload-imageselect > input:focus + label {\n outline: 2px solid #4a90e2;\n}\n.fbc-button-verify input:focus {\n box-shadow: inset 0 0 0 2px #0063d6;\n}\nbody.focus .fbc {\n box-shadow: inset 0 0 0 2px #4a90e2;\n}',
init: function() {
@@ -8029,6 +8030,9 @@
if (this.images.length === 9) {
this.addTooltips(this.images);
}
+ if (this.images.length === 16) {
+ this.addTooltips16(this.images);
+ }
return this.complaintLinks();
},
complaintLinks: function() {
@@ -8075,6 +8079,13 @@
node.title = this.imageKeys[i] + " or " + (this.imageKeys[i + 9][0].toUpperCase()) + this.imageKeys[i + 9].slice(1);
}
},
+ addTooltips16: function(nodes) {
+ var i, k, len1, node;
+ for (i = k = 0, len1 = nodes.length; k < len1; i = ++k) {
+ node = nodes[i];
+ node.title = "" + (this.imageKeys16[i][0].toUpperCase()) + this.imageKeys16[i].slice(1);
+ }
+ },
checkForm: function(e) {
var checkbox, k, len1, n, ref;
n = 0;
@@ -8109,6 +8120,9 @@
} else if (n === 9 && (i = this.imageKeys.indexOf(key)) >= 0) {
this.images[i % 9].click();
verify.focus();
+ } else if (n === 16 && (i = this.imageKeys16.indexOf(key)) >= 0) {
+ this.images[i].click();
+ verify.focus();
} else if (dx = {
'Up': n,
'Down': w,
@@ -8706,10 +8720,8 @@
setupIFrame: function(iframe) {
Captcha.replace.iframe(iframe);
$.addClass(QR.nodes.el, 'captcha-open');
- if (QR.nodes.el.getBoundingClientRect().bottom > doc.clientHeight) {
- QR.nodes.el.style.top = null;
- QR.nodes.el.style.bottom = '0px';
- }
+ this.fixQRPosition();
+ $.on(iframe, 'load', this.fixQRPosition);
if (d.activeElement === this.nodes.counter) {
iframe.focus();
}
@@ -8719,6 +8731,12 @@
return f.focus = f.blur = function() {};
});
},
+ fixQRPosition: function() {
+ if (QR.nodes.el.getBoundingClientRect().bottom > doc.clientHeight) {
+ QR.nodes.el.style.top = null;
+ return QR.nodes.el.style.bottom = '0px';
+ }
+ },
setupTextArea: function(textarea) {
return $.one(textarea, 'input', (function(_this) {
return function() {
@@ -16102,6 +16120,11 @@
return 'Comma';
case 190:
return 'Period';
+ case 191:
+ return 'Slash';
+ case 59:
+ case 186:
+ return 'Semicolon';
default:
if ((48 <= kc && kc <= 57) || (65 <= kc && kc <= 90)) {
return String.fromCharCode(kc).toLowerCase();
diff --git a/builds/4chan-X-noupdate.crx b/builds/4chan-X-noupdate.crx
index 149a02a61..35114ec47 100644
Binary files a/builds/4chan-X-noupdate.crx and b/builds/4chan-X-noupdate.crx differ
diff --git a/builds/4chan-X-noupdate.user.js b/builds/4chan-X-noupdate.user.js
index 6a7338912..bba860379 100644
--- a/builds/4chan-X-noupdate.user.js
+++ b/builds/4chan-X-noupdate.user.js
@@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
-// @version 1.11.18.2
+// @version 1.11.18.3
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -432,7 +432,7 @@
doc = d.documentElement;
g = {
- VERSION: '1.11.18.2',
+ VERSION: '1.11.18.3',
NAMESPACE: '4chan X.',
boards: {}
};
@@ -7957,6 +7957,7 @@
Captcha.fixes = {
imageKeys: '789456123uiojklm'.split('').concat(['Comma', 'Period']),
+ imageKeys16: '7890uiopjkl'.split('').concat(['Semicolon', 'm', 'Comma', 'Period', 'Slash']),
css: '.rc-imageselect-target > div:focus {\n outline: 2px solid #4a90e2;\n}\n.rc-imageselect-target td:focus {\n box-shadow: inset 0 0 0 2px #4a90e2;\n outline: none;\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;}\n.fbc-payload-imageselect > input:focus + label {\n outline: 2px solid #4a90e2;\n}\n.fbc-button-verify input:focus {\n box-shadow: inset 0 0 0 2px #0063d6;\n}\nbody.focus .fbc {\n box-shadow: inset 0 0 0 2px #4a90e2;\n}',
init: function() {
@@ -8029,6 +8030,9 @@
if (this.images.length === 9) {
this.addTooltips(this.images);
}
+ if (this.images.length === 16) {
+ this.addTooltips16(this.images);
+ }
return this.complaintLinks();
},
complaintLinks: function() {
@@ -8075,6 +8079,13 @@
node.title = this.imageKeys[i] + " or " + (this.imageKeys[i + 9][0].toUpperCase()) + this.imageKeys[i + 9].slice(1);
}
},
+ addTooltips16: function(nodes) {
+ var i, k, len1, node;
+ for (i = k = 0, len1 = nodes.length; k < len1; i = ++k) {
+ node = nodes[i];
+ node.title = "" + (this.imageKeys16[i][0].toUpperCase()) + this.imageKeys16[i].slice(1);
+ }
+ },
checkForm: function(e) {
var checkbox, k, len1, n, ref;
n = 0;
@@ -8109,6 +8120,9 @@
} else if (n === 9 && (i = this.imageKeys.indexOf(key)) >= 0) {
this.images[i % 9].click();
verify.focus();
+ } else if (n === 16 && (i = this.imageKeys16.indexOf(key)) >= 0) {
+ this.images[i].click();
+ verify.focus();
} else if (dx = {
'Up': n,
'Down': w,
@@ -8706,10 +8720,8 @@
setupIFrame: function(iframe) {
Captcha.replace.iframe(iframe);
$.addClass(QR.nodes.el, 'captcha-open');
- if (QR.nodes.el.getBoundingClientRect().bottom > doc.clientHeight) {
- QR.nodes.el.style.top = null;
- QR.nodes.el.style.bottom = '0px';
- }
+ this.fixQRPosition();
+ $.on(iframe, 'load', this.fixQRPosition);
if (d.activeElement === this.nodes.counter) {
iframe.focus();
}
@@ -8719,6 +8731,12 @@
return f.focus = f.blur = function() {};
});
},
+ fixQRPosition: function() {
+ if (QR.nodes.el.getBoundingClientRect().bottom > doc.clientHeight) {
+ QR.nodes.el.style.top = null;
+ return QR.nodes.el.style.bottom = '0px';
+ }
+ },
setupTextArea: function(textarea) {
return $.one(textarea, 'input', (function(_this) {
return function() {
@@ -16102,6 +16120,11 @@
return 'Comma';
case 190:
return 'Period';
+ case 191:
+ return 'Slash';
+ case 59:
+ case 186:
+ return 'Semicolon';
default:
if ((48 <= kc && kc <= 57) || (65 <= kc && kc <= 90)) {
return String.fromCharCode(kc).toLowerCase();
diff --git a/builds/4chan-X.crx b/builds/4chan-X.crx
index 5ca0e3b5b..6f1f4600e 100644
Binary files a/builds/4chan-X.crx and b/builds/4chan-X.crx differ
diff --git a/builds/4chan-X.meta.js b/builds/4chan-X.meta.js
index 249288661..5e57fe102 100644
--- a/builds/4chan-X.meta.js
+++ b/builds/4chan-X.meta.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
-// @version 1.11.18.2
+// @version 1.11.18.3
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js
index c54cb9325..653362317 100644
--- a/builds/4chan-X.user.js
+++ b/builds/4chan-X.user.js
@@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
-// @version 1.11.18.2
+// @version 1.11.18.3
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -432,7 +432,7 @@
doc = d.documentElement;
g = {
- VERSION: '1.11.18.2',
+ VERSION: '1.11.18.3',
NAMESPACE: '4chan X.',
boards: {}
};
@@ -7957,6 +7957,7 @@
Captcha.fixes = {
imageKeys: '789456123uiojklm'.split('').concat(['Comma', 'Period']),
+ imageKeys16: '7890uiopjkl'.split('').concat(['Semicolon', 'm', 'Comma', 'Period', 'Slash']),
css: '.rc-imageselect-target > div:focus {\n outline: 2px solid #4a90e2;\n}\n.rc-imageselect-target td:focus {\n box-shadow: inset 0 0 0 2px #4a90e2;\n outline: none;\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;}\n.fbc-payload-imageselect > input:focus + label {\n outline: 2px solid #4a90e2;\n}\n.fbc-button-verify input:focus {\n box-shadow: inset 0 0 0 2px #0063d6;\n}\nbody.focus .fbc {\n box-shadow: inset 0 0 0 2px #4a90e2;\n}',
init: function() {
@@ -8029,6 +8030,9 @@
if (this.images.length === 9) {
this.addTooltips(this.images);
}
+ if (this.images.length === 16) {
+ this.addTooltips16(this.images);
+ }
return this.complaintLinks();
},
complaintLinks: function() {
@@ -8075,6 +8079,13 @@
node.title = this.imageKeys[i] + " or " + (this.imageKeys[i + 9][0].toUpperCase()) + this.imageKeys[i + 9].slice(1);
}
},
+ addTooltips16: function(nodes) {
+ var i, k, len1, node;
+ for (i = k = 0, len1 = nodes.length; k < len1; i = ++k) {
+ node = nodes[i];
+ node.title = "" + (this.imageKeys16[i][0].toUpperCase()) + this.imageKeys16[i].slice(1);
+ }
+ },
checkForm: function(e) {
var checkbox, k, len1, n, ref;
n = 0;
@@ -8109,6 +8120,9 @@
} else if (n === 9 && (i = this.imageKeys.indexOf(key)) >= 0) {
this.images[i % 9].click();
verify.focus();
+ } else if (n === 16 && (i = this.imageKeys16.indexOf(key)) >= 0) {
+ this.images[i].click();
+ verify.focus();
} else if (dx = {
'Up': n,
'Down': w,
@@ -8706,10 +8720,8 @@
setupIFrame: function(iframe) {
Captcha.replace.iframe(iframe);
$.addClass(QR.nodes.el, 'captcha-open');
- if (QR.nodes.el.getBoundingClientRect().bottom > doc.clientHeight) {
- QR.nodes.el.style.top = null;
- QR.nodes.el.style.bottom = '0px';
- }
+ this.fixQRPosition();
+ $.on(iframe, 'load', this.fixQRPosition);
if (d.activeElement === this.nodes.counter) {
iframe.focus();
}
@@ -8719,6 +8731,12 @@
return f.focus = f.blur = function() {};
});
},
+ fixQRPosition: function() {
+ if (QR.nodes.el.getBoundingClientRect().bottom > doc.clientHeight) {
+ QR.nodes.el.style.top = null;
+ return QR.nodes.el.style.bottom = '0px';
+ }
+ },
setupTextArea: function(textarea) {
return $.one(textarea, 'input', (function(_this) {
return function() {
@@ -16102,6 +16120,11 @@
return 'Comma';
case 190:
return 'Period';
+ case 191:
+ return 'Slash';
+ case 59:
+ case 186:
+ return 'Semicolon';
default:
if ((48 <= kc && kc <= 57) || (65 <= kc && kc <= 90)) {
return String.fromCharCode(kc).toLowerCase();
diff --git a/builds/4chan-X.zip b/builds/4chan-X.zip
index 4b3aa8ca9..590f96a23 100644
Binary files a/builds/4chan-X.zip and b/builds/4chan-X.zip differ
diff --git a/builds/updates-beta.xml b/builds/updates-beta.xml
index 88e532450..cceb74949 100644
--- a/builds/updates-beta.xml
+++ b/builds/updates-beta.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/builds/updates.xml b/builds/updates.xml
index 035e44fe1..5463b50b3 100644
--- a/builds/updates.xml
+++ b/builds/updates.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/version.json b/version.json
index 978679677..25a1b9600 100644
--- a/version.json
+++ b/version.json
@@ -1,4 +1,4 @@
{
- "version": "1.11.18.2",
- "date": "2015-11-24T06:48:15.178Z"
+ "version": "1.11.18.3",
+ "date": "2015-11-25T06:04:54.566Z"
}