github vavallee/bindery v1.50.0

36 minutes ago

Two accounts can now follow the same author, the Series page can count only released books, companion tools get a library export and searches report how they ended. A new release is no longer folded into an older book with the same title. This release has two database migrations: 129 drops the unused custom_formats table and 130 rebuilds the authors table to key it per account. Take a backup first as for any upgrade.

Added

  • Released and upcoming scope for the Series page's Missing filter (#2871). With Missing books selected you can now count only released books, so a volume that is not out yet no longer makes a series look incomplete, or only upcoming ones. A book counts as released when its release date is today or earlier; a book with no date, like a working title volume, counts as upcoming. The card badge follows the scope while it is on. Hardcover books you do not have yet join the scoped counts once the series has been opened, since that is when their dates load. The scope is kept in the URL, and like the other filters it never marks, monitors or searches anything.
  • Search run ids (#3133). Searches started from the bulk actions, a book update, add with search and request approval now hand back a run id, and GET /api/v1/search/runs/{id} tells you whether that search is still going or how it ended. Thanks kennethp1015 for the request.
  • Library export for companion tools (#3328). GET /api/v1/library/export pages through your books with their files, editions and series in one documented, versioned shape, so add-ons no longer have to read the whole series list. Thanks kennethp1015 for the request.

Changed

  • Two accounts can follow the same author (#3555). With multiple users and BINDERY_ENFORCE_TENANCY on, an author used to belong to whichever account added it first, so everyone else got a 409 on Add Author and on Add Book for any of that author's books. Now each account gets its own copy of the author, with its own monitoring, profiles and root folders, and sees only its own. Books are still held once per instance, so a book another account already has still answers "book is held by another user". Hardcover list syncs, requests and series checks give the account its own copy too, and deleting an account folds its authors into the receiving account's copy when it has one, matching on any provider id the two share. Within one account a provider id never belongs to two authors, so a merge across accounts drops an id the kept author's account already holds and lists it in the new IdentifiersDropped field of the merge response. With tenancy off nothing changes: one row per author and the same 409 as before. If you turn tenancy off after accounts made their own copies, the copies stay and keep working, books never move between them, a copy cannot take a main id another copy holds, and you can merge them into one. An author folded away when an account is deleted leaves its name as an alias on the kept author.
  • The upgrade rebuilds the authors table (#3555). The first start on this version rebuilds authors and author_identifiers to key them per account. Every row, id and setting is kept and nothing under an author is touched, but take a backup first as for any upgrade, and expect the first start to take a little longer on a very large library.
  • Fewer database reads per request (#1468). The auth mode, API key and session secrets are now cached in memory and refreshed the moment you change them, so each request does fewer SQLite reads. Password changes and sign outs still take effect on the very next request.
  • Fewer Hardcover requests on author refresh (#3774). Refreshing an author now pulls Hardcover editions for ten books at a time instead of one request per book, which goes easier on the rate limits.
  • One shared torrent fetch for all four torrent clients (#1470). Torrent files fetched from an indexer now go through a single code path in qBittorrent, Deluge, Transmission and rTorrent. Transmission now rejects empty or oversized torrent files instead of passing them on, and torrent fetches time out after 60 seconds in Deluge and qBittorrent (it was 15).

Fixed

  • Grimmory connections now use the same network guard as Audiobookshelf (#1472). Redirects and lookups that land on link-local or cloud metadata addresses are refused, and the standard HTTP_PROXY and NO_PROXY variables apply. If you set HTTP_PROXY, add your Grimmory host to NO_PROXY so a LAN Grimmory keeps connecting directly.
  • A bad scheduler interval is logged instead of silently skipped (#1472). The log names the job that could not be scheduled.
  • New releases no longer get folded into an anthology with the same title (#3792). Stephen King and Peter Straub's 2026 novel "Other Worlds Than These" landed on the 2011 anthology of the same name, which OpenLibrary also lists under King because he has a story in it. The novel took the anthology's cover and date, got filed as backlist and was never wanted. With an English only profile it could be dropped altogether, because OpenLibrary's edition sample called it Portuguese. A refresh now keeps a same titled work apart when the other one is an anthology the author only contributed to: at least eight credits and five times as many as the author's own book, with the author nowhere near the front, whether or not you own it. Release dates and co-author order never split a book, so duplicate OpenLibrary records of one book still become a single book. A book matched to Hardcover also stores Hardcover's language when Hardcover finds an edition in one of your languages and the book doesn't already have one of them. Libraries already hit by this recover on the next author refresh: the novel is added as its own book if the author takes new books, and, if you don't own the anthology, its OpenLibrary and Hardcover links move over to it. If you do own it, the Hardcover link stays on the anthology. The anthology may still be linked to the novel's series, which you can remove on the book page. Known limits: the fix needs the anthology's own OpenLibrary record to be in the same author refresh, and it does not apply to authors synced from Hardcover alone or to Hardcover books OpenLibrary does not list. Thanks sladester for the detailed report.
  • Release dates no longer show a day early (#3811). For people west of UTC, the book page, Books list, series page, wanted list and the add book dialogs showed the day before the real release date, and the year before for 1 January dates, because the date was read in the browser's time zone instead of the way the API stores it.
  • Automatic search says when no indexer can run (#3810). When an automatic search from the book page finds nothing and no indexer is enabled, the page now says either that none is configured or that every one is disabled, and points at Settings, Indexers, instead of saying a search started. Searches that are skipped, fail or ran against an enabled indexer keep the old wording.
  • Settings search keeps a picked section in view (#3812). Picking a section such as Usage Telemetry now keeps its heading on screen when the tab finishes loading content above it, instead of leaving it below the fold.

Removed

  • Custom format endpoints (#1471). The /api/v1/customformat endpoints and the custom_formats table are gone. Search and grabbing never scored a release against a custom format and there was no UI for them, so formats created through the API never had any effect. The upgrade drops the table.

Don't miss a new bindery release

NewReleases is sending notifications on new releases.