Files
rangerhq-reader/CHANGELOG.md
T
ranger a5819f0c72 fix: high-WPM chunk modes were clamped by 1500ms minimum-display floor (v1.1.2)
After v1.1.1 raised the WPM cap to 3000 for Sentence and Paragraph modes,
David noticed pushing the slider from 1500 to 3000 didn't actually speed
up reading. The chunks still sat on screen for the same amount of time.

Root cause: the v1.1.0 minimum-display floor was 1500ms per chunk. At
3000 WPM, any sentence under ~60 words mathematically wants to display
for under 1500ms — but the floor clamped them all to 1500ms, so the
calculated speed-up never reached the user.

Lowered floors:
- Sentence mode: 1500ms → 400ms
- Paragraph mode: 1500ms → 800ms

Max cap stays at 12s for very long paragraphs at very low WPM.

At 3000 WPM with the new floors, a 20-word sentence now displays for
500ms (was 1500ms, 3x faster) and the slider behaves the way users
expect — higher WPM = faster reading, all the way to 3000.

The reader does NOT iterate word-by-word inside a chunk; the whole
sentence/paragraph is rendered in one DOM update. Word count is used
only to estimate the auto-advance interval, not as a per-word loop.
2026-05-27 02:43:36 +01:00

5.4 KiB
Raw Blame History

Changelog

All notable changes to Ranger Reader are documented here. Format: Keep a Changelog 1.1.0 — versioning: SemVer.


[Unreleased]


[1.1.2] — 2026-05-27

Fixed — High WPM in Sentence / Paragraph modes was clamped by a too-conservative minimum-display floor

After v1.1.1 raised the WPM cap to 3000 in Sentence and Paragraph modes, David noticed that pushing the slider from 1500 to 3000 didn't actually speed up reading — the chunks were still sitting on screen for the same amount of time.

Root cause: the v1.1.0 minimum-display floor was 1500 ms per chunk (set conservatively to prevent flash-frame illegibility). At 3000 WPM, any sentence under ~60 words mathematically wants to display for under 1500 ms — but the floor clamped them all to 1500 ms, so the calculated speed-up never reached the user.

Lowered floors:

  • Sentence mode: 1500 ms → 400 ms (eye can absorb a short sentence in well under half a second once it's on screen)
  • Paragraph mode: 1500 ms → 800 ms (paragraphs are denser; need slightly more time even at high WPM)

Maximum cap stays at 12 s for very long paragraphs at very low WPM.

At 3000 WPM with the new floors, a 20-word sentence displays for 500 ms (was 1500 ms — 3× faster) and a 60-word paragraph displays for 1750 ms (was 1500 ms — uncapped formula now visible).

This makes the WPM slider actually behave the way users expect: higher WPM = faster reading, all the way up to 3000.

Clarification

The reader does NOT iterate word-by-word inside a chunk in Sentence or Paragraph modes. The whole sentence or paragraph is rendered in one DOM update; only the auto-advance interval is calculated from word count. The word count is used as a proxy for "how long does a reader need to absorb this chunk," not as a per-word display loop.


[1.1.1] — 2026-05-27

Changed — Mode-aware WPM ceiling

The WPM slider's maximum value now adapts to the active reading mode:

  • Word mode: 1500 WPM ceiling (human single-word recognition limit — beyond ~25 ms per word the brain stops registering individual words)
  • Sentence and Paragraph modes: 3000 WPM ceiling. In chunk modes the "WPM" controls auto-advance timing across larger display units, so higher values still produce comprehensible reading speeds (a 20-word sentence at 3000 WPM still gets ~400 ms of display time, which is well within visual-recognition comfort)

Switching from a high-WPM chunk mode back to Word mode automatically clamps the current value down to 1500, preventing accidentally-illegible word-mode playback.

The + keyboard shortcut now respects the mode-specific ceiling.

Why this matters

For skim-pass reading on long thesis papers, the previous 1500 WPM cap in Sentence mode was too conservative. With a 20-word sentence at 1500 WPM the display held each sentence for ~1 s — comfortable but slower than necessary for already-known territory. 3000 WPM cuts that to ~400 ms, suitable for the Preview / Postview phases of structured reading (preview chapters, scan for known concepts, identify sections that warrant a slower second-pass read).


[1.1.0] — 2026-05-27

Added — Sentence and Paragraph reading modes

The single-word RSVP display from v1.0 is now one of three modes selectable via the toggle in the header (or keyboard 1 / 2 / 3):

  • Word (1) — original RSVP, one word at a time with ORP focal-character coloring
  • Sentence (2) — one full sentence at a time, auto-advancing on (words / WPM) × 1.25 interval, clamped to 1.512 s per chunk
  • Paragraph (3) — one paragraph at a time, larger reading area, (words / WPM) × 1.40 interval

The sentence splitter handles common academic-text false positives — titles (Mr., Dr., Prof.), Latin (e.g., i.e., et al.), abbreviations (Vol., Fig., Eq., Ref.), and decimal numbers — by guarding them before splitting on .!? followed by whitespace and capital letter.

Paragraph splitting is on blank-line separation (the conventional output of pdftotext).

Other v1.1 polish:

  • Stage centre guide-lines hidden in Sentence / Paragraph modes (single-word framing isn't needed)
  • Skip-distance adapts per mode: ± 10 in Word mode, ± 1 in chunk modes
  • Meta text adapts to mode: N / total words / sentences / paragraphs
  • Time-remaining always computed in raw words regardless of mode (so 500 WPM means 500 WPM everywhere)
  • Mode is persisted alongside text + WPM + position in localStorage
  • v1.1 version stamp visible in header

[1.0.0] — 2026-05-27

Initial release.

Added

  • Single-word RSVP display with WPM slider (2001500, default 500)
  • ORP (Optimal Recognition Point) focal-character coloring in red
  • Punctuation-aware pause: 2.5× for period/exclamation/question, 1.7× for comma/semicolon/colon, 1.3× for closing brackets
  • Progress bar + meta (N / total words · ~X min remaining at Y WPM)
  • Keyboard shortcuts (Space, /, +/, R)
  • Drag-and-drop .txt file loading anywhere on the page
  • localStorage persistence — text, WPM and position survive page reloads
  • Dark-mode WP-tone palette (accessible-contrast colour scheme)
  • "Done" state turns the display green when the paper finishes

Single self-contained HTML file. No dependencies, no install, no network calls. Runs in any modern browser, fully offline.