Release 4chan X v1.14.15.1.

This commit is contained in:
ccd0 2019-12-17 12:01:15 -08:00
parent 85c3894002
commit 4dfc6c2346
15 changed files with 299 additions and 194 deletions

View File

@ -4,6 +4,12 @@
### v1.14.15 ### v1.14.15
**v1.14.15.1** *(2019-12-17)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.15.1/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.15.1/builds/4chan-X-noupdate.crx)]
- Enable 4chan X by default on more sites.
- Fix spurious linkification bug on infinity-based sites. #2356
- Fix clash between 4chan X header bar and native header bars. #2171
- Fix unwanted spaces in full board list on Tinyboard sites.
**v1.14.15.0** *(2019-12-13)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.15.0/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.15.0/builds/4chan-X-noupdate.crx)] **v1.14.15.0** *(2019-12-13)* - [[Userscript](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.15.0/builds/4chan-X-noupdate.user.js)] [[Chrome extension](https://raw.githubusercontent.com/ccd0/4chan-x/1.14.15.0/builds/4chan-X-noupdate.crx)]
- Based on v1.14.14.5. - Based on v1.14.14.5.
- Support archived threads on kissu.moe. - Support archived threads on kissu.moe.

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript== // ==UserScript==
// @name 4chan X beta // @name 4chan X beta
// @version 1.14.15.0 // @version 1.14.15.1
// @minGMVer 1.14 // @minGMVer 1.14
// @minFFVer 26 // @minFFVer 26
// @namespace 4chan-X // @namespace 4chan-X
@ -28,6 +28,8 @@
// @include https://is.4channel.org/* // @include https://is.4channel.org/*
// @include http://is2.4channel.org/* // @include http://is2.4channel.org/*
// @include https://is2.4channel.org/* // @include https://is2.4channel.org/*
// @include https://erischan.org/*
// @include https://www.erischan.org/*
// @include https://fufufu.moe/* // @include https://fufufu.moe/*
// @include https://gnfos.com/* // @include https://gnfos.com/*
// @include https://himasugi.blog/* // @include https://himasugi.blog/*
@ -44,6 +46,7 @@
// @include https://ponyville.us/* // @include https://ponyville.us/*
// @include https://www.ponyville.us/* // @include https://www.ponyville.us/*
// @include https://samachan.org/* // @include https://samachan.org/*
// @include https://smuglo.li/*
// @include https://sportschan.org/* // @include https://sportschan.org/*
// @include https://www.sportschan.org/* // @include https://www.sportschan.org/*
// @include https://sushigirl.us/* // @include https://sushigirl.us/*

View File

@ -1,6 +1,6 @@
// ==UserScript== // ==UserScript==
// @name 4chan X beta // @name 4chan X beta
// @version 1.14.15.0 // @version 1.14.15.1
// @minGMVer 1.14 // @minGMVer 1.14
// @minFFVer 26 // @minFFVer 26
// @namespace 4chan-X // @namespace 4chan-X
@ -28,6 +28,8 @@
// @include https://is.4channel.org/* // @include https://is.4channel.org/*
// @include http://is2.4channel.org/* // @include http://is2.4channel.org/*
// @include https://is2.4channel.org/* // @include https://is2.4channel.org/*
// @include https://erischan.org/*
// @include https://www.erischan.org/*
// @include https://fufufu.moe/* // @include https://fufufu.moe/*
// @include https://gnfos.com/* // @include https://gnfos.com/*
// @include https://himasugi.blog/* // @include https://himasugi.blog/*
@ -44,6 +46,7 @@
// @include https://ponyville.us/* // @include https://ponyville.us/*
// @include https://www.ponyville.us/* // @include https://www.ponyville.us/*
// @include https://samachan.org/* // @include https://samachan.org/*
// @include https://smuglo.li/*
// @include https://sportschan.org/* // @include https://sportschan.org/*
// @include https://www.sportschan.org/* // @include https://www.sportschan.org/*
// @include https://sushigirl.us/* // @include https://sushigirl.us/*
@ -211,7 +214,7 @@ docSet = function() {
}; };
g = { g = {
VERSION: '1.14.15.0', VERSION: '1.14.15.1',
NAMESPACE: '4chan X.', NAMESPACE: '4chan X.',
sites: Object.create(null), sites: Object.create(null),
boards: Object.create(null) boards: Object.create(null)
@ -1507,7 +1510,15 @@ body.hasDropDownNav{\n\
.gal-buttons.gal-buttons a {\n\ .gal-buttons.gal-buttons a {\n\
font-size: inherit;\n\ font-size: inherit;\n\
}\n\ }\n\
/* Tinyboard site style fixes */\n\ :root.sw-tinyboard.fixed.top-header:not(.autohide) .boardlist,\n\
:root.sw-tinyboard.fixed.top-header:not(.autohide) .bar.top {\n\
position: static;\n\
}\n\
:root.sw-tinyboard.fixed.top-header.autohide .boardlist,\n\
:root.sw-tinyboard.fixed.top-header.autohide .bar.top {\n\
z-index: 3;\n\
}\n\
/* Tinyboard site style conflicts */\n\
:root[data-host=\"fufufu.moe\"].fixed.top-header:not(.autohide) div.pages.top,\n\ :root[data-host=\"fufufu.moe\"].fixed.top-header:not(.autohide) div.pages.top,\n\
:root[data-host=\"merorin.com\"].fixed.top-header:not(.autohide) span.settings {\n\ :root[data-host=\"merorin.com\"].fixed.top-header:not(.autohide) span.settings {\n\
top: 26px;\n\ top: 26px;\n\
@ -1515,6 +1526,12 @@ body.hasDropDownNav{\n\
:root[data-host=\"fufufu.moe\"]:not(.fixed) #header-bar {\n\ :root[data-host=\"fufufu.moe\"]:not(.fixed) #header-bar {\n\
margin-top: 38px;\n\ margin-top: 38px;\n\
}\n\ }\n\
:root[data-host=\"lainchan.org\"]:not(.fixed) #header-bar {\n\
margin-top: 17px;\n\
}\n\
:root[data-host=\"smuglo.li\"]:not(.fixed) #header-bar {\n\
margin-top: 8px;\n\
}\n\
/* Anti-autoplay */\n\ /* Anti-autoplay */\n\
audio.controls-added {\n\ audio.controls-added {\n\
display: block;\n\ display: block;\n\
@ -1713,52 +1730,52 @@ audio.controls-added {\n\
font-weight: bold;\n\ font-weight: bold;\n\
}\n\ }\n\
@media (min-width: 1300px) {\n\ @media (min-width: 1300px) {\n\
:root.fixed:not(.centered-links) #header-bar {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #header-bar {\n\
white-space: nowrap;\n\ white-space: nowrap;\n\
display: -webkit-flex;\n\ display: -webkit-flex;\n\
display: flex;\n\ display: flex;\n\
-webkit-align-items: center;\n\ -webkit-align-items: center;\n\
align-items: center;\n\ align-items: center;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #board-list {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #board-list {\n\
-webkit-flex: auto;\n\ -webkit-flex: auto;\n\
flex: auto;\n\ flex: auto;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list {\n\
display: -webkit-flex;\n\ display: -webkit-flex;\n\
display: flex;\n\ display: flex;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) .hide-board-list-container {\n\ :root.sw-yotsuba.fixed:not(.centered-links) .hide-board-list-container {\n\
-webkit-flex: none;\n\ -webkit-flex: none;\n\
flex: none;\n\ flex: none;\n\
margin-right: 5px;\n\ margin-right: 5px;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList {\n\
-webkit-flex: auto;\n\ -webkit-flex: auto;\n\
flex: auto;\n\ flex: auto;\n\
display: -webkit-flex;\n\ display: -webkit-flex;\n\
display: flex;\n\ display: flex;\n\
width: 0px; /* XXX Fixes Edge not shrinking the board list below default size when needed */\n\ width: 0px; /* XXX Fixes Edge not shrinking the board list below default size when needed */\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > a,\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > a,\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > span:not(.space):not(.spacer) {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > span:not(.space):not(.spacer) {\n\
-webkit-flex: none;\n\ -webkit-flex: none;\n\
flex: none;\n\ flex: none;\n\
padding: .17em;\n\ padding: .17em;\n\
margin: -.17em -.32em;\n\ margin: -.17em -.32em;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > span {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > span {\n\
pointer-events: none;\n\ pointer-events: none;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > span.space {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > span.space {\n\
-webkit-flex: 0 .63 .63em;\n\ -webkit-flex: 0 .63 .63em;\n\
flex: 0 .63 .63em;\n\ flex: 0 .63 .63em;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > span.spacer {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > span.spacer {\n\
-webkit-flex: 0 .38 .38em;\n\ -webkit-flex: 0 .38 .38em;\n\
flex: 0 .38 .38em;\n\ flex: 0 .38 .38em;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #shortcuts {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #shortcuts {\n\
float: initial;\n\ float: initial;\n\
-webkit-flex: none;\n\ -webkit-flex: none;\n\
flex: none;\n\ flex: none;\n\
@ -8369,6 +8386,44 @@ SW = {};
return this.enabled = 'true'; return this.enabled = 'true';
} }
}); });
},
transformBoardList: function() {
var a, chr, i, items, j, len, node, nodes, ref, spacer, span;
nodes = [];
spacer = function() {
return $.el('span', {
className: 'spacer'
});
};
items = $.X('.//a|.//text()[not(ancestor::a)]', $(SW.yotsuba.selectors.boardList));
i = 0;
while (node = items.snapshotItem(i++)) {
switch (node.nodeName) {
case '#text':
ref = node.nodeValue;
for (j = 0, len = ref.length; j < len; j++) {
chr = ref[j];
span = $.el('span', {
textContent: chr
});
if (chr === ' ') {
span.className = 'space';
}
if (chr === ']') {
nodes.push(spacer());
}
nodes.push(span);
if (chr === '[') {
nodes.push(spacer());
}
}
break;
case 'A':
a = node.cloneNode(true);
nodes.push(a);
}
}
return nodes;
} }
}; };
@ -10554,7 +10609,8 @@ Get = (function() {
}).call(this); }).call(this);
Header = (function() { Header = (function() {
var Header; var Header,
slice = [].slice;
Header = { Header = {
init: function() { init: function() {
@ -10652,7 +10708,7 @@ Header = (function() {
this.setBoardList(); this.setBoardList();
$.onExists(doc, g.SITE.selectors.boardList + " + *", Header.generateFullBoardList); $.onExists(doc, g.SITE.selectors.boardList + " + *", Header.generateFullBoardList);
Main.ready(function() { Main.ready(function() {
var a, absbot, footer, j, len, ref; var a, absbot, footer, i, len, ref;
if (g.SITE.software === 'yotsuba' && !(footer = $.id('boardNavDesktopFoot'))) { if (g.SITE.software === 'yotsuba' && !(footer = $.id('boardNavDesktopFoot'))) {
if (!(absbot = $.id('absbot'))) { if (!(absbot = $.id('absbot'))) {
return; return;
@ -10668,8 +10724,8 @@ Header = (function() {
} }
if ((Header.bottomBoardList = $(g.SITE.selectors.boardListBottom))) { if ((Header.bottomBoardList = $(g.SITE.selectors.boardListBottom))) {
ref = $$('a', Header.bottomBoardList); ref = $$('a', Header.bottomBoardList);
for (j = 0, len = ref.length; j < len; j++) { for (i = 0, len = ref.length; i < len; i++) {
a = ref[j]; a = ref[i];
if (a.hostname === location.hostname && a.pathname.split('/')[1] === g.BOARD.ID) { if (a.hostname === location.hostname && a.pathname.split('/')[1] === g.BOARD.ID) {
a.className = 'current'; a.className = 'current';
} }
@ -10725,46 +10781,21 @@ Header = (function() {
return $.sync('boardnav', Header.generateBoardList); return $.sync('boardnav', Header.generateBoardList);
}, },
generateFullBoardList: function() { generateFullBoardList: function() {
var a, chr, fullBoardList, i, items, j, len, node, nodes, ref, spacer, span; var a, fullBoardList, i, len, nodes, ref;
nodes = []; if (g.SITE.transformBoardList) {
spacer = function() { nodes = g.SITE.transformBoardList();
return $.el('span', { } else {
className: 'spacer' nodes = slice.call($(g.SITE.selectors.boardList).cloneNode(true).childNodes);
});
};
items = $.X('.//a|.//text()[not(ancestor::a)]', $(g.SITE.selectors.boardList));
i = 0;
while (node = items.snapshotItem(i++)) {
switch (node.nodeName) {
case '#text':
ref = node.nodeValue;
for (j = 0, len = ref.length; j < len; j++) {
chr = ref[j];
span = $.el('span', {
textContent: chr
});
if (chr === ' ') {
span.className = 'space';
}
if (chr === ']') {
nodes.push(spacer());
}
nodes.push(span);
if (chr === '[') {
nodes.push(spacer());
}
}
break;
case 'A':
a = node.cloneNode(true);
if (a.hostname === location.hostname && a.pathname.split('/')[1] === g.BOARD.ID) {
a.className = 'current';
}
nodes.push(a);
}
} }
fullBoardList = $('.boardList', Header.boardList); fullBoardList = $('.boardList', Header.boardList);
$.add(fullBoardList, nodes); $.add(fullBoardList, nodes);
ref = $$('a', fullBoardList);
for (i = 0, len = ref.length; i < len; i++) {
a = ref[i];
if (a.hostname === location.hostname && a.pathname.split('/')[1] === g.BOARD.ID) {
a.className = 'current';
}
}
return CatalogLinks.setLinks(fullBoardList); return CatalogLinks.setLinks(fullBoardList);
}, },
generateBoardList: function(boardnav) { generateBoardList: function(boardnav) {
@ -10777,11 +10808,11 @@ Header = (function() {
boardnav = boardnav.replace(/(\r\n|\n|\r)/g, ' '); boardnav = boardnav.replace(/(\r\n|\n|\r)/g, ' ');
re = /[\w@]+(-(all|title|replace|full|index|catalog|archive|expired|nt|(mode|sort|text):"[^"]+"(,"[^"]+")?))*|[^\w@]+/g; re = /[\w@]+(-(all|title|replace|full|index|catalog|archive|expired|nt|(mode|sort|text):"[^"]+"(,"[^"]+")?))*|[^\w@]+/g;
nodes = (function() { nodes = (function() {
var j, len, ref, results; var i, len, ref, results;
ref = boardnav.match(re); ref = boardnav.match(re);
results = []; results = [];
for (j = 0, len = ref.length; j < len; j++) { for (i = 0, len = ref.length; i < len; i++) {
t = ref[j]; t = ref[i];
results.push(Header.mapCustomNavigation(t)); results.push(Header.mapCustomNavigation(t));
} }
return results; return results;
@ -11165,7 +11196,7 @@ Header = (function() {
} }
}, },
addShortcut: function(id, el, index) { addShortcut: function(id, el, index) {
var item, j, len, ref, shortcut; var i, item, len, ref, shortcut;
shortcut = $.el('span', { shortcut = $.el('span', {
id: "shortcut-" + id, id: "shortcut-" + id,
className: 'shortcut brackets-wrap' className: 'shortcut brackets-wrap'
@ -11173,8 +11204,8 @@ Header = (function() {
$.add(shortcut, el); $.add(shortcut, el);
shortcut.dataset.index = index; shortcut.dataset.index = index;
ref = $$('[data-index]', Header.shortcuts); ref = $$('[data-index]', Header.shortcuts);
for (j = 0, len = ref.length; j < len; j++) { for (i = 0, len = ref.length; i < len; i++) {
item = ref[j]; item = ref[i];
if (!(+item.dataset.index > +index)) { if (!(+item.dataset.index > +index)) {
continue; continue;
} }
@ -17347,7 +17378,7 @@ Linkify = (function() {
if ((length = index + word.length) === data.length) { if ((length = index + word.length) === data.length) {
test.lastIndex = 0; test.lastIndex = 0;
while ((saved = snapshot.snapshotItem(i++))) { while ((saved = snapshot.snapshotItem(i++))) {
if (saved.nodeName === 'BR') { if (saved.nodeName === 'BR' || (saved.parentElement.nodeName === 'P' && !saved.previousSibling)) {
if ((part1 = word.match(/(https?:\/\/)?([a-z\d-]+\.)*[a-z\d-]+$/i)) && (part2 = (ref = snapshot.snapshotItem(i)) != null ? (ref1 = ref.data) != null ? ref1.match(/^(\.[a-z\d-]+)*\//i) : void 0 : void 0) && (part1[0] + part2[0]).search(Linkify.regString) === 0) { if ((part1 = word.match(/(https?:\/\/)?([a-z\d-]+\.)*[a-z\d-]+$/i)) && (part2 = (ref = snapshot.snapshotItem(i)) != null ? (ref1 = ref.data) != null ? ref1.match(/^(\.[a-z\d-]+)*\//i) : void 0 : void 0) && (part1[0] + part2[0]).search(Linkify.regString) === 0) {
continue; continue;
} else { } else {

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript== // ==UserScript==
// @name 4chan X // @name 4chan X
// @version 1.14.15.0 // @version 1.14.15.1
// @minGMVer 1.14 // @minGMVer 1.14
// @minFFVer 26 // @minFFVer 26
// @namespace 4chan-X // @namespace 4chan-X
@ -28,6 +28,8 @@
// @include https://is.4channel.org/* // @include https://is.4channel.org/*
// @include http://is2.4channel.org/* // @include http://is2.4channel.org/*
// @include https://is2.4channel.org/* // @include https://is2.4channel.org/*
// @include https://erischan.org/*
// @include https://www.erischan.org/*
// @include https://fufufu.moe/* // @include https://fufufu.moe/*
// @include https://gnfos.com/* // @include https://gnfos.com/*
// @include https://himasugi.blog/* // @include https://himasugi.blog/*
@ -44,6 +46,7 @@
// @include https://ponyville.us/* // @include https://ponyville.us/*
// @include https://www.ponyville.us/* // @include https://www.ponyville.us/*
// @include https://samachan.org/* // @include https://samachan.org/*
// @include https://smuglo.li/*
// @include https://sportschan.org/* // @include https://sportschan.org/*
// @include https://www.sportschan.org/* // @include https://www.sportschan.org/*
// @include https://sushigirl.us/* // @include https://sushigirl.us/*
@ -211,7 +214,7 @@ docSet = function() {
}; };
g = { g = {
VERSION: '1.14.15.0', VERSION: '1.14.15.1',
NAMESPACE: '4chan X.', NAMESPACE: '4chan X.',
sites: Object.create(null), sites: Object.create(null),
boards: Object.create(null) boards: Object.create(null)
@ -1507,7 +1510,15 @@ body.hasDropDownNav{\n\
.gal-buttons.gal-buttons a {\n\ .gal-buttons.gal-buttons a {\n\
font-size: inherit;\n\ font-size: inherit;\n\
}\n\ }\n\
/* Tinyboard site style fixes */\n\ :root.sw-tinyboard.fixed.top-header:not(.autohide) .boardlist,\n\
:root.sw-tinyboard.fixed.top-header:not(.autohide) .bar.top {\n\
position: static;\n\
}\n\
:root.sw-tinyboard.fixed.top-header.autohide .boardlist,\n\
:root.sw-tinyboard.fixed.top-header.autohide .bar.top {\n\
z-index: 3;\n\
}\n\
/* Tinyboard site style conflicts */\n\
:root[data-host=\"fufufu.moe\"].fixed.top-header:not(.autohide) div.pages.top,\n\ :root[data-host=\"fufufu.moe\"].fixed.top-header:not(.autohide) div.pages.top,\n\
:root[data-host=\"merorin.com\"].fixed.top-header:not(.autohide) span.settings {\n\ :root[data-host=\"merorin.com\"].fixed.top-header:not(.autohide) span.settings {\n\
top: 26px;\n\ top: 26px;\n\
@ -1515,6 +1526,12 @@ body.hasDropDownNav{\n\
:root[data-host=\"fufufu.moe\"]:not(.fixed) #header-bar {\n\ :root[data-host=\"fufufu.moe\"]:not(.fixed) #header-bar {\n\
margin-top: 38px;\n\ margin-top: 38px;\n\
}\n\ }\n\
:root[data-host=\"lainchan.org\"]:not(.fixed) #header-bar {\n\
margin-top: 17px;\n\
}\n\
:root[data-host=\"smuglo.li\"]:not(.fixed) #header-bar {\n\
margin-top: 8px;\n\
}\n\
/* Anti-autoplay */\n\ /* Anti-autoplay */\n\
audio.controls-added {\n\ audio.controls-added {\n\
display: block;\n\ display: block;\n\
@ -1713,52 +1730,52 @@ audio.controls-added {\n\
font-weight: bold;\n\ font-weight: bold;\n\
}\n\ }\n\
@media (min-width: 1300px) {\n\ @media (min-width: 1300px) {\n\
:root.fixed:not(.centered-links) #header-bar {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #header-bar {\n\
white-space: nowrap;\n\ white-space: nowrap;\n\
display: -webkit-flex;\n\ display: -webkit-flex;\n\
display: flex;\n\ display: flex;\n\
-webkit-align-items: center;\n\ -webkit-align-items: center;\n\
align-items: center;\n\ align-items: center;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #board-list {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #board-list {\n\
-webkit-flex: auto;\n\ -webkit-flex: auto;\n\
flex: auto;\n\ flex: auto;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list {\n\
display: -webkit-flex;\n\ display: -webkit-flex;\n\
display: flex;\n\ display: flex;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) .hide-board-list-container {\n\ :root.sw-yotsuba.fixed:not(.centered-links) .hide-board-list-container {\n\
-webkit-flex: none;\n\ -webkit-flex: none;\n\
flex: none;\n\ flex: none;\n\
margin-right: 5px;\n\ margin-right: 5px;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList {\n\
-webkit-flex: auto;\n\ -webkit-flex: auto;\n\
flex: auto;\n\ flex: auto;\n\
display: -webkit-flex;\n\ display: -webkit-flex;\n\
display: flex;\n\ display: flex;\n\
width: 0px; /* XXX Fixes Edge not shrinking the board list below default size when needed */\n\ width: 0px; /* XXX Fixes Edge not shrinking the board list below default size when needed */\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > a,\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > a,\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > span:not(.space):not(.spacer) {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > span:not(.space):not(.spacer) {\n\
-webkit-flex: none;\n\ -webkit-flex: none;\n\
flex: none;\n\ flex: none;\n\
padding: .17em;\n\ padding: .17em;\n\
margin: -.17em -.32em;\n\ margin: -.17em -.32em;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > span {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > span {\n\
pointer-events: none;\n\ pointer-events: none;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > span.space {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > span.space {\n\
-webkit-flex: 0 .63 .63em;\n\ -webkit-flex: 0 .63 .63em;\n\
flex: 0 .63 .63em;\n\ flex: 0 .63 .63em;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > span.spacer {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > span.spacer {\n\
-webkit-flex: 0 .38 .38em;\n\ -webkit-flex: 0 .38 .38em;\n\
flex: 0 .38 .38em;\n\ flex: 0 .38 .38em;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #shortcuts {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #shortcuts {\n\
float: initial;\n\ float: initial;\n\
-webkit-flex: none;\n\ -webkit-flex: none;\n\
flex: none;\n\ flex: none;\n\
@ -8369,6 +8386,44 @@ SW = {};
return this.enabled = 'true'; return this.enabled = 'true';
} }
}); });
},
transformBoardList: function() {
var a, chr, i, items, j, len, node, nodes, ref, spacer, span;
nodes = [];
spacer = function() {
return $.el('span', {
className: 'spacer'
});
};
items = $.X('.//a|.//text()[not(ancestor::a)]', $(SW.yotsuba.selectors.boardList));
i = 0;
while (node = items.snapshotItem(i++)) {
switch (node.nodeName) {
case '#text':
ref = node.nodeValue;
for (j = 0, len = ref.length; j < len; j++) {
chr = ref[j];
span = $.el('span', {
textContent: chr
});
if (chr === ' ') {
span.className = 'space';
}
if (chr === ']') {
nodes.push(spacer());
}
nodes.push(span);
if (chr === '[') {
nodes.push(spacer());
}
}
break;
case 'A':
a = node.cloneNode(true);
nodes.push(a);
}
}
return nodes;
} }
}; };
@ -10554,7 +10609,8 @@ Get = (function() {
}).call(this); }).call(this);
Header = (function() { Header = (function() {
var Header; var Header,
slice = [].slice;
Header = { Header = {
init: function() { init: function() {
@ -10652,7 +10708,7 @@ Header = (function() {
this.setBoardList(); this.setBoardList();
$.onExists(doc, g.SITE.selectors.boardList + " + *", Header.generateFullBoardList); $.onExists(doc, g.SITE.selectors.boardList + " + *", Header.generateFullBoardList);
Main.ready(function() { Main.ready(function() {
var a, absbot, footer, j, len, ref; var a, absbot, footer, i, len, ref;
if (g.SITE.software === 'yotsuba' && !(footer = $.id('boardNavDesktopFoot'))) { if (g.SITE.software === 'yotsuba' && !(footer = $.id('boardNavDesktopFoot'))) {
if (!(absbot = $.id('absbot'))) { if (!(absbot = $.id('absbot'))) {
return; return;
@ -10668,8 +10724,8 @@ Header = (function() {
} }
if ((Header.bottomBoardList = $(g.SITE.selectors.boardListBottom))) { if ((Header.bottomBoardList = $(g.SITE.selectors.boardListBottom))) {
ref = $$('a', Header.bottomBoardList); ref = $$('a', Header.bottomBoardList);
for (j = 0, len = ref.length; j < len; j++) { for (i = 0, len = ref.length; i < len; i++) {
a = ref[j]; a = ref[i];
if (a.hostname === location.hostname && a.pathname.split('/')[1] === g.BOARD.ID) { if (a.hostname === location.hostname && a.pathname.split('/')[1] === g.BOARD.ID) {
a.className = 'current'; a.className = 'current';
} }
@ -10725,46 +10781,21 @@ Header = (function() {
return $.sync('boardnav', Header.generateBoardList); return $.sync('boardnav', Header.generateBoardList);
}, },
generateFullBoardList: function() { generateFullBoardList: function() {
var a, chr, fullBoardList, i, items, j, len, node, nodes, ref, spacer, span; var a, fullBoardList, i, len, nodes, ref;
nodes = []; if (g.SITE.transformBoardList) {
spacer = function() { nodes = g.SITE.transformBoardList();
return $.el('span', { } else {
className: 'spacer' nodes = slice.call($(g.SITE.selectors.boardList).cloneNode(true).childNodes);
});
};
items = $.X('.//a|.//text()[not(ancestor::a)]', $(g.SITE.selectors.boardList));
i = 0;
while (node = items.snapshotItem(i++)) {
switch (node.nodeName) {
case '#text':
ref = node.nodeValue;
for (j = 0, len = ref.length; j < len; j++) {
chr = ref[j];
span = $.el('span', {
textContent: chr
});
if (chr === ' ') {
span.className = 'space';
}
if (chr === ']') {
nodes.push(spacer());
}
nodes.push(span);
if (chr === '[') {
nodes.push(spacer());
}
}
break;
case 'A':
a = node.cloneNode(true);
if (a.hostname === location.hostname && a.pathname.split('/')[1] === g.BOARD.ID) {
a.className = 'current';
}
nodes.push(a);
}
} }
fullBoardList = $('.boardList', Header.boardList); fullBoardList = $('.boardList', Header.boardList);
$.add(fullBoardList, nodes); $.add(fullBoardList, nodes);
ref = $$('a', fullBoardList);
for (i = 0, len = ref.length; i < len; i++) {
a = ref[i];
if (a.hostname === location.hostname && a.pathname.split('/')[1] === g.BOARD.ID) {
a.className = 'current';
}
}
return CatalogLinks.setLinks(fullBoardList); return CatalogLinks.setLinks(fullBoardList);
}, },
generateBoardList: function(boardnav) { generateBoardList: function(boardnav) {
@ -10777,11 +10808,11 @@ Header = (function() {
boardnav = boardnav.replace(/(\r\n|\n|\r)/g, ' '); boardnav = boardnav.replace(/(\r\n|\n|\r)/g, ' ');
re = /[\w@]+(-(all|title|replace|full|index|catalog|archive|expired|nt|(mode|sort|text):"[^"]+"(,"[^"]+")?))*|[^\w@]+/g; re = /[\w@]+(-(all|title|replace|full|index|catalog|archive|expired|nt|(mode|sort|text):"[^"]+"(,"[^"]+")?))*|[^\w@]+/g;
nodes = (function() { nodes = (function() {
var j, len, ref, results; var i, len, ref, results;
ref = boardnav.match(re); ref = boardnav.match(re);
results = []; results = [];
for (j = 0, len = ref.length; j < len; j++) { for (i = 0, len = ref.length; i < len; i++) {
t = ref[j]; t = ref[i];
results.push(Header.mapCustomNavigation(t)); results.push(Header.mapCustomNavigation(t));
} }
return results; return results;
@ -11165,7 +11196,7 @@ Header = (function() {
} }
}, },
addShortcut: function(id, el, index) { addShortcut: function(id, el, index) {
var item, j, len, ref, shortcut; var i, item, len, ref, shortcut;
shortcut = $.el('span', { shortcut = $.el('span', {
id: "shortcut-" + id, id: "shortcut-" + id,
className: 'shortcut brackets-wrap' className: 'shortcut brackets-wrap'
@ -11173,8 +11204,8 @@ Header = (function() {
$.add(shortcut, el); $.add(shortcut, el);
shortcut.dataset.index = index; shortcut.dataset.index = index;
ref = $$('[data-index]', Header.shortcuts); ref = $$('[data-index]', Header.shortcuts);
for (j = 0, len = ref.length; j < len; j++) { for (i = 0, len = ref.length; i < len; i++) {
item = ref[j]; item = ref[i];
if (!(+item.dataset.index > +index)) { if (!(+item.dataset.index > +index)) {
continue; continue;
} }
@ -17347,7 +17378,7 @@ Linkify = (function() {
if ((length = index + word.length) === data.length) { if ((length = index + word.length) === data.length) {
test.lastIndex = 0; test.lastIndex = 0;
while ((saved = snapshot.snapshotItem(i++))) { while ((saved = snapshot.snapshotItem(i++))) {
if (saved.nodeName === 'BR') { if (saved.nodeName === 'BR' || (saved.parentElement.nodeName === 'P' && !saved.previousSibling)) {
if ((part1 = word.match(/(https?:\/\/)?([a-z\d-]+\.)*[a-z\d-]+$/i)) && (part2 = (ref = snapshot.snapshotItem(i)) != null ? (ref1 = ref.data) != null ? ref1.match(/^(\.[a-z\d-]+)*\//i) : void 0 : void 0) && (part1[0] + part2[0]).search(Linkify.regString) === 0) { if ((part1 = word.match(/(https?:\/\/)?([a-z\d-]+\.)*[a-z\d-]+$/i)) && (part2 = (ref = snapshot.snapshotItem(i)) != null ? (ref1 = ref.data) != null ? ref1.match(/^(\.[a-z\d-]+)*\//i) : void 0 : void 0) && (part1[0] + part2[0]).search(Linkify.regString) === 0) {
continue; continue;
} else { } else {

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript== // ==UserScript==
// @name 4chan X // @name 4chan X
// @version 1.14.15.0 // @version 1.14.15.1
// @minGMVer 1.14 // @minGMVer 1.14
// @minFFVer 26 // @minFFVer 26
// @namespace 4chan-X // @namespace 4chan-X
@ -28,6 +28,8 @@
// @include https://is.4channel.org/* // @include https://is.4channel.org/*
// @include http://is2.4channel.org/* // @include http://is2.4channel.org/*
// @include https://is2.4channel.org/* // @include https://is2.4channel.org/*
// @include https://erischan.org/*
// @include https://www.erischan.org/*
// @include https://fufufu.moe/* // @include https://fufufu.moe/*
// @include https://gnfos.com/* // @include https://gnfos.com/*
// @include https://himasugi.blog/* // @include https://himasugi.blog/*
@ -44,6 +46,7 @@
// @include https://ponyville.us/* // @include https://ponyville.us/*
// @include https://www.ponyville.us/* // @include https://www.ponyville.us/*
// @include https://samachan.org/* // @include https://samachan.org/*
// @include https://smuglo.li/*
// @include https://sportschan.org/* // @include https://sportschan.org/*
// @include https://www.sportschan.org/* // @include https://www.sportschan.org/*
// @include https://sushigirl.us/* // @include https://sushigirl.us/*

View File

@ -1,6 +1,6 @@
// ==UserScript== // ==UserScript==
// @name 4chan X // @name 4chan X
// @version 1.14.15.0 // @version 1.14.15.1
// @minGMVer 1.14 // @minGMVer 1.14
// @minFFVer 26 // @minFFVer 26
// @namespace 4chan-X // @namespace 4chan-X
@ -28,6 +28,8 @@
// @include https://is.4channel.org/* // @include https://is.4channel.org/*
// @include http://is2.4channel.org/* // @include http://is2.4channel.org/*
// @include https://is2.4channel.org/* // @include https://is2.4channel.org/*
// @include https://erischan.org/*
// @include https://www.erischan.org/*
// @include https://fufufu.moe/* // @include https://fufufu.moe/*
// @include https://gnfos.com/* // @include https://gnfos.com/*
// @include https://himasugi.blog/* // @include https://himasugi.blog/*
@ -44,6 +46,7 @@
// @include https://ponyville.us/* // @include https://ponyville.us/*
// @include https://www.ponyville.us/* // @include https://www.ponyville.us/*
// @include https://samachan.org/* // @include https://samachan.org/*
// @include https://smuglo.li/*
// @include https://sportschan.org/* // @include https://sportschan.org/*
// @include https://www.sportschan.org/* // @include https://www.sportschan.org/*
// @include https://sushigirl.us/* // @include https://sushigirl.us/*
@ -211,7 +214,7 @@ docSet = function() {
}; };
g = { g = {
VERSION: '1.14.15.0', VERSION: '1.14.15.1',
NAMESPACE: '4chan X.', NAMESPACE: '4chan X.',
sites: Object.create(null), sites: Object.create(null),
boards: Object.create(null) boards: Object.create(null)
@ -1507,7 +1510,15 @@ body.hasDropDownNav{\n\
.gal-buttons.gal-buttons a {\n\ .gal-buttons.gal-buttons a {\n\
font-size: inherit;\n\ font-size: inherit;\n\
}\n\ }\n\
/* Tinyboard site style fixes */\n\ :root.sw-tinyboard.fixed.top-header:not(.autohide) .boardlist,\n\
:root.sw-tinyboard.fixed.top-header:not(.autohide) .bar.top {\n\
position: static;\n\
}\n\
:root.sw-tinyboard.fixed.top-header.autohide .boardlist,\n\
:root.sw-tinyboard.fixed.top-header.autohide .bar.top {\n\
z-index: 3;\n\
}\n\
/* Tinyboard site style conflicts */\n\
:root[data-host=\"fufufu.moe\"].fixed.top-header:not(.autohide) div.pages.top,\n\ :root[data-host=\"fufufu.moe\"].fixed.top-header:not(.autohide) div.pages.top,\n\
:root[data-host=\"merorin.com\"].fixed.top-header:not(.autohide) span.settings {\n\ :root[data-host=\"merorin.com\"].fixed.top-header:not(.autohide) span.settings {\n\
top: 26px;\n\ top: 26px;\n\
@ -1515,6 +1526,12 @@ body.hasDropDownNav{\n\
:root[data-host=\"fufufu.moe\"]:not(.fixed) #header-bar {\n\ :root[data-host=\"fufufu.moe\"]:not(.fixed) #header-bar {\n\
margin-top: 38px;\n\ margin-top: 38px;\n\
}\n\ }\n\
:root[data-host=\"lainchan.org\"]:not(.fixed) #header-bar {\n\
margin-top: 17px;\n\
}\n\
:root[data-host=\"smuglo.li\"]:not(.fixed) #header-bar {\n\
margin-top: 8px;\n\
}\n\
/* Anti-autoplay */\n\ /* Anti-autoplay */\n\
audio.controls-added {\n\ audio.controls-added {\n\
display: block;\n\ display: block;\n\
@ -1713,52 +1730,52 @@ audio.controls-added {\n\
font-weight: bold;\n\ font-weight: bold;\n\
}\n\ }\n\
@media (min-width: 1300px) {\n\ @media (min-width: 1300px) {\n\
:root.fixed:not(.centered-links) #header-bar {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #header-bar {\n\
white-space: nowrap;\n\ white-space: nowrap;\n\
display: -webkit-flex;\n\ display: -webkit-flex;\n\
display: flex;\n\ display: flex;\n\
-webkit-align-items: center;\n\ -webkit-align-items: center;\n\
align-items: center;\n\ align-items: center;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #board-list {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #board-list {\n\
-webkit-flex: auto;\n\ -webkit-flex: auto;\n\
flex: auto;\n\ flex: auto;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list {\n\
display: -webkit-flex;\n\ display: -webkit-flex;\n\
display: flex;\n\ display: flex;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) .hide-board-list-container {\n\ :root.sw-yotsuba.fixed:not(.centered-links) .hide-board-list-container {\n\
-webkit-flex: none;\n\ -webkit-flex: none;\n\
flex: none;\n\ flex: none;\n\
margin-right: 5px;\n\ margin-right: 5px;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList {\n\
-webkit-flex: auto;\n\ -webkit-flex: auto;\n\
flex: auto;\n\ flex: auto;\n\
display: -webkit-flex;\n\ display: -webkit-flex;\n\
display: flex;\n\ display: flex;\n\
width: 0px; /* XXX Fixes Edge not shrinking the board list below default size when needed */\n\ width: 0px; /* XXX Fixes Edge not shrinking the board list below default size when needed */\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > a,\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > a,\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > span:not(.space):not(.spacer) {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > span:not(.space):not(.spacer) {\n\
-webkit-flex: none;\n\ -webkit-flex: none;\n\
flex: none;\n\ flex: none;\n\
padding: .17em;\n\ padding: .17em;\n\
margin: -.17em -.32em;\n\ margin: -.17em -.32em;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > span {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > span {\n\
pointer-events: none;\n\ pointer-events: none;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > span.space {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > span.space {\n\
-webkit-flex: 0 .63 .63em;\n\ -webkit-flex: 0 .63 .63em;\n\
flex: 0 .63 .63em;\n\ flex: 0 .63 .63em;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #full-board-list > .boardList > span.spacer {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #full-board-list > .boardList > span.spacer {\n\
-webkit-flex: 0 .38 .38em;\n\ -webkit-flex: 0 .38 .38em;\n\
flex: 0 .38 .38em;\n\ flex: 0 .38 .38em;\n\
}\n\ }\n\
:root.fixed:not(.centered-links) #shortcuts {\n\ :root.sw-yotsuba.fixed:not(.centered-links) #shortcuts {\n\
float: initial;\n\ float: initial;\n\
-webkit-flex: none;\n\ -webkit-flex: none;\n\
flex: none;\n\ flex: none;\n\
@ -8369,6 +8386,44 @@ SW = {};
return this.enabled = 'true'; return this.enabled = 'true';
} }
}); });
},
transformBoardList: function() {
var a, chr, i, items, j, len, node, nodes, ref, spacer, span;
nodes = [];
spacer = function() {
return $.el('span', {
className: 'spacer'
});
};
items = $.X('.//a|.//text()[not(ancestor::a)]', $(SW.yotsuba.selectors.boardList));
i = 0;
while (node = items.snapshotItem(i++)) {
switch (node.nodeName) {
case '#text':
ref = node.nodeValue;
for (j = 0, len = ref.length; j < len; j++) {
chr = ref[j];
span = $.el('span', {
textContent: chr
});
if (chr === ' ') {
span.className = 'space';
}
if (chr === ']') {
nodes.push(spacer());
}
nodes.push(span);
if (chr === '[') {
nodes.push(spacer());
}
}
break;
case 'A':
a = node.cloneNode(true);
nodes.push(a);
}
}
return nodes;
} }
}; };
@ -10554,7 +10609,8 @@ Get = (function() {
}).call(this); }).call(this);
Header = (function() { Header = (function() {
var Header; var Header,
slice = [].slice;
Header = { Header = {
init: function() { init: function() {
@ -10652,7 +10708,7 @@ Header = (function() {
this.setBoardList(); this.setBoardList();
$.onExists(doc, g.SITE.selectors.boardList + " + *", Header.generateFullBoardList); $.onExists(doc, g.SITE.selectors.boardList + " + *", Header.generateFullBoardList);
Main.ready(function() { Main.ready(function() {
var a, absbot, footer, j, len, ref; var a, absbot, footer, i, len, ref;
if (g.SITE.software === 'yotsuba' && !(footer = $.id('boardNavDesktopFoot'))) { if (g.SITE.software === 'yotsuba' && !(footer = $.id('boardNavDesktopFoot'))) {
if (!(absbot = $.id('absbot'))) { if (!(absbot = $.id('absbot'))) {
return; return;
@ -10668,8 +10724,8 @@ Header = (function() {
} }
if ((Header.bottomBoardList = $(g.SITE.selectors.boardListBottom))) { if ((Header.bottomBoardList = $(g.SITE.selectors.boardListBottom))) {
ref = $$('a', Header.bottomBoardList); ref = $$('a', Header.bottomBoardList);
for (j = 0, len = ref.length; j < len; j++) { for (i = 0, len = ref.length; i < len; i++) {
a = ref[j]; a = ref[i];
if (a.hostname === location.hostname && a.pathname.split('/')[1] === g.BOARD.ID) { if (a.hostname === location.hostname && a.pathname.split('/')[1] === g.BOARD.ID) {
a.className = 'current'; a.className = 'current';
} }
@ -10725,46 +10781,21 @@ Header = (function() {
return $.sync('boardnav', Header.generateBoardList); return $.sync('boardnav', Header.generateBoardList);
}, },
generateFullBoardList: function() { generateFullBoardList: function() {
var a, chr, fullBoardList, i, items, j, len, node, nodes, ref, spacer, span; var a, fullBoardList, i, len, nodes, ref;
nodes = []; if (g.SITE.transformBoardList) {
spacer = function() { nodes = g.SITE.transformBoardList();
return $.el('span', { } else {
className: 'spacer' nodes = slice.call($(g.SITE.selectors.boardList).cloneNode(true).childNodes);
});
};
items = $.X('.//a|.//text()[not(ancestor::a)]', $(g.SITE.selectors.boardList));
i = 0;
while (node = items.snapshotItem(i++)) {
switch (node.nodeName) {
case '#text':
ref = node.nodeValue;
for (j = 0, len = ref.length; j < len; j++) {
chr = ref[j];
span = $.el('span', {
textContent: chr
});
if (chr === ' ') {
span.className = 'space';
}
if (chr === ']') {
nodes.push(spacer());
}
nodes.push(span);
if (chr === '[') {
nodes.push(spacer());
}
}
break;
case 'A':
a = node.cloneNode(true);
if (a.hostname === location.hostname && a.pathname.split('/')[1] === g.BOARD.ID) {
a.className = 'current';
}
nodes.push(a);
}
} }
fullBoardList = $('.boardList', Header.boardList); fullBoardList = $('.boardList', Header.boardList);
$.add(fullBoardList, nodes); $.add(fullBoardList, nodes);
ref = $$('a', fullBoardList);
for (i = 0, len = ref.length; i < len; i++) {
a = ref[i];
if (a.hostname === location.hostname && a.pathname.split('/')[1] === g.BOARD.ID) {
a.className = 'current';
}
}
return CatalogLinks.setLinks(fullBoardList); return CatalogLinks.setLinks(fullBoardList);
}, },
generateBoardList: function(boardnav) { generateBoardList: function(boardnav) {
@ -10777,11 +10808,11 @@ Header = (function() {
boardnav = boardnav.replace(/(\r\n|\n|\r)/g, ' '); boardnav = boardnav.replace(/(\r\n|\n|\r)/g, ' ');
re = /[\w@]+(-(all|title|replace|full|index|catalog|archive|expired|nt|(mode|sort|text):"[^"]+"(,"[^"]+")?))*|[^\w@]+/g; re = /[\w@]+(-(all|title|replace|full|index|catalog|archive|expired|nt|(mode|sort|text):"[^"]+"(,"[^"]+")?))*|[^\w@]+/g;
nodes = (function() { nodes = (function() {
var j, len, ref, results; var i, len, ref, results;
ref = boardnav.match(re); ref = boardnav.match(re);
results = []; results = [];
for (j = 0, len = ref.length; j < len; j++) { for (i = 0, len = ref.length; i < len; i++) {
t = ref[j]; t = ref[i];
results.push(Header.mapCustomNavigation(t)); results.push(Header.mapCustomNavigation(t));
} }
return results; return results;
@ -11165,7 +11196,7 @@ Header = (function() {
} }
}, },
addShortcut: function(id, el, index) { addShortcut: function(id, el, index) {
var item, j, len, ref, shortcut; var i, item, len, ref, shortcut;
shortcut = $.el('span', { shortcut = $.el('span', {
id: "shortcut-" + id, id: "shortcut-" + id,
className: 'shortcut brackets-wrap' className: 'shortcut brackets-wrap'
@ -11173,8 +11204,8 @@ Header = (function() {
$.add(shortcut, el); $.add(shortcut, el);
shortcut.dataset.index = index; shortcut.dataset.index = index;
ref = $$('[data-index]', Header.shortcuts); ref = $$('[data-index]', Header.shortcuts);
for (j = 0, len = ref.length; j < len; j++) { for (i = 0, len = ref.length; i < len; i++) {
item = ref[j]; item = ref[i];
if (!(+item.dataset.index > +index)) { if (!(+item.dataset.index > +index)) {
continue; continue;
} }
@ -17347,7 +17378,7 @@ Linkify = (function() {
if ((length = index + word.length) === data.length) { if ((length = index + word.length) === data.length) {
test.lastIndex = 0; test.lastIndex = 0;
while ((saved = snapshot.snapshotItem(i++))) { while ((saved = snapshot.snapshotItem(i++))) {
if (saved.nodeName === 'BR') { if (saved.nodeName === 'BR' || (saved.parentElement.nodeName === 'P' && !saved.previousSibling)) {
if ((part1 = word.match(/(https?:\/\/)?([a-z\d-]+\.)*[a-z\d-]+$/i)) && (part2 = (ref = snapshot.snapshotItem(i)) != null ? (ref1 = ref.data) != null ? ref1.match(/^(\.[a-z\d-]+)*\//i) : void 0 : void 0) && (part1[0] + part2[0]).search(Linkify.regString) === 0) { if ((part1 = word.match(/(https?:\/\/)?([a-z\d-]+\.)*[a-z\d-]+$/i)) && (part2 = (ref = snapshot.snapshotItem(i)) != null ? (ref1 = ref.data) != null ? ref1.match(/^(\.[a-z\d-]+)*\//i) : void 0 : void 0) && (part1[0] + part2[0]).search(Linkify.regString) === 0) {
continue; continue;
} else { } else {

Binary file not shown.

View File

@ -3,7 +3,7 @@
"4chan-x@4chan-x.net": { "4chan-x@4chan-x.net": {
"updates": [ "updates": [
{ {
"version": "1.14.15.0", "version": "1.14.15.1",
"update_link": "https://www.4chan-x.net/builds/4chan-X-beta.crx" "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'?> <?xml version='1.0' encoding='UTF-8'?>
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'> <gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
<app appid='lacclbnghgdicfifcamcmcnilckjamag'> <app appid='lacclbnghgdicfifcamcmcnilckjamag'>
<updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.14.15.0' /> <updatecheck codebase='https://www.4chan-x.net/builds/4chan-X-beta.crx' version='1.14.15.1' />
</app> </app>
</gupdate> </gupdate>

View File

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

View File

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

View File

@ -1,4 +1,4 @@
{ {
"version": "1.14.15.0", "version": "1.14.15.1",
"date": "2019-12-13T21:49:13.339Z" "date": "2019-12-17T19:48:51.458Z"
} }