diff --git a/CHANGELOG.md b/CHANGELOG.md
index 1393d9df8..4114e3f94 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,11 @@ Sometimes the changelog has notes (not comprehensive) acknowledging people's wor
The links to individual versions below are to copies of the script with the update URL removed. If you want automatic updates, install the script from the links on the [main page](https://github.com/ccd0/4chan-x).
+### v1.9.23.4
+*2015-02-03* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.23.4/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.23.4/builds/4chan-X-noupdate.crx "Chromium version")]
+
+- Quote Threading improvement: Thread posts with multiple quotes provided all of them are ancestors of the last.
+
### v1.9.23.3
*2015-02-03* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.23.3/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.9.23.3/builds/4chan-X-noupdate.crx "Chromium version")]
diff --git a/LICENSE b/LICENSE
index 415a53da9..f695ebb09 100755
--- a/LICENSE
+++ b/LICENSE
@@ -1,5 +1,5 @@
/*
-* 4chan X - Version 1.9.23.3
+* 4chan X - Version 1.9.23.4
*
* Licensed under the MIT license.
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
diff --git a/builds/4chan-X-beta.crx b/builds/4chan-X-beta.crx
index 97cfffc75..fdce40ce7 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 4748ce3cc..3487b9e73 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.9.23.3
+// @version 1.9.23.4
// @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 ba8f732d1..f0745e625 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.9.23.3
+// @version 1.9.23.4
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -25,7 +25,7 @@
// ==/UserScript==
/*
-* 4chan X - Version 1.9.23.3
+* 4chan X - Version 1.9.23.4
*
* Licensed under the MIT license.
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
@@ -402,7 +402,7 @@
doc = d.documentElement;
g = {
- VERSION: '1.9.23.3',
+ VERSION: '1.9.23.4',
NAMESPACE: '4chan X.',
NAME: '4chan X',
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
@@ -6334,25 +6334,33 @@
});
},
node: function() {
- var parent, parents, quote, thread;
+ var ancestor, lastParent, parent, parents, quote, _i, _len, _ref;
if (this.isFetchedQuote || this.isClone || !this.isReply) {
return;
}
- thread = QuoteThreading.thread;
- parents = (function() {
- var _i, _len, _ref, _results;
- _ref = this.quotes;
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- quote = _ref[_i];
- if ((parent = g.posts[quote]) && !parent.isFetchedQuote && parent.isReply && parent.ID < this.ID) {
- _results.push(parent);
+ parents = new Set();
+ lastParent = null;
+ _ref = this.quotes;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ quote = _ref[_i];
+ if (parent = g.posts[quote]) {
+ if (!parent.isFetchedQuote && parent.isReply && parent.ID < this.ID) {
+ parents.add(parent.ID);
+ if (!lastParent || parent.ID > lastParent.ID) {
+ lastParent = parent;
+ }
}
}
- return _results;
- }).call(this);
- if (parents.length === 1) {
- return QuoteThreading.parent[this.fullID] = parents[0];
+ }
+ if (!lastParent) {
+ return;
+ }
+ ancestor = lastParent;
+ while (ancestor = QuoteThreading.parent[ancestor.fullID]) {
+ parents["delete"](ancestor.ID);
+ }
+ if (parents.size === 1) {
+ return QuoteThreading.parent[this.fullID] = lastParent;
}
},
descendants: function(post) {
diff --git a/builds/4chan-X-noupdate.crx b/builds/4chan-X-noupdate.crx
index 979a0d69c..7f58e6b80 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 feb44fb72..eb230bbad 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.9.23.3
+// @version 1.9.23.4
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -24,7 +24,7 @@
// ==/UserScript==
/*
-* 4chan X - Version 1.9.23.3
+* 4chan X - Version 1.9.23.4
*
* Licensed under the MIT license.
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
@@ -401,7 +401,7 @@
doc = d.documentElement;
g = {
- VERSION: '1.9.23.3',
+ VERSION: '1.9.23.4',
NAMESPACE: '4chan X.',
NAME: '4chan X',
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
@@ -6333,25 +6333,33 @@
});
},
node: function() {
- var parent, parents, quote, thread;
+ var ancestor, lastParent, parent, parents, quote, _i, _len, _ref;
if (this.isFetchedQuote || this.isClone || !this.isReply) {
return;
}
- thread = QuoteThreading.thread;
- parents = (function() {
- var _i, _len, _ref, _results;
- _ref = this.quotes;
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- quote = _ref[_i];
- if ((parent = g.posts[quote]) && !parent.isFetchedQuote && parent.isReply && parent.ID < this.ID) {
- _results.push(parent);
+ parents = new Set();
+ lastParent = null;
+ _ref = this.quotes;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ quote = _ref[_i];
+ if (parent = g.posts[quote]) {
+ if (!parent.isFetchedQuote && parent.isReply && parent.ID < this.ID) {
+ parents.add(parent.ID);
+ if (!lastParent || parent.ID > lastParent.ID) {
+ lastParent = parent;
+ }
}
}
- return _results;
- }).call(this);
- if (parents.length === 1) {
- return QuoteThreading.parent[this.fullID] = parents[0];
+ }
+ if (!lastParent) {
+ return;
+ }
+ ancestor = lastParent;
+ while (ancestor = QuoteThreading.parent[ancestor.fullID]) {
+ parents["delete"](ancestor.ID);
+ }
+ if (parents.size === 1) {
+ return QuoteThreading.parent[this.fullID] = lastParent;
}
},
descendants: function(post) {
diff --git a/builds/4chan-X.crx b/builds/4chan-X.crx
index 0bdf95fde..1203aaca5 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 c431c8a37..410decb79 100644
--- a/builds/4chan-X.meta.js
+++ b/builds/4chan-X.meta.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
-// @version 1.9.23.3
+// @version 1.9.23.4
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js
index e5f8f7c15..9fee55fa8 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.9.23.3
+// @version 1.9.23.4
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -25,7 +25,7 @@
// ==/UserScript==
/*
-* 4chan X - Version 1.9.23.3
+* 4chan X - Version 1.9.23.4
*
* Licensed under the MIT license.
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
@@ -402,7 +402,7 @@
doc = d.documentElement;
g = {
- VERSION: '1.9.23.3',
+ VERSION: '1.9.23.4',
NAMESPACE: '4chan X.',
NAME: '4chan X',
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
@@ -6334,25 +6334,33 @@
});
},
node: function() {
- var parent, parents, quote, thread;
+ var ancestor, lastParent, parent, parents, quote, _i, _len, _ref;
if (this.isFetchedQuote || this.isClone || !this.isReply) {
return;
}
- thread = QuoteThreading.thread;
- parents = (function() {
- var _i, _len, _ref, _results;
- _ref = this.quotes;
- _results = [];
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- quote = _ref[_i];
- if ((parent = g.posts[quote]) && !parent.isFetchedQuote && parent.isReply && parent.ID < this.ID) {
- _results.push(parent);
+ parents = new Set();
+ lastParent = null;
+ _ref = this.quotes;
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
+ quote = _ref[_i];
+ if (parent = g.posts[quote]) {
+ if (!parent.isFetchedQuote && parent.isReply && parent.ID < this.ID) {
+ parents.add(parent.ID);
+ if (!lastParent || parent.ID > lastParent.ID) {
+ lastParent = parent;
+ }
}
}
- return _results;
- }).call(this);
- if (parents.length === 1) {
- return QuoteThreading.parent[this.fullID] = parents[0];
+ }
+ if (!lastParent) {
+ return;
+ }
+ ancestor = lastParent;
+ while (ancestor = QuoteThreading.parent[ancestor.fullID]) {
+ parents["delete"](ancestor.ID);
+ }
+ if (parents.size === 1) {
+ return QuoteThreading.parent[this.fullID] = lastParent;
}
},
descendants: function(post) {
diff --git a/builds/4chan-X.zip b/builds/4chan-X.zip
index 25e6b2d30..7a10c5772 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 bcd5ec549..ec50e4e48 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 34e68b598..d2b0d5c0d 100644
--- a/builds/updates.xml
+++ b/builds/updates.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/package.json b/package.json
index fe3258912..c9a20e33a 100755
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"description": "Cross-browser userscript for maximum lurking on 4chan.",
"meta": {
"name": "4chan X",
- "version": "1.9.23.3",
+ "version": "1.9.23.4",
"repo": "https://github.com/ccd0/4chan-x/",
"page": "https://github.com/ccd0/4chan-x",
"downloads": "https://ccd0.github.io/4chan-x/builds/",