Skip to content

Theorem v1.5.0

Latest

Choose a tag to compare

@github-actions github-actions released this 11 Sep 11:34
· 52 commits to main since this release

Added

  • Adaptive Reading Time Estimation — Pure mathematical calculation engine for reading speed and progress (src/features/reader/lib/reading-time.ts). Tracks organic dwell time on each page turn, filtering out rapid skimming (<5s) and idle periods (>180s), clamped between 80 and 800 WPM, and smoothed with exponential moving average ($\alpha = 0.15$). The reader navbar now displays both chapter and book remaining time (e.g. "14 min in chapter · 2 hr left"), intelligently omitting redundant chapter time on the final chapter.
  • Immersion Reading Pace Lock — When Text-to-Speech narration is active, reading time estimates automatically lock to the true machine speaking cadence ($160 \times \text{speed}$ WPM) without polluting the reader's human reading average.
  • Audiobook-Grade Text Normalization — Added automated text pre-processing for natural speech synthesis (src/features/reader/audio/text-normalization.ts), expanding cardinal integers into words, ordinal numbers (1st $\rightarrow$ "first"), 4-digit years (1984 $\rightarrow$ "nineteen eighty-four"), Roman numerals in titles and names (Chapter IV, Henry VIII), currencies ($12.50), percentages, fractions, and common abbreviations (Dr., Mr., e.g., etc.).

Improved & Performance

  • Fast Streaming TTS & Reduced Latency — Reduced intra-sentence silence from 300ms to 80ms for seamless audio playback across sentence chunks without jarring acoustic gaps.
  • Dynamic ONNX Memory Management — Supertonic neural sessions are automatically unloaded after 60 seconds of idle inactivity, freeing ~400MB of RAM. Memory is also immediately released on reader exit.
  • Idempotent ORT Initialization — Wrapped dynamic ONNX Runtime initialization in a process-wide OnceLock, enabling fast and reliable session recreation whenever narration resumes after an idle unload.
  • Disk Cache Cap & Background Eviction — Lowered the local WAV audio cache limit from 1GB to a lean 150MB, moving LRU cache trimming to a background thread to prevent disk I/O from stalling the audio synthesis pipeline.
  • Optimized Prefetching — Aligned prefetch cache keys with streaming chunk normalization, caching only the leading chunk of the upcoming page to eliminate redundant background computation.

Fixed

  • Highlight Navigation Context Popup — Navigating to an existing highlight or bookmark from the sidebar or annotations panel no longer falsely triggers text selection or pops open the highlight context menu.
  • TTS Auto-Play on Pause Bug — Added explicit paused state tracking in Rust's NativePlayer (audio_player.rs), preventing background chunks appended during pause from resuming audio unexpectedly.
  • Initial TTS Premature Page Turn — Eliminated an errant boundary check that triggered an immediate page-turn when clicking Play for the first time.
  • Instant Playback Resume — Clicking Play while paused immediately unpauses the active native player instead of restarting speech synthesis from scratch.
  • Fallback Text Extraction on Play — If page text extraction has not finished caching when Play is clicked, the player extracts visible text on-demand rather than failing silently.
  • Sentence Highlighting Cleanup — Removed sentence-level overlay DOM mutations during TTS playback, preventing layout shifts and scrolling disruptions.

Download & install

Platform Download
Windows (x64) Theorem_v1.5.0_x64-setup.exe
macOS (Apple Silicon) Theorem_v1.5.0_aarch64.dmg
macOS (Intel) Theorem_v1.5.0_x64.dmg
Linux (Debian/Ubuntu) Theorem_v1.5.0_amd64.deb
Linux (any) Theorem_v1.5.0_amd64.AppImage
Android (arm64) app-arm64-release.apk

Linux one-liner: curl -fsSL https://raw.githubusercontent.com/Fundaments-Work/Theorem/main/scripts/install-linux.sh | bash

Desktop builds auto-update in place (Settings → About → Check for Updates). Android updates are manual unless installed via F-Droid.