Skip to content

Release history

OpenReader releases

EPUB, PDF, DOCX, MD, and TXT file text to speech document reader. Read documents in realtime with high-quality TTS; or extract audiobooks.

All releases

24 shown

No immediate action
v4.1.1 Breaking risk

Legacy file deletion removal

No immediate action
v4.1.0 New feature

Job recovery + parse progress

No immediate action
v4.0.3 Breaking risk

Docker image switch + prewarm change

No immediate action
v4.0.2 Breaking risk

Runtime flag removal

No immediate action
v4.0.1 Bug fix

TTS control load fix

Config change
v4.0.0 Breaking risk
Auth

ONNX PDF parsing + Whisper worker + Auth-required

Config change
v3.0.0 Breaking risk
Auth Breaking upgrade

Env var removals + AUTH_SECRET rotation

v2.2.0 New feature
Notable features
  • Replicate TTS provider with custom model support
Full changelog

✨ What's New

Core Updates

  • 🔊 Added Replicate TTS provider with support for custom Replicate models.
  • 🧠 Improved TTS generation internals with centralized upstream response helpers, voice resolution logic, and stronger settings validation.
  • ⏯️ Improved TTS playback controls with more reliable pause/resume handling via pauseActiveHowl.

UI & Docs

  • 🗂️ Updated document library wording from "Local Documents" to "Your Documents" for clearer navigation.
  • 📚 Added Replicate provider documentation and published the docs snapshot for v2.1.2.

Stability & Ops

  • 🐳 Pinned SeaweedFS to 4.18 in Docker flows and documented the 4.19 upload issue to improve deployment stability.

Full Changelog: https://github.com/richardr1126/openreader/compare/v2.1.2...v2.2.0

v2.1.2 New feature
Notable features
  • Custom theme support with live color editing
Full changelog

✨ What's New

Custom Themes

  • 🎨 Added persistent custom theme support with live color editing. Users can define, preview, and persist custom color palettes directly from settings.
  • 🖌️ New ColorPicker component with curated swatches for each color role.
  • 💡 Custom CSS variables applied at runtime with fallback to avoid flash before hydration.

TTS Improvements

  • ⏱️ Added TTS_UPSTREAM_TIMEOUT_MS environment variable for configurable upstream TTS request timeouts.

Full Changelog: https://github.com/richardr1126/openreader/compare/v2.1.1...v2.1.2

v2.1.1 Mixed
Notable features
  • Shared TTS provider catalog
  • Reusable audiobook generation pipeline
Full changelog

✨ What's New

Core Updates

  • 🎧 Refactored TTS provider handling into a shared catalog, including stronger voice-source resolution and validation for remote voice payloads.
  • 🛠️ Reworked audiobook generation flow into reusable client adapters/pipeline with improved chapter progress accounting and abort handling.
  • ⚙️ Config update logic now preserves per-provider/model voice preferences more reliably, including when provider settings are reset.
  • 🔁 Added continuation loop guardrails and related playback hardening to reduce repeated/unstable TTS behavior.

Stability & Migrations

  • 🧪 Stabilized key E2E flows (onboarding/modal dismissal, settings interactions, and export behavior) and added unit coverage for TTS catalog/config helpers.
  • 🗄️ Fixed SQL insert syntax for the reserved "user" table during filesystem/database migration workflows.

Full Changelog: https://github.com/richardr1126/openreader/compare/v2.1.0...v2.1.1

v2.1.0 New feature
Notable features
  • TTS lookahead preloading
  • Five new light themes
  • TTS Providers settings tab
Full changelog

✨ What's New

Core Updates

  • 🎧 TTS pipeline improvements: sequential lookahead preloading, better retry handling for transport failures, and explicit MP3 response defaults.
  • 🐜 Issue #81 fixed: duplicate audio playback is now guarded against in the TTS provider flow.
  • 🛠️ Audiobook generation refactor: chapter creation/generation logic moved further into the server-side pipeline.
  • 📦 Audiobook export refinements: stream-copy optimization, duration validation, and improved chapter timing.

UI & Docs

  • 🎨 Added five new light themes and refreshed Settings/Audiobook Export/Confirm dialog UX.
  • ⚙️ Added a TTS Providers tab in Settings.
  • 📚 Updated TTS provider documentation and Docker/SeaweedFS third-party license reporting.

Full Changelog: https://github.com/richardr1126/openreader/compare/v2.0.1...v2.1.0

v2.0.1 New feature
Notable features
  • KittenTTS-FastAPI support
Full changelog

✨ What's New

  • Added official KittenTTS-FastAPI support in OpenReader as an OpenAI-compatible TTS option.
  • Added a kitten-tts preset in Settings → Custom OpenAI-Like model selection.
  • Added a dedicated KittenTTS-FastAPI provider guide and linked it across TTS docs, introduction, Docker quick start, and README.

⚙️ Docs & Release Automation

  • Enhanced docs deployment workflow with conditional execution for workflow runs.
  • Improved the docs versioning-on-tag workflow with optional inputs and safer commit handling.

Full Changelog: https://github.com/richardr1126/OpenReader-WebUI/compare/v2.0.0...v2.0.1

v2.0.0 Breaking risk
Breaking changes
  • Storage migration from filesystem to S3-compatible backends
  • Database layer change to SQLite/PostgreSQL
  • Rebranding from OpenReader-WebUI to OpenReader
Notable features
  • User authentication with sign-in/sign-up
  • Per-user TTS rate limiting
  • Encrypted user data export
Full changelog

✨ What's New

TL;DR: OpenReader 2.0 adds full authentication, per-user TTS limits, encrypted data export, a new database layer with SQLite/PostgreSQL support, S3-compatible storage support, a new docs experience, and a full rebrand from OpenReader-WebUI.

Core

  • 🔐 Added full user authentication with sign-in, sign-up, account management, and improved session handling.
  • 📣 Added per-user TTS rate limiting with character limits, daily resets, and device/IP backstops.
  • 📤 Added encrypted user data export and updated privacy page/policy behavior.
  • 🗄️ Introduced a new database layer for OpenReader, with both SQLite and PostgreSQL backends (via Drizzle) plus migration tooling.
  • 🪣 Migrated server document/audiobook storage off the filesystem to S3-compatible blob storage; Docker uses embedded SeaweedFS by default, with support for external S3-compatible providers.
  • 🏷️ Rebranded from "OpenReader-WebUI" to "OpenReader", including Docker image naming updates (openreader with openreader-webui as legacy alias).

Additional Updates

  • 🛡️ Added route protection/security hardening and optional GitHub authentication.
  • 🧩 Added claimable-data flow so pre-auth usage can be migrated into signed-in email accounts.
  • 📚 Migrated documents to server-backed storage with caching.
  • 🎧 Migrated audiobook storage/pipeline to object storage with user-scoped handling.
  • 📖 Added document preview generation/caching with improved failure recovery.
  • ⚙️ Added user preferences + document progress syncing and smoother reading transitions via text prefetching.
  • 📘 Launched comprehensive docs with deployment guides, configuration references, and TTS provider integration guides.
  • 🧪 Expanded reliability work and test coverage across auth, previews, export, storage, and APIs.

Full Changelog: https://github.com/richardr1126/OpenReader-WebUI/compare/v1.2.1...v2.0.0

v1.2.1 Bug fix

Fixes PDF highlighting and text normalization for complex content.

Full changelog

✨ What's New

🐜 Bug Fixes

  • More reliable PDF sentence and word highlighting during layout changes and rapid updates, preventing stale or overlapping highlights.
  • Revamped text normalization and TTS block splitting for better handling of long/complex content, EPUB texts, dialogue/quotes, and PDF artifacts.

🧪 Tests

  • Expanded unit tests covering block-splitting, EPUB behavior, oversized inputs, and boundary cases.

Full Changelog: https://github.com/richardr1126/OpenReader-WebUI/compare/v1.2.0...v1.2.1

v1.2.0 Mixed
Notable features
  • External library imports
  • Document selection modal
  • Server-side audiobook export
Full changelog

✨ What's New

  • 📚 External library imports + server-side library sync with migration logic
  • 🎧 Updated server-side audiobook export (M4B/MP3) with per-audiobook generation settings
  • 🧩 Document selection modal to pick specific documents for sync, load, and import operations
  • 🛡️ Hardening for audiobook-related APIs: stricter validation, safe filename generation, path sanitization, and FFmpeg metadata escaping

Docker & CI

  • 🔧 Fix whisper CLI behavior in the Docker image (fixes broken Docker word-by-word highlight issue)
  • 🐳 Multi-arch Docker publish workflow improvements
  • ✅ Expanded unit/integration tests (audiobooks, docstore, NLP text processing, SHA-256 hashing)

Full Changelog: https://github.com/richardr1126/OpenReader-WebUI/compare/v1.1.2...v1.2.0

v1.1.2 Mixed
Security fixes
  • React/Next.js CVE prevention
Notable features
  • File previews in document grid
Full changelog

✨ What's New

  • 📑 File previews in the document grid list (default layout)
  • ‼️ Upgrades packages to prevent React/Next.js CVEs discovered recently

Full Changelog: https://github.com/richardr1126/OpenReader-WebUI/compare/v1.1.1...v1.1.2

v1.1.1 Bug fix

Fixed bugs in the audiobook export modal.

Full changelog

✨ What's New

  • Bug fixes in the audiobook export modal

Full Changelog: https://github.com/richardr1126/OpenReader-WebUI/compare/v1.1.0...v1.1.1

v1.1.0 New feature
Notable features
  • Word-by-word highlighting with whisper.cpp
  • Custom EPUB navigation and TOC
Full changelog

✨ What's New

  • 🎯 Word-by-word highlighting with whisper.cpp; TTS -> STT -> Word by word timestamps. (Optional)
  • 🗣️ Whisper binary built and bundled into the Docker image.

UI & UX Improvements

  • 📚 Custom EPUB navigation and table of contents for better readability
  • 📑 The document List now supports grid mode by default
  • 🧹 Small UI tweaks

API & Client Refactors

  • 🧩 Client API: Centralized client-side API calls and refined types for reliability.
  • 🛤️ Audiobooks: Moved audiobook endpoints to a different path for clearer separation.

Full Changelog: https://github.com/richardr1126/OpenReader-WebUI/compare/v1.0.1...v1.1.0

v1.0.1 New feature
Notable features
  • Text highlighting during EPUB playback
Full changelog

✨ What's New

  • 📖 EPUB Playback Highlighting
    • Added text highlighting for the current sentence during EPUB playback.
    • Includes a new configuration option to toggle this feature on or off.

Full Changelog: https://github.com/richardr1126/OpenReader-WebUI/compare/v1.0.0...v1.0.1

v1.0.0 New feature
Notable features
  • Smart sentence continuation with NLP
  • PDF highlighting pipeline refactor
  • Chapter-based audiobook export with resume
Full changelog

✨ What's new

Version 1 release comes with many bug fixes, UI improvements, backend improvements, new features and changes.

  • 🧠 Smart sentence continuation
    • Improved NLP handling of complex structures and quoted dialogue provides more natural sentence boundaries and a smoother audio-text flow.
    • EPUB and PDF playback now use smarter sentence splitting and continuation metadata so sentences that cross page/chapter boundaries are merged before hitting the TTS API.
    • This yields more natural narration and fewer awkward pauses when a sentence spans multiple pages or EPUB spine items.
  • 📄 Modernized PDF text highlighting pipeline
    • Real-time PDF text highlighting is now offloaded to a dedicated Web Worker so scrolling and playback controls remain responsive during narration.
    • A new overlay-based highlighting system draws independent highlight layers on top of the PDF, avoiding interference with the underlying text layer.
    • Upgraded fuzzy matching with Dice-based similarity improves the accuracy of mapping spoken words to on-screen text.
    • A new per-device setting lets you enable or disable real-time PDF highlighting during playback for a more tailored reading experience.
  • 🎧 Chapter/page-based audiobook export with resume & regeneration
    • Per-chapter/per-page generation to disk with persistent bookId
    • Resumable generation (can cancel and continue later)
    • Per-chapter regeneration & deletion
    • Final combined M4B or MP3 download with embedded chapter metadata.
  • 💾 Dexie-backed local storage & sync
    • All document types (PDF, EPUB, TXT/MD-as-HTML) and config are stored via a unified Dexie layer on top of IndexedDB.
    • Document lists use live Dexie queries (no manual refresh needed), and server sync now correctly includes text/markdown documents as part of the library backup.
  • 🗣️ Kokoro multi-voice selection & utilities
    • Kokoro models now support multi-voice combination, with provider-aware limits and helpers (not supported on OpenAI or Deepinfra)
  • Faster, more efficient TTS backend proxy
    • In-memory LRU caching for audio responses with configurable size/TTL
    • ETag support (304 on cache hits) + X-Cache headers (HIT / MISS / INFLIGHT)
  • 📄 More robust DOCX → PDF conversion
    • DOCX conversion now uses isolated per-job LibreOffice profiles and temp directories, polls for a stable output file size, and aggressively cleans up temp files.
    • This reduces cross-job interference and flakiness when converting multiple DOCX files in parallel.
  • Accessibility & layout improvements
    • Dialogs and folder toggles expose proper roles and ARIA attributes.
    • PDF/EPUB/HTML readers use a full-height app shell with a sticky bottom TTS bar, improved scrollbars, and refined focus styles.
  • End-to-end Playwright test suite with TTS mocks
    • Deterministic TTS responses in tests via a reusable Playwright route mock.
    • Coverage for accessibility, upload, navigation, folder management, deletion flows, audiobook generation/export and playback across all document types.

Full Changelog: https://github.com/richardr1126/OpenReader-WebUI/compare/v0.4.0...v1.0.0

v0.4.0 Breaking risk
Breaking changes
  • Voice selection is now provider-model specific; previously saved voices may require reselection
Notable features
  • Multi-provider TTS support (OpenAI, Deepinfra, Custom OpenAI-Compatible)
  • Package migration to pnpm
  • Docker improvements with Deepinfra API defaults
Full changelog

What's New

🎯 Multi-Provider TTS Support

Choose your preferred TTS provider:

  • OpenAI - Original provider
  • Deepinfra - Open-source models (Kokoro-82M, Orpheus-3B, Sesame-1B)
  • Custom OpenAI-Compatible - Self-hosted or third-party endpoints

Provider-specific voice management with automatic restoration per model.

📦 Package Manager Migration

Migrated to pnpm for improved dependency handling and reproducible builds.

🐳 Docker Improvements

Updated Docker configuration with Deepinfra API defaults and added docker-compose example with Kokoro-FastAPI integration.

🔧 Bug Fixes & Improvements

  • Documentation updates
  • CI/CD workflow improvements for pnpm

⚠️ Breaking Changes

Voice selection is now provider-model specific. Previously saved voices may need to be reselected.

Full Changelog

https://github.com/richardr1126/OpenReader-WebUI/compare/v0.3.3...v0.4.0

v0.3.3 New feature
Notable features
  • Allow clicking of internal links
  • Upload multiple files
  • Saving and Loading Progress Bar
Full changelog

What's Changed

  • Allow clicking of internal links by @RobbyV2 in https://github.com/richardr1126/OpenReader-WebUI/pull/54
  • Auto select page number when navigating by @RobbyV2 in https://github.com/richardr1126/OpenReader-WebUI/pull/55
  • Upload multiple files by @RobbyV2 in https://github.com/richardr1126/OpenReader-WebUI/pull/57
  • Add document selection loading icon by @RobbyV2 in https://github.com/richardr1126/OpenReader-WebUI/pull/56
  • Saving and Loading Progress Bar by @RobbyV2 in https://github.com/richardr1126/OpenReader-WebUI/pull/58

Full Changelog: https://github.com/richardr1126/OpenReader-WebUI/compare/v0.3.2...v0.3.3

v0.3.2 New feature
Notable features
  • Saving and restoring last location in PDFs
  • Player and native voice speed changes
Full changelog

What's Changed

  • Added saving and restoring last location in PDFs by @thepycoder in https://github.com/richardr1126/OpenReader-WebUI/pull/51
  • Allow for player speed changes as well as native voice speed changes by @thepycoder in https://github.com/richardr1126/OpenReader-WebUI/pull/52
  • Move button closure higher in SettingsModal by @RobbyV2 in https://github.com/richardr1126/OpenReader-WebUI/pull/53

New Contributors

  • @RobbyV2 made their first contribution in https://github.com/richardr1126/OpenReader-WebUI/pull/53

Full Changelog: https://github.com/richardr1126/OpenReader-WebUI/compare/v0.3.1...v0.3.2

v0.3.1 New feature
Notable features
  • Editable page number in PDF navigator view
  • Refactored NLP into a single shared function
Full changelog

What's New ✨

  • Add editable page number in PDF navigator view by @thepycoder in https://github.com/richardr1126/OpenReader-WebUI/pull/49
  • Refactored NLP into a single, shared function by @thepycoder in https://github.com/richardr1126/OpenReader-WebUI/pull/50

New Contributors

  • @thepycoder made their first contribution in https://github.com/richardr1126/OpenReader-WebUI/pull/49

Full Changelog: https://github.com/richardr1126/OpenReader-WebUI/compare/v0.3.0...v0.3.1

Beta — feedback welcome: [email protected]