Skip to content

Releases: kevinsslin/obsidian-rsvp-reader

0.4.2

Choose a tag to compare

@github-actions github-actions released this 15 Jul 19:28

Fixed

  • On iOS, old sentence highlights in the note's Reading view lingered and
    piled up on screen as the follow advanced (a WebKit repaint defect in the
    CSS Custom Highlight API). Reading view now uses the same plugin-drawn
    overlay marks as the reader's pane, which repaint correctly everywhere.

Changed

  • The note's Reading view now shows the gliding word marker too, matching the
    reader's pane, and follow highlights now work on iOS versions below 17.2.

0.4.1

Choose a tag to compare

@github-actions github-actions released this 15 Jul 17:51

Added

  • Tap a word in the note-inside-the-reader pane to seek the reader there, on
    desktop and phone. Drag selections still work; link taps seek instead of
    navigating.
  • "Word marker style" setting: the current word can be marked with the
    translucent box or a thin underline.
  • "Ease into speed" setting (default on): silent playback restarts at ~70%
    speed and reaches full pace within a second, so pausing does not cost the
    first words after each resume. Narrated runs keep audio's own pace.
  • A horizontal swipe on the word area jumps to the previous or next sentence.

Changed

  • The word marker now glides between words instead of teleporting, and the
    sentence tint is softer (9%), so the follow reads as one calm moving object.
  • On phones with the pane open, the More menu no longer offers "Follow in
    note" (the note's tab is hidden there; the pane already follows).

0.4.0

Choose a tag to compare

@github-actions github-actions released this 15 Jul 17:18

Added

  • The note-inside-the-reader pane now marks the current word with a solid
    accent box that moves as you read, over a soft sentence tint, so your place
    is always visible while playing, not only on pause.
  • On phones the controls collapse to the essentials (previous / play / next
    and Locate) plus a More menu holding Restart, narration, Follow in note,
    and the reader split. Desktop and tablet keep every button.

Fixed

  • Pane highlights were invisible on iOS versions below 17.2 (and hard to spot
    on any phone). The pane now draws its own overlay marks instead of using the
    CSS Custom Highlight API, so they render on every platform.

0.3.0

Choose a tag to compare

@github-actions github-actions released this 15 Jul 12:30

Added

  • One-tap locate: a new crosshair button jumps the note to the current word
    and marks it with a strong accent flash for a few seconds (softer sentence
    tint around it), in both editing view and Reading view.
  • Locate on pause (default on): pausing flashes the current word in the note,
    so stopping always answers "where was I?". It never steals focus; on phones
    it also positions the hidden note tab so switching to it lands on the spot.
  • The note inside the reader: an optional split within the reader pane, the
    note's rendered text on top and the flashed word below, following along with
    the same centered sentence highlight. Obsidian cannot split the workspace on
    phones, so this is on by default there ("Automatic"), with Always and Never
    options plus a book toolbar button for a session override.

Changed

  • Locate and the pause flash target the embedded pane directly when it is
    open, instead of switching to the note's tab.

Fixed

  • Numeric settings sliders now show an always-visible exact value that updates
    while dragging, instead of requiring users to infer settings from thumb position.

0.2.1

Choose a tag to compare

@github-actions github-actions released this 14 Jul 19:07

Fixed

  • Numeric settings sliders now show an always-visible exact value that updates
    while dragging, instead of requiring users to infer settings from thumb position.

0.2.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 17:02

Added

  • Natural cloud narration through Unreal Speech, the TTS engine used by Readwise
    Reader. Users can choose the free system voice or supply their own Unreal
    Speech API key and select from its multilingual voice catalog.
  • Exact word synchronization for cloud narration from provider-supplied audio
    timestamps, with startup buffering, rolling prefetch, and layered caches.
  • Device-local persistent narration caching through IndexedDB, with configurable
    storage limits, LRU eviction, usage statistics, and a clear-cache control.
  • Automatic per-note reading checkpoints that resume after reopening a note and
    survive note edits through source offsets, token anchors, and progress fallback.
  • Live book statistics for word count, completion percentage, remaining time at
    the current WPM, and estimated 128 kbps narration size.

Changed

  • Unreal Speech now groups short sentences into larger chunks, buffers two
    chunks before starting, and keeps a two-chunk lookahead so high-WPM playback
    does not pause at every network boundary.
  • Pausing narration now preserves and resumes the active audio session instead
    of synthesizing the same text again.
  • Unreal Speech API keys now use Obsidian SecretStorage exclusively. Legacy
    plaintext keys migrate once and are removed from normal plugin data. This
    raises the minimum supported Obsidian version to 1.11.4.
  • The session narration cache is byte-bounded at 64 MB on desktop and 32 MB on
    mobile. Persistent cache statistics and LRU eviction now use compact metadata
    without loading or rewriting the stored MP3 collection.
  • Unreal Speech can use the full 1000 WPM setting through 5x HTML audio playback,
    while System voice keeps its existing 4x safety limit.
  • Periodic checkpoint saves are coalesced and less frequent, while pause, close,
    note switch, restart, and completion still persist or clear immediately.
  • Narration failures now show a notice while the visual reader continues on its
    estimated clock.

Fixed

  • Clearing narration storage or turning the cache off now clears memory and
    IndexedDB together, and in-flight synthesis cannot repopulate storage afterward.
  • Provider text offsets now take precedence over ambiguous spoken-text matching,
    keeping normalized forms such as numbers aligned with the original token.
  • Exact-timestamp playback stays frozen during the short seek-restart debounce
    instead of letting the estimated clock skip ahead.
  • Changing code-block or frontmatter filtering in an open reader preserves the
    current anchored position rather than resetting to the first word.
  • Corrupt or non-finite checkpoint and narration-cache records are rejected before
    they can reach playback or restore logic.

0.1.2

Choose a tag to compare

@github-actions github-actions released this 13 Jul 19:27

Fixed

  • On phones, the speed bar and transport controls no longer sit underneath
    Obsidian's floating navigation bar; the reader now leaves the same bottom
    clearance Obsidian's own views use.

0.1.1

Choose a tag to compare

@github-actions github-actions released this 08 Jul 18:41

Changed

  • Code-quality and Obsidian plugin-review compliance: set element styles
    through the Obsidian helper API, use window-scoped globals for popout-window
    compatibility, and drop the build-time builtin-modules dependency in favor
    of Node's built-in list. Releases now publish build-provenance attestations.
    No change to reading behavior.

0.1.0

Choose a tag to compare

@github-actions github-actions released this 08 Jul 17:44

Initial release.

Added

  • RSVP reader view with a fixed-point, Spritz-style optimal-recognition-point display.
  • Commands and a ribbon icon to read the current note or the current selection;
    the reader opens in a split beside the note.
  • Optional voice narration via the Web Speech API. The audio owns the clock:
    per-word boundary sync where available, per-sentence resync everywhere, the
    display never runs past the sentence being spoken, and the voice is never cut
    off mid-sentence. Speech restarts are minimized and coalesced so rapid
    controls do not churn the system audio engine.
  • Follow along in the note: auto-scrolls the source note with the reading and
    keeps the current sentence colored and vertically centered, in editing/Live
    Preview (editor decoration plus typewriter padding) and in Reading view (CSS
    Custom Highlight API plus direct scroller centering). Non-destructive; the
    note's own highlights are unaffected.
  • Words auto-fit the reading pane: a long word in a narrow split or on a phone
    scales down to fit instead of being clipped, keeping the anchor letter on the
    center line. Short words show at the configured word size.
  • Hold-to-read gesture: press and hold to read while held, release to pause;
    tap to toggle.
  • Seekable progress bar (click or drag) with live per-word progress.
  • Markdown-aware tokenizer that strips formatting and can skip frontmatter and
    code blocks.
  • Punctuation-aware pacing (long words plus clause, sentence, and paragraph pauses).
  • Live speed control (100 to 1000 wpm) with a hideable speed bar; speed changes
    apply to the voice on release.
  • Keyboard controls: play/pause, step by word or sentence, change speed.
  • Settings for speed, word size, follow-in-note, content handling, narration,
    and pacing, applied live to open reader panes.
  • Theme-aware styling for light and dark.