Skip to content

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 17 Apr 03:05
· 815 commits to main since this release

Calibre library import, Settings reorganisation, stalled download detection, and image proxy hardening.

Added

  • Calibre library import (#63) — import books, authors, and editions from an existing Calibre metadata.db via Settings → Calibre → Library import. Incremental and idempotent; progress bar with live stats.
  • Calibre Settings tab — Calibre settings extracted from the General tab into a dedicated tab. Eliminates the duplicate library_path field; single shared path at the top used by both write integration and library import. Adds "Test paths" button for drop-folder mode (validates metadata.db readable, drop folder writable).
  • Stalled download detection (#142) — background job detects qBittorrent stalledDL torrents and Transmission stopped-with-error states. Automatically marks failed, blocklists the release, and triggers a re-search.

Fixed

  • calibredb error messages (#160) — "no such file or directory" now includes the path and explains the binary must be accessible inside the Bindery container, not just on the Docker host.
  • Image proxy cache (#138) — sharded cache directories, LRU eviction, and atomic writes prevent corruption on large libraries.
  • Calibre import when write mode is off — library import no longer incorrectly gated behind the write-mode toggle.
  • Calibre crash recovery — pod restarts between Create and SetCalibreID no longer produce duplicate book rows.
  • Author sync duplicate constraint — UNIQUE constraint on books.foreign_id during concurrent author syncs treated as benign skip.
  • TOCTOU-safe file copy — importer uses os.Root for directory copy/hardlink to prevent symlink traversal.

Upgrade notes

  • Schema: migration 018_calibre_sync.sql adds tables for Calibre library import. Drop-in binary or image replacement is safe.