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