This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+14 more
Affected surfaces
Summary
AI summaryUpdates β‘ Improved, π New, and π Fixed across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Feature | Medium |
Adds automatic WAV and OGG audio normalization with MP3 transcoding for OpenAIβcompatible TTS responses. Adds automatic WAV and OGG audio normalization with MP3 transcoding for OpenAIβcompatible TTS responses. Source: llm_adapter@2026-06-10 Confidence: high |
β |
| Feature | Medium |
Upgrades OpenAI voice resolution to query multiple candidate endpoints and fall back to canonical voices. Upgrades OpenAI voice resolution to query multiple candidate endpoints and fall back to canonical voices. Source: llm_adapter@2026-06-10 Confidence: high |
β |
| Feature | Medium |
Allows empty API keys and automatically retries without response_format: "mp3" when WAVβonly servers reject it, normalizing WAV to MP3. Allows empty API keys and automatically retries without response_format: "mp3" when WAVβonly servers reject it, normalizing WAV to MP3. Source: llm_adapter@2026-06-10 Confidence: high |
β |
| Feature | Medium |
Unifies EPUB text highlighting under a new character offset map with cache invalidation on viewport changes. Unifies EPUB text highlighting under a new character offset map with cache invalidation on viewport changes. Source: llm_adapter@2026-06-10 Confidence: high |
β |
| Feature | Medium |
Improves wordβsync UX by snapping highlights to the last started word during temporal gaps and raises TTS audio quality to VBR q2. Improves wordβsync UX by snapping highlights to the last started word during temporal gaps and raises TTS audio quality to VBR q2. Source: llm_adapter@2026-06-10 Confidence: high |
β |
| Feature | Medium |
Includes the local .npmrc file in compute worker Dockerfile build context for private registry dependency resolution. Includes the local .npmrc file in compute worker Dockerfile build context for private registry dependency resolution. Source: llm_adapter@2026-06-10 Confidence: high |
β |
| Feature | Medium |
Transitions EPUB segment planning to a viewportβindependent chapterβlevel canonical architecture, eliminating repeated/skipped segments on page turns and enabling stable prefetching. Transitions EPUB segment planning to a viewportβindependent chapterβlevel canonical architecture, eliminating repeated/skipped segments on page turns and enabling stable prefetching. Source: llm_adapter@2026-06-10 Confidence: high |
β |
| Bugfix | Medium |
Fixes race condition when aborting TTS requests during lazy imports of the ffmpeg binary module. Fixes race condition when aborting TTS requests during lazy imports of the ffmpeg binary module. Source: llm_adapter@2026-06-10 Confidence: high |
β |
| Bugfix | Medium |
Prevents anonymous session creation on authenticationβrelated pages (login, signup). Prevents anonymous session creation on authenticationβrelated pages (login, signup). Source: llm_adapter@2026-06-10 Confidence: low |
β |
Full changelog
β¨ What's New
π New
- Canonical EPUB Segment Planning: Transitioned from a client-side preview-based model to a viewport-independent chapter-level canonical planning architecture. Chapters are segmented exactly once, with viewport pages acting as contiguous, non-overlapping windows. This eliminates repeated/skipped segments on page turns, stabilizes highlights, and enables prefetching of exact upcoming segments using stable keys/locators (
epub:${spineIndex}:${spineHref}:${charOffset}). - WAV & OGG Audio Normalization: Added automatic format sniffing and on-the-fly MP3 transcoding for custom OpenAI-compatible TTS responses. Audio is transcoded to VBR q2 via ffmpeg using seekable temp files to guarantee accurate Xing/Info duration headers. This fixes HTML5
<audio>duration bugs so theendedevent fires reliably.
β‘ Improved
- Multi-Route OpenAI Voice Probing: Upgraded custom OpenAI voice resolution to query multiple candidate endpoints (
/audio/voices,/voices,/styles) and extract names from flat arrays, styles lists, or object structures. Falls back to canonical OpenAI voices if no endpoints resolve. - Robust OpenAI-Compatible Gateway Support: Allowed empty API keys by using placeholder authorization headers. Also, if a WAV-only server rejects
response_format: "mp3"(returning 400/422), the gateway automatically retries without it, caches the decision, and normalizes the WAV response to MP3. - Unified EPUB Text Highlighting: Unified character mappings and word-region alignment under a new character offset map (
highlight-char-map.ts). Refactored sentence alignment fallbacks and URL replacements, and added cache invalidation on viewport resize or layout changes. - Smooth Word-Sync UX: Improved word synchronization to snap the active highlight to the last started word when the play head lands in a temporal gap, preventing highlighting freezes on silence. Increased live TTS audio quality from 64k CBR to VBR q2.
- Compute Worker Build Context: Included the local
.npmrcfile in the compute workerDockerfilebuild context to allow dependency resolution for private registry packages.
π Fixed
- Prevent Anonymous Sessions on Auth Pages: Blocked guest session generation on auth-related pages (login/signup) to prevent session leaks and keep database records clean.
- FFmpeg Spawn Abort Race Condition: Fixed a race condition when aborting TTS requests during lazy imports of the ffmpeg binary module by registering the abort listeners prior to spawning.
Full Changelog: https://github.com/richardr1126/openreader/compare/v4.2.0...v4.2.1
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About OpenReader
EPUB, PDF, DOCX, MD, and TXT file text to speech document reader. Read documents in realtime with high-quality TTS; or extract audiobooks.
Related context
Related tools
Beta — feedback welcome: [email protected]