diff --git a/CHANGELOG.md b/CHANGELOG.md
index 32ed3acb3..3096e12e2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,10 @@
## v1.14.0
+**v1.14.0.3** *(2018-01-25)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.0.3/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.0.3/builds/4chan-X-noupdate.crx)]
+- Merge v1.13.15.6: Bugfix to captcha opening logic. Don't ask user for new captchas when we have a bypass cookie or at least one captcha, even when many posts are queued.
+- Merge v1.13.15.6: Do not save captchas to disk or share them between tabs. They are too short-lived to be worth it now. This should reduce associated I/O errors.
+
**v1.14.0.2** *(2018-01-24)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.0.2/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.0.2/builds/4chan-X-noupdate.crx)]
- Small bugfixes for Tinyboard.
diff --git a/builds/4chan-X-beta.crx b/builds/4chan-X-beta.crx
index 5595c11a0..37c85826a 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 fe7ecaa6d..5a7355d7c 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.14.0.2
+// @version 1.14.0.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 9dd79bece..d36aa77a6 100644
--- a/builds/4chan-X-beta.user.js
+++ b/builds/4chan-X-beta.user.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X beta
-// @version 1.14.0.2
+// @version 1.14.0.3
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -157,7 +157,7 @@ docSet = function() {
};
g = {
- VERSION: '1.14.0.2',
+ VERSION: '1.14.0.3',
NAMESPACE: '4chan X.',
boards: {}
};
@@ -5274,7 +5274,7 @@ $ = (function() {
});
$.clear = function(cb) {
$["delete"](Object.keys(Conf));
- $["delete"](['previousversion', 'QR Size', 'captchas', 'QR.persona', 'hiddenPSA']);
+ $["delete"](['previousversion', 'QR Size', 'QR.persona', 'hiddenPSA']);
try {
$["delete"]($.listValues().map(function(key) {
return key.replace(g.NAMESPACE, '');
@@ -20579,15 +20579,6 @@ Captcha = {};
(function() {
Captcha.cache = {
init: function() {
- $.get('captchas', [], (function(_this) {
- return function(arg) {
- var captchas;
- captchas = arg.captchas;
- _this.sync(captchas);
- return _this.clear();
- };
- })(this));
- $.sync('captchas', this.sync.bind(this));
return $.on(d, 'SaveCaptcha', (function(_this) {
return function(e) {
return _this.save(e.detail);
@@ -20599,26 +20590,7 @@ Captcha = {};
return this.captchas.length;
},
needed: function() {
- var captchaCount, postsCount;
- captchaCount = this.captchas.length;
- if (QR.req || /\b_ct=/.test(d.cookie)) {
- captchaCount++;
- }
- postsCount = QR.posts.length;
- if (postsCount === 1 && !Conf['Auto-load captcha'] && !QR.posts[0].com && !QR.posts[0].file) {
- postsCount = 0;
- }
- return captchaCount < postsCount;
- },
- sync: function(captchas) {
- if (captchas == null) {
- captchas = [];
- }
- if (!(captchas instanceof Array)) {
- captchas = [];
- }
- this.captchas = captchas;
- return this.count();
+ return !(/\b_ct=/.test(d.cookie) || this.captchas.length || QR.req) && (QR.posts.length > 1 || Conf['Auto-load captcha'] || QR.posts[0].com || QR.posts[0].file);
},
getOne: function(isReply) {
var captcha, i;
@@ -20628,7 +20600,6 @@ Captcha = {};
});
if (i >= 0) {
captcha = this.captchas.splice(i, 1)[0];
- $.set('captchas', this.captchas);
this.count();
return captcha;
} else {
@@ -20636,17 +20607,14 @@ Captcha = {};
}
},
save: function(captcha) {
- $.forceSync('captchas');
this.captchas.push(captcha);
this.captchas.sort(function(a, b) {
return a.timeout - b.timeout;
});
- $.set('captchas', this.captchas);
return this.count();
},
clear: function() {
var captcha, i, j, len, now, ref;
- $.forceSync('captchas');
if (this.captchas.length) {
now = Date.now();
ref = this.captchas;
@@ -20658,7 +20626,6 @@ Captcha = {};
}
if (i) {
this.captchas = this.captchas.slice(i);
- $.set('captchas', this.captchas);
return this.count();
}
}
diff --git a/builds/4chan-X-noupdate.crx b/builds/4chan-X-noupdate.crx
index d5f1065c0..4332f5f83 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 c46507eff..eb756a24a 100644
--- a/builds/4chan-X-noupdate.user.js
+++ b/builds/4chan-X-noupdate.user.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
-// @version 1.14.0.2
+// @version 1.14.0.3
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -157,7 +157,7 @@ docSet = function() {
};
g = {
- VERSION: '1.14.0.2',
+ VERSION: '1.14.0.3',
NAMESPACE: '4chan X.',
boards: {}
};
@@ -5274,7 +5274,7 @@ $ = (function() {
});
$.clear = function(cb) {
$["delete"](Object.keys(Conf));
- $["delete"](['previousversion', 'QR Size', 'captchas', 'QR.persona', 'hiddenPSA']);
+ $["delete"](['previousversion', 'QR Size', 'QR.persona', 'hiddenPSA']);
try {
$["delete"]($.listValues().map(function(key) {
return key.replace(g.NAMESPACE, '');
@@ -20579,15 +20579,6 @@ Captcha = {};
(function() {
Captcha.cache = {
init: function() {
- $.get('captchas', [], (function(_this) {
- return function(arg) {
- var captchas;
- captchas = arg.captchas;
- _this.sync(captchas);
- return _this.clear();
- };
- })(this));
- $.sync('captchas', this.sync.bind(this));
return $.on(d, 'SaveCaptcha', (function(_this) {
return function(e) {
return _this.save(e.detail);
@@ -20599,26 +20590,7 @@ Captcha = {};
return this.captchas.length;
},
needed: function() {
- var captchaCount, postsCount;
- captchaCount = this.captchas.length;
- if (QR.req || /\b_ct=/.test(d.cookie)) {
- captchaCount++;
- }
- postsCount = QR.posts.length;
- if (postsCount === 1 && !Conf['Auto-load captcha'] && !QR.posts[0].com && !QR.posts[0].file) {
- postsCount = 0;
- }
- return captchaCount < postsCount;
- },
- sync: function(captchas) {
- if (captchas == null) {
- captchas = [];
- }
- if (!(captchas instanceof Array)) {
- captchas = [];
- }
- this.captchas = captchas;
- return this.count();
+ return !(/\b_ct=/.test(d.cookie) || this.captchas.length || QR.req) && (QR.posts.length > 1 || Conf['Auto-load captcha'] || QR.posts[0].com || QR.posts[0].file);
},
getOne: function(isReply) {
var captcha, i;
@@ -20628,7 +20600,6 @@ Captcha = {};
});
if (i >= 0) {
captcha = this.captchas.splice(i, 1)[0];
- $.set('captchas', this.captchas);
this.count();
return captcha;
} else {
@@ -20636,17 +20607,14 @@ Captcha = {};
}
},
save: function(captcha) {
- $.forceSync('captchas');
this.captchas.push(captcha);
this.captchas.sort(function(a, b) {
return a.timeout - b.timeout;
});
- $.set('captchas', this.captchas);
return this.count();
},
clear: function() {
var captcha, i, j, len, now, ref;
- $.forceSync('captchas');
if (this.captchas.length) {
now = Date.now();
ref = this.captchas;
@@ -20658,7 +20626,6 @@ Captcha = {};
}
if (i) {
this.captchas = this.captchas.slice(i);
- $.set('captchas', this.captchas);
return this.count();
}
}
diff --git a/builds/4chan-X.crx b/builds/4chan-X.crx
index 7264f3f72..12acfcda8 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 20379c580..ed3cdd40e 100644
--- a/builds/4chan-X.meta.js
+++ b/builds/4chan-X.meta.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
-// @version 1.14.0.2
+// @version 1.14.0.3
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js
index 3941bc9a1..ce237c9e5 100644
--- a/builds/4chan-X.user.js
+++ b/builds/4chan-X.user.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
-// @version 1.14.0.2
+// @version 1.14.0.3
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -157,7 +157,7 @@ docSet = function() {
};
g = {
- VERSION: '1.14.0.2',
+ VERSION: '1.14.0.3',
NAMESPACE: '4chan X.',
boards: {}
};
@@ -5274,7 +5274,7 @@ $ = (function() {
});
$.clear = function(cb) {
$["delete"](Object.keys(Conf));
- $["delete"](['previousversion', 'QR Size', 'captchas', 'QR.persona', 'hiddenPSA']);
+ $["delete"](['previousversion', 'QR Size', 'QR.persona', 'hiddenPSA']);
try {
$["delete"]($.listValues().map(function(key) {
return key.replace(g.NAMESPACE, '');
@@ -20579,15 +20579,6 @@ Captcha = {};
(function() {
Captcha.cache = {
init: function() {
- $.get('captchas', [], (function(_this) {
- return function(arg) {
- var captchas;
- captchas = arg.captchas;
- _this.sync(captchas);
- return _this.clear();
- };
- })(this));
- $.sync('captchas', this.sync.bind(this));
return $.on(d, 'SaveCaptcha', (function(_this) {
return function(e) {
return _this.save(e.detail);
@@ -20599,26 +20590,7 @@ Captcha = {};
return this.captchas.length;
},
needed: function() {
- var captchaCount, postsCount;
- captchaCount = this.captchas.length;
- if (QR.req || /\b_ct=/.test(d.cookie)) {
- captchaCount++;
- }
- postsCount = QR.posts.length;
- if (postsCount === 1 && !Conf['Auto-load captcha'] && !QR.posts[0].com && !QR.posts[0].file) {
- postsCount = 0;
- }
- return captchaCount < postsCount;
- },
- sync: function(captchas) {
- if (captchas == null) {
- captchas = [];
- }
- if (!(captchas instanceof Array)) {
- captchas = [];
- }
- this.captchas = captchas;
- return this.count();
+ return !(/\b_ct=/.test(d.cookie) || this.captchas.length || QR.req) && (QR.posts.length > 1 || Conf['Auto-load captcha'] || QR.posts[0].com || QR.posts[0].file);
},
getOne: function(isReply) {
var captcha, i;
@@ -20628,7 +20600,6 @@ Captcha = {};
});
if (i >= 0) {
captcha = this.captchas.splice(i, 1)[0];
- $.set('captchas', this.captchas);
this.count();
return captcha;
} else {
@@ -20636,17 +20607,14 @@ Captcha = {};
}
},
save: function(captcha) {
- $.forceSync('captchas');
this.captchas.push(captcha);
this.captchas.sort(function(a, b) {
return a.timeout - b.timeout;
});
- $.set('captchas', this.captchas);
return this.count();
},
clear: function() {
var captcha, i, j, len, now, ref;
- $.forceSync('captchas');
if (this.captchas.length) {
now = Date.now();
ref = this.captchas;
@@ -20658,7 +20626,6 @@ Captcha = {};
}
if (i) {
this.captchas = this.captchas.slice(i);
- $.set('captchas', this.captchas);
return this.count();
}
}
diff --git a/builds/4chan-X.zip b/builds/4chan-X.zip
index 56ae83920..1be7d7a04 100644
Binary files a/builds/4chan-X.zip and b/builds/4chan-X.zip differ
diff --git a/builds/updates-beta.json b/builds/updates-beta.json
index 46dbc6f77..220488929 100644
--- a/builds/updates-beta.json
+++ b/builds/updates-beta.json
@@ -3,7 +3,7 @@
"4chan-x@4chan-x.net": {
"updates": [
{
- "version": "1.14.0.2",
+ "version": "1.14.0.3",
"update_link": "https://www.4chan-x.net/builds/4chan-X-beta.crx"
}
]
diff --git a/builds/updates-beta.xml b/builds/updates-beta.xml
index 57c730706..c14b3da5a 100644
--- a/builds/updates-beta.xml
+++ b/builds/updates-beta.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/builds/updates.json b/builds/updates.json
index f65a79e38..f32d6bce2 100644
--- a/builds/updates.json
+++ b/builds/updates.json
@@ -3,7 +3,7 @@
"4chan-x@4chan-x.net": {
"updates": [
{
- "version": "1.14.0.2",
+ "version": "1.14.0.3",
"update_link": "https://www.4chan-x.net/builds/4chan-X.crx"
}
]
diff --git a/builds/updates.xml b/builds/updates.xml
index 39bfedf1b..e655b2bb7 100644
--- a/builds/updates.xml
+++ b/builds/updates.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/version.json b/version.json
index ac049cb46..12930c9e2 100644
--- a/version.json
+++ b/version.json
@@ -1,4 +1,4 @@
{
- "version": "1.14.0.2",
- "date": "2018-01-24T22:15:19.430Z"
+ "version": "1.14.0.3",
+ "date": "2018-01-25T00:58:59.931Z"
}
\ No newline at end of file