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

30 shown

Config change
v4.4.0 Breaking risk
Auth Breaking upgrade

TTS key removal, full server migration

No immediate action
v4.3.0 Mixed

Speech SDK + Monorepo + Highlight fix

Config change
v4.2.2 Mixed
RCE / SSRF

Article import + doc creator + SSRF fix

Review required
v4.2.1 Mixed
Auth

EPUB seg., audio norm., voice probe, auth fix

No immediate action
v4.2.0 Breaking risk

Multilingual reader, task engine, concurrency locks

No immediate action
v4.1.2 Mixed

Docker preview fix + upload reliability + drag‑and‑drop + PDF

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]