🎉 Release v1.2.13
If you use "Auto-tag audio files with metadata" (on by default): M4B files with an embedded cover imported since v1.2.4 may have broken chapters. This release fixes tagging for new imports but doesn't repair books already in your library. To check a file,
ffprobe -v error -select_streams d -show_entries stream=nb_frames -of csv=p=0 book.m4bshould print the book's chapter count. To repair one, delete the book's audio file from the library, then import the original again with Manual Import, or request the book again once RMAB shows it as removed.
Cancelling a request now removes its download. A partly downloaded torrent is removed from your client right away, even on an indexer with a seed time, so a strict private tracker may count it. A finished download stays to seed until its seed time is met. Scripts that called
DELETE /api/requests/:idshould cancel withPOST /api/requests/:id/cancel; the old route is gone.
Features:
- ✅ Audible sub-categories such as Horror can be picked for a home section
- #309
- #499
- the home page's Customize picker lists each category's sub-categories (such as Horror under Literature & Fiction) under their parent, with a filter. Categories already on your home page stay in the list, marked "Added".
- the nightly refresh updates at most 30 categories per run, oldest first, so with more than 30 each one is refreshed every few nights
- ✅ an admin setting hides other-language Audible editions from search, series and home rows
- #259
- #527
- Thanks https://github.com/Eyji !
- under the Audible region in Admin Settings > Library, off by default. It also applies to watched series, BookDate and shelf sync; books with no language listed are kept.
- ✅ Apprise can send each request's notifications to the user who made it
- #174
- #547
- in Config Key mode, put
{user}in the Tag field (such asuser-{user}) and list each user's URLs, such as amailto://address, under their tag in your Apprise config. Names become lowercase with-for spaces and punctuation, so Jane Doe isuser-jane-doe, and names that come out the same share a tag. - events are chosen per backend: a second Apprise backend with the same Config Key and only Request Approved and Request Available tells each user about their own requests. A Tag without
{user}is sent as before.
- ✅ cancelling a request stops its download and removes what it fetched
- #228
- #554
- Thanks https://github.com/ZillaGit104 !
- a partial torrent or usenet download is removed unless another request still uses it; a finished download stays to seed, and the seeding cleanup removes it once its seed time is met (see the note at the top)
- API tokens can cancel a request with
POST /api/requests/:id/cancel
- ✅
{primaryAuthor}path template variable for the first author- #501
- Thanks https://github.com/Westuss !
- the first entry of the author list (split on
,;&), so co-written and translated books share their first author's folder.{author}and existing templates are unchanged.
- ✅
{seriesPart:00}and wider formats pad the series part in path templates - ✅ admin Request Management can be filtered to audiobook or ebook requests
- #537
- Thanks https://github.com/NichCodes !
- a Type filter next to the status filter, kept in the page address like the other filters
- ✅ the admin Settings page keeps its tab in the address (
?tab=)- #534
- Thanks https://github.com/NichCodes !
- a reload stays on the open tab, back and forward move between tabs, and a link such as
/admin/settings?tab=pathsopens that tab
Fixes:
-
✅ deleting an audiobook request removes only that request's audio, not everything in the book folder
- #526
- #551
- the book's ebook, your own files and any subfolders stay, and the admin's toast lists what was kept. The cover and system leftovers (
.DS_Store,@eaDir,metadata.jsonand the like) go only when nothing else is left, and then the folder goes too. - a delivered ebook request of the same book now stays when its audiobook request is deleted, and is linked again when the book is requested and imported again
-
✅ deleting an ebook request removes only the ebook file that request placed
-
✅ metadata tagging keeps the chapters of M4B files with an embedded cover
-
✅ an intro no longer shifts embedded "Chapter N" chapter names in a merged book
- #509
- #531
- Thanks https://github.com/mvanhorn !
- files tagged "Intro", "Chapter 1", "Chapter 2" keep those names. Sets whose tags restart at "Chapter 1" on each disc keep position numbering as before.
-
✅ automatic search skips Audible DRM releases (.aa, .aax, .aaxc)
- #528
- Thanks https://github.com/NichCodes !
- a release is skipped when its title marks the file itself as DRM, unless it also names a playable format. Interactive search still lists them.
-
✅ a failed indexer search is reported instead of reading as "No torrents found"
- #522
- #543
- the request message says how many indexer searches failed (
No torrents/nzbs found (2 of 5 indexer searches failed; see System Logs)), and each failed automatic search is in System Logs. Interactive search shows a notice with the error above the results, or in place of "No results found" when every search failed. - results from the searches that worked are used as before
-
✅ Prowlarr download links work when Prowlarr is behind a reverse proxy that rewrites the Host header
- #298
- #548
- Prowlarr builds its links from the Host it received, so they named an address RMAB couldn't reach: interactive picks were refused and automatic grabs failed with "Failed to add torrent to qBittorrent". Those links are now fetched from your configured Prowlarr URL, and retrying a failed download does the same.
-
✅ qBittorrent: a finished download left in the incomplete folder is imported after 30 seconds, not about 5 minutes
-
✅ with Audiobookshelf, a downloaded request becomes available even when Audiobookshelf matched the book to a different ASIN
-
✅ a user can no longer search or pick a release for a request an admin denied
- #552
- admins still can
-
✅ a deleted user's shelves and watched lists stop creating requests
-
✅ a multi-file request download closes its files when cancelled, and fails instead of stalling on a file it can't read
-
✅ a single-file request download reads the file only as fast as the client takes it
- #500
- #533
- Thanks https://github.com/pintu544 !
- a browser or download manager that pauses or reads slowly no longer makes the server read the whole file into memory, the same as the multi-file zip above
-
✅ a home section keeps its books when a nightly refresh fetches none
- #535
- Thanks https://github.com/topgunffx1 !
- one night of Audible storefront errors could leave a section showing "No audiobooks yet" until a later good night. A category section whose storefront page fails now falls back to Audible's catalog (bestsellers first), so its order can differ a little until the next good refresh.
-
✅ Goodreads shelves say Goodreads no longer serves shelf RSS feeds, instead of failing quietly
-
✅ BookDate's OpenAI model list shows current GPT models
- #530
- Thanks https://github.com/DG-za !
- GPT-4 and later chat models are listed; audio, realtime, transcribe, TTS, search, codex and pro variants are left out
-
✅ a FlareSolverr or Anna's Archive URL ending in a slash no longer doubles the slash
- #536
- Thanks https://github.com/NichCodes !
http://flaresolverr:8191/now reaches/v1, not//v1, for ebook downloads and the connection test. Saved settings are unchanged.
-
✅ the bundled PostgreSQL shuts down cleanly when the container stops, restarts or updates
- #541
- Thanks https://github.com/drwho725 !
- the next start no longer runs crash recovery ("database system was not properly shut down"). A normal stop takes 1 to 2 seconds, inside Docker's default 10, so the new image is all you need; the example compose files also set
stop_grace_period: 90sfor slow storage. - the first start after this update still recovers once, since the previous version did that stop
-
✅ modals dim the page behind them instead of covering it in solid black
-
✅ toasts have a solid background in dark mode, so the page no longer shows through the message
-
✅ follow-redirects 1.16.2 clears a Dependabot alert; RMAB never sets the option the advisory covers, so it wasn't affected
Upgrade:
docker pull ghcr.io/kikootwo/readmeabook:latest docker compose down docker compose up -d
What's Changed
- fix: a multi-file request download streams as it is read and closes its files when cancelled by @kikootwo in #498
- fix: a deleted user's shelves and watched lists stop creating requests by @kikootwo in #521
- fix: a finished qBittorrent download left in the incomplete folder waits 30 s, not about 5 minutes by @kikootwo in #523
- feat: Audible sub-categories such as Horror can be picked for a home section by @kikootwo in #499
- fix: a downloaded request links to the Audiobookshelf item that holds its folder, even when the ASIN differs by @kikootwo in #495
- fix: an M4B whose chapters tagging would break is imported untagged, with its chapters by @kikootwo in #524
- feat: {primaryAuthor} path template variable for the first author by @kikootwo in #501
- feat: an admin setting hides other-language Audible editions from search, series and home rows by @kikootwo in #527
- feat: {seriesPart:00} and wider formats pad the series part in path templates by @kikootwo in #502
- fix: automatic search skips Audible DRM releases (.aa, .aax, .aaxc) by @kikootwo in #528
- fix: an intro no longer shifts embedded "Chapter N" chapter names in a merged book by @kikootwo in #531
- fix: BookDate's OpenAI model list shows current GPT models by @kikootwo in #530
- fix: an M4B with a cover keeps every chapter when it is tagged or merged by @kikootwo in #529
- fix: a single-file download reads the file only as fast as the client reads it by @kikootwo in #533
- fix: a home section keeps its books when a nightly refresh fetches none, and category refresh falls back to the catalog API by @kikootwo in #535
- fix: a FlareSolverr or Anna's Archive URL with a trailing slash no longer doubles the slash by @kikootwo in #536
- feat: the admin Settings page keeps its tab in the address (?tab=) by @kikootwo in #534
- fix: an ebook request delete removes only the ebook file that request placed by @kikootwo in #532
- feat: admin Request Management can be filtered to audiobook or ebook requests by @kikootwo in #537
- fix: Goodreads shelves say the shelf RSS feeds are gone instead of failing quietly by @kikootwo in #538
- fix: the bundled PostgreSQL shuts down cleanly when the container stops by @kikootwo in #541
- fix: a failed indexer search is reported, not shown as "No torrents found" by @kikootwo in #543
- fix: modals dim the page behind them instead of covering it in black by @kikootwo in #544
- chore(deps): bump the npm-minor-patch group with 3 updates by @dependabot[bot] in #516
- feat: Apprise can send each request's notifications to the user who made it by @kikootwo in #547
- fix: Prowlarr download links work when Prowlarr is behind a reverse proxy by @kikootwo in #548
- fix: toasts are solid in dark mode, so the page doesn't show through by @kikootwo in #549
- fix: a denied request stays denied, and RMAB records requests completed without approval by @kikootwo in #552
- fix: an audiobook request delete removes only the files that request placed by @kikootwo in #551
- chore(deps): bump follow-redirects to 1.16.2 by @kikootwo in #553
- fix: cancelling a request stops its download and removes what it fetched by @kikootwo in #554
- chore: release v1.2.13 by @kikootwo in #555
Full Changelog: v1.2.12...v1.2.13