Merge branch 'bstable'

This commit is contained in:
ccd0 2015-04-13 21:02:53 -07:00
commit 964128b211
16 changed files with 57 additions and 232 deletions

View File

@ -4,6 +4,9 @@ The links to individual versions below are to copies of the script with the upda
### v1.10.8
**v1.10.8.10** *(2015-04-13)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.8.10/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.8.10/builds/4chan-X-noupdate.crx "Chromium version")]
- Fix unwanted focusing on the submit button if you focus on the comment field too soon after entering the captcha.
**v1.10.8.9** *(2015-04-13)* - [[Firefox](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.8.9/builds/4chan-X-noupdate.user.js "Firefox version")] [[Chromium](https://raw.githubusercontent.com/ccd0/4chan-x/1.10.8.9/builds/4chan-X-noupdate.crx "Chromium version")]
- (fgts) Remove /fit/ from fgts archive.

View File

@ -1,4 +1,6 @@
path = require 'path'
crx = require 'crx'
JSZip = require 'jszip'
module.exports = (grunt) ->
grunt.util.linefeed = '\n'
@ -234,25 +236,6 @@ module.exports = (grunt) ->
]
tasks: 'build'
crx:
prod:
src: 'testbuilds/crx<%= pkg.meta.suffix[pkg.channel] %>/'
dest: 'testbuilds/<%= pkg.name %><%= pkg.meta.suffix[pkg.channel] %>.crx'
privateKey: '../<%= pkg.name %>-keys/<%= pkg.name %>.pem'
compress:
crx:
options:
archive: 'testbuilds/<%= pkg.name %><%= pkg.meta.suffix[pkg.channel] %>.crx.zip'
level: 9
pretty: true
expand: true
flatten: true
src: 'testbuilds/crx<%= pkg.meta.suffix[pkg.channel] %>/*'
dest: '/'
date: '<%= pkg.meta.date %>'
mode: parseInt('644', 8)
clean:
builds: 'builds'
testbuilds: 'testbuilds'
@ -335,7 +318,7 @@ module.exports = (grunt) ->
grunt.registerTask 'build-crx-channel', [
'concat:crx'
'copy:crx'
'compress:crx'
'zip-crx'
]
grunt.registerTask 'build-crx', [
@ -354,6 +337,17 @@ module.exports = (grunt) ->
'clean:tmpcrx'
]
grunt.registerTask 'zip-crx', 'Pack CRX contents in ZIP file', ->
pkg = grunt.config 'pkg'
zip = new JSZip()
for file in grunt.file.expand "testbuilds/crx#{pkg.meta.suffix[pkg.channel]}/*"
zip.file path.basename(file), grunt.file.read(file, {encoding: null}), {date: new Date(pkg.meta.date)}
output = zip.generate
type: 'nodebuffer'
compression: 'DEFLATE'
compressionOptions: {level: 9}
grunt.file.write "testbuilds/#{pkg.name}#{pkg.meta.suffix[pkg.channel]}.crx.zip", output
grunt.registerTask 'sign-channel', 'Sign CRX package', (channel) ->
done = @async()
pkg = grunt.config 'pkg'

Binary file not shown.

View File

@ -1,6 +1,6 @@
// ==UserScript==
// @name 4chan X beta
// @version 1.10.8.9
// @version 1.10.8.10
// @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.8.9
// @version 1.10.8.10
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -396,7 +396,7 @@
doc = d.documentElement;
g = {
VERSION: '1.10.8.9',
VERSION: '1.10.8.10',
NAMESPACE: '4chan X.',
boards: {}
};
@ -8132,7 +8132,7 @@
}
},
save: function(pasted) {
var base1;
var base1, focus, ref, ref1;
$.forceSync('captchas');
this.captchas.push({
response: $('textarea', this.nodes.container).value,
@ -8148,6 +8148,7 @@
}
this.reload();
} else {
focus = ((ref = d.activeElement) != null ? ref.nodeName : void 0) === 'IFRAME' && ((ref1 = d.activeElement.src) != null ? ref1.slice(0, 38) : void 0) === 'https://www.google.com/recaptcha/api2/';
if (pasted) {
this.destroy();
} else {
@ -8155,7 +8156,9 @@
base1.destroy = setTimeout(this.destroy.bind(this), 3 * $.SECOND);
}
}
QR.nodes.status.focus();
if (focus) {
QR.nodes.status.focus();
}
}
if (Conf['Post on Captcha Completion'] && !QR.cooldown.auto) {
return QR.submit();

Binary file not shown.

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
// @version 1.10.8.9
// @version 1.10.8.10
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -395,7 +395,7 @@
doc = d.documentElement;
g = {
VERSION: '1.10.8.9',
VERSION: '1.10.8.10',
NAMESPACE: '4chan X.',
boards: {}
};
@ -8131,7 +8131,7 @@
}
},
save: function(pasted) {
var base1;
var base1, focus, ref, ref1;
$.forceSync('captchas');
this.captchas.push({
response: $('textarea', this.nodes.container).value,
@ -8147,6 +8147,7 @@
}
this.reload();
} else {
focus = ((ref = d.activeElement) != null ? ref.nodeName : void 0) === 'IFRAME' && ((ref1 = d.activeElement.src) != null ? ref1.slice(0, 38) : void 0) === 'https://www.google.com/recaptcha/api2/';
if (pasted) {
this.destroy();
} else {
@ -8154,7 +8155,9 @@
base1.destroy = setTimeout(this.destroy.bind(this), 3 * $.SECOND);
}
}
QR.nodes.status.focus();
if (focus) {
QR.nodes.status.focus();
}
}
if (Conf['Post on Captcha Completion'] && !QR.cooldown.auto) {
return QR.submit();

Binary file not shown.

View File

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

View File

@ -1,7 +1,7 @@
// Generated by CoffeeScript
// ==UserScript==
// @name 4chan X
// @version 1.10.8.9
// @version 1.10.8.10
// @minGMVer 1.14
// @minFFVer 26
// @namespace 4chan-X
@ -396,7 +396,7 @@
doc = d.documentElement;
g = {
VERSION: '1.10.8.9',
VERSION: '1.10.8.10',
NAMESPACE: '4chan X.',
boards: {}
};
@ -8132,7 +8132,7 @@
}
},
save: function(pasted) {
var base1;
var base1, focus, ref, ref1;
$.forceSync('captchas');
this.captchas.push({
response: $('textarea', this.nodes.container).value,
@ -8148,6 +8148,7 @@
}
this.reload();
} else {
focus = ((ref = d.activeElement) != null ? ref.nodeName : void 0) === 'IFRAME' && ((ref1 = d.activeElement.src) != null ? ref1.slice(0, 38) : void 0) === 'https://www.google.com/recaptcha/api2/';
if (pasted) {
this.destroy();
} else {
@ -8155,7 +8156,9 @@
base1.destroy = setTimeout(this.destroy.bind(this), 3 * $.SECOND);
}
}
QR.nodes.status.focus();
if (focus) {
QR.nodes.status.focus();
}
}
if (Conf['Post on Captcha Completion'] && !QR.cooldown.auto) {
return QR.submit();

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

202
npm-shrinkwrap.json generated
View File

@ -465,198 +465,6 @@
}
}
},
"grunt-contrib-compress": {
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-compress/-/grunt-contrib-compress-0.13.0.tgz",
"dependencies": {
"archiver": {
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/archiver/-/archiver-0.13.1.tgz",
"dependencies": {
"async": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz"
},
"buffer-crc32": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz"
},
"glob": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz",
"dependencies": {
"inflight": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
"dependencies": {
"wrappy": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
}
}
},
"inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"minimatch": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.1.tgz",
"dependencies": {
"brace-expansion": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz",
"dependencies": {
"balanced-match": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz"
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
}
}
}
}
},
"once": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/once/-/once-1.3.1.tgz",
"dependencies": {
"wrappy": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
}
}
}
}
},
"lazystream": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz"
},
"lodash": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.1.tgz"
},
"readable-stream": {
"version": "1.0.33",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz",
"dependencies": {
"core-util-is": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
},
"inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
},
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
}
}
},
"tar-stream": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.1.2.tgz",
"dependencies": {
"bl": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/bl/-/bl-0.9.3.tgz"
},
"end-of-stream": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.1.0.tgz",
"dependencies": {
"once": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/once/-/once-1.3.1.tgz",
"dependencies": {
"wrappy": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
}
}
}
}
},
"xtend": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz"
}
}
},
"zip-stream": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.5.0.tgz",
"dependencies": {
"compress-commons": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-0.2.0.tgz",
"dependencies": {
"crc32-stream": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.3.1.tgz"
},
"node-int64": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.3.3.tgz"
}
}
}
}
}
}
},
"chalk": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
"dependencies": {
"ansi-styles": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
},
"has-ansi": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
}
}
},
"strip-ansi": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
}
}
},
"supports-color": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
}
}
},
"prettysize": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/prettysize/-/prettysize-0.0.3.tgz"
}
}
},
"grunt-contrib-concat": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-0.5.1.tgz",
@ -1081,6 +889,16 @@
}
}
},
"jszip": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-2.5.0.tgz",
"dependencies": {
"pako": {
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/pako/-/pako-0.2.6.tgz"
}
}
},
"load-grunt-tasks": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.1.0.tgz",

View File

@ -3,8 +3,8 @@
"description": "Cross-browser userscript for maximum lurking on 4chan.",
"meta": {
"name": "4chan X",
"version": "1.10.8.9",
"date": "2015-04-13T15:07:30.185Z",
"version": "1.10.8.10",
"date": "2015-04-14T03:57:38.704Z",
"repo": "https://github.com/ccd0/4chan-x/",
"page": "https://github.com/ccd0/4chan-x",
"downloads": "https://ccd0.github.io/4chan-x/builds/",
@ -49,7 +49,6 @@
"grunt-concurrent": "^1.0.0",
"grunt-contrib-clean": "^0.6.0",
"grunt-contrib-coffee": "^0.13.0",
"grunt-contrib-compress": "^0.13.0",
"grunt-contrib-concat": "^0.5.1",
"grunt-contrib-copy": "^0.8.0",
"grunt-contrib-jshint": "^0.11.1",
@ -57,6 +56,7 @@
"grunt-markdown": "^0.7.0",
"grunt-shell": "^1.1.2",
"grunt-webstore-upload": "^0.8.2",
"jszip": "^2.5.0",
"load-grunt-tasks": "^3.1.0",
"npm-shrinkwrap": "^5.3.0"
},

View File

@ -155,11 +155,12 @@ Captcha.v2 =
QR.nodes.status.focus()
@reload()
else
focus = d.activeElement?.nodeName is 'IFRAME' and d.activeElement.src?[...38] is 'https://www.google.com/recaptcha/api2/'
if pasted
@destroy()
else
@timeouts.destroy ?= setTimeout @destroy.bind(@), 3 * $.SECOND
QR.nodes.status.focus()
QR.nodes.status.focus() if focus
QR.submit() if Conf['Post on Captcha Completion'] and !QR.cooldown.auto