Fixed
- Possessive author prefix stripped before release matching (#446) — Search results for titles like Tom Clancy's Rainbow Six no longer require the release to carry "Clancy's"; the possessive prefix is stripped before keyword extraction. Handles both ASCII apostrophe and Unicode right-single-quotation-mark (U+2019).
- Readarr import returns structured error on failure (#447) — The Readarr DB import handler now returns a JSON
{"error": "…"}body with an appropriate HTTP status on failure instead of an empty 500. - Edition deduplication upgrades existing row to dual-format (#448) — When OpenLibrary returns both an ebook Work and an audiobook Work for the same title during an author sync, Bindery now upgrades the existing book row to
media_type: bothinstead of inserting a duplicate entry. - Library scanner searches both library and audiobook roots (#456) —
FindExistingnow walksBINDERY_AUDIOBOOK_DIRalongsideBINDERY_LIBRARY_DIRwhen checking for pre-existing files, and pre-filters by author folder to prevent cross-author mismatches. Previously only the ebook library was checked, leaving audiobook files undetected on rescan. - Download client edge-case coverage (#431) — Added hermetic matrix tests for RemoteID normalization, live status error mapping, poll failures, unreachable clients, context deadlines, and qBittorrent unfiltered hash polling. Transmission queue overlays now surface non-empty
errorStringvalues as error statuses.