Releases: richardr1126/openreader
v2.0.1
✨ What's New
- Added official KittenTTS-FastAPI support in OpenReader as an OpenAI-compatible TTS option.
- Added a
kitten-ttspreset 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: v2.0.0...v2.0.1
v2.0.0
✨ 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 (
openreaderwithopenreader-webuias 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: v1.2.1...v2.0.0
v1.2.1
✨ 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: v1.2.0...v1.2.1
v1.2.0
✨ 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: v1.1.2...v1.2.0
v1.1.2
✨ What's New
- 📑 File previews in the document grid list (default layout)
‼️ Upgrades packages to prevent React/Next.js CVEs discovered recently
Full Changelog: v1.1.1...v1.1.2
v1.1.1
v1.1.0
✨ 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: v1.0.1...v1.1.0
v1.0.1
✨ 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: v1.0.0...v1.0.1
v1.0.0
✨ 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.
- Per-chapter/per-page generation to disk with persistent
- 💾 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 (
304on cache hits) +X-Cacheheaders (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: v0.4.0...v1.0.0
v0.4.0
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.