Release 4chan X v1.14.5.8.

This commit is contained in:
ccd0 2019-01-24 15:06:51 -08:00
parent 6671afc690
commit d4cd42ddfc
15 changed files with 123 additions and 59 deletions

View File

@ -4,6 +4,13 @@
### v1.14.5
**v1.14.5.8** *(2019-01-24)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.5.8/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.5.8/builds/4chan-X-noupdate.crx)]
- Restore updating faster than 30 seconds after 4chan change.
- Fix false detection of posts added by updater on Tinyboard as own posts.
- Support recognizing quotelinks to pages with extensions other than .html.
- Add FLAC and M4A to embeddable audio types. #2202
- Fix issue from v1.14.5.6 causing display of 'NaN seconds' before index is loaded.
**v1.14.5.7** *(2019-01-06)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.5.7/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.5.7/builds/4chan-X-noupdate.crx)]
- Work when site uses extensions for pages other than .html

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X beta
// @version 1.14.5.7
// @version 1.14.5.8
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X beta
// @version 1.14.5.7
// @version 1.14.5.8
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -198,7 +198,7 @@ docSet = function() {
};
g = {
VERSION: '1.14.5.7',
VERSION: '1.14.5.8',
NAMESPACE: '4chan X.',
boards: {}
};
@ -4603,7 +4603,7 @@ $ = (function() {
pageXHR = XMLHttpRequest;
}
return function(url, options, extra) {
var err, event, form, j, len, r, ref, ref1, type, upCallbacks, whenModified;
var err, event, form, j, len, params, r, ref, ref1, type, upCallbacks, url0, whenModified;
if (options == null) {
options = {};
}
@ -4617,19 +4617,29 @@ $ = (function() {
}
}
url = url.replace(/^((?:https?:)?\/\/(?:\w+\.)?4c(?:ha|d)n\.org)\/adv\//, '$1//adv/');
if ($.engine === 'blink' && whenModified) {
url += "?s=" + whenModified;
if (whenModified) {
params = [];
if ($.engine === 'blink') {
params.push("s=" + whenModified);
}
if (Site.software === 'yotsuba') {
params.push("t=" + (Date.now()));
}
url0 = url;
if (params.length) {
url += '?' + params.join('&');
}
}
r = new pageXHR();
type || (type = form && 'post' || 'get');
try {
r.open(type, url, true);
if (whenModified) {
if (((ref = lastModified[whenModified]) != null ? ref[url] : void 0) != null) {
r.setRequestHeader('If-Modified-Since', lastModified[whenModified][url]);
if (((ref = lastModified[whenModified]) != null ? ref[url0] : void 0) != null) {
r.setRequestHeader('If-Modified-Since', lastModified[whenModified][url0]);
}
$.on(r, 'load', function() {
return (lastModified[whenModified] || (lastModified[whenModified] = {}))[url] = r.getResponseHeader('Last-Modified');
return (lastModified[whenModified] || (lastModified[whenModified] = {}))[url0] = r.getResponseHeader('Last-Modified');
});
}
$.extend(r, options);
@ -7382,8 +7392,8 @@ SW = {};
postContainer: 'div[starts-with(@id,"reply_") or starts-with(@id,"thread_")]'
},
regexp: {
quotelink: /\/([^\/]+)\/res\/(\d+)\.html#(\d+)$/,
quotelinkHTML: /<a [^>]*\bhref="[^"]*\/([^\/]+)\/res\/(\d+)\.html#(\d+)"/g
quotelink: /\/([^\/]+)\/res\/(\d+)\.\w+#(\d+)$/,
quotelinkHTML: /<a [^>]*\bhref="[^"]*\/([^\/]+)\/res\/(\d+)\.\w+#(\d+)"/g
},
bgColoredEl: function() {
return $.el('div', {
@ -10356,7 +10366,7 @@ Index = (function() {
return d.title = d.title.replace(/\ -\ Page\ \d+/, '');
});
$.onExists(doc, '.board > .thread > .postContainer, .board + *', function() {
var board, el, len3, m, ref9, topNavPos;
var board, el, len3, m, ref9, timeEl, topNavPos;
Build.hat = $('.board > .thread > img:first-child');
if (Build.hat) {
g.BOARD.threads.forEach(function(thread) {
@ -10384,7 +10394,10 @@ Index = (function() {
topNavPos = $.id('delform').previousElementSibling;
$.before(topNavPos, $.el('hr'));
$.before(topNavPos, Index.navLinks);
return RelativeDates.update($('#index-last-refresh time', Index.navLinks));
timeEl = $('#index-last-refresh time', Index.navLinks);
if (timeEl.dataset.utc) {
return RelativeDates.update(timeEl);
}
});
return Main.ready(function() {
var pagelist;
@ -15481,7 +15494,7 @@ Embedding = (function() {
ordered_types: [
{
key: 'audio',
regExp: /^[^?#]+\.(?:mp3|oga|wav)(?:[?#]|$)/i,
regExp: /^[^?#]+\.(?:mp3|m4a|oga|wav|flac)(?:[?#]|$)/i,
style: '',
el: function(a) {
return $.el('audio', {
@ -18943,12 +18956,18 @@ Tinyboard = (function() {
if (g.VIEW === 'thread') {
return Main.ready(function() {
return $.global(function() {
var boardID, ref, threadID;
var boardID, form, ref, threadID;
ref = document.currentScript.dataset, boardID = ref.boardID, threadID = ref.threadID;
threadID = +threadID;
return window.$(document).on('new_post', function(e, post) {
var detail, event, postID;
postID = +post.id.match(/\d*$/)[0];
form = document.querySelector('form[name="post"]');
return window.$(document).ajaxComplete(function(event, request, settings) {
var detail, postID, ref1;
if (settings.url !== form.action) {
return;
}
if (!(postID = +((ref1 = request.responseJSON) != null ? ref1.id : void 0))) {
return;
}
detail = {
boardID: boardID,
threadID: threadID,

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
// @version 1.14.5.7
// @version 1.14.5.8
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -198,7 +198,7 @@ docSet = function() {
};
g = {
VERSION: '1.14.5.7',
VERSION: '1.14.5.8',
NAMESPACE: '4chan X.',
boards: {}
};
@ -4603,7 +4603,7 @@ $ = (function() {
pageXHR = XMLHttpRequest;
}
return function(url, options, extra) {
var err, event, form, j, len, r, ref, ref1, type, upCallbacks, whenModified;
var err, event, form, j, len, params, r, ref, ref1, type, upCallbacks, url0, whenModified;
if (options == null) {
options = {};
}
@ -4617,19 +4617,29 @@ $ = (function() {
}
}
url = url.replace(/^((?:https?:)?\/\/(?:\w+\.)?4c(?:ha|d)n\.org)\/adv\//, '$1//adv/');
if ($.engine === 'blink' && whenModified) {
url += "?s=" + whenModified;
if (whenModified) {
params = [];
if ($.engine === 'blink') {
params.push("s=" + whenModified);
}
if (Site.software === 'yotsuba') {
params.push("t=" + (Date.now()));
}
url0 = url;
if (params.length) {
url += '?' + params.join('&');
}
}
r = new pageXHR();
type || (type = form && 'post' || 'get');
try {
r.open(type, url, true);
if (whenModified) {
if (((ref = lastModified[whenModified]) != null ? ref[url] : void 0) != null) {
r.setRequestHeader('If-Modified-Since', lastModified[whenModified][url]);
if (((ref = lastModified[whenModified]) != null ? ref[url0] : void 0) != null) {
r.setRequestHeader('If-Modified-Since', lastModified[whenModified][url0]);
}
$.on(r, 'load', function() {
return (lastModified[whenModified] || (lastModified[whenModified] = {}))[url] = r.getResponseHeader('Last-Modified');
return (lastModified[whenModified] || (lastModified[whenModified] = {}))[url0] = r.getResponseHeader('Last-Modified');
});
}
$.extend(r, options);
@ -7382,8 +7392,8 @@ SW = {};
postContainer: 'div[starts-with(@id,"reply_") or starts-with(@id,"thread_")]'
},
regexp: {
quotelink: /\/([^\/]+)\/res\/(\d+)\.html#(\d+)$/,
quotelinkHTML: /<a [^>]*\bhref="[^"]*\/([^\/]+)\/res\/(\d+)\.html#(\d+)"/g
quotelink: /\/([^\/]+)\/res\/(\d+)\.\w+#(\d+)$/,
quotelinkHTML: /<a [^>]*\bhref="[^"]*\/([^\/]+)\/res\/(\d+)\.\w+#(\d+)"/g
},
bgColoredEl: function() {
return $.el('div', {
@ -10356,7 +10366,7 @@ Index = (function() {
return d.title = d.title.replace(/\ -\ Page\ \d+/, '');
});
$.onExists(doc, '.board > .thread > .postContainer, .board + *', function() {
var board, el, len3, m, ref9, topNavPos;
var board, el, len3, m, ref9, timeEl, topNavPos;
Build.hat = $('.board > .thread > img:first-child');
if (Build.hat) {
g.BOARD.threads.forEach(function(thread) {
@ -10384,7 +10394,10 @@ Index = (function() {
topNavPos = $.id('delform').previousElementSibling;
$.before(topNavPos, $.el('hr'));
$.before(topNavPos, Index.navLinks);
return RelativeDates.update($('#index-last-refresh time', Index.navLinks));
timeEl = $('#index-last-refresh time', Index.navLinks);
if (timeEl.dataset.utc) {
return RelativeDates.update(timeEl);
}
});
return Main.ready(function() {
var pagelist;
@ -15481,7 +15494,7 @@ Embedding = (function() {
ordered_types: [
{
key: 'audio',
regExp: /^[^?#]+\.(?:mp3|oga|wav)(?:[?#]|$)/i,
regExp: /^[^?#]+\.(?:mp3|m4a|oga|wav|flac)(?:[?#]|$)/i,
style: '',
el: function(a) {
return $.el('audio', {
@ -18943,12 +18956,18 @@ Tinyboard = (function() {
if (g.VIEW === 'thread') {
return Main.ready(function() {
return $.global(function() {
var boardID, ref, threadID;
var boardID, form, ref, threadID;
ref = document.currentScript.dataset, boardID = ref.boardID, threadID = ref.threadID;
threadID = +threadID;
return window.$(document).on('new_post', function(e, post) {
var detail, event, postID;
postID = +post.id.match(/\d*$/)[0];
form = document.querySelector('form[name="post"]');
return window.$(document).ajaxComplete(function(event, request, settings) {
var detail, postID, ref1;
if (settings.url !== form.action) {
return;
}
if (!(postID = +((ref1 = request.responseJSON) != null ? ref1.id : void 0))) {
return;
}
detail = {
boardID: boardID,
threadID: threadID,

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
// @version 1.14.5.7
// @version 1.14.5.8
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X
// @version 1.14.5.7
// @version 1.14.5.8
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -198,7 +198,7 @@ docSet = function() {
};
g = {
VERSION: '1.14.5.7',
VERSION: '1.14.5.8',
NAMESPACE: '4chan X.',
boards: {}
};
@ -4603,7 +4603,7 @@ $ = (function() {
pageXHR = XMLHttpRequest;
}
return function(url, options, extra) {
var err, event, form, j, len, r, ref, ref1, type, upCallbacks, whenModified;
var err, event, form, j, len, params, r, ref, ref1, type, upCallbacks, url0, whenModified;
if (options == null) {
options = {};
}
@ -4617,19 +4617,29 @@ $ = (function() {
}
}
url = url.replace(/^((?:https?:)?\/\/(?:\w+\.)?4c(?:ha|d)n\.org)\/adv\//, '$1//adv/');
if ($.engine === 'blink' && whenModified) {
url += "?s=" + whenModified;
if (whenModified) {
params = [];
if ($.engine === 'blink') {
params.push("s=" + whenModified);
}
if (Site.software === 'yotsuba') {
params.push("t=" + (Date.now()));
}
url0 = url;
if (params.length) {
url += '?' + params.join('&');
}
}
r = new pageXHR();
type || (type = form && 'post' || 'get');
try {
r.open(type, url, true);
if (whenModified) {
if (((ref = lastModified[whenModified]) != null ? ref[url] : void 0) != null) {
r.setRequestHeader('If-Modified-Since', lastModified[whenModified][url]);
if (((ref = lastModified[whenModified]) != null ? ref[url0] : void 0) != null) {
r.setRequestHeader('If-Modified-Since', lastModified[whenModified][url0]);
}
$.on(r, 'load', function() {
return (lastModified[whenModified] || (lastModified[whenModified] = {}))[url] = r.getResponseHeader('Last-Modified');
return (lastModified[whenModified] || (lastModified[whenModified] = {}))[url0] = r.getResponseHeader('Last-Modified');
});
}
$.extend(r, options);
@ -7382,8 +7392,8 @@ SW = {};
postContainer: 'div[starts-with(@id,"reply_") or starts-with(@id,"thread_")]'
},
regexp: {
quotelink: /\/([^\/]+)\/res\/(\d+)\.html#(\d+)$/,
quotelinkHTML: /<a [^>]*\bhref="[^"]*\/([^\/]+)\/res\/(\d+)\.html#(\d+)"/g
quotelink: /\/([^\/]+)\/res\/(\d+)\.\w+#(\d+)$/,
quotelinkHTML: /<a [^>]*\bhref="[^"]*\/([^\/]+)\/res\/(\d+)\.\w+#(\d+)"/g
},
bgColoredEl: function() {
return $.el('div', {
@ -10356,7 +10366,7 @@ Index = (function() {
return d.title = d.title.replace(/\ -\ Page\ \d+/, '');
});
$.onExists(doc, '.board > .thread > .postContainer, .board + *', function() {
var board, el, len3, m, ref9, topNavPos;
var board, el, len3, m, ref9, timeEl, topNavPos;
Build.hat = $('.board > .thread > img:first-child');
if (Build.hat) {
g.BOARD.threads.forEach(function(thread) {
@ -10384,7 +10394,10 @@ Index = (function() {
topNavPos = $.id('delform').previousElementSibling;
$.before(topNavPos, $.el('hr'));
$.before(topNavPos, Index.navLinks);
return RelativeDates.update($('#index-last-refresh time', Index.navLinks));
timeEl = $('#index-last-refresh time', Index.navLinks);
if (timeEl.dataset.utc) {
return RelativeDates.update(timeEl);
}
});
return Main.ready(function() {
var pagelist;
@ -15481,7 +15494,7 @@ Embedding = (function() {
ordered_types: [
{
key: 'audio',
regExp: /^[^?#]+\.(?:mp3|oga|wav)(?:[?#]|$)/i,
regExp: /^[^?#]+\.(?:mp3|m4a|oga|wav|flac)(?:[?#]|$)/i,
style: '',
el: function(a) {
return $.el('audio', {
@ -18943,12 +18956,18 @@ Tinyboard = (function() {
if (g.VIEW === 'thread') {
return Main.ready(function() {
return $.global(function() {
var boardID, ref, threadID;
var boardID, form, ref, threadID;
ref = document.currentScript.dataset, boardID = ref.boardID, threadID = ref.threadID;
threadID = +threadID;
return window.$(document).on('new_post', function(e, post) {
var detail, event, postID;
postID = +post.id.match(/\d*$/)[0];
form = document.querySelector('form[name="post"]');
return window.$(document).ajaxComplete(function(event, request, settings) {
var detail, postID, ref1;
if (settings.url !== form.action) {
return;
}
if (!(postID = +((ref1 = request.responseJSON) != null ? ref1.id : void 0))) {
return;
}
detail = {
boardID: boardID,
threadID: threadID,

Binary file not shown.

View File

@ -3,7 +3,7 @@
"4chan-x@4chan-x.net": {
"updates": [
{
"version": "1.14.5.7",
"version": "1.14.5.8",
"update_link": "https://www.4chan-x.net/builds/4chan-X-beta.crx"
}
]

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.14.5.7' />
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.14.5.8' />
</app>
</gupdate>

View File

@ -3,7 +3,7 @@
"4chan-x@4chan-x.net": {
"updates": [
{
"version": "1.14.5.7",
"version": "1.14.5.8",
"update_link": "https://www.4chan-x.net/builds/4chan-X.crx"
}
]

View File

@ -1,7 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.14.5.7' />
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X.crx' version='1.14.5.8' />
</app>
</gupdate>

View File

@ -1,4 +1,4 @@
{
"version": "1.14.5.7",
"date": "2019-01-06T10:39:52.004Z"
"version": "1.14.5.8",
"date": "2019-01-24T22:03:35.429Z"
}