Releases: calibrain/shelfmark
Releases · calibrain/shelfmark
v1.2.1
Immutable
release. Only release title and notes can be modified.
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
/tmpfor 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
gosuwrite testing (#772) - Blocked SSRF in the image cover proxy and sanitized settings tab names to prevent path traversal (#763)
v1.2.0
Immutable
release. Only release title and notes can be modified.
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)
/loginendpoint 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
Immutable
release. Only release title and notes can be modified.
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_AUTHenv var - hides the password login option when OIDC is enabledOIDC_AUTO_REDIRECTenv 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
Immutable
release. Only release title and notes can be modified.
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
Immutable
release. Only release title and notes can be modified.
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
ONBOARDINGenv variable, default true
v1.0.3
v1.0.2
Immutable
release. Only release title and notes can be modified.
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
Immutable
release. Only release title and notes can be modified.
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
Immutable
release. Only release title and notes can be modified.
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
Immutable
release. Only release title and notes can be modified.
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