Skip to content

Releases: calibrain/shelfmark

v1.2.1

21 Mar 16:01
Immutable release. Only release title and notes can be modified.
019d36b

Choose a tag to compare

New Features

Combined Book + Audiobook Downloads (#773, #777)

  • Added a combined search mode for book + audiobook results
  • Select both formats in the release modal and download or request them together
  • Supports mixed policies per content type

Additional Features (#741, #745)

  • Split default release source selection by content type
  • Split browser download by content type, with per-user override support
  • Added a torrent removal option
  • Added a "Hide links" option
  • Added full Hardcover reading status support and separated reading statuses from dedicated lists
  • Added an option to disable automatic Hardcover list removal on download

Improvements

  • Improved whitelisted indexer searches by using title + author queries (#774)
  • Search queries now persist after auth redirect (#735)
  • IRC can now be used for audiobook searches (#735)
  • Renamed BookLore output mode to Grimmory (#791)
  • Moved SeleniumBase scratch paths to /tmp for better compatibility on some systems (#735)
  • Updated the frontend to React 19 and rolled up dependency updates (#765, #766)

Fixes

  • Fixed stale activity dismiss handling (#768)
  • Fixed browser downloads not firing in some completed-state cases (#745)
  • Fixed Anna's Archive "All Languages" query generation and added a no-language fallback (#735)
  • Fixed NFS transfer callback handling (#741)
  • Improved qBittorrent completion handling for additional client setups (#741)
  • Fixed a TypeScript build error (#770)
  • Fixed entrypoint gosu write testing (#772)
  • Blocked SSRF in the image cover proxy and sanitized settings tab names to prevent path traversal (#763)

v1.2.0

07 Mar 19:28
Immutable release. Only release title and notes can be modified.
a2a5a22

Choose a tag to compare

New Features

Redesigned Search Tools (#712)

  • Search fields restructured into a unified left-hand selector with dynamic options that adapt to each metadata provider
  • Includes Author, Title, ISBN, Hardcover Lists, Hardcover Series, and Manual source query.
  • Search mode and metadata provider are now selectable directly from the advanced search view
  • Series search - search by series via Hardcover with live suggestions as you type

Hardcover List Integration (#694, #710, #719)

  • Browse and search public Hardcover lists, or your own private lists, including "Want to Read"
  • Either pick a list from your collection via the search selector dropdown, or paste a list URL into the search box to view its contents directly
  • Add and remove books from lists and set "Want to Read" status - accessible from search results, the details modal, and the release modal
  • Books are automatically removed from a list when you download them from that list's page

Manual Search (#687)

  • New option to search release sources directly, bypassing metadata providers
  • Respects user policies - hidden when the user's default policy is "Request Book" or "Blocked"
  • Caution: Limited metadata means manual downloads may not play well with path/renaming templates

Download Retries (#679)

  • Retry failed downloads manually from the activity sidebar
  • Re-run failed post-processing without re-downloading the file

Admin Download on Behalf of Users (#679)

  • New "Download as" selector lets admins download on behalf of any user, inheriting that user's output preferences (destination, email, BookLore library, etc.)

Per-User Search Defaults (#679)

  • Users can now set their preferred search mode, metadata provider, and release source in User Preferences / My Account

Additional Features

  • Sort releases by format - new sort option in the release modal (#679)
  • {OriginalName} renaming variable - keep the exact downloaded filename when using custom rename patterns (#679)
  • Manual request approval - admins can manually approve book/audiobook requests without requiring a download (#660)

Improvements

Download History & Activity Overhaul (#700, #703, #706)

  • Completely rebuilt download tracking - downloads are now recorded in the database when queued, not just when they complete
  • Each user gets their own independent activity and history view; admins continue to see everything
  • Downloads, requests, and history now fully persist across container updates and restarts
  • History entries can still serve downloaded files after tasks leave the active queue

Login Session Persistence (#686)

  • Login sessions now persist across container updates and restarts via a stored secret key

Other Improvements

  • File transfers now fall back to copy-then-delete when hardlink/move fails, improving reliability across filesystems (#660, #718)
  • Content type dropdown is hidden when a content type is blocked for the current user (#705)
  • Release scoring refactored for improved accuracy in the release modal (#665)

Fixes

  • Apprise validation did not catch configuration errors early enough (#667, #668, #671)
  • Apprise output was not visible in Shelfmark's logs (#667, #668, #671)
  • Default language setting was not applied to search queries (#704)
  • CWA ingest folder not detected when file movement fell back to copy (#691)
  • Mirror list not refreshing correctly (#695)
  • Default sort preference not applied consistently; series ordering broken (#715)
  • Duplicate scoring keys in the release modal caused incorrect release ordering (#660)
  • Search state went stale after completing a download (#660)
  • Releases with multiple formats were incorrectly excluded by the format filter (#660)
  • Clicking "Test connection" in settings reset unsaved changes on the page (#660)
  • rTorrent download path not discovered correctly (#660)
  • /login endpoint health check returned incorrect status (#660)
  • Hardcover author names with initials were not parsed correctly (#705)
  • Custom scripts could block the main thread (#686)
  • Mirror configuration wouldn't be overridden on app updates (#718)
  • User and request database concurrency conflicts (#686, #668, #718)
  • Users created via reverse proxy auth were not provisioned correctly (#665)
  • Auth migration issue for users who ran dev builds during multi-user development (#665)
  • Activity dismissals not working correctly in no-auth mode (#667)

Note: The last couple of updates rounded out Shelfmark's core feature set. Going forward, the focus shifts to stability, bug fixes and QOL improvements rather than new major features. See the README for details about feature scope and contributions. Thanks.

v1.1.2

23 Feb 10:58
Immutable release. Only release title and notes can be modified.
91cbd51

Choose a tag to compare

Improvements

  • SSL certificate validation setting - new toggle to disable SSL certificate verification for network requests, applied across all download clients, metadata providers, and bypass services. Toggle between enabled, disabled locally, and disabled overall. (#642)
  • OIDC UX polish (#636):
    • HIDE_LOCAL_AUTH env var - hides the password login option when OIDC is enabled
    • OIDC_AUTO_REDIRECT env var - automatically redirects to the OIDC provider on the login page
    • Improved first-time OIDC setup flow, including local admin user creation
    • Callback URL label displayed on OIDC settings page
    • Added OIDC env var configuration info in settings
  • Added OIDC documentation (docs/oidc.md) and Users & Requests documentation (docs/users-and-requests.md)

Fixes

  • Fixed direct search mode request flow not completing correctly (#644)
  • Fixed certain OIDC providers not linking emails to existing local user accounts (#642)
  • Fixed OIDC name fallback when provider returns limited user info (#632)
  • Fixed "All Languages" search filter reverting to the default language (#642)
  • Fixed download/request dismissal not working correctly with multiple admin users (#642)
  • Fixed request state handling on the details modal (#642)
  • Fixed Prowlarr sort-by-peers option not appearing (#642)
  • Fixed qBittorrent save path bug (#636)
  • Unpinned flask dependency

v1.1.1

20 Feb 13:55
Immutable release. Only release title and notes can be modified.
a50b435

Choose a tag to compare

New Features

Multi-User Request System (#615, #617, #620)

  • Book request workflow -users can request books with notes; admins review, approve, and fulfil requests
  • Policy-based configuration -set download/request/block policies per content type or per source (e.g. allow direct downloads, set Prowlarr to request-only)
  • Per-user policy overrides for tailored access control
  • New Activity Sidebar -replaces downloads sidebar, combining active downloads with requests; sidebar can now be pinned
  • Request retry support and admin-level request management

OIDC Authentication (#606, #612)

  • OIDC login with auto-discovery and group-based admin mapping. Works with all OIDC providers.
  • Auto-provisioning of OIDC users (configurable) and email-based account linking
  • Password fallback when OIDC is enabled to prevent admin lockout

Multi-User Support (#606, #612, #613)

  • User management -create, edit, and delete users with admin/user roles
  • Per-user settings -custom download destinations, BookLore library/path, email recipients, and {User} template variable
  • Per-user download visibility -non-admins only see their own downloads
  • Works with users from all sources (Local, OIDC, reverse proxy, Calibre-web)

Notification Support (#618)

  • Apprise-based notifications for request events and download completions
  • Supports sending notifications to virtually any service
  • Configurable globally or per user, with full customization of events and notification services

AudiobookBay Release Source (#619, #621, #623)

  • New release source - search ABB directly from the UI
  • Results include title, language, format, bitrate and size
  • Downloads via configured torrent client
  • Configurable hostname, max search pages, and rate limit delay

Email Output Mode (#603, #604)

  • Email delivery as an alternative output mode for downloaded books
  • Send books as file attachments using configured SMTP email
  • Email recipient can be configured per-user

Improvements

  • Booklore Bookdrop API destination support as an alternative to specific library selection (#625)
  • Download path options for all torrent clients (#625)
  • Add tag support to qBittorrent downloads (#610)
  • Add threading to file system operations for improved performance (#602)
  • Enhanced custom scripting -JSON download info, more consistent activation, decoupled from staging (#591)
  • Hardlink-before-move optimization for file transfers (#591)
  • New BookLore API file formats (#591)
  • Improved login cookie naming for reverse proxy compatibility (#591)
  • Fix Transmission URL parsing (#591)
  • Fix healthcheck starvation during large file processing (#591)

v1.1.1 hotfix

  • Pin Flask dependency until session bug introduced in 3.1.3 is fixed

v1.0.4

06 Feb 10:36
Immutable release. Only release title and notes can be modified.
f84fb08

Choose a tag to compare

Improvements:

  • Updated AA mirror list with latest available URLs
  • Added customizable mirror list for AA URLs in the settings UI
  • Added rich search and results formatting for whitelisted indexers, including format, language and author (Currently: MAM is whitelisted)
  • Added "days" age for usenet/torrent releases
  • Reworked internal bypasser to use pure CDP functions. Removed Chrome Webdriver dependencies and complexity.
  • For external downloads, added locating and retry mechanism for discovering files instead of immediately failing
  • Added client side storage of Book/Audiobook search preference
  • Added M4A supported audiobook option
  • Added flags column for freeleech, VIP etc, for all Prowlarr results. (#539 by @dawescc)
  • Enhanced naming template features with arbitrary prefix/suffix support (#560 by @seekermarcel)

Fixes:

  • Fixed reverse proxy base URL in edge cases
  • Improved file transfer counting and logging with hardlink fallback warnings
  • Fixed proxy auth header for REMOTE_USER scenario
  • Fixed base path resolution timing issue for subpath deployments (#572 by @andykelk)
  • Improved entrypoint chown efficiency
  • Added ONBOARDING env variable, default true

v1.0.3

26 Jan 16:05
Immutable release. Only release title and notes can be modified.
10bfaec

Choose a tag to compare

  • Hotfix: Reverts Chromium and SeleniumBase dependencies to 1.0.1 versions - Fixes bypass not succeeding with slow download sources

v1.0.2

24 Jan 09:36
Immutable release. Only release title and notes can be modified.
43e554b

Choose a tag to compare

New

  • Booklore - Upload books directly to Booklore library via API connection
  • rTorrent download client support (#463 from @veverkap)
  • Reverse proxy authentication support (#455 from @jthoward64)
  • Remote path mappings - configurable for each download client
  • Various search improvements:
    • Multi-language search - automatically uses localised book titles when searching AA and Prowlarr. Currently requires Hardcover.
    • Improved search queries - Heuristic based query creation to simplify book titles and author names. Uses series names and subtitles to strip out non-unique elements, as well as common punctuation and labels.
    • Manual override search option for universal mode
    • Prowlarr now uses book title only for search queries
  • Base URL option for reverse proxy setups
  • Full environment variable support and documentation

Fixes and improvements

  • Refactor of the post-download processing pipeline
  • Deluge configuration now handled via webUI auth details
  • Improved qBittorrent API communication
  • Improved URL normalization for configured external apps
  • Simplified handling of magnet/hashes when starting a download
  • Improved file path searching after successful external download
  • Fixed processing of audiobook files over 100+ parts
  • Fixed NZB downloads not deleting on completion
  • Fix SABnzbd existing download search behavior

v1.0.1

13 Jan 21:09
Immutable release. Only release title and notes can be modified.
475ae42

Choose a tag to compare

Improvements

  • Onboarding UI - One-time setup experience for new and existing users - configure new search, metadata and prowlarr options
  • NO_PROXY Support - Bypass proxy for specific hosts with wildcard patterns
  • IRC - Non-TLS connection option, connections will now persist in the background for ~5 mins
  • Added audiobook library button in UI

Bug Fixes

  • SABnzbd - Fixed post-processing states (Verifying, Extracting, etc.) being treated as errors; added archive cleanup on completion
  • File processing fallback - Fixed permission errors with layered fallback (shutil → system copy commands)
  • Config Init - Fixed default destination path being incorrectly set, and improved error messages to inform users of incorrect set directory.
  • Category Fallback - Fixed content type routing when another type is cached
  • Prowlarr - Improved ingest directory validation, fixed indexer selection left blank causing search errors
  • Better error logging for proxy bypass, settings read failures, and NFS fallbacks

v1.0.0

12 Jan 14:06
Immutable release. Only release title and notes can be modified.
cca2587

Choose a tag to compare

The project has been renamed from Calibre-Web-Automated-Book-Downloader to Shelfmark! Docker images are now published under ghcr.io/calibrain/shelfmark. Legacy image names will continue to work and receive updates as normal.

New: Torrent, Usenet and IRC download support

  • Prowlarr Integration - Search prowlarr for books / audiobooks, download torrents and NZBs via qBittorrent, Transmission, Deluge, SABnzbd, or NZBGet
  • IRC/XDCC Support - Search and download from IRC book channels with configurable server, channel, and bot settings

New: Audiobook Support

  • Full audiobook download support via Prowlarr.
  • Route downloads, use hardlinks and create custom directories for tools like Audiobookshelf.

More

File Management

  • Template-based file naming with customizable patterns, similar to Readarr. Can be configured separately for Books and Audiobooks.
  • Torrent hardlinking support

Direct Download Improvements

  • Rebuilt Cloudflare bypasser with better reliability and lower resource usage
  • Faster download flow with optimized source selection
  • Full mirror customization for blocked or slow URLs

Metadata & Search

  • Hardcover provider enhancements for richer book metadata
  • Google Books metadata provider
  • Book series support in search results
  • Improved universal search modal with filtering and sort options

Other Changes

  • PUID/PGID environment variables (legacy UID/GID still supported)
  • Prowlarr category search with fallback
  • Auth improvements including dedicated auth options and user-group restrictions for CWA non-admins.
  • Various UI/UX refinements

v0.4.0

26 Dec 17:45
Immutable release. Only release title and notes can be modified.
f154b69

Choose a tag to compare

Headline features:

  • New settings UI and config system

    • All settings are now surfaced via the UI, and all existing env variables will sync to the new config automatically
    • Users will be prompted to add a config dir in their docker compose, but the app will still function entirely via env variables.
  • Universal search mode

    • Search via metadata providers for books, currently Hardcover and Open Library
    • Find book files from multiple sources at once. Currently Anna's Archive, soon Prowlarr and other sources.

Other additions:

  • Full code restructure - introduces release source and metadata plugin system
  • SOCK5 proxy support
  • RAR / ZIP file support including automatic unarchive and processing
  • Full source configuration, enable/disable and re-order all current web sources (AA, Welib, Libgen, Zlib)
  • Default search sorting options
  • Download behavior options, including renaming, auto downloading to browser, auto-open the sidebar upon download.
  • Standalone Web UI authentication options, no need for a CWA database connection
  • Cover image and search metadata caching

Full Changelog: v0.3.4...v0.4.0