Search stops approving the next book in a series, a content check at import, a download client per indexer, Kindle file support, a settings search box, and a long run of accessibility fixes
Added
- Imports blocked notice (#2030): once you have imported a download, admins now see a red notice on the Authors page if Bindery can no longer import, for example a library folder that went missing or read only, no enabled indexer or download client, or every download client failing its health check. It waits until the problem has lasted a couple of minutes, points at the right Settings page, and never shows folder paths.
- Path remap assistant (#2031): when Test says Bindery can't read a qBittorrent, NZBGet or rTorrent client's completed folder, the warning now shows the folder the client reports, lets you pick the matching Bindery folder, previews a path before and after, and saves the remap and re-tests in one step. Other client types are unchanged. The Test response gains
remotePathandremapCandidates. - Ebook content check at import (#3015, requested by foobarbigtime). When a download finishes, Bindery now compares the EPUB's own title and author with the book it was grabbed for. Only a definite mismatch counts, meaning the title differs (series suffixes such as
, Book 11and subtitles are ignored) and the author is neither the book's author nor one of its aliases, so a pen name like Franklin W. Dixon for Leslie McFarlane still matches. A file with no title or author is never flagged. The new setting Check ebook contents (import.ebook.content_check, admin only, in Settings under General) isoff,warnorblockand defaults towarn: the file imports as before and the History row and webhook carry acontentChecknote saying what the file turned out to be.blockis opt in and refuses the download the way a wrong language does, blocklisting the release and keeping the book Wanted. Match to book and manual import skip the check, and Retry import runs it again. - Audiobook content check at import (#3246). The same idea for audiobooks, using the audio tags: Bindery reads the album tag of the downloaded files (the track title only when there is no album and at least two files share it) and flags a download that holds other books, such as the next volume or another title by the same author, which an author check could not see. Chapter and track titles, prologues, credits and promo tracks like excerpts and previews never count, and a download whose every file carries one other title (a translated edition) is not flagged. The new setting Check audiobook contents (
import.audiobook.content_check, admin only) isoff,warnorblockand defaults towarn. Inwarnthe audiobook imports and the History row and webhook list the other books found with their file counts. Inblockthe download is blocked with a message such as "the files contain Corralled (9), Coming Home to Myself (8)", the release is blocklisted and the book stays Wanted. Match to book and manual import skip the check, Retry import runs it again, and at most 500 files are read per import. - Content check hardening (#3015, #3246). A creator that names nobody (Unknown, Anonymous, a publisher, an email address) is read as no creator, a Russian, Japanese, Hebrew, Arabic or Chinese edition of a book catalogued in Latin letters is never flagged, and Dr/Mr/St, hyphen and apostrophe spellings and spelled numbers count as the same title. Audiobooks ignore placeholder, publisher, web address and narrator albums, do not flag fewer than 5 percent stray files, accept a subtitle alone as the book's title, no longer skip ordinary titles with words like complete or best of, stop after a 30 second budget, and record a note when a download passes only because every file carries one other title. The ebook note lists at most 10 files, and a release with more than 20 EPUBs is not checked at all.
- Content check, second hardening (#3015, #3246). A release with more than 20 EPUBs is no longer judged on its first 20, an author with one non-Latin alias can still disagree with a Latin creator, more real compilations (short stories, collected and complete works,
X Collection,The Best of <author>) are skipped while ordinary titles are still checked,Part Twostyle subtitles are no longer taken for titles, surnames like House or Press are no longer read as publishers, and a bracketed email address or a dotted word like Dot.com no longer hides a real name or title. - Kindle files' own metadata is read at import (#3016, built by francisrath). MOBI, AZW and AZW3 files now have their embedded title, author, ISBN and language read, the way EPUBs always have. The import language check, matching a download that arrived without a book, bulk import lookups and the ebook content check now cover Kindle formats too, so a Kindle file in a language the metadata profile does not allow is blocked instead of imported unchecked.
- Find a settings tab or section from a search box (#3059): Settings now has a search box at the top. Type part of a tab name or section heading, like telemetry or file naming, and pick a result to jump straight there. Admins can also paste a setting key. Press
/to focus the box. It does not search individual fields yet. - Per-indexer download client (#3080, requested by johnmschoonover): each indexer now has an optional Download client setting in Settings, Indexers. Leave it on Default and nothing changes. Pick a client and every grab from that indexer goes to it: scheduled searches, the search page, held releases in Pending and Retry download. It overrides the client's priority and category routing, so a private tracker's torrents can live on their own qBittorrent. If that client is disabled, missing, the wrong protocol or not answering, the grab fails with a message naming the indexer (and the client, for an admin) and is never sent to another client. A scheduled search skips only that indexer's releases and still grabs from your others, and a held release from that indexer stays in Pending until its client is back. A download client that an indexer is pinned to cannot be deleted (the request is refused with the indexer names), and the indexer row shows a warning while its client is disabled, missing or the wrong protocol. Prowlarr syncs keep the setting.
- Covers from Kindle files (#3313, from francisrath). A book no metadata provider has a cover for now takes the cover embedded in its MOBI, AZW or AZW3 file, as it already did for EPUB and audiobook files. Only an image the file marks as its cover is used, never a guess at the first picture, and a provider's cover is never replaced. Kindle books already in your library pick theirs up on the next library scan.
Changed
- Audiobookshelf import stops re-asking Hardcover about books it already matched (#2173). Thanks to gavinmcfall for the timings that showed where the time goes. A repeat import now skips the Hardcover series match for items it linked before and for items it searched and found nothing for, so a big library no longer re-walks thousands of searches every run. A miss is retried after about a month, and an item whose title, author or series changed in Audiobookshelf is matched again straight away. Skipped items also skip the upstream metadata re-merge and linking of volumes Hardcover adds later, so send
"full": truewhen you want those refreshed.POST /api/v1/abs/importalso takes an optionallibraryIdslist to import just some of your configured libraries, and"full": trueto force a complete re-match. - Author profile refresh is spread over the day (#2595, from magrhino's report). Instead of refreshing every author in one nightly burst, Bindery now refreshes a few authors an hour, the stalest first, and remembers when each one was last refreshed. Authors refreshed within the last 24 hours are skipped, an author whose refresh fails or is rate limited is retried on a later pass, and a Hardcover rate limit or daily quota hold pauses the work and resumes it on the next pass. The daily request total is unchanged (about one Hardcover request per author per day), but it no longer arrives all at once. A manual author Refresh still runs immediately and counts as that author's refresh for the day. See the request estimates for Free and Supporter allowances in the deployment guide.
Fixed
- More bundle titles stay out of the wanted list (#3013), reported by foobarbigtime: a work whose title ends in "(Set)", such as "Just Beyond (Set)", is now dropped from every author catalogue as a box set. With Skip part books on, titles like "Harry Potter (series) 1-3", "How To Train Your Dragon - 10 Books" and "2 Daniel Silva Books!" are skipped too, and so is a real title that ends in a count, such as "Top 100 Books". Titles that only start with a number, such as "10 Books That Changed America", are left alone.
- Placeholder text is readable (part of #3084, from francisrath). Placeholders in text fields measured 3.9:1 in the light theme and 3.1:1 in the dark one, and the search boxes on the Authors, Books, Series, Wanted and Import pages 2.1:1 and 1.9:1, under the 4.5:1 that text needs. They now use the same secondary-text colour as the rest of the app (6.2:1 and 5.8:1).
- Keyboard focus is visible on cards, in the mobile menu and in popup menus (#3237). The focus ring was cut off where a link fills a box that clips its overflow: the author and book cards, the book cards on an author's page, the author links on Wanted and the mobile menu links. The items in the More, account and metadata links menus showed focus only as a faint background change. They all now show the full ring.
- Keyboard focus is visible with forced colours on (#3237). In Windows High Contrast and other forced-colours modes, buttons, switches, tabs, the Links menu trigger, pagination and the import rows showed no focus indicator, because their focus ring is a shadow that forced colours removes. They now keep a transparent outline that forced colours paints. Nothing changes with forced colours off.
- The Edit author and Merge authors dialogs name their fields (part of #3240). Their labels sat next to the selects without being linked, so a screen reader announced each select without a name, and clicking a label did nothing. They are now linked.
- The add-user form, the History filter and the select checkboxes have accessible names (part of #3240). The add-user form's labels are linked to their fields, the History event filter is named, and the checkboxes that select an author or book card are named as well as titled.
- Settings fields are named by their labels (part of #3240). Across General, Metadata, Logs, Audiobookshelf, Calibre, Grimmory, Notifications, Quality, Import, API Keys and the sign-in providers, labels sat next to their fields without being linked, so a screen reader read many fields without a name, and clicking a label did nothing. They are now linked. The on/off settings in Advanced were already labelled in the markup, but the label pointed at a switch that did not carry its id; it does now.
- The indexer, Prowlarr and download client forms name their fields (part of #3240). Their labels sat next to the fields without being linked, so a screen reader read the fields without a name (or only by their placeholder), and clicking a label did nothing. They are now linked.
- Grey buttons in Settings are readable in the light theme (#3241). Sixteen buttons with a dark grey background, among them Test connection (Audiobookshelf, Calibre), Scan Library and Reorganize Library, took the page's dark text colour, which in the light theme left dark text on dark grey (about 1.7:1). They now share one fill with its own white text (10.4:1 in both themes).
- Primary buttons are readable in both themes (#3265). Buttons such as Save, Add Author and Search wanted now use white text on a darker green, and turn darker rather than lighter on hover, so their labels meet the WCAG AA contrast minimum in the light and dark themes. Before, many of them showed light grey text on green in the dark theme.
- Smaller accessibility fixes from an axe scan (#3266). The Logs viewer can be focused and scrolled with the keyboard. The login page has a main landmark, and the Settings menu is a named navigation landmark. The header logo no longer repeats "Bindery" to screen readers, the Users actions column has a header, and the Add Series dialogs put their dialog role on a wrapper rather than on the form.
- More foreign audiobook releases are recognised by their name (#3268). The mangled German markers
ungekrztandgekrzt, where an indexer dropped the umlaut, now count as German. A scene release that puts its language code before the format marker, such asAuthor-Title-DE-AUDIOBOOK-4CD-FLAC-2005-GROUPorAuthor-Title-2MP3CD-DE-2005-GROUP, is read too, so an English only profile no longer grabs it. Only scene shaped names are read this way, and spaced names such asStephen King - Audiobook - IT 2017orread by Robert De Nirono longer pick up a language from a stray word. - Search no longer approves the next book in a series (#3268): a release that names your book and then goes on to name another one, such as "King of Scars 02 - Rule of Wolves" for "King of Scars" or "[Rotten School 12] - Battle of the Dum Diddys" for "Rotten School", is now dropped from automatic and interactive search, with the reason shown in the search debug view. A later series number is caught when the book has a stored series position (including roman numerals such as "III"), and another of the author's books is caught when it is in your library. A release that names the book's own series is not mistaken for another book.
- A main title no longer stands in for a book with a subtitle (#3268): "Legion (2012)" or "The High Druid of Shannara 3 - Straken" is no longer approved for "Legion: Skin Deep" or "High Druid of Shannara: Jarka Ruus" when another result of the same format carries the full title, when the main title is another of the author's books, or when the release names a different series number. A summary or study guide never hides the real release, and the plain "Author - Title" release of a subtitled book is kept at any series position, unless that main title is itself another of the author's books in your library that is not the book's series.
- Single chapters of an audiobook are filtered out of search (#3268): a chapter marker ("Ch63", "Chapter 12") or an "NN of MM" counter with MM of 10 or more is dropped like other raw usenet postings unless the release names an ebook format or a series count word ("Book 3 of 12"). A whole book "Part 1 of 2" and any counter with MM under 10 are kept. Reported by Broomfundel and foobarbigtime.
- Foreign-language audiobooks no longer slip past the language filter on a short scene code (#3271, from francisrath). Scene releases often mark their language only as a code in the release name, such as
-AUDIOBOOK-POR-or-WEB-MP3-DE-, and the filter didn't recognise those, so an English-only profile could auto-grab and import a Portuguese or German edition. These codes are now read when they follow an audiobook marker in the release name, never in the title itself. - A new metadata profile with no language ticked now allows any language (#3293). The form sent an empty list and the server turned it into English only on create, so the profile card said English even though you had cleared it. Editing a profile was never affected.
- The first import is now recorded (#3305). The setup funnel looked for an event the importer never writes, so the checklist never saw an import and
Completestayed false. Installs with history pick it up from their real first import on the next telemetry ping.
The accessibility fixes (#3084, #3237, #3240, #3241, #3265, #3266) and the Kindle, scene language code and cover work were contributed by francisrath.