This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
Summary
AI summaryUpdates Internal, Highlights, and Setup notes across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| 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
/kosyncendpoint for books whose digests already match.
Internal
- Migration 050 adds a
deleted_attombstone 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/SyncBackendabstractions (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
About BeePub
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]