Start my quest to integrate 4chan-X V3

This commit is contained in:
Zixaphir 2013-03-12 03:53:57 -07:00
parent 9b0aa74875
commit 611377152e
6 changed files with 566 additions and 256 deletions

22
.gitattributes vendored Normal file
View File

@ -0,0 +1,22 @@
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain

5
.gitignore vendored
View File

@ -1,2 +1,7 @@
node_modules/
tmp/
4chan_x.user.js
Cakefile
script.coffee
*~
*.db

View File

@ -125,20 +125,20 @@
'Expand from here': [true, 'Expand all images only from current position to thread end.']
},
filter: {
name: ['# Filter any namefags:', '#/^(?!Anonymous$)/'].join('\n'),
uniqueID: ['# Filter a specific ID:', '#/Txhvk1Tl/'].join('\n'),
tripcode: ['# Filter any tripfag', '#/^!/'].join('\n'),
capcode: ['# Set a custom class for mods:', '#/Mod$/;highlight:mod;op:yes', '# Set a custom class for moot:', '#/Admin$/;highlight:moot;op:yes'].join('\n'),
email: ['# Filter any e-mails that are not `sage` on /a/ and /jp/:', '#/^(?!sage$)/;boards:a,jp'].join('\n'),
subject: ['# Filter Generals on /v/:', '#/general/i;boards:v;op:only'].join('\n'),
comment: ['# Filter Stallman copypasta on /g/:', '#/what you\'re refer+ing to as linux/i;boards:g'].join('\n'),
flag: [''].join('\n'),
filename: [''].join('\n'),
dimensions: ['# Highlight potential wallpapers:', '#/1920x1080/;op:yes;highlight;top:no;boards:w,wg'].join('\n'),
filesize: [''].join('\n'),
MD5: [''].join('\n')
name: "# Filter any namefags:\n#/^(?!Anonymous$)/",
uniqueID: "# Filter a specific ID:\n#/Txhvk1Tl/",
tripcode: "# Filter any tripfag\n#/^!/",
capcode: "# Set a custom class for mods:\n#/Mod$/;highlight:mod;op:yes\n# Set a custom class for moot:\n#/Admin$/;highlight:moot;op:yes",
email: "# Filter any e-mails that are not `sage` on /a/ and /jp/:\n#/^(?!sage$)/;boards:a,jp",
subject: "# Filter Generals on /v/:\n#/general/i;boards:v;op:only",
comment: "# Filter Stallman copypasta on /g/:\n#/what you\'re refer+ing to as linux/i;boards:g",
flag: '',
filename: '',
dimensions: "# Highlight potential wallpapers:\n#/1920x1080/;op:yes;highlight;top:no;boards:w,wg",
filesize: '',
MD5: ''
},
sauces: ['http://iqdb.org/?url=%turl', 'http://www.google.com/searchbyimage?image_url=%turl', '#http://tineye.com/search?url=%turl', '#http://saucenao.com/search.php?db=999&url=%turl', '#http://3d.iqdb.org/?url=%turl', '#http://regex.info/exif.cgi?imgurl=%url', '# uploaders:', '#http://imgur.com/upload?url=%url;text:Upload to imgur', '#http://omploader.org/upload?url1=%url;text:Upload to omploader', '# "View Same" in archives:', '#//archive.foolz.us/_/search/image/%MD5/;text:View same on foolz', '#//archive.foolz.us/%board/search/image/%MD5/;text:View same on foolz /%board/', '#//archive.installgentoo.net/%board/image/%MD5;text:View same on installgentoo /%board/'].join('\n'),
sauces: "http://iqdb.org/?url=%turl\nhttp://www.google.com/searchbyimage?image_url=%turl\n#http://tineye.com/search?url=%turl\n#http://saucenao.com/search.php?db=999&url=%turl\n#http://3d.iqdb.org/?url=%turl\n#http://regex.info/exif.cgi?imgurl=%url\n# uploaders:\n#http://imgur.com/upload?url=%url;text:Upload to imgur\n#http://omploader.org/upload?url1=%url;text:Upload to omploader\n# \"View Same\" in archives:\n#//archive.foolz.us/_/search/image/%MD5/;text:View same on foolz\n#//archive.foolz.us/%board/search/image/%MD5/;text:View same on foolz /%board/\n#//archive.installgentoo.net/%board/image/%MD5;text:View same on installgentoo /%board/",
time: '%m/%d/%y(%a)%H:%M:%S',
backlink: '>>%id',
fileInfo: '%l (%p%s, %r)',

110
Gruntfile.coffee Normal file
View File

@ -0,0 +1,110 @@
module.exports = (grunt) ->
pkg = grunt.file.readJSON 'package.json'
# Project configuration.
grunt.initConfig
pkg: pkg
concat:
coffee:
options:
process:
data: pkg
src: [
'src/config.coffee'
'src/globals.coffee'
'lib/ui.coffee'
'lib/$.coffee'
'lib/polyfill.coffee'
'src/features.coffee'
'src/qr.coffee'
'src/report.coffee'
'src/main.coffee'
]
dest: 'tmp/script.coffee'
script:
options:
process:
data: pkg
src: [
'src/metadata.js'
'src/banner.js'
'tmp/script.js'
]
dest: '<%= pkg.meta.files.userjs %>'
metadata:
options:
process:
data: pkg
src: 'src/metadata.js',
dest: '<%= pkg.meta.files.metajs %>'
coffee:
script:
src: 'tmp/script.coffee'
dest: 'tmp/script.js'
exec:
commit:
command: ->
release = "#{pkg.meta.name} v#{pkg.version}"
return [
"git checkout #{pkg.meta.mainBranch}"
"git commit -am 'Release #{release}.'"
"git tag -a #{pkg.version} -m '#{release}.'"
"git tag -af stable -m '#{release}.'"
].join(' && ');
stdout: true
push:
command: 'git push origin --all && git push origin --tags'
stdout: true
watch:
all:
options:
interrupt: true
files: [
'Gruntfile.js'
'package.json'
'lib/**/*.coffee'
'src/**/*.coffee'
'src/**/*.js'
'css/**/*.css'
'img/*'
]
tasks: 'default'
clean:
tmp: 'tmp'
grunt.loadNpmTasks 'grunt-bump'
grunt.loadNpmTasks 'grunt-contrib-clean'
grunt.loadNpmTasks 'grunt-contrib-coffee'
grunt.loadNpmTasks 'grunt-contrib-concat'
grunt.loadNpmTasks 'grunt-contrib-watch'
grunt.loadNpmTasks 'grunt-exec'
grunt.registerTask 'default', [
'concat:coffee'
'coffee:script'
'concat:script'
'concat:metadata'
'clean'
]
grunt.registerTask 'release', [
'default'
'exec:commit'
'exec:push'
]
grunt.registerTask 'patch', [
'bump'
]
grunt.registerTask 'upgrade', [
'bump:minor'
]

View File

@ -1,97 +0,0 @@
module.exports = function(grunt) {
var pkg = grunt.file.readJSON('package.json');
// Project configuration.
grunt.initConfig({
pkg: pkg,
concat: {
coffee: {
options: { process: { data: pkg } },
src: [
'src/config.coffee',
'src/globals.coffee',
'lib/ui.coffee',
'lib/$.coffee',
'lib/polyfill.coffee',
'src/features.coffee',
'src/qr.coffee',
'src/report.coffee',
'src/main.coffee'
],
dest: 'tmp/script.coffee'
},
script: {
options: { process: { data: pkg } },
src: [
'src/metadata.js',
'src/banner.js',
'tmp/script.js'
],
dest: '<%= pkg.meta.files.userjs %>'
},
metadata: {
options: { process: { data: pkg } },
src: 'src/metadata.js',
dest: '<%= pkg.meta.files.metajs %>'
}
},
coffee: {
script: {
src: 'tmp/script.coffee',
dest: 'tmp/script.js'
}
},
exec: {
commit: {
command: function() {
var release = pkg.meta.name + ' v' + pkg.version;
return [
'git checkout ' + pkg.meta.mainBranch,
'git commit -am "Release ' + release + '."',
'git tag -a ' + pkg.version + ' -m "' + release + '."',
'git tag -af stable -m "' + release + '."'
].join(' && ');
},
stdout: true
},
push: {
command: 'git push origin --all && git push origin --tags',
stdout: true
}
},
watch: {
all: {
options: {
interrupt: true
},
files: [
'Gruntfile.js',
'package.json',
'lib/**/*.coffee',
'src/**/*.coffee',
'src/**/*.js',
'css/**/*.css',
'img/*'
],
tasks: 'default'
}
},
clean: {
tmp: 'tmp'
}
});
grunt.loadNpmTasks('grunt-bump');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-coffee');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-exec');
grunt.registerTask('default', ['concat:coffee', 'coffee:script', 'concat:script', 'concat:metadata', 'clean']);
grunt.registerTask('release', ['default', 'exec:commit', 'exec:push']);
grunt.registerTask('patch', ['bump']);
grunt.registerTask('upgrade', ['bump:minor']);
};

View File

@ -1,172 +1,442 @@
Config =
main:
'Miscellaneous':
'Enable 4chan\'s Extension': [false, 'Compatibility between <%= meta.name %> and 4chan\'s inline extension is NOT guaranteed.']
'404 Redirect': [true, 'Redirect dead threads and images.']
'Keybinds': [true, 'Bind actions to keyboard shortcuts.']
'Time Formatting': [true, 'Localize and format timestamps arbitrarily.']
'Relative Post Dates': [false, 'Display dates like "3 minutes ago". Tooltip shows the timestamp.']
'File Info Formatting': [true, 'Reformat the file information.']
'Comment Expansion': [true, 'Can expand too long comments.']
'Thread Expansion': [true, 'Can expand threads to view all replies.']
'Index Navigation': [false, 'Navigate to previous / next thread.']
'Custom CSS': [false, 'Apply custom CSS to 4chan.']
'Check for Updates': [true, 'Check for updated versions of <%= meta.name %>.']
'Enable 4chan\'s Extension': [
false
'Compatibility between <%= meta.name %> and 4chan\'s inline extension is NOT guaranteed.'
]
'404 Redirect': [
true
'Redirect dead threads and images.'
]
'Keybinds': [
true
'Bind actions to keyboard shortcuts.'
]
'Time Formatting': [
true
'Localize and format timestamps arbitrarily.'
]
'Relative Post Dates': [
false
'Display dates like "3 minutes ago". Tooltip shows the timestamp.'
]
'File Info Formatting': [
true
'Reformat the file information.'
]
'Comment Expansion': [
true
'Can expand too long comments.'
]
'Thread Expansion': [
true
'Can expand threads to view all replies.'
]
'Index Navigation': [
false
'Navigate to previous / next thread.'
]
'Custom CSS': [
false
'Apply custom CSS to 4chan.'
]
'Check for Updates': [
true
'Check for updated versions of <%= meta.name %>.'
]
'Filtering':
'Anonymize': [false, 'Turn everyone Anonymous.']
'Filter': [true, 'Self-moderation placebo.']
'Recursive Hiding': [true, 'Hide replies of hidden posts, recursively.']
'Thread Hiding': [true, 'Hide entire threads.']
'Reply Hiding': [true, 'Hide single replies.']
'Hiding Buttons': [true, 'Make buttons to hide threads / replies, in addition to menu links.']
'Stubs': [true, 'Make stubs of hidden threads / replies.']
'Anonymize': [
false
'Turn everyone Anonymous.'
]
'Filter': [
true
'Self-moderation placebo.'
]
'Recursive Hiding': [
true
'Hide replies of hidden posts, recursively.'
]
'Thread Hiding': [
true
'Hide entire threads.'
]
'Reply Hiding': [
true
'Hide single replies.'
]
'Hiding Buttons': [
true
'Make buttons to hide threads / replies, in addition to menu links.'
]
'Stubs': [
true
'Make stubs of hidden threads / replies.'
]
'Images':
'Auto-GIF': [false, 'Animate GIF thumbnails.']
'Image Expansion': [true, 'Expand images.']
'Image Hover': [false, 'Show full image on mouseover.']
'Sauce': [true, 'Add sauce links to images.']
'Reveal Spoilers': [false, 'Reveal spoiler thumbnails.']
'Auto-GIF': [
false
'Animate GIF thumbnails.'
]
'Image Expansion': [
true
'Expand images.'
]
'Image Hover': [
false
'Show full image on mouseover.'
]
'Sauce': [
true
'Add sauce links to images.'
]
'Reveal Spoilers': [
false
'Reveal spoiler thumbnails.'
]
'Menu':
'Menu': [true, 'Add a drop-down menu in posts.']
'Report Link': [true, 'Add a report link to the menu.']
'Delete Link': [true, 'Add post and image deletion links to the menu.']
'Download Link': [true, 'Add a download with original filename link to the menu. Chrome-only currently.']
'Archive Link': [true, 'Add an archive link to the menu.']
'Menu': [
true
'Add a drop-down menu in posts.'
]
'Report Link': [
true
'Add a report link to the menu.'
]
'Delete Link': [
true
'Add post and image deletion links to the menu.'
]
'Download Link': [
true
'Add a download with original filename link to the menu. Chrome-only currently.'
]
'Archive Link': [
true
'Add an archive link to the menu.'
]
'Monitoring':
'Thread Updater': [true, 'Fetch and insert new replies. Has more options in its own dialog.']
'Unread Count': [true, 'Show the unread posts count in the tab title.']
'Unread Tab Icon': [true, 'Show a different favicon when there are unread posts.']
'Thread Excerpt': [true, 'Show an excerpt of the thread in the tab title.']
'Thread Stats': [true, 'Display reply and image count.']
'Thread Watcher': [true, 'Bookmark threads.']
'Auto Watch': [true, 'Automatically watch threads you start.']
'Auto Watch Reply': [false, 'Automatically watch threads you reply to.']
'Thread Updater': [
true
'Fetch and insert new replies. Has more options in its own dialog.'
]
'Unread Count': [
true
'Show the unread posts count in the tab title.'
]
'Unread Tab Icon': [
true
'Show a different favicon when there are unread posts.'
]
'Thread Excerpt': [
true
'Show an excerpt of the thread in the tab title.'
]
'Thread Stats': [
true
'Display reply and image count.'
]
'Thread Watcher': [
true
'Bookmark threads.'
]
'Auto Watch': [
true
'Automatically watch threads you start.'
]
'Auto Watch Reply': [
false
'Automatically watch threads you reply to.'
]
'Posting':
'Quick Reply': [true, 'All-in-one form to reply, create threads, automate dumping and more.']
'Persistent QR': [false, 'The Quick reply won\'t disappear after posting.']
'Auto Hide QR': [false, 'Automatically hide the quick reply when posting.']
'Remember Subject': [false, 'Remember the subject field, instead of resetting after posting.']
'Remember Spoiler': [false, 'Remember the spoiler state, instead of resetting after posting.']
'Hide Original Post Form': [true, 'Hide the normal post form.']
'Quick Reply': [
true
'All-in-one form to reply, create threads, automate dumping and more.'
]
'Persistent QR': [
false
'The Quick reply won\'t disappear after posting.'
]
'Auto Hide QR': [
false
'Automatically hide the quick reply when posting.'
]
'Remember Subject': [
false
'Remember the subject field, instead of resetting after posting.'
]
'Remember Spoiler': [
false
'Remember the spoiler state, instead of resetting after posting.'
]
'Hide Original Post Form': [
true
'Hide the normal post form.'
]
'Quote links':
'Quote Backlinks': [true, 'Add quote backlinks.']
'OP Backlinks': [false, 'Add backlinks to the OP.']
'Quote Inlining': [true, 'Inline quoted post on click.']
'Forward Hiding': [true, 'Hide original posts of inlined backlinks.']
'Quote Previewing': [true, 'Show quoted post on hover.']
'Quote Highlighting': [true, 'Highlight the previewed post.']
'Resurrect Quotes': [true, 'Link dead quotes to the archives.']
'Mark Quotes of You': [true, 'Add \'(You)\' to quotes linking to your posts.']
'Mark OP Quotes': [true, 'Add \'(OP)\' to OP quotes.']
'Mark Cross-thread Quotes': [true, 'Add \'(Cross-thread)\' to cross-threads quotes.']
'Quote Backlinks': [
true
'Add quote backlinks.'
]
'OP Backlinks': [
false
'Add backlinks to the OP.'
]
'Quote Inlining': [
true
'Inline quoted post on click.'
]
'Forward Hiding': [
true
'Hide original posts of inlined backlinks.'
]
'Quote Previewing': [
true
'Show quoted post on hover.'
]
'Quote Highlighting': [
true
'Highlight the previewed post.'
]
'Resurrect Quotes': [
true
'Link dead quotes to the archives.'
]
'Mark Quotes of You': [
true
'Add \'(You)\' to quotes linking to your posts.'
]
'Mark OP Quotes': [
true
'Add \'(OP)\' to OP quotes.'
]
'Mark Cross-thread Quotes': [
true
'Add \'(Cross-thread)\' to cross-threads quotes.'
]
imageExpansion:
'Fit width': [true, '']
'Fit height': [false, '']
'Expand spoilers': [true, 'Expand all images along with spoilers.']
'Expand from here': [true, 'Expand all images only from current position to thread end.']
'Fit width': [
true
''
]
'Fit height': [
false
''
]
'Expand spoilers': [
true
'Expand all images along with spoilers.'
]
'Expand from here': [
true
'Expand all images only from current position to thread end.'
]
filter:
name: [
'# Filter any namefags:'
'#/^(?!Anonymous$)/'
].join '\n'
uniqueID: [
'# Filter a specific ID:'
'#/Txhvk1Tl/'
].join '\n'
tripcode: [
'# Filter any tripfag'
'#/^!/'
].join '\n'
capcode: [
'# Set a custom class for mods:'
'#/Mod$/;highlight:mod;op:yes'
'# Set a custom class for moot:'
'#/Admin$/;highlight:moot;op:yes'
].join '\n'
email: [
'# Filter any e-mails that are not `sage` on /a/ and /jp/:'
'#/^(?!sage$)/;boards:a,jp'
].join '\n'
subject: [
'# Filter Generals on /v/:'
'#/general/i;boards:v;op:only'
].join '\n'
comment: [
'# Filter Stallman copypasta on /g/:'
'#/what you\'re refer+ing to as linux/i;boards:g'
].join '\n'
flag: [
''
].join '\n'
filename: [
''
].join '\n'
dimensions: [
'# Highlight potential wallpapers:'
'#/1920x1080/;op:yes;highlight;top:no;boards:w,wg'
].join '\n'
filesize: [
''
].join '\n'
MD5: [
''
].join '\n'
sauces: [
'http://iqdb.org/?url=%turl'
'http://www.google.com/searchbyimage?image_url=%turl'
'#http://tineye.com/search?url=%turl'
'#http://saucenao.com/search.php?db=999&url=%turl'
'#http://3d.iqdb.org/?url=%turl'
'#http://regex.info/exif.cgi?imgurl=%url'
'# uploaders:'
'#http://imgur.com/upload?url=%url;text:Upload to imgur'
'#http://omploader.org/upload?url1=%url;text:Upload to omploader'
'# "View Same" in archives:'
'#//archive.foolz.us/_/search/image/%MD5/;text:View same on foolz'
'#//archive.foolz.us/%board/search/image/%MD5/;text:View same on foolz /%board/'
'#//archive.installgentoo.net/%board/image/%MD5;text:View same on installgentoo /%board/'
].join '\n'
name: """
# Filter any namefags:
#/^(?!Anonymous$)/
"""
uniqueID: """
# Filter a specific ID:
#/Txhvk1Tl/
"""
tripcode: """
# Filter any tripfag
#/^!/
"""
capcode: """
# Set a custom class for mods:
#/Mod$/;highlight:mod;op:yes
# Set a custom class for moot:
#/Admin$/;highlight:moot;op:yes
"""
email: """
# Filter any e-mails that are not `sage` on /a/ and /jp/:
#/^(?!sage$)/;boards:a,jp
"""
subject: """
# Filter Generals on /v/:
#/general/i;boards:v;op:only
"""
comment: """
# Filter Stallman copypasta on /g/:
#/what you\'re refer+ing to as linux/i;boards:g
"""
flag: ''
filename: ''
dimensions: """
# Highlight potential wallpapers:
#/1920x1080/;op:yes;highlight;top:no;boards:w,wg
"""
filesize: ''
MD5: ''
sauces: """
http://iqdb.org/?url=%turl
http://www.google.com/searchbyimage?image_url=%turl
#http://tineye.com/search?url=%turl
#http://saucenao.com/search.php?db=999&url=%turl
#http://3d.iqdb.org/?url=%turl
#http://regex.info/exif.cgi?imgurl=%url
# uploaders:
#http://imgur.com/upload?url=%url;text:Upload to imgur
#http://omploader.org/upload?url1=%url;text:Upload to omploader
# "View Same" in archives:
#//archive.foolz.us/_/search/image/%MD5/;text:View same on foolz
#//archive.foolz.us/%board/search/image/%MD5/;text:View same on foolz /%board/
#//archive.installgentoo.net/%board/image/%MD5;text:View same on installgentoo /%board/
"""
time: '%m/%d/%y(%a)%H:%M:%S'
backlink: '>>%id'
fileInfo: '%l (%p%s, %r)'
favicon: 'ferongr'
usercss: ''
hotkeys:
# QR & Options
'Open empty QR': ['q', 'Open QR without post number inserted.']
'Open QR': ['Shift+q', 'Open QR with post number inserted.']
'Open settings': ['Alt+o', 'Open Settings.']
'Close': ['Esc', 'Close Settings, Notifications or QR.']
'Spoiler tags': ['Ctrl+s', 'Insert spoiler tags.']
'Code tags': ['Alt+c', 'Insert code tags.']
'Math tags': ['Alt+m', 'Insert math tags.']
'Submit QR': ['Alt+s', 'Submit post.']
'Open empty QR': [
'q'
'Open QR without post number inserted.'
]
'Open QR': [
'Shift+q'
'Open QR with post number inserted.'
]
'Open settings': [
'Alt+o'
'Open Settings.'
]
'Close': [
'Esc'
'Close Settings, Notifications or QR.'
]
'Spoiler tags': [
'Ctrl+s'
'Insert spoiler tags.'
]
'Code tags': [
'Alt+c'
'Insert code tags.'
]
'Math tags': [
'Alt+m'
'Insert math tags.'
]
'Submit QR': [
'Alt+s'
'Submit post.'
]
# Thread related
'Watch': ['w', 'Watch thread.']
'Update': ['r', 'Update the thread now.']
'Watch': [
'w'
'Watch thread.'
]
'Update': [
'r'
'Update the thread now.'
]
# Images
'Expand image': ['Shift+e', 'Expand selected image.']
'Expand images': ['e', 'Expand all images.']
'Expand image': [
'Shift+e'
'Expand selected image.'
]
'Expand images': [
'e'
'Expand all images.'
]
# Board Navigation
'Front page': ['0', 'Jump to page 0.']
'Open front page': ['Shift+0', 'Open page 0 in a new tab.']
'Next page': ['Right', 'Jump to the next page.']
'Previous page': ['Left', 'Jump to the previous page.']
'Front page': [
'0'
'Jump to page 0.'
]
'Open front page': [
'Shift+0'
'Open page 0 in a new tab.'
]
'Next page': [
'Right'
'Jump to the next page.'
]
'Previous page': [
'Left'
'Jump to the previous page.'
]
# Thread Navigation
'Next thread': ['Down', 'See next thread.']
'Previous thread': ['Up', 'See previous thread.']
'Expand thread': ['Ctrl+e', 'Expand thread.']
'Open thread': ['o', 'Open thread in current tab.']
'Open thread tab': ['Shift+o', 'Open thread in new tab.']
'Next thread': [
'Down'
'See next thread.'
]
'Previous thread': [
'Up'
'See previous thread.'
]
'Expand thread': [
'Ctrl+e'
'Expand thread.'
]
'Open thread': [
'o'
'Open thread in current tab.'
]
'Open thread tab': [
'Shift+o'
'Open thread in new tab.'
]
# Reply Navigation
'Next reply': ['j', 'Select next reply.']
'Previous reply': ['k', 'Select previous reply.']
'Hide': ['x', 'Hide thread.']
'Next reply': [
'j'
'Select next reply.'
]
'Previous reply': [
'k'
'Select previous reply.'
]
'Hide': [
'x'
'Hide thread.'
]
updater:
checkbox:
'Beep': [false, 'Beep on new post to completely read thread.']
'Auto Scroll': [false, 'Scroll updated posts into view. Only enabled at bottom of page.']
'Bottom Scroll': [false, 'Always scroll to the bottom, not the first new post. Useful for event threads.']
'Scroll BG': [false, 'Auto-scroll background tabs.']
'Auto Update': [true, 'Automatically fetch new posts.']
'Beep': [
false
'Beep on new post to completely read thread.'
]
'Auto Scroll': [
false
'Scroll updated posts into view. Only enabled at bottom of page.'
]
'Bottom Scroll': [
false
'Always scroll to the bottom, not the first new post. Useful for event threads.'
]
'Scroll BG': [
false
'Auto-scroll background tabs.'
]
'Auto Update': [
true
'Automatically fetch new posts.'
]
'Interval': 30