0.13.0
Released: 2026-07-20
Features
Section titled “Features”- Added a Distillation library: a dedicated, searchable place that gathers every published distillation across your books into one read-only list, with full-text search, source context, and one tap back to the original annotation. (#663, #665)
- Added chapter-level bilingual reading to the EPUB reader, rendering the cached translation alongside the original text per chapter, reusing your existing translation provider and restoring automatically after a restart. (#664)
- Redesigned collection cards as fan-out covers: recent covers stack like a hand of cards and spread open on hover or focus, so mixed content inside a collection is easy to read at a glance. (#672)
- Refined feedback animations across the app: reading-progress now renders on the compositor for smoother scrolling, settings save feedback is a restrained entrance instead of an oversized bounce, and first-run empty states guide you in with a gentle reveal. (#666)
Performance
Section titled “Performance”- Restored a paged catalog so startup no longer loads the entire library at once, using a unified index and trigram search that stay responsive on large libraries. (#651)
- Sped up WeRead sync with parameter-safe batched detail inserts, and made large collections group members linearly instead of copying on every add. (#657, #655)
- Reduced reader work for large annotation rails, EPUB anchor resolution, and reading-context range lookups. (#654, #653, #652)
- Kept collection navigation in sync so switching scope no longer briefly shows the previous collection’s contents. (#673)
- Restored localized import error details and card-menu states in the Library, and stopped the menu trigger from disappearing on focus change. (#667)
- Restored draft change detection so newer settings can be saved, and retried failed saves with the exact values from the failure. (#674)
- Serialized reading-progress writes and kept unsaved progress for retry after IPC failures, so progress is no longer lost. (#648)
- Required authoritative WeRead sync data before applying changes, so incomplete responses can no longer overwrite local notes. (#647)
- Throttled PIN verification with a shared cooldown to resist brute-force attempts. (#649)
- Validated external JSON responses from providers and pricing data before use, and patched vulnerable production dependencies. (#671, #658)
Engineering
Section titled “Engineering”- Migrated the workspace to Effect v4, enforcing v4 runtime semantics and preserving typed failures. (#668, #669, #670)
- Hardened favicon fetching, coordinated credential deletion, and used fresh article snapshots with awaited annotation persistence across reader write paths. (#646, #650, #645, #644)
- Reorganized reader, AI, annotation, WeRead, IPC, and desktop store boundaries for clearer ownership and narrower writes. (#643, #659–#662, #675–#703)