Skip to content

BeePub

v0.6.0 Feature

This release adds 2 notable features for engineering teams evaluating rollout.

Published 15d Media Servers
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

calibre ebook ebook-manager epub

Summary

AI summary

Updates Internal, Highlights, and Setup notes across a mixed release.

Changes in this release

Feature Medium

Adds paragraph-level e-reader sync in both directions.

Adds paragraph-level e-reader sync in both directions.

Source: llm_adapter@2026-07-15

Confidence: high

Feature Low

Adds groundwork for local-first app's two-way highlight sync via soft deletes and client‑supplied UUIDs.

Adds groundwork for local-first app's two-way highlight sync via soft deletes and client‑supplied UUIDs.

Source: llm_adapter@2026-07-15

Confidence: low

Feature Low

Introduces soft deletes with tombstone `deleted_at` and client‑supplied UUID for idempotent highlight operations, preparing two‑way highlight sync.

Introduces soft deletes with tombstone `deleted_at` and client‑supplied UUID for idempotent highlight operations, preparing two‑way highlight sync.

Source: granite4.1:30b@2026-07-15-audit

Confidence: low

Bugfix Medium

Fixes position jumps for books with divergent renderer percentages.

Fixes position jumps for books with divergent renderer percentages.

Source: llm_adapter@2026-07-15

Confidence: high

Refactor Low

Refactors reader to use BookSource/SyncBackend abstractions instead of direct BeePub API calls.

Refactors reader to use BookSource/SyncBackend abstractions instead of direct BeePub API calls.

Source: llm_adapter@2026-07-15

Confidence: high

Full changelog

Highlights

  • Paragraph-level e-reader sync, both directions — v0.5.0 synced positions between the web reader and KOReader/Readest at chapter granularity; v0.6.0 makes it paragraph-exact. Device→web: the web reader resolves the e-reader's native position (a crengine xpointer like /body/DocFragment[12]/body/div[2]/p[35]/text().260) through the chapter's DOM and jumps to the exact paragraph — this also fixes books where renderer percentage scales diverge so badly (footnote- or image-heavy) that the old chapter fallback looked like the jump did nothing. Web→device: the reader now computes a crengine-style xpointer for every position it saves, and KOReader/Readest pull it and open at the exact paragraph. Positions degrade gracefully (paragraph → in-chapter percentage → chapter start) when a book resists exact resolution. Verified in both directions against a real Kobo running KOReader, and Readest. As far as we know, no other kosync server does cross-renderer position translation at all.

Setup notes

  • Nothing new to configure — paragraph-level sync works through the existing /kosync endpoint for books whose digests already match.

Internal

  • Migration 050 adds a deleted_at tombstone to highlights: deletes are now soft and idempotent, and highlight creation accepts a client-supplied UUID (idempotent re-create revives a tombstoned row). API behavior is unchanged for existing clients; this is groundwork for the upcoming local-first app's two-way highlight sync.
  • The reader now talks to books and sync through BookSource/SyncBackend abstractions (Readium-style locators) instead of calling the BeePub API directly — zero behavior change, groundwork for local books and third-party OPDS/kosync sources on iOS.

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

Track BeePub

Get notified when new releases ship.

Sign up free

About BeePub

All releases →

Beta — feedback welcome: [email protected]