Release 4chan X v1.10.4.3.

This commit is contained in:
ccd0 2015-03-10 23:55:00 -07:00
parent a3dc18ce82
commit 70125f2387
13 changed files with 207 additions and 120 deletions

View File

@ -4,6 +4,9 @@ The links to individual versions below are to copies of the script with the upda
### v1.10.4
**v1.10.4.3** *(2015-03-10)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.4.3/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.4.3/builds/4chan-X-noupdate.crx "Chromium version")]
- Fix false-positive deleted posts again.
**v1.10.4.2** *(2015-03-09)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.4.2/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.4.2/builds/4chan-X-noupdate.crx "Chromium version")]
- Fix bugs when posts are previewed before they appear in the index (by links to future posts).

Binary file not shown.

View File

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

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X beta
// @version 1.10.4.2
// @version 1.10.4.3
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -395,7 +395,7 @@
doc = d.documentElement;
g = {
VERSION: '1.10.4.2',
VERSION: '1.10.4.3',
NAMESPACE: '4chan X.',
NAME: '4chan X',
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
@ -1419,6 +1419,35 @@
}
};
Post.prototype.resurrect = function() {
var clone, k, len1, len2, q, quotelink, ref, ref1, strong;
delete this.isDead;
$.rmClass(this.nodes.root, 'deleted-post');
strong = $('strong.warning', this.nodes.info);
if (this.file && this.file.isDead) {
strong.textContent = '[File deleted]';
} else {
$.rm(strong);
}
if (this.isClone) {
return;
}
ref = this.clones;
for (k = 0, len1 = ref.length; k < len1; k++) {
clone = ref[k];
clone.resurrect();
}
ref1 = Get.allQuotelinksLinkingTo(this);
for (q = 0, len2 = ref1.length; q < len2; q++) {
quotelink = ref1[q];
if (!($.hasClass(quotelink, 'deadlink'))) {
continue;
}
quotelink.textContent = quotelink.textContent.replace('\u00A0(Dead)', '');
$.rmClass(quotelink, 'deadlink');
}
};
Post.prototype.collect = function() {
this.kill();
g.posts.rm(this.fullID);
@ -11894,6 +11923,9 @@
var fileCount, postCount;
postCount = 0;
fileCount = 0;
if (this.board.ID === 'f') {
fileCount++;
}
this.posts.forEach(function(post) {
postCount++;
if (post.file) {
@ -12056,13 +12088,15 @@
node: function() {
ThreadUpdater.thread = this;
ThreadUpdater.root = this.OP.nodes.root.parentNode;
ThreadUpdater.lastPost = +this.posts.keys[this.posts.keys.length - 1];
ThreadUpdater.outdateCount = 0;
ThreadUpdater.postIDs = [];
ThreadUpdater.fileIDs = [];
if (this.board.ID === 'f') {
ThreadUpdater.fileIDs.push(this.ID);
}
this.posts.forEach(function(post) {
ThreadUpdater.postIDs.push(post.ID);
if (post.file && !post.file.isDead) {
if (post.file) {
return ThreadUpdater.fileIDs.push(post.ID);
}
});
@ -12283,18 +12317,17 @@
return new Notice('info', "The thread is " + change + ".", 30);
},
parse: function(req) {
var ID, OP, board, count, deletedFiles, deletedPosts, files, firstPost, index, ipCountEl, k, lastModified, len1, len2, len3, len4, node, num, post, postObject, postObjects, posts, q, ref, ref1, ref2, scroll, thread, u, w;
lastModified = new Date(req.getResponseHeader('Last-Modified'));
if (ThreadUpdater.lastModified && lastModified < ThreadUpdater.lastModified) {
return;
}
ThreadUpdater.lastModified = lastModified;
var ID, OP, board, deletedFiles, deletedPosts, files, firstPost, index, ipCountEl, k, lastPost, len1, len2, len3, len4, newPosts, node, post, postObject, postObjects, posts, q, ref, ref1, ref2, ref3, scroll, thread, u, w;
postObjects = req.response.posts;
OP = postObjects[0];
thread = ThreadUpdater.thread;
board = thread.board;
ref = ThreadUpdater.postIDs, lastPost = ref[ref.length - 1];
if (postObjects[postObjects.length - 1].no < lastPost && new Date(req.getResponseHeader('Last-Modified')) - thread.posts[lastPost].info.date < 30 * $.SECOND) {
return;
}
Build.spoilerRange[board] = OP.custom_spoiler;
thread.setStatus('Archived', !!+OP.archived);
thread.setStatus('Archived', !!OP.archived);
ThreadUpdater.updateThreadStatus('Sticky', !!OP.sticky);
ThreadUpdater.updateThreadStatus('Closed', !!OP.closed);
thread.postLimit = !!OP.bumplimit;
@ -12305,28 +12338,32 @@
posts = [];
index = [];
files = [];
count = 0;
newPosts = [];
for (k = 0, len1 = postObjects.length; k < len1; k++) {
postObject = postObjects[k];
num = postObject.no;
index.push(num);
ID = postObject.no;
index.push(ID);
if (postObject.fsize) {
files.push(num);
files.push(ID);
}
if (num <= ThreadUpdater.lastPost) {
if (ID <= lastPost) {
continue;
}
newPosts.push(board + "." + ID);
if ((post = thread.posts[ID]) && !post.isFetchedQuote) {
post.resurrect();
continue;
}
count++;
node = Build.postFromObject(postObject, board.ID);
posts.push(new Post(node, thread, board));
if (ThreadUpdater.postID === num) {
if (ThreadUpdater.postID === ID) {
delete ThreadUpdater.postID;
}
}
deletedPosts = [];
ref = ThreadUpdater.postIDs;
for (q = 0, len2 = ref.length; q < len2; q++) {
ID = ref[q];
ref1 = ThreadUpdater.postIDs;
for (q = 0, len2 = ref1.length; q < len2; q++) {
ID = ref1[q];
if (!(indexOf.call(index, ID) < 0)) {
continue;
}
@ -12335,20 +12372,20 @@
}
ThreadUpdater.postIDs = index;
deletedFiles = [];
ref1 = ThreadUpdater.fileIDs;
for (u = 0, len3 = ref1.length; u < len3; u++) {
ID = ref1[u];
if (!(!(indexOf.call(files, ID) >= 0 || (ref2 = board + "." + ID, indexOf.call(deletedPosts, ref2) >= 0)))) {
ref2 = ThreadUpdater.fileIDs;
for (u = 0, len3 = ref2.length; u < len3; u++) {
ID = ref2[u];
if (!(!(indexOf.call(files, ID) >= 0 || (ref3 = board + "." + ID, indexOf.call(deletedPosts, ref3) >= 0)))) {
continue;
}
thread.posts[ID].kill(true);
deletedFiles.push(board + "." + ID);
}
ThreadUpdater.fileIDs = files;
if (!count) {
if (!posts.length) {
ThreadUpdater.set('status', '');
} else {
ThreadUpdater.set('status', "+" + count, 'new');
ThreadUpdater.set('status', "+" + posts.length, 'new');
ThreadUpdater.outdateCount = 0;
if (Conf['Beep'] && d.hidden && Unread.posts && !Unread.posts.size) {
if (!ThreadUpdater.audio) {
@ -12358,7 +12395,6 @@
}
ThreadUpdater.audio.play();
}
ThreadUpdater.lastPost = posts[count - 1].ID;
Main.callbackNodes(Post, posts);
scroll = Conf['Auto Scroll'] && ThreadUpdater.scrollBG() && ThreadUpdater.root.getBoundingClientRect().bottom - doc.clientHeight < 25;
firstPost = null;
@ -12388,19 +12424,11 @@
return $.event('ThreadUpdate', {
404: false,
threadID: thread.fullID,
newPosts: (function() {
var len5, results, y;
results = [];
for (y = 0, len5 = posts.length; y < len5; y++) {
post = posts[y];
results.push(post.fullID);
}
return results;
})(),
newPosts: newPosts,
deletedPosts: deletedPosts,
deletedFiles: deletedFiles,
postCount: OP.replies + 1,
fileCount: OP.images + (!!thread.OP.file && !thread.OP.file.isDead),
fileCount: OP.images + !!OP.fsize,
ipCount: OP.unique_ips
});
}

Binary file not shown.

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
// @version 1.10.4.2
// @version 1.10.4.3
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -394,7 +394,7 @@
doc = d.documentElement;
g = {
VERSION: '1.10.4.2',
VERSION: '1.10.4.3',
NAMESPACE: '4chan X.',
NAME: '4chan X',
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
@ -1418,6 +1418,35 @@
}
};
Post.prototype.resurrect = function() {
var clone, k, len1, len2, q, quotelink, ref, ref1, strong;
delete this.isDead;
$.rmClass(this.nodes.root, 'deleted-post');
strong = $('strong.warning', this.nodes.info);
if (this.file && this.file.isDead) {
strong.textContent = '[File deleted]';
} else {
$.rm(strong);
}
if (this.isClone) {
return;
}
ref = this.clones;
for (k = 0, len1 = ref.length; k < len1; k++) {
clone = ref[k];
clone.resurrect();
}
ref1 = Get.allQuotelinksLinkingTo(this);
for (q = 0, len2 = ref1.length; q < len2; q++) {
quotelink = ref1[q];
if (!($.hasClass(quotelink, 'deadlink'))) {
continue;
}
quotelink.textContent = quotelink.textContent.replace('\u00A0(Dead)', '');
$.rmClass(quotelink, 'deadlink');
}
};
Post.prototype.collect = function() {
this.kill();
g.posts.rm(this.fullID);
@ -11893,6 +11922,9 @@
var fileCount, postCount;
postCount = 0;
fileCount = 0;
if (this.board.ID === 'f') {
fileCount++;
}
this.posts.forEach(function(post) {
postCount++;
if (post.file) {
@ -12055,13 +12087,15 @@
node: function() {
ThreadUpdater.thread = this;
ThreadUpdater.root = this.OP.nodes.root.parentNode;
ThreadUpdater.lastPost = +this.posts.keys[this.posts.keys.length - 1];
ThreadUpdater.outdateCount = 0;
ThreadUpdater.postIDs = [];
ThreadUpdater.fileIDs = [];
if (this.board.ID === 'f') {
ThreadUpdater.fileIDs.push(this.ID);
}
this.posts.forEach(function(post) {
ThreadUpdater.postIDs.push(post.ID);
if (post.file && !post.file.isDead) {
if (post.file) {
return ThreadUpdater.fileIDs.push(post.ID);
}
});
@ -12282,18 +12316,17 @@
return new Notice('info', "The thread is " + change + ".", 30);
},
parse: function(req) {
var ID, OP, board, count, deletedFiles, deletedPosts, files, firstPost, index, ipCountEl, k, lastModified, len1, len2, len3, len4, node, num, post, postObject, postObjects, posts, q, ref, ref1, ref2, scroll, thread, u, w;
lastModified = new Date(req.getResponseHeader('Last-Modified'));
if (ThreadUpdater.lastModified && lastModified < ThreadUpdater.lastModified) {
return;
}
ThreadUpdater.lastModified = lastModified;
var ID, OP, board, deletedFiles, deletedPosts, files, firstPost, index, ipCountEl, k, lastPost, len1, len2, len3, len4, newPosts, node, post, postObject, postObjects, posts, q, ref, ref1, ref2, ref3, scroll, thread, u, w;
postObjects = req.response.posts;
OP = postObjects[0];
thread = ThreadUpdater.thread;
board = thread.board;
ref = ThreadUpdater.postIDs, lastPost = ref[ref.length - 1];
if (postObjects[postObjects.length - 1].no < lastPost && new Date(req.getResponseHeader('Last-Modified')) - thread.posts[lastPost].info.date < 30 * $.SECOND) {
return;
}
Build.spoilerRange[board] = OP.custom_spoiler;
thread.setStatus('Archived', !!+OP.archived);
thread.setStatus('Archived', !!OP.archived);
ThreadUpdater.updateThreadStatus('Sticky', !!OP.sticky);
ThreadUpdater.updateThreadStatus('Closed', !!OP.closed);
thread.postLimit = !!OP.bumplimit;
@ -12304,28 +12337,32 @@
posts = [];
index = [];
files = [];
count = 0;
newPosts = [];
for (k = 0, len1 = postObjects.length; k < len1; k++) {
postObject = postObjects[k];
num = postObject.no;
index.push(num);
ID = postObject.no;
index.push(ID);
if (postObject.fsize) {
files.push(num);
files.push(ID);
}
if (num <= ThreadUpdater.lastPost) {
if (ID <= lastPost) {
continue;
}
newPosts.push(board + "." + ID);
if ((post = thread.posts[ID]) && !post.isFetchedQuote) {
post.resurrect();
continue;
}
count++;
node = Build.postFromObject(postObject, board.ID);
posts.push(new Post(node, thread, board));
if (ThreadUpdater.postID === num) {
if (ThreadUpdater.postID === ID) {
delete ThreadUpdater.postID;
}
}
deletedPosts = [];
ref = ThreadUpdater.postIDs;
for (q = 0, len2 = ref.length; q < len2; q++) {
ID = ref[q];
ref1 = ThreadUpdater.postIDs;
for (q = 0, len2 = ref1.length; q < len2; q++) {
ID = ref1[q];
if (!(indexOf.call(index, ID) < 0)) {
continue;
}
@ -12334,20 +12371,20 @@
}
ThreadUpdater.postIDs = index;
deletedFiles = [];
ref1 = ThreadUpdater.fileIDs;
for (u = 0, len3 = ref1.length; u < len3; u++) {
ID = ref1[u];
if (!(!(indexOf.call(files, ID) >= 0 || (ref2 = board + "." + ID, indexOf.call(deletedPosts, ref2) >= 0)))) {
ref2 = ThreadUpdater.fileIDs;
for (u = 0, len3 = ref2.length; u < len3; u++) {
ID = ref2[u];
if (!(!(indexOf.call(files, ID) >= 0 || (ref3 = board + "." + ID, indexOf.call(deletedPosts, ref3) >= 0)))) {
continue;
}
thread.posts[ID].kill(true);
deletedFiles.push(board + "." + ID);
}
ThreadUpdater.fileIDs = files;
if (!count) {
if (!posts.length) {
ThreadUpdater.set('status', '');
} else {
ThreadUpdater.set('status', "+" + count, 'new');
ThreadUpdater.set('status', "+" + posts.length, 'new');
ThreadUpdater.outdateCount = 0;
if (Conf['Beep'] && d.hidden && Unread.posts && !Unread.posts.size) {
if (!ThreadUpdater.audio) {
@ -12357,7 +12394,6 @@
}
ThreadUpdater.audio.play();
}
ThreadUpdater.lastPost = posts[count - 1].ID;
Main.callbackNodes(Post, posts);
scroll = Conf['Auto Scroll'] && ThreadUpdater.scrollBG() && ThreadUpdater.root.getBoundingClientRect().bottom - doc.clientHeight < 25;
firstPost = null;
@ -12387,19 +12423,11 @@
return $.event('ThreadUpdate', {
404: false,
threadID: thread.fullID,
newPosts: (function() {
var len5, results, y;
results = [];
for (y = 0, len5 = posts.length; y < len5; y++) {
post = posts[y];
results.push(post.fullID);
}
return results;
})(),
newPosts: newPosts,
deletedPosts: deletedPosts,
deletedFiles: deletedFiles,
postCount: OP.replies + 1,
fileCount: OP.images + (!!thread.OP.file && !thread.OP.file.isDead),
fileCount: OP.images + !!OP.fsize,
ipCount: OP.unique_ips
});
}

Binary file not shown.

View File

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

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
// @version 1.10.4.2
// @version 1.10.4.3
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -395,7 +395,7 @@
doc = d.documentElement;
g = {
VERSION: '1.10.4.2',
VERSION: '1.10.4.3',
NAMESPACE: '4chan X.',
NAME: '4chan X',
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
@ -1419,6 +1419,35 @@
}
};
Post.prototype.resurrect = function() {
var clone, k, len1, len2, q, quotelink, ref, ref1, strong;
delete this.isDead;
$.rmClass(this.nodes.root, 'deleted-post');
strong = $('strong.warning', this.nodes.info);
if (this.file && this.file.isDead) {
strong.textContent = '[File deleted]';
} else {
$.rm(strong);
}
if (this.isClone) {
return;
}
ref = this.clones;
for (k = 0, len1 = ref.length; k < len1; k++) {
clone = ref[k];
clone.resurrect();
}
ref1 = Get.allQuotelinksLinkingTo(this);
for (q = 0, len2 = ref1.length; q < len2; q++) {
quotelink = ref1[q];
if (!($.hasClass(quotelink, 'deadlink'))) {
continue;
}
quotelink.textContent = quotelink.textContent.replace('\u00A0(Dead)', '');
$.rmClass(quotelink, 'deadlink');
}
};
Post.prototype.collect = function() {
this.kill();
g.posts.rm(this.fullID);
@ -11894,6 +11923,9 @@
var fileCount, postCount;
postCount = 0;
fileCount = 0;
if (this.board.ID === 'f') {
fileCount++;
}
this.posts.forEach(function(post) {
postCount++;
if (post.file) {
@ -12056,13 +12088,15 @@
node: function() {
ThreadUpdater.thread = this;
ThreadUpdater.root = this.OP.nodes.root.parentNode;
ThreadUpdater.lastPost = +this.posts.keys[this.posts.keys.length - 1];
ThreadUpdater.outdateCount = 0;
ThreadUpdater.postIDs = [];
ThreadUpdater.fileIDs = [];
if (this.board.ID === 'f') {
ThreadUpdater.fileIDs.push(this.ID);
}
this.posts.forEach(function(post) {
ThreadUpdater.postIDs.push(post.ID);
if (post.file && !post.file.isDead) {
if (post.file) {
return ThreadUpdater.fileIDs.push(post.ID);
}
});
@ -12283,18 +12317,17 @@
return new Notice('info', "The thread is " + change + ".", 30);
},
parse: function(req) {
var ID, OP, board, count, deletedFiles, deletedPosts, files, firstPost, index, ipCountEl, k, lastModified, len1, len2, len3, len4, node, num, post, postObject, postObjects, posts, q, ref, ref1, ref2, scroll, thread, u, w;
lastModified = new Date(req.getResponseHeader('Last-Modified'));
if (ThreadUpdater.lastModified && lastModified < ThreadUpdater.lastModified) {
return;
}
ThreadUpdater.lastModified = lastModified;
var ID, OP, board, deletedFiles, deletedPosts, files, firstPost, index, ipCountEl, k, lastPost, len1, len2, len3, len4, newPosts, node, post, postObject, postObjects, posts, q, ref, ref1, ref2, ref3, scroll, thread, u, w;
postObjects = req.response.posts;
OP = postObjects[0];
thread = ThreadUpdater.thread;
board = thread.board;
ref = ThreadUpdater.postIDs, lastPost = ref[ref.length - 1];
if (postObjects[postObjects.length - 1].no < lastPost && new Date(req.getResponseHeader('Last-Modified')) - thread.posts[lastPost].info.date < 30 * $.SECOND) {
return;
}
Build.spoilerRange[board] = OP.custom_spoiler;
thread.setStatus('Archived', !!+OP.archived);
thread.setStatus('Archived', !!OP.archived);
ThreadUpdater.updateThreadStatus('Sticky', !!OP.sticky);
ThreadUpdater.updateThreadStatus('Closed', !!OP.closed);
thread.postLimit = !!OP.bumplimit;
@ -12305,28 +12338,32 @@
posts = [];
index = [];
files = [];
count = 0;
newPosts = [];
for (k = 0, len1 = postObjects.length; k < len1; k++) {
postObject = postObjects[k];
num = postObject.no;
index.push(num);
ID = postObject.no;
index.push(ID);
if (postObject.fsize) {
files.push(num);
files.push(ID);
}
if (num <= ThreadUpdater.lastPost) {
if (ID <= lastPost) {
continue;
}
newPosts.push(board + "." + ID);
if ((post = thread.posts[ID]) && !post.isFetchedQuote) {
post.resurrect();
continue;
}
count++;
node = Build.postFromObject(postObject, board.ID);
posts.push(new Post(node, thread, board));
if (ThreadUpdater.postID === num) {
if (ThreadUpdater.postID === ID) {
delete ThreadUpdater.postID;
}
}
deletedPosts = [];
ref = ThreadUpdater.postIDs;
for (q = 0, len2 = ref.length; q < len2; q++) {
ID = ref[q];
ref1 = ThreadUpdater.postIDs;
for (q = 0, len2 = ref1.length; q < len2; q++) {
ID = ref1[q];
if (!(indexOf.call(index, ID) < 0)) {
continue;
}
@ -12335,20 +12372,20 @@
}
ThreadUpdater.postIDs = index;
deletedFiles = [];
ref1 = ThreadUpdater.fileIDs;
for (u = 0, len3 = ref1.length; u < len3; u++) {
ID = ref1[u];
if (!(!(indexOf.call(files, ID) >= 0 || (ref2 = board + "." + ID, indexOf.call(deletedPosts, ref2) >= 0)))) {
ref2 = ThreadUpdater.fileIDs;
for (u = 0, len3 = ref2.length; u < len3; u++) {
ID = ref2[u];
if (!(!(indexOf.call(files, ID) >= 0 || (ref3 = board + "." + ID, indexOf.call(deletedPosts, ref3) >= 0)))) {
continue;
}
thread.posts[ID].kill(true);
deletedFiles.push(board + "." + ID);
}
ThreadUpdater.fileIDs = files;
if (!count) {
if (!posts.length) {
ThreadUpdater.set('status', '');
} else {
ThreadUpdater.set('status', "+" + count, 'new');
ThreadUpdater.set('status', "+" + posts.length, 'new');
ThreadUpdater.outdateCount = 0;
if (Conf['Beep'] && d.hidden && Unread.posts && !Unread.posts.size) {
if (!ThreadUpdater.audio) {
@ -12358,7 +12395,6 @@
}
ThreadUpdater.audio.play();
}
ThreadUpdater.lastPost = posts[count - 1].ID;
Main.callbackNodes(Post, posts);
scroll = Conf['Auto Scroll'] && ThreadUpdater.scrollBG() && ThreadUpdater.root.getBoundingClientRect().bottom - doc.clientHeight < 25;
firstPost = null;
@ -12388,19 +12424,11 @@
return $.event('ThreadUpdate', {
404: false,
threadID: thread.fullID,
newPosts: (function() {
var len5, results, y;
results = [];
for (y = 0, len5 = posts.length; y < len5; y++) {
post = posts[y];
results.push(post.fullID);
}
return results;
})(),
newPosts: newPosts,
deletedPosts: deletedPosts,
deletedFiles: deletedFiles,
postCount: OP.replies + 1,
fileCount: OP.images + (!!thread.OP.file && !thread.OP.file.isDead),
fileCount: OP.images + !!OP.fsize,
ipCount: OP.unique_ips
});
}

Binary file not shown.

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://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.10.4.2' />
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.10.4.3' />
</app>
</gupdate>

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://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.10.4.2' />
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.10.4.3' />
</app>
</gupdate>

View File

@ -3,8 +3,8 @@
"description": "Cross-browser userscript for maximum lurking on 4chan.",
"meta": {
"name": "4chan X",
"version": "1.10.4.2",
"date": "2015-03-10T03:18:00.112Z",
"version": "1.10.4.3",
"date": "2015-03-11T06:53:35.481Z",
"repo": "https://github.com/ccd0/4chan-x/",
"page": "https://github.com/ccd0/4chan-x",
"downloads": "https://ccd0.github.io/4chan-x/builds/",