diff --git a/CHANGELOG.md b/CHANGELOG.md
index 154214e97..a0d20dc0b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,12 @@
### v1.14.5
+**v1.14.5.6** *(2018-12-16)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.5.6/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.5.6/builds/4chan-X-noupdate.crx)]
+- Fix bug causing Last Index Refresh time to not update with passing time until index/catalog reloaded.
+- Treat .bmp files as images.
+- Support current-catalog link in custom board list on Tinyboard/vichan.
+- Quick fix for issues on lainchan due to not accounting for post container.
+
**v1.14.5.5** *(2018-12-09)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.5.5/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.5.5/builds/4chan-X-noupdate.crx)]
- Fix bug causing errors on threads in overboards from boards with unusual characters in the name.
diff --git a/builds/4chan-X-beta.crx b/builds/4chan-X-beta.crx
index 29f23bb3a..b99911659 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 b399c070b..28b6d70c3 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.5.5
+// @version 1.14.5.6
// @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 87a55bc5c..3dfdfebcf 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.5.5
+// @version 1.14.5.6
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -198,7 +198,7 @@ docSet = function() {
};
g = {
- VERSION: '1.14.5.5',
+ VERSION: '1.14.5.6',
NAMESPACE: '4chan X.',
boards: {}
};
@@ -6714,7 +6714,7 @@ Post = (function() {
}
$.extend(file, {
url: file.link.href,
- isImage: /(jpe?g|png|gif)$/i.test(file.link.href),
+ isImage: /(jpe?g|png|gif|bmp)$/i.test(file.link.href),
isVideo: /(webm|mp4)$/i.test(file.link.href)
});
size = +file.size.match(/[\d.]+/)[0];
@@ -9826,7 +9826,9 @@ Header = (function() {
textContent: text || g.BOARD.ID,
className: 'current'
});
- if (/-(catalog|archive|expired)/.test(t)) {
+ if (/-catalog/.test(t)) {
+ a.href += 'catalog.html';
+ } else if (/-(archive|expired)/.test(t)) {
a = a.firstChild;
}
return a;
@@ -10381,7 +10383,8 @@ Index = (function() {
$.rm($.id('ctrl-top'));
topNavPos = $.id('delform').previousElementSibling;
$.before(topNavPos, $.el('hr'));
- return $.before(topNavPos, Index.navLinks);
+ $.before(topNavPos, Index.navLinks);
+ return RelativeDates.update($('#index-last-refresh time', Index.navLinks));
});
return Main.ready(function() {
var pagelist;
@@ -21129,7 +21132,7 @@ UnreadIndex = (function() {
repliesRead = 0;
firstUnread = null;
thread.posts.forEach(function(post) {
- if (post.isReply && post.nodes.root.parentNode === thread.nodes.root) {
+ if (post.isReply && thread.nodes.root.contains(post.nodes.root)) {
repliesShown++;
if (post.ID <= lastReadPost) {
return repliesRead++;
@@ -25622,7 +25625,7 @@ Main = (function() {
ref = record.addedNodes;
for (k = 0, len1 = ref.length; k < len1; k++) {
node = ref[k];
- if (node.matches(Site.selectors.thread)) {
+ if (node.nodeType === Node.ELEMENT_NODE && node.matches(Site.selectors.thread)) {
threadRoots.push(node);
}
}
@@ -25643,7 +25646,7 @@ Main = (function() {
});
},
addPosts: function(records) {
- var anyRemoved, el, errors, j, k, len, len1, n, posts, record, ref, ref1, thread, threads, threadsRM;
+ var anyRemoved, el, errors, j, k, l, len, len1, len2, n, node, postRoots, posts, record, ref, ref1, ref2, thread, threads, threadsRM;
threads = [];
threadsRM = [];
posts = [];
@@ -25651,16 +25654,26 @@ Main = (function() {
for (j = 0, len = records.length; j < len; j++) {
record = records[j];
thread = Get.threadFromRoot(record.target);
+ postRoots = [];
+ ref = record.addedNodes;
+ for (k = 0, len1 = ref.length; k < len1; k++) {
+ node = ref[k];
+ if (node.nodeType === Node.ELEMENT_NODE) {
+ if (node.matches(Site.selectors.postContainer) || (node = $(Site.selectors.postContainer, node))) {
+ postRoots.push(node);
+ }
+ }
+ }
n = posts.length;
- Main.parsePosts(record.addedNodes, thread, posts, errors);
+ Main.parsePosts(postRoots, thread, posts, errors);
if (posts.length > n && indexOf.call(threads, thread) < 0) {
threads.push(thread);
}
anyRemoved = false;
- ref = record.removedNodes;
- for (k = 0, len1 = ref.length; k < len1; k++) {
- el = ref[k];
- if (((ref1 = Get.postFromRoot(el)) != null ? ref1.nodes.root : void 0) === el && !doc.contains(el)) {
+ ref1 = record.removedNodes;
+ for (l = 0, len2 = ref1.length; l < len2; l++) {
+ el = ref1[l];
+ if (((ref2 = Get.postFromRoot(el)) != null ? ref2.nodes.root : void 0) === el && !doc.contains(el)) {
anyRemoved = true;
break;
}
@@ -25673,13 +25686,13 @@ Main = (function() {
Main.handleErrors(errors);
}
return Main.callbackNodesDB('Post', posts, function() {
- var l, len2, len3, m;
- for (l = 0, len2 = threads.length; l < len2; l++) {
- thread = threads[l];
+ var len3, len4, m, o;
+ for (m = 0, len3 = threads.length; m < len3; m++) {
+ thread = threads[m];
$.event('PostsInserted', null, thread.nodes.root);
}
- for (m = 0, len3 = threadsRM.length; m < len3; m++) {
- thread = threadsRM[m];
+ for (o = 0, len4 = threadsRM.length; o < len4; o++) {
+ thread = threadsRM[o];
$.event('PostsRemoved', null, thread.nodes.root);
}
});
diff --git a/builds/4chan-X-noupdate.crx b/builds/4chan-X-noupdate.crx
index 3fa511b78..16705945b 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 08f159051..1becbdfec 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.5.5
+// @version 1.14.5.6
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -198,7 +198,7 @@ docSet = function() {
};
g = {
- VERSION: '1.14.5.5',
+ VERSION: '1.14.5.6',
NAMESPACE: '4chan X.',
boards: {}
};
@@ -6714,7 +6714,7 @@ Post = (function() {
}
$.extend(file, {
url: file.link.href,
- isImage: /(jpe?g|png|gif)$/i.test(file.link.href),
+ isImage: /(jpe?g|png|gif|bmp)$/i.test(file.link.href),
isVideo: /(webm|mp4)$/i.test(file.link.href)
});
size = +file.size.match(/[\d.]+/)[0];
@@ -9826,7 +9826,9 @@ Header = (function() {
textContent: text || g.BOARD.ID,
className: 'current'
});
- if (/-(catalog|archive|expired)/.test(t)) {
+ if (/-catalog/.test(t)) {
+ a.href += 'catalog.html';
+ } else if (/-(archive|expired)/.test(t)) {
a = a.firstChild;
}
return a;
@@ -10381,7 +10383,8 @@ Index = (function() {
$.rm($.id('ctrl-top'));
topNavPos = $.id('delform').previousElementSibling;
$.before(topNavPos, $.el('hr'));
- return $.before(topNavPos, Index.navLinks);
+ $.before(topNavPos, Index.navLinks);
+ return RelativeDates.update($('#index-last-refresh time', Index.navLinks));
});
return Main.ready(function() {
var pagelist;
@@ -21129,7 +21132,7 @@ UnreadIndex = (function() {
repliesRead = 0;
firstUnread = null;
thread.posts.forEach(function(post) {
- if (post.isReply && post.nodes.root.parentNode === thread.nodes.root) {
+ if (post.isReply && thread.nodes.root.contains(post.nodes.root)) {
repliesShown++;
if (post.ID <= lastReadPost) {
return repliesRead++;
@@ -25622,7 +25625,7 @@ Main = (function() {
ref = record.addedNodes;
for (k = 0, len1 = ref.length; k < len1; k++) {
node = ref[k];
- if (node.matches(Site.selectors.thread)) {
+ if (node.nodeType === Node.ELEMENT_NODE && node.matches(Site.selectors.thread)) {
threadRoots.push(node);
}
}
@@ -25643,7 +25646,7 @@ Main = (function() {
});
},
addPosts: function(records) {
- var anyRemoved, el, errors, j, k, len, len1, n, posts, record, ref, ref1, thread, threads, threadsRM;
+ var anyRemoved, el, errors, j, k, l, len, len1, len2, n, node, postRoots, posts, record, ref, ref1, ref2, thread, threads, threadsRM;
threads = [];
threadsRM = [];
posts = [];
@@ -25651,16 +25654,26 @@ Main = (function() {
for (j = 0, len = records.length; j < len; j++) {
record = records[j];
thread = Get.threadFromRoot(record.target);
+ postRoots = [];
+ ref = record.addedNodes;
+ for (k = 0, len1 = ref.length; k < len1; k++) {
+ node = ref[k];
+ if (node.nodeType === Node.ELEMENT_NODE) {
+ if (node.matches(Site.selectors.postContainer) || (node = $(Site.selectors.postContainer, node))) {
+ postRoots.push(node);
+ }
+ }
+ }
n = posts.length;
- Main.parsePosts(record.addedNodes, thread, posts, errors);
+ Main.parsePosts(postRoots, thread, posts, errors);
if (posts.length > n && indexOf.call(threads, thread) < 0) {
threads.push(thread);
}
anyRemoved = false;
- ref = record.removedNodes;
- for (k = 0, len1 = ref.length; k < len1; k++) {
- el = ref[k];
- if (((ref1 = Get.postFromRoot(el)) != null ? ref1.nodes.root : void 0) === el && !doc.contains(el)) {
+ ref1 = record.removedNodes;
+ for (l = 0, len2 = ref1.length; l < len2; l++) {
+ el = ref1[l];
+ if (((ref2 = Get.postFromRoot(el)) != null ? ref2.nodes.root : void 0) === el && !doc.contains(el)) {
anyRemoved = true;
break;
}
@@ -25673,13 +25686,13 @@ Main = (function() {
Main.handleErrors(errors);
}
return Main.callbackNodesDB('Post', posts, function() {
- var l, len2, len3, m;
- for (l = 0, len2 = threads.length; l < len2; l++) {
- thread = threads[l];
+ var len3, len4, m, o;
+ for (m = 0, len3 = threads.length; m < len3; m++) {
+ thread = threads[m];
$.event('PostsInserted', null, thread.nodes.root);
}
- for (m = 0, len3 = threadsRM.length; m < len3; m++) {
- thread = threadsRM[m];
+ for (o = 0, len4 = threadsRM.length; o < len4; o++) {
+ thread = threadsRM[o];
$.event('PostsRemoved', null, thread.nodes.root);
}
});
diff --git a/builds/4chan-X.crx b/builds/4chan-X.crx
index 9d69ccee2..e205b3378 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 d18951dd5..123b4b40e 100644
--- a/builds/4chan-X.meta.js
+++ b/builds/4chan-X.meta.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
-// @version 1.14.5.5
+// @version 1.14.5.6
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
diff --git a/builds/4chan-X.user.js b/builds/4chan-X.user.js
index 14379c995..acceb6a5c 100644
--- a/builds/4chan-X.user.js
+++ b/builds/4chan-X.user.js
@@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
-// @version 1.14.5.5
+// @version 1.14.5.6
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@@ -198,7 +198,7 @@ docSet = function() {
};
g = {
- VERSION: '1.14.5.5',
+ VERSION: '1.14.5.6',
NAMESPACE: '4chan X.',
boards: {}
};
@@ -6714,7 +6714,7 @@ Post = (function() {
}
$.extend(file, {
url: file.link.href,
- isImage: /(jpe?g|png|gif)$/i.test(file.link.href),
+ isImage: /(jpe?g|png|gif|bmp)$/i.test(file.link.href),
isVideo: /(webm|mp4)$/i.test(file.link.href)
});
size = +file.size.match(/[\d.]+/)[0];
@@ -9826,7 +9826,9 @@ Header = (function() {
textContent: text || g.BOARD.ID,
className: 'current'
});
- if (/-(catalog|archive|expired)/.test(t)) {
+ if (/-catalog/.test(t)) {
+ a.href += 'catalog.html';
+ } else if (/-(archive|expired)/.test(t)) {
a = a.firstChild;
}
return a;
@@ -10381,7 +10383,8 @@ Index = (function() {
$.rm($.id('ctrl-top'));
topNavPos = $.id('delform').previousElementSibling;
$.before(topNavPos, $.el('hr'));
- return $.before(topNavPos, Index.navLinks);
+ $.before(topNavPos, Index.navLinks);
+ return RelativeDates.update($('#index-last-refresh time', Index.navLinks));
});
return Main.ready(function() {
var pagelist;
@@ -21129,7 +21132,7 @@ UnreadIndex = (function() {
repliesRead = 0;
firstUnread = null;
thread.posts.forEach(function(post) {
- if (post.isReply && post.nodes.root.parentNode === thread.nodes.root) {
+ if (post.isReply && thread.nodes.root.contains(post.nodes.root)) {
repliesShown++;
if (post.ID <= lastReadPost) {
return repliesRead++;
@@ -25622,7 +25625,7 @@ Main = (function() {
ref = record.addedNodes;
for (k = 0, len1 = ref.length; k < len1; k++) {
node = ref[k];
- if (node.matches(Site.selectors.thread)) {
+ if (node.nodeType === Node.ELEMENT_NODE && node.matches(Site.selectors.thread)) {
threadRoots.push(node);
}
}
@@ -25643,7 +25646,7 @@ Main = (function() {
});
},
addPosts: function(records) {
- var anyRemoved, el, errors, j, k, len, len1, n, posts, record, ref, ref1, thread, threads, threadsRM;
+ var anyRemoved, el, errors, j, k, l, len, len1, len2, n, node, postRoots, posts, record, ref, ref1, ref2, thread, threads, threadsRM;
threads = [];
threadsRM = [];
posts = [];
@@ -25651,16 +25654,26 @@ Main = (function() {
for (j = 0, len = records.length; j < len; j++) {
record = records[j];
thread = Get.threadFromRoot(record.target);
+ postRoots = [];
+ ref = record.addedNodes;
+ for (k = 0, len1 = ref.length; k < len1; k++) {
+ node = ref[k];
+ if (node.nodeType === Node.ELEMENT_NODE) {
+ if (node.matches(Site.selectors.postContainer) || (node = $(Site.selectors.postContainer, node))) {
+ postRoots.push(node);
+ }
+ }
+ }
n = posts.length;
- Main.parsePosts(record.addedNodes, thread, posts, errors);
+ Main.parsePosts(postRoots, thread, posts, errors);
if (posts.length > n && indexOf.call(threads, thread) < 0) {
threads.push(thread);
}
anyRemoved = false;
- ref = record.removedNodes;
- for (k = 0, len1 = ref.length; k < len1; k++) {
- el = ref[k];
- if (((ref1 = Get.postFromRoot(el)) != null ? ref1.nodes.root : void 0) === el && !doc.contains(el)) {
+ ref1 = record.removedNodes;
+ for (l = 0, len2 = ref1.length; l < len2; l++) {
+ el = ref1[l];
+ if (((ref2 = Get.postFromRoot(el)) != null ? ref2.nodes.root : void 0) === el && !doc.contains(el)) {
anyRemoved = true;
break;
}
@@ -25673,13 +25686,13 @@ Main = (function() {
Main.handleErrors(errors);
}
return Main.callbackNodesDB('Post', posts, function() {
- var l, len2, len3, m;
- for (l = 0, len2 = threads.length; l < len2; l++) {
- thread = threads[l];
+ var len3, len4, m, o;
+ for (m = 0, len3 = threads.length; m < len3; m++) {
+ thread = threads[m];
$.event('PostsInserted', null, thread.nodes.root);
}
- for (m = 0, len3 = threadsRM.length; m < len3; m++) {
- thread = threadsRM[m];
+ for (o = 0, len4 = threadsRM.length; o < len4; o++) {
+ thread = threadsRM[o];
$.event('PostsRemoved', null, thread.nodes.root);
}
});
diff --git a/builds/4chan-X.zip b/builds/4chan-X.zip
index 9423044e9..f620fc73c 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 888430339..f7bdef2be 100644
--- a/builds/updates-beta.json
+++ b/builds/updates-beta.json
@@ -3,7 +3,7 @@
"4chan-x@4chan-x.net": {
"updates": [
{
- "version": "1.14.5.5",
+ "version": "1.14.5.6",
"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 a85c5a1cc..ecf37c394 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 afc40f656..734dc80c0 100644
--- a/builds/updates.json
+++ b/builds/updates.json
@@ -3,7 +3,7 @@
"4chan-x@4chan-x.net": {
"updates": [
{
- "version": "1.14.5.5",
+ "version": "1.14.5.6",
"update_link": "https://www.4chan-x.net/builds/4chan-X.crx"
}
]
diff --git a/builds/updates.xml b/builds/updates.xml
index 10e3a7b81..7d0f770b9 100644
--- a/builds/updates.xml
+++ b/builds/updates.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/version.json b/version.json
index 6e56e3a95..3ce31cabd 100644
--- a/version.json
+++ b/version.json
@@ -1,4 +1,4 @@
{
- "version": "1.14.5.5",
- "date": "2018-12-09T16:37:04.282Z"
+ "version": "1.14.5.6",
+ "date": "2018-12-16T04:58:51.703Z"
}
\ No newline at end of file