github vavallee/bindery v0.8.0

latest releases: v1.16.1, v1.16.0, v1.15.3...
one month ago

Major feature release. Calibre users can finally automate the last mile — finished Bindery imports land in Calibre with no manual "Add books" step. Library curation gets a sharper tool: the author list stops fragmenting into "RR Haywood" / "R.R. Haywood" / "R R Haywood" duplicates, and the new Merge authors flow reunites them under one canonical row. Backend test coverage continues its climb, with internal/api and internal/importer both breaking 60%.

Added

  • Calibre library integration via calibredb (#32) — after a successful import, Bindery mirrors the book into a configured Calibre library by shelling out to calibredb add --with-library <path> and stores the returned Calibre book id on the Bindery book row for future OPDS and cross-library lookups. Opt-in under Settings → General → Calibre with three fields (enabled / library path / binary path) and a Test connection button that probes calibredb --version. Failures during the Calibre call are logged and swallowed so a missing binary or unreachable library never rolls back an otherwise-good Bindery import. Matches the Path A approach on the roadmap — the looser-coupled drop-folder / OPDS paths remain planned.
  • Author aliases — merge duplicate authors (#45) — new author_aliases table plus a Merge authors modal on the Authors page (and a Merge button on each author's detail page). Picking a source and target reparents the source's books onto the target, deletes the source row, and preserves the source's name + OpenLibrary id as aliases pointing at the target. The add-author flow now consults the alias table: if the requested name already resolves to an existing author, the POST returns 409 Conflict with canonicalAuthorId so the UI can prompt for merge instead of silently ingesting a duplicate. Two new endpoints: GET /api/v1/author/{id}/aliases and POST /api/v1/author/{id}/merge. The merge is transactional — if any child update fails, nothing changes.

Changed

  • Backend test coverage raised to 60%+ on the two laggardsinternal/api now 62.7% (was 40.5%), internal/importer 62.2% (was 40.7%). New _test.go files cover the settings / custom-formats / delay-profiles / files / import-lists / migrate / notifications / quality-profiles / search / series handlers and the importer's titleMatch / tokenize / path-remap helpers.

Upgrade notes

  • Schema: two additive migrations land (008_calibre.sql adds a calibre_id INTEGER column on books plus three calibre.* settings rows; 009_author_aliases.sql adds the author_aliases table). Drop-in binary or image replacement is safe.
  • Calibre is off by default. Existing installs are unaffected until you flip the toggle in Settings → General → Calibre. The calibredb binary must be reachable from the Bindery process — in Docker this means either bind-mounting a calibre install or picking an image that ships calibredb on the PATH. A future release may publish a bindery-calibre image variant; track progress on #32.
  • No duplicate-author migration is run automatically. Existing fragmented author rows stay as-is until you merge them manually via the new modal — this is intentional, since "are these two rows the same person?" needs a human in the loop.

Don't miss a new bindery release

NewReleases is sending notifications on new releases.