Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 85 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@

Bindery is built so that can't happen to you:

- **No single point of failure for metadata.** OpenLibrary leads, with Google Books, Hardcover, DNB, Audnex, and Audible behind it — all documented public APIs, zero scraping. If one source degrades, the others carry the library.
- **No single point of failure for metadata.** OpenLibrary leads, with Google Books, Hardcover, DNB, Audnex, and Audible behind it, and Nasjonalbiblioteket and the BnF available as opt in primaries for Norwegian and French libraries. All documented public APIs, zero scraping. If one source degrades, the others carry the library.
- **Bring your dead Readarr install with you.** Import `readarr.db` and your authors, indexers, download clients, and blocklist come across in one step. No re-entry, no CSV gymnastics.
- **Boring to run, by design.** A single Go binary with the UI embedded, SQLite, no external database, no sidecars, no nginx. Distroless image, Helm chart, and ARM builds down to a Pi Zero.

Expand Down Expand Up @@ -118,7 +118,7 @@ Clean-room Go rewrite, modern React UI, MIT-licensed, actively developed.
- Author monitoring via OpenLibrary's author-works endpoint, configurable author monitor modes, all, future, latest or none as the install default plus a per-author mode that follows only the series you pick, per-book monitor toggles, and a `wanted → imported` workflow with live download progress on the Queue page.
- Unattended release discovery: monitored authors are checked for new books on a schedule, so a followed author's next book joins the library without a click. It ships off; turn it on in **Settings, General, New release discovery** by picking Daily, Weekly or Monthly. Opt an author out with **Monitor new items: Don't add them**.
- Dual-format books — each title holds an ebook *and* an audiobook in independent slots, with separate search, grab, and import pipelines, and the audiobook side moves multi-part `.m4b` / `.mp3` folders as one unit.
- Series support with position tracking and search by series title, edition tracking (format / ISBN / publisher / page count), Calendar view of upcoming releases, and multiple library roots.
- Series support with position tracking and search by series title, a book's series and position fixable from the book itself (a book you take out of a series stays out on refresh), edition tracking (format / ISBN / publisher / page count), Calendar view of upcoming releases, and multiple library roots.
- Library scan matching in five passes: exact ASIN, then a backwards `Author - Title` filename whose folder author the catalogue already knows, then the filename's title, then the book folder's title, and finally series name plus position. Every title pass is one fuzzy comparison that has to agree on the author as well. Honours librarian sort-suffix form (`Title, The`) and series-annotated filenames (`[Mistborn, Book 1]`).
- **Library adoption**: whatever the scan could not match waits on the Import page as one row per book (an audiobook folder or disc set is one row), with suggested matches (one click Confirm only for a strong match), one "Add author" decision per missing author, and Undo. Files are registered where they are, never moved.
- Author aliases (`RR Haywood` / `R.R. Haywood` / `R R Haywood` merge into one canonical row), and metadata re-bind to correct a wrong match without delete-and-re-add. On a book’s **File → Re-bind** dialog, search configured metadata providers and select an OpenLibrary work or Hardcover book, or enter an exact provider ID and press Enter. Results already in the library are marked and link to the existing book; records belonging to another library book cannot be selected. Each result’s **Links** menu opens its upstream page when available; OpenLibrary editions can be viewed but require a work ID for re-binding. Re-binding updates metadata and series without moving files; author mismatches require confirmation.
Expand Down Expand Up @@ -179,7 +179,7 @@ Cover images are fetched and cached server-side under `<dataDir>/image-cache/` (
- Five entries in the top bar: **Library** (Authors, Books, Series), **Activity** (Wanted, Queue, History, and Requests for an admin), **Import**, **Calendar** and **Discover**. A group opens on its first page and repeats the rest as tabs above the content, and every page keeps the address it always had.
- Library search in the header over your authors, books and series, with a last row that hands a miss to a single **Add to library** dialog for authors and books (title, author, ISBN or ASIN).
- Light / dark themes (respecting `prefers-color-scheme` first paint), grid / table view toggles, mobile-friendly responsive layout, hamburger nav, agenda-style mobile Calendar.
- Full pagination, search, filter, and sort on every list page; preferences persist to `localStorage`.
- Full pagination, search, filter, and sort on every list page, including sorting an author's books by title, date or added and the Books list by community rating; the Authors list shows how many of each author's books you have; preferences persist to `localStorage`.
- Previous/Next navigation between authors on the author detail page, stepping through the list page you came from.
- Previous/Next navigation between books, stepping through the list page you came from (Books, an author's own book list, or Wanted).
- 10 languages: English, French, German, Dutch, Spanish, Filipino (Tagalog), Indonesian, Korean, Norwegian (Bokmål) and Swedish. Auto-detected from the browser, override in Settings.
Expand Down Expand Up @@ -243,6 +243,7 @@ Bindery is configured through the web UI under **Settings** — indexers, downlo
| `BINDERY_AUDIOBOOK_DOWNLOAD_DIR` | inherits download dir | Separate watch folder for audiobook downloads |
| `BINDERY_URL_BASE` | _(empty)_ | Reverse-proxy subpath (e.g. `/bindery`) |
| `BINDERY_OUTBOUND_PROXY` | _(empty)_ | Route outbound HTTP (indexers, metadata, covers, notifications, telemetry) through an `http`/`https`/`socks5` proxy. LAN/loopback destinations bypass it by default — see [DEPLOYMENT.md](docs/DEPLOYMENT.md#environment-variables) |
| `BINDERY_DOWNLOAD_RETENTION_DAYS` | `90` | Days to keep a finished (imported or failed) download row before a scheduled job deletes it; `0` keeps every row. See [DEPLOYMENT.md](docs/DEPLOYMENT.md#environment-variables) before upgrading a long running install |
| `BINDERY_LOG_LEVEL` | `info` | Log verbosity: `debug`, `info`, `warn` or `error` |
| `BINDERY_PUID` / `BINDERY_PGID` | _(unset)_ | Sanity-check assertions for the container UID/GID. They only assert; the distroless image does no runtime user switching, so set the UID with `--user` or Compose's `user:` as well |

Expand All @@ -255,7 +256,7 @@ The full reference (path remapping, API-key seeding, telemetry, trusted-proxy, r
| **Usenet clients** | SABnzbd, NZBGet |
| **Torrent clients** | qBittorrent, Transmission, Deluge, rTorrent / ruTorrent (XML-RPC over HTTP or SCGI) |
| **Indexers** | Newznab (NZBGeek, NZBFinder, NZBPlanet, DrunkenSlug, …), Torznab (Prowlarr, Jackett, direct endpoints), with per-indexer category overrides |
| **Metadata sources** | OpenLibrary, Google Books, Hardcover, DNB, Audnex, Audible |
| **Metadata sources** | OpenLibrary, Google Books, Hardcover, DNB, Nasjonalbiblioteket (opt in), BnF (opt in), Audnex, Audible |
| **Import lists** | Hardcover lists, synced on a configurable interval |
| **Library tools** | Calibre (`calibredb`, Bindery Bridge plugin, `metadata.db` import), Audiobookshelf (import and scan trigger), Grimmory (preview), post-import drop folder for Calibre-Web-Automated and similar ([guide](docs/Calibre-Integration-Wiki.md)) |
| **Notifications** | Generic webhooks — pipe to Apprise / ntfy / Home Assistant / Slack / Discord |
Expand Down
10 changes: 0 additions & 10 deletions changelog.d/1640-security-hardening.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/2524-split-editions.md

This file was deleted.

10 changes: 0 additions & 10 deletions changelog.d/2554-book-series.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/2593-hardcover-daily-hold.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/2805-author-sort-names.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/2980-local-file-covers.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/2985-norwegian-swedish.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/3017-book-cover-upload.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/3018-cover-language.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/3058-author-sync-on-load.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/3081-compact-selects-touch.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/3087-author-books-sort-filter.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/3092-authors-list-have-count.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/3101-rejected-hardcover-token-hold.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/3122-filing-form-dedup-key.md

This file was deleted.

2 changes: 0 additions & 2 deletions changelog.d/3123-umlaut-flex.md

This file was deleted.

Loading
Loading