Skip to content

0.13.0

Released: 2026-07-20

  • 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)
  • 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)
  • 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)