Git Product home page Git Product logo

sprint-reader-chrome's Introduction

Sprint Reader

Sprint Reader

Sprint Reader is an easy to use (Google Chrome) speed reading extension.

Current (stable) version: 2.5.0

Simply select text on a webpage, right-click and select Sprint read selected text from the menu. This will launch the reader window, the selected text is displayed word-by-word in a fixed focal position. The duration of each slide is calculated based upon a word-per-minute (WPM) setting.

This method of reading is known as Rapid Serial Visual Presentation or RSVP for short. Studies have shown the habit of internally "sounding out" (sub-vocalising) words is a limiting factor which prevents faster reading speeds from being obtained. RSVP eliminates the "sounding out" of words as individual words are not displayed long enough for sub-vocalisation to occur.

RSVP proves that humans can absorb information much faster than standard reading rates with the same level of comprehension.

Key features of Sprint Reader:

Multiple colour schemes
Optimal letter highlighting
Automatic language detection
Adjustable font and font size
Adjustable word-per-minute (WPM)
Intelligent hyphenation of words
Focal guides to improve attention
Adjustable words-per-slide (chunk size)
Provision for different display algorithms
Optimal word positioning to improve comprehension
Optional grammar delays

Table of Contents

Team Members

Sprint Reader on Social Media

Sprint Reader has a Facebook Facebook page for the latest developments, interesting articles and updates from the Sprint Reader team. Check back for new tips and suggestions from our sprinters.

Useful Resources

Getting Started

We've made it easy for you to write code and develop new features for Sprint Reader. To start: Download the source code and load the extension into Google Chrome (Developer mode).

From the official Google Chrome website:

Extensions that you download from the Chrome Web Store are packaged up as .crx files, which is great for distribution, but not so great for development. Recognizing this, Chrome gives you a quick way of loading up your working directory for testing. Let's do that now.

  1. Visit chrome://extensions in your browser (or open up the Chrome menu by clicking the icon to the far right of the Omnibox. The menu's icon is three horizontal bars.. and select Extensions under the Tools menu to get to the same place).
  2. Ensure that the Developer mode checkbox in the top right-hand corner is checked.
  3. Click Load unpacked extension… to pop up a file-selection dialog.
  4. Navigate to the directory in which your extension files live, and select it.

Alternatively, you can drag and drop the directory where your extension files live onto chrome://extensions in your browser to load it.

If the extension is valid, it'll be loaded up and active right away! If it's invalid, an error message will be displayed at the top of the page. Correct the error, and try again.

Once you've loaded Sprint Reader into Google Chrome you can begin to edit code and add functionality! Good luck and keep us updated with what you're planning to add / achieve / fix!

Developers Guide

See the Wiki for full documentation, operational details and other information. You should also consult the CONTRIBUTING.md file located at the root of the Sprint Reader project.

License

Copyright (c) 2013-2020, Anthony Nosek
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  • Neither the name of Sprint Reader, Anthony Nosek nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANTHONY NOSEK BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

sprint-reader-chrome's People

Contributors

ankitkj1999 avatar anthonynosek avatar ashrode avatar evanwolf avatar geb-braid avatar reischlfranz avatar richardkopelow avatar spacetag avatar twtu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sprint-reader-chrome's Issues

Alternate keyboard shortcut and/or timeout for automatic text selection mode

On my system I have several shortcuts set up to Ctrl+Alt+XXX so invoking any one of those also sets sprint reader into auto select mode. Perhaps have an option to change the keyboard shortcut? At the very least the mode probably needs a timeout. I keep finding blue boxes in browser windows I haven't touched in an hour or so.

Reads each '.' as an individual word.

Similar to #31.

Expected:
Sprint Reader to skip past the ninth line ('....................................................') of the copyright doc. (I changed the text from hyphens to periods).

Actual:
Reads each individual period as its own word. (GIF screenshot).

Note:
A string of '=' reads as one word (which is good). I.e. '==============' will go by as one word. This is what I expect functionality to be for a string of hyphens.

Window position with 2 displays.

When I have 2 displays and the browser is opened in the second one, an extension window appears always on the first display. It should appear on the same display where the browser is.

Issue with Word Length when using chunks bigger than 1

Using chunks of 4 words with wordlength algorithm seems to go at the same speed per slide as it goes for single words per slide, when a slide should take longer because it's more words. So trying to read 300 wpm with chunks of 4 words using the wordlength algorithm takes about 1/3rd of the time that it takes to read the same text at 300 wpm with chunk of 1 word with the same algorithm.

I tried to read the code and see where the problem was but it's really hard when you have 1 .js file with over 1400 lines of code, it's not clear when variables/funcs are called or for what purpose :(

Demo in Readme

It'd be great to have a gif or webm embedded somewhere to show what this reading approach offers, eg the Key features of Sprint Reader: section's contents both in its current form and then next to it an alternative.

Dark mode

Hello. thank you for awesome tool and open sourcing it. I would be very glad about the dark mode theme for that

Fix <label for="checkbox">

The HTML <label> element can have an optional attribute for, which should be set to the id of the respective input element.

<input type="checkbox" id="foobar">
<label for="foobar">Foo bar</label>
<!-- Note: the type here does not matter, it works for all types. -->

Alternatively, the <input> element can be put inside the <label> element.

<label for="foobar"><input type="checkbox" id="foobar"> Foo bar</label>

I've noticed this issue in:

Is it possible to narrow down the permissions required by the extension

I would love to try out this extension. But the "Read and change all the data on the websites you visit" part of the permissions bothers me. I get some comfort in that it is open-source. But couldn't help wondering why the permission to read all data on all websites is required. Wouldn't it be possible to just have the "Read data you copy and paste" permission?

Wish Chrome offered finer grained controls in terms of giving more details and ability to control or restrict them e.g. when it says 'Read and change all the data .. etc'.

Anyways does Chrome offer any way to make it easy for the extensions developers to negotiate the permissions with users at install time by selectively enabling / disabling features related to user selected permissions. E.g. If I as a user would like to disable the 'Read and change all the data ..' part by trading some functionality would it be possible for an extension developer to offer that?

Or is the only viable option be to fork and create another version of the extension with the specific permission and corresponding functionality removed - if it is at all possible to do so without sacrificing the main workflows. Or maybe make it as an Chrome App where text is pasted and read.

Flickering feature

Hi,

This extension is really nice! However, I have not yet see -any- "fast-reading" application that includes an unique feature that I have see in "ireadfast" (iphone), which is an extremely simple thing but also extremely essential imho:

Let's say that when comes the new word, it is simply "replaced" by the old one, so your eyes don't see the difference on the dots between the previous and next word, so is harder for the brain to catch the words

By other side, if you simply add a "remove word before to show the next one", this problem is solved, it can sound confusing but it makes your reading much much better, you can perfectly see and recognize the words at speeds like 800 without problems, even at 1200 you can almost understand what you are reading (hardly), but in any case you can "see" the words

Im not sure about the timing of each one but supposed that it runs at "one word per second", then during the first 0.5 seconds the word is shown, then it is hidden (blank) during 0.5 seconds more, and then the new word appears... maybe 75 % of the second it is shown and the 25% before the next one is unshown, more or less like that

Thanatermesis

Conform to WebExtensions standard

It would be great if you could remove the Chrome-specific parts of this extension (where possible) to conform to the WebExtensions standard. This would allow the extension to be installed in Firefox, Opera, or even IE.

make shortcuts configurable

Hi, as a user from belgium, i often have an AZERTY keyboard in front of me rather than the standard QWERTY. As such it would add tremendous utility if the keyboard shortcuts for skip/rewind and increase/decrease wpm speeds could be customized

Thoughts?
thanks!

Feature requests

  1. Move "Show Remaining Time"
    Reason: can't view when the remaining time in the beginning and when the progress bar is Turned Off
  2. Auto-pause slide
    Word slides should automatically pause when moved to other tabs or windows or other places in sprintreader(eg, settings, statistics etc.)

Add link to keymap

I closed src/welcome.html. Rather than trying to dig for the file or reinstall the extension, add the info in the description of the extension at chrome://extensions/

Stop Opening New Tab on (re)Installation

Please stop utilizing the "open new tab" on install to communicate information to the user. In a vacuum, this would be perfectly acceptable, but when syncing a Google account to a NEW Chrome install or Chrome device, 19 new tabs open from various app vendors, Sprint Reader included... I humbly request other approaches are investigated to communicate the necessary information to the end user WITHOUT opening a new tab every time the extension is installed.

Sprint reader is "joining" some words

While trying to read the contents of this page, I started noticing that some words are getting skipped.

If you try to read the following paragraph, for instance:
"The first master rhetorician Rome produced was the great statesman Cicero..."

You will notice that Sprint Reader is "skipping" (maybe "joining" would be better) some of the words on the very first phrase, getting as a result:

"The first master produced was the great statesman Cicero..."

Steps to reproduce:

1 - Access this link
2 - Find the mentioned paragraph
3 - Select the paragraph and "Sprint read selected text"

Ctrl-Alt + Z Shortcut not working

No content is being passed to the reader window after pressing Z.
It seems the value of the text is dropped somewhere within a function.

Auto selection and PDF

Hey guys I was wondering if it's possible to use the auto selection mode for PDF pages, it will be awesome if speedreader could provide a shortcut to read the current displayed page.

thank you all!

Update GitHub icon on main reader screen

Update the GitHub icon which appears on the main reader screen (top right corner). At the moment it doesn't have a transparent background and should be updated so as to remain visible irrespective of the colour scheme chosen.

In summary, the icon needs to be improved to "play nicely" with all the available colour schemes.

Doubled words

I'd like to suggest some kind of special treatment for words that appear twice in a row, for example "had" in "He had had a good time". Whenever they appear I have to double-take and normally pause.

My suggestion would be either to try #7 or to treat them as one word with twice the time on screen.

I don't think going beyond doubles (triples) will help much, in fact you'll need to be careful not to die with http://en.wikipedia.org/wiki/James_while_John_had_had_had_had_had_had_had_had_had_had_had_a_better_effect_on_the_teacher or http://en.wikipedia.org/wiki/Buffalo_buffalo_Buffalo_buffalo_buffalo_buffalo_Buffalo_buffalo .

Support for styled letters

Hi everyone.

I'm not sure if the title is clear. I refer to characters such as this.

It's becoming common to write texts with characters such as these on Facebook, maybe in order to look cooler.

If the link that I provided is to be believed, it should be easy to replace each character by the ASCII equivalent, which I suppose is necessary to control the display of words.

As for actually displaying the words, I suppose either the original character or the ASCII equivalent could be displayed. Right now, it's displaying � for all those characters.

Thanks in advance.

Reads each '-' as an individual word.

Similar to #32

Expected:
Sprint Reader to skip past the ninth line ('--------------------------------------------------------------------') of the copyright doc.

Actual:
Reads each individual hyphen as its own word. (GIF screenshot).

Note:
A string of '=' reads as one word (which is good). I.e. '==============' will go by as one word. This is what I expect functionality to be for a string of hyphens.

The option to split hyphenated words does not catch all characters used as hyphens.

for example. for the text
" sounds successively—that is"
When I enable the split hyphenated words option, I would expect four tiles

sounds
successively
that
is

But I got

sounds
successively—that
is

I think the code in engine,js arround
if (textOnSlide.indexOf("-") !== -1) {
could be changed to include
all these characters

-
–
—

Disable social buttons

Please add an option to disable the social buttons because they stand out on the UI and let Google and Facebook track the user.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.