Skip to content

chore(deps): update dependency crocodilestick/calibre-web-automated to v4#414

Open
ManuelLR wants to merge 1 commit intonextfrom
renovate_cron/crocodilestick-calibre-web-automated-4.x
Open

chore(deps): update dependency crocodilestick/calibre-web-automated to v4#414
ManuelLR wants to merge 1 commit intonextfrom
renovate_cron/crocodilestick-calibre-web-automated-4.x

Conversation

@ManuelLR
Copy link
Owner

@ManuelLR ManuelLR commented Jan 29, 2026

This PR contains the following updates:

Package Update Change
crocodilestick/calibre-web-automated major V3.1.4 -> v4.0.6

Release Notes

crocodilestick/calibre-web-automated (crocodilestick/calibre-web-automated)

v4.0.6: Version 4.0.6 - Smart Automatic Duplicate Handling & Resolution 🔍, a Gorgeous & Powerful New Stats Centre 📊, Magic Shelves ✨, Robust OAuth, Auto-Send & Auto-Fetch ✈️ Huge Performance Uplifts and more!

Compare Source

Release Notes: v4.0.6
Changelog
✨ New Features
  • Magic Shelf Ordering:
    • Per-User Sorting: You can now customize the order of your Magic Shelves via the user profile (/me).
    • Sorting Modes: Choose between Manual (drag & drop), Book Count, Name, Date Created, or Date Modified. (Fixes #​1027)
  • KOReader Sync Control:
    • Performance Toggle: Added a global setting to enable/disable KOReader sync (default is now Off).
    • Optimization: Disabling this feature prevents background checksum calculations and database table creation, significantly reducing startup overhead and database locks.
    • Backfill Improvements: Reworked the checksum backfill process to use shorter batches and fewer locks to prevent UI stalling.
🚀 Improvements
  • Theme Unification:
    • Dark Mode Standard: The application now enforces the "caliBlur" (dark) theme for all users to ensure consistent UI styling. Light theme options have been removed.
    • Styling Fixes: Fixed broken styling on the Login page (OAuth buttons) and improved Flash alerts to wrap long text properly.
  • Logging: Defaulted all application logs to /dev/stdout and hid the logfile path setting in the UI, adhering to container best practices.
🐛 Bug Fixes
Kobo & Readers
  • Kobo Cover Cache: Fixed an issue where Kobo devices displayed stale covers even after metadata updates. The system now appends a cache-busting suffix to cover requests. (Fixes #​1050)
  • Kindle Language Tags: Fixed a bug where imported books would default to the UI language. The Kindle EPUB fixer now preserves valid ISO language tags and supports a wider range of language codes. (Fixes #​1047)
  • KOReader Safety: Added safeguards to prevent crashes when KOReader document settings are missing. (Fixes #​1039)
System & Uploads
  • Safari Uploads: Fixed a bug where book uploads would fail on Safari browsers due to incompatibility with the progress bar handler. Safari now falls back to a standard form submission. (Fixes #​1049)
  • Network Share Mode: Refined permissions logic to be path-aware. It now only skips permission checks for actual network mounts (/config, /calibre-library), while correctly applying necessary permissions to internal application paths. (Fixes #​1030)
  • Quoted Defaults: Fixed a regression where settings (like "epub" or "new_record") were saved with extra quotes, causing ebook-convert and calibredb to fail. (Fixes #​1032, #​1038)
Data & Display
  • Date Shift: Fixed a timezone serialization issue where custom Date columns in the book list were displaying one day ahead of the actual Calibre date. (Fixes #​1036)
  • EPUB Fixer: Corrected an overly permissive regex that was incorrectly flagging <img> tags with empty sources. (PR #​1029)
📦 Dependencies
  • Calibre: Bumped the included Calibre version.

v4.0.5: Version 4.0.5 - Smart Automatic Duplicate Handling & Resolution 🔍, a Gorgeous & Powerful New Stats Centre 📊, Magic Shelves ✨, Robust OAuth, Auto-Send & Auto-Fetch ✈️ Huge Performance Uplifts and more!

Compare Source

Release Notes: v4.0.5
✨ New Features
  • KOReader Sync & Progress:
    • KOReader Progress: The web reader and book details page now display reading progress from KOReader (if available).
    • Resume Playback: If you have progress in KOReader but no web-reader progress, the web reader will now intelligently resume from your KOReader position.
  • Send-to-eReader Controls:
    • Per-User Customization: Added a new setting in user profiles (/me) to toggle the "Send to eReader" modal.
    • Direct Send: Users can now disable the modal to trigger an immediate "direct send" to all configured device addresses.
    • Admin Control: Admins can manage this setting for other users via the user edit page.
  • EPUB Fixer UI:
    • Single-Book Fixer: You can now run the EPUB fixer on a specific book directly from the UI.
    • Live Progress: The page now reloads to show progress immediately, and you can cancel stuck runs.
🚀 Improvements
  • Cover Handling & Stability:
    • Download Limits: Added a configurable size limit (default 15MB) for cover downloads to prevent the server from hanging on massive images (Fixes #​1018).
    • Optimized Processing: The system now skips ImageMagick conversion if the cover is already a valid JPEG, saving CPU resources.
  • Metadata Management:
    • Bulk Edit Enforcement: Editing books via the "List View" (bulk edit) now correctly marks metadata as "dirty," forcing the system to write changes (Series, Tags, etc.) into the actual EPUB files (Fixes #​998).
  • Startup Robustness:
    • Network Shares: Improved startup logic for libraries on network shares (NFS/SMB). The system now gracefully handles "disk I/O errors" by disabling WAL mode and redirecting to the DB config page instead of crashing with a 500 error.
    • Ingest Directory: Added a preflight check to ensure the /cwa-book-ingest directory is writable. If permissions are wrong, the upload now fails fast with a clear error message instead of failing silently (Fixes #​995).
🐛 Bug Fixes
  • Kobo & Sync:
    • Sync Crash: Fixed a crash caused by books missing date_added or timestamp fields during Kobo sync (Fixes #​1011).
    • KOReader Malformed Responses: Hardened the sync plugin against malformed responses from the server to prevent KOReader crashes (Fixes #​1003).
    • Header Auth: Allowed header-based authentication for the kosync endpoint.
  • UI & Styling:
    • Delete Button: Fixed the delete button in the book details toolbar (Fixes #​1000).
    • Mobile View: Fixed styling issues on the new book details page for mobile devices.
    • Login Page: Polished the login page styling.
    • Duplicates Sidebar: Fixed a bug where the "Duplicates" sidebar link would re-appear after every restart. The migration now runs only once (Fixes #​1010).
  • Kindle EPUB Fixer: Fixed an issue where the fixer would duplicate XML declarations in files that lacked encoding information.
🌍 Translations
  • Japanese: Major update with 198 new translations and 155 corrections.
  • German: Updated translations for 4.x features.
  • Spanish: Improved phrasing and fixed variable names.
  • Slovenian & Dutch: General translation updates.
🔧 Technical & CI
  • CI Permissions: Fixed permissions issues in the test pipeline by dynamically setting UID/GID for test containers.
  • Python Babel: Switched translation scripts to use python -m babel to avoid issues with broken virtual environment shebangs.
  • Directory Ownership: Improved how the initialization script parses dirs.json to ensure all required folders (including /cwa-book-ingest) have correct ownership.

v4.0.4: Version 4.0.4 - Smart Automatic Duplicate Handling & Resolution 🔍, a Gorgeous & Powerful New Stats Centre 📊, Magic Shelves ✨, Robust OAuth, Auto-Send & Auto-Fetch ✈️ Huge Performance Uplifts and more!

Compare Source

Release Notes: v4.0.4
✨ New Features
  • Disaster Recovery: Restore Calibre Database:
    • Added a "Restore Calibre Database" workflow in the Admin DB Configuration.
    • This tool rebuilds a corrupted metadata.db from your book files (OPFs).
    • Safety First: It automatically backs up your current database and configuration before running. It also smartly cleans up the application database (app.db) to remove broken references (like reading progress) caused by book ID changes, ensuring the app remains stable after restoration. (Fixes #​898, #​984)
  • Book Details Improvements:
    • Dynamic Tags: You can now add and remove tags directly from the Book Details page without entering the full edit mode.
    • Direct Downloads: Clicking the file size "pills" on the details page now directly downloads that specific file.
🐛 Critical Bug Fixes
  • Admin User Management: Fixed a 500 error that occurred when trying to add or edit users. This was caused by missing OPDS context in the admin views. Admins can now also manage OPDS settings for other users directly from the edit screen. (Fixes #​986)
  • Kobo Sync Stability: Resolved a crash during Kobo sync caused by books missing a date_added value. (Fixes #​983)
  • Corrupt Download Handling: Fixed a server crash (500 error) that occurred when attempting to download malformed or "dodgy" kepub files.
  • Shelf Actions: Fixed the "Add to Shelf" and "Remove from Shelf" buttons which were broken in the previous version.
🚀 Enhancements
  • Robust Metadata Search: Hardened the metadata provider system against crashes. Google, Scholar, ComicVine, and others are now better at handling missing fields or connection errors without failing the entire search. (Fixes #​981)
  • Reliable Identifier Editing: Completely overhauled how book identifiers (ISBN, etc.) are saved. This fixes issues with special characters, duplicates, and empty values, ensuring that what you type is exactly what gets saved.
  • UI/UX Tweaks:
    • Reorganized the settings menu buttons for a more logical flow.
    • Improved the styling of flash messages and shelf action buttons.
    • Removed the redundant "About" link from the side navigation.

v4.0.3: Version 4.0.3 - Smart Automatic Duplicate Handling & Resolution 🔍, a Gorgeous & Powerful New Stats Centre 📊, Magic Shelves ✨, Robust OAuth, Auto-Send & Auto-Fetch ✈️ Huge Performance Uplifts and more!

Compare Source

Release Notes: v4.0.3
✨ New Features
  • Redesigned Book Details Page:
    • Completely rebuilt the view to be modern, responsive, and data-rich.
    • Added the ability to delete books directly from the details screen (no longer requires entering "Edit" mode).
    • Displays more useful metadata at a glance.

Newly Re-Designed Book Details Page

  • OPDS & Magic Shelves Overhaul:
    • Magic Shelves Support: Added /opds/magicshelf routes. Magic Shelves now appear in the OPDS catalog.
    • Customizable OPDS Root: Replaced the static root with a dynamic, per-user list.
    • Drag & Drop Ordering: Users can now reorder OPDS entries and toggle their visibility via a new UI in User Settings (/me), similar to the Duplicate Format Priority ranking.
  • Manual Search Improvements:
    • Persistence: The UI now remembers your selected metadata fields for manual searches (#​891).
    • File Sizes: Added file size badges to search results.
    • Feedback: Added toast notifications for better user feedback.

New OPDS Catalog Control Functionality

🚀 Improvements
  • Hardcover Integration:
    • Reject All: Added a global "Reject All" button to dismiss all Hardcover ID matches at once (#​964).
    • Precision Config: The "Match Confidence Threshold" setting now allows finer adjustments (steps of 0.01 instead of 0.05) (#​965).
  • Metadata Enforcement: Inline edits and book-list updates now correctly trigger the metadata enforcer. This ensures changes (like Series info) are written into the EPUB files. The system also now coalesces duplicate logs to prevent redundant processing (#​726).
🐛 Bug Fixes
Kobo & Syncing
  • Unregistered Device Support: Added placeholder OAuth endpoints to fix connectivity for Kobo devices that cannot use the store proxy (#​879).
  • Download Fix: Fixed EPUB OPF parsing (stripping BOM/whitespace) to resolve download failures on Kobo devices (e.g., Clara BW) (#​975).
  • Magic Shelf Sync: Fixed an issue where books existing only in Magic Shelves were not syncing to Kobo. Reading states now also respect the Magic Shelf allow-list (#​976).
Authentication & Permissions
  • OAuth Admin Roles: Fixed a bug where enabling OAuth could revoke admin rights if the provider returned an empty groups claim. The system now preserves existing roles if group data is missing (#​978).
  • OAuth Email Collision: Fixed "UNIQUE constraint failed" errors. If an OAuth provider's email matches an existing user, the system now binds the login to that user instead of attempting to create a duplicate (#​973).
Database & Stability
  • Calibre 9 Schema Fallback: Refined the database compatibility layer. Added a safe fallback for books.isbn by detecting the schema version at startup. This resolves lingering 500 errors for users on both Calibre 9 and older versions (#​979).
🌍 Translations
  • French: Major updates and corrections (merged PR #​977).
  • Dutch: Updated server restart messages (merged PR #​969).
👷 CI/CD
  • ARM Runner: Added cleanup for zombie digests on the persistent ARM runner to improve build reliability.

v4.0.2: Version 4.0.2 - Smart Automatic Duplicate Handling & Resolution 🔍, a Gorgeous & Powerful New Stats Centre 📊, Magic Shelves ✨, Robust OAuth, Auto-Send & Auto-Fetch ✈️ Huge Performance Uplifts and more!

Compare Source

Release Notes: v4.0.2
🚨 Critical Updates

These changes are essential for database stability and compatibility with Calibre 9.

  • Calibre 9 Metadata Compatibility: Fixed critical UI crashes (500 errors) caused by Calibre 9's removal of books.isbn, books.flags, and books.lccn.
    • The system now dynamically detects schema versions at startup.
    • For Calibre 9+, ISBNs are now correctly pulled from the identifiers table.
    • Maintained full backward compatibility for users on older Calibre versions.
  • SQLAlchemy 2.x Migration Fix: Resolved InvalidRequestError during database migrations by utilizing engine.begin(). This prevents nested transaction failures when PRAGMA triggers autobegin.
  • Initialization Fix: Fixed a regression causing AttributeError during login. The system now ensures minimal config fields (like config_books_per_page) are loaded even during background initialization.

🛠 Features & Improvements
  • Route Reorganization: * Renamed the versioning page to /package-versions to reduce ambiguity.
    • Redirected legacy /stats path to /cwa-stats-show.
  • Docker Updates:
    • Updated Dockerfile to Calibre 9.0.0.
    • Unified Calibre/Kepubify build arguments to ensure the UI accurately reports installed versions.
  • Fork Modernization: Removed "Stock Calibre-Web" version display from admin stats as it is no longer applicable to this fork.

🐞 Bug Fixes
  • OAuth Link Loop: Fixed a "UNIQUE constraint failed" error when linking an OAuth provider to an existing account.
  • Hardcover Auto-Fetch: Fixed a bug where auto-fetching would ignore cancel commands and block the task queue.
  • ARM Builds: Fixed network configuration issues in the ARM build workflows.

🌍 Translations & CI/CD
  • Automation: Updated translation workflows to automatically commit .po and .pot files.
  • Build Flow: Translation updates now trigger dev builds automatically to keep the main branch images up to date with the latest localization.
  • Issue #​960 Resolution: Addressed a major translation regression introduced in 4.0.0/4.0.1 that caused broken UI strings across multiple languages.
  • Babel Execution Fix: Switched translation scripts to use python -m babel invocation. This bypasses issues with broken virtual environment shebangs that were previously causing automation failures in the CI/CD pipeline.

🏗️ Build System Technicals
  • Image Optimization: Updated the dev workflow to skip redundant "main push" builds when a translation build is already triggered, preventing duplicate Docker images and saving runner resources.
  • Docker Cleanup: Dropped the unused CW base label and arguments from the Dockerfile to streamline the multi-stage build process.
  • Migration Testing: Added a specific "smoke test" for the database transaction pattern to ensure future schema changes don't re-introduce the SQLAlchemy InvalidRequestError.

v4.0.1: Version 4.0.1 - Smart Automatic Duplicate Handling & Resolution 🔍, a Gorgeous & Powerful New Stats Centre 📊, Magic Shelves ✨, Robust OAuth, Auto-Send & Auto-Fetch ✈️ Huge Performance Uplifts and more!

Compare Source

Release Notes: v4.0.1

This release is a hotfix that mainly focuses on database stability, EPUB compatibility, and automated maintenance while fixing numerous other bugs. I’ve also addressed critical race conditions during migrations and improved how the application handles metadata synchronization and ingest workflows (mainly for those running the new NETWORK_SHARE_MODE.


🚀 New Features & Enhancements
  • Scheduled Maintenance: Added a new background task (TaskCleanArchivedBooks) to purge stale archived references. Configure maintenance schedules via the CWA Settings UI (default 03:00 local).
  • Harden Ingest Flow: Sidecar manifest files are now ignored to prevent premature deletion.
    • Improved "skip-delete" handling for temporary artifacts during readiness timeouts.
    • Implemented robust stale temp cleanup with configurable age and interval settings.
  • UI & UX Improvements: Renamed "Categories" to "Tags / Categories" in the bulk edit modal with updated multi-value instructions.
    • Unified the homepage filter header styling with the standard shelf-actions wrapper.
    • Updated all copyright years to 2026 for Calibre-Web and CWA contributors.
EPUB Reader & File Handling
  • Enhanced Fixer Safety: The default EPUB fixer has been completely overhauled to be "safe by default." It now uses advanced encoding detection to preserve original file integrity and performs targeted repairs (like removing stray <img> tags) without risky full-file reserialization.
  • New "Aggressive" Mode: Introduced a kindle_epub_fixer_aggressive toggle in the settings UI. This allows users to opt-in to more intensive transforms and duplicate XML declaration repairs for severely malformed files that fail Send-to-Kindle (E999) or crash the internal reader.
  • Reader Stability: The Web UI reader now includes guards against invalid container.xml states and provides clear error messaging instead of an endless loading spinner when encountering corrupted EPUB structures.

🛠 Bug Fixes
Database & Stability
  • Migration Lockups: Fixed sqlite3.OperationalError where migrations locked the DB during startup. Added safe rollbacks and retry wrappers for ALTER TABLE statements.
  • Session Management: Resolved "transaction is closed" errors during metadata saves and fixed an AttributeError where the Calibre session was None during startup/upgrade races. (Fixes #​947, #​943)
  • Startup Healthchecks: Introduced an app.db healthcheck at startup to flag missing, non-writable, or locked DBs early.
  • DB Path Resolution: Hardened app.db resolution logic to prevent mismatched DB usage across services (e.g., accidentally using cwa.db).
  • Archived Book Sync: Deleting an archived book now correctly removes its entry from the archived_book table. (Fixes #​8243)
Metadata & Web UI
  • Save Flakiness: Fixed an issue where "Save" appeared to work but didn't persist if TinyMCE/Rating widgets weren't ready. Added a sync trigger on form submit. (Fixes #​948)
  • Pagination & Sorting: * Fixed "inflated" book counts on the homepage caused by duplicate rows in database joins. (Fixes #​766)
    • Fixed "duplicate scan" crashes caused by comparing timezone-aware vs naive timestamps. (Fixes #​945)
  • Date Display: Fixed a bug where the published date rendered as the prior day due to timezone offsets. (Fixes #​789)
  • Stats Dashboard: Resolved "Unknown User" entries in dropdowns by properly mapping activity logs to current user IDs. (Fixes #​942)
Reader & File Handling
  • EPUB Repair: * The reader now auto-repairs and validates invalid container.xml files (e.g., duplicate XML declarations) that caused epub.js to crash.
    • Improved EPUB fixer safety by preserving original file encodings and adding better UTF-8/UTF-16 detection.
  • Auto-Zip Backups: Switched to shutil.copy to reset mtime so that daily auto-zips correctly include new backups. (Fixes #​260)
  • Magic Shelves: Fixed negated tag filters (e.g., "does not contain tag") which were failing to exclude books correctly.
Integrations & Config
  • Hardcover.app: Fixed layout issues (0px height), Isotope initialization errors, and button failures on the review matching page. Allowed https: images in CSP for reviews.
  • Cover Enforcer: Fixed an infinite loop where failed logs were re-processed indefinitely; failures are now logged to CWA stats. (Fixes #​829)
  • DB Config: Fixed styling issues on the Config page and prevented crashes when the Calibre directory path was missing or empty. (Fixes #​870, #​779)

v4.0.0: Version 4.0.0 - Smart Automatic Duplicate Handling & Resolution 🔍, a Gorgeous & Powerful New Stats Centre 📊, Magic Shelves ✨, Robust OAuth, Auto-Send & Auto-Fetch ✈️ Huge Performance Uplifts and more!

Compare Source

[!NOTE]
"I'm honestly so excited to finally share this update with you all. We've tackled the duplicate book problem once and for all, built a sick stats system that actually shows you how your library is being used, added dynamic/Magic Shelves, and a powerful & robust new OAuth system. The amount of new features and fixes in this release is incredible. This is the biggest, most community-driven update CWA has ever had and I'm very grateful to everyone that helped work on it." - CrocodileStick

Supporting the Project ❤️

CWA is and always will be free and open source. If it makes your library life easier and you're able to support development, contributions go directly to:

  • Testing hardware (ereader devices & tablets ect.)
  • Development tools and infrastructure
  • Coffee ☕ (lots of coffee)

ko-fi


Major Changes 🚀
NEW: Smart Duplicate Detection & Management 🔍🔗

Say goodbye to duplicate book headaches! The completely rebuilt duplicate system is smarter, faster, and actually catches duplicates you didn't even know you had.

  • Automatic Detection:

    • Hybrid SQL + Python Detection - Combines performant SQL queries with intelligent fuzzy matching to find 95% of duplicates other systems miss
    • Post-Ingest Scanning - Automatically checks for duplicates after importing new books
    • Scheduled Scans - Background task runs periodic checks with configurable cron scheduling
    • Incremental Scanning - Only scans books added/modified since last check instead of your whole library
    • Smart Title Normalization - Strips articles (A, The, etc.), special characters, and whitespace for accurate matching
    • Language-Aware - No more accidental flagging of translations as duplicates
  • Powerful Management:

    • Auto-Resolution - Optionally auto-merge duplicates based on your preferences (keep newest, keep oldest, or manual)
    • One-Click Merging - Merge duplicates directly from the Duplicates Manager with format consolidation
    • Batch Operations - Select and merge multiple duplicate groups at once
  • You're In Control:

    • Configure What Counts as a Duplicate - Decide exactly what matching criteria to use
    • Adjustable Thresholds - Set how strict or lenient the fuzzy matching should be
    • Format Awareness - Choose whether different formats of the same book count as duplicates
  • Beautiful, Useful Notifications:

    • Optional Alerts - Real-time feedback when duplicates are found or resolved, keeping you on top of your library whether you want to go full-auto or curate your library by hand (toggleable in CWA Settings)
    • Task Progress - Monitor duplicate scans & related jobs in the Tasks panel

Finally, a duplicate system that actually works!

NEW: Magic Shelves 🪄📚

Magic Shelves are dynamic, rules-based collections that automatically populate based on criteria you define. Think of them as smart playlists for your books!

  • Universal Filtering System:

    • Filter by Title, Author, Series, Publisher, Language, Tags, Read Status, Rating, Publication Date, Identifiers (ISBN, Hardcover ID, etc.)
    • Multiple filter types: Exact match, contains, starts with, ends with, regex patterns
    • Combine multiple rules with AND/OR logic for incredibly specific collections
    • Date range filtering with validation for publication years and addition dates
  • Pre-Built Templates:

    • Recently Added - Your newest acquisitions at a glance
    • Highly Rated - Books you've rated 4+ stars
    • No Cover - Quickly identify books missing cover art
    • Recent Publications - Books published in the last year
    • Incomplete Series - Series where you're missing entries
    • Yet to Read - Books you haven't started
    • All templates automatically created for new users and backfilled for existing users
  • Advanced Features:

    • Kobo Sync Integration - Magic Shelves can sync to your Kobo device just like regular shelves!
    • Tag-Based Syncing - Automatically sync books to Kobo when they match Magic Shelf criteria
    • Real-Time Updates - Shelves update automatically as your library changes
    • Custom Icons - Choose from hundreds of emojis to personalize your shelves
    • Book Counts & Caching - Lightning-fast performance with smart caching and tooltips showing item counts in sidebar
    • Stats Tracking - Magic Shelf usage is also tracked in the new stats dashboard system
  • Beautiful UI:

    • Modern, intuitive interface for creating and managing Magic Shelves
    • Visual rule builder with drag-and-drop priority
    • Live preview of matching books
    • Mobile-optimized with conditional formatting

Your library can organize itself now! 🎉

NEW: Auto-Send to eReader 📧⚡

Set it and forget it! Books can now be automatically emailed to your eReader as soon as they're ingested.

  • Fully Automated Delivery:
    • Hands-Free Reading - New books automatically appear on your Kindle, Kobo, or other eReader
    • Smart Scheduling - Configurable delay (1-60 minutes) allows time for metadata fetching and EPUB fixes before sending
    • Format Selection - Automatically sends in your preferred format (EPUB, MOBI, AZW3, etc.)
    • Multiple Recipients - Send to multiple email addresses/devices at once

  • Integration with CWA Pipeline:

    • Works with EPUB Fixer - Books are automatically fixed before sending to prevent Amazon rejections
    • Works with Auto-Metadata - Fetch metadata first, then send fully-tagged books
    • Task Tracking - Monitor auto-send jobs in the Tasks panel
    • Toast Notifications - Get notified when books are successfully sent
  • Flexible Configuration:

    • Per-User Settings - Each user can configure their own auto-send preferences
    • Conditional Sending - Only send books that match certain criteria (format, author, etc.)
    • Email Customization - Custom subject lines for Amazon's "convert" feature

Wake up to new books on your eReader every morning! 🌅📚

NEW: Automatic Metadata Fetching on Ingest! 🏷️🤖

No more manually searching for metadata after importing books! CWA can now automatically fetch and apply metadata during the ingest process.

  • Seamless Integration:

    • Fetch on Import - Optionally fetch metadata automatically when books are ingested
    • Pre-Send Enrichment - Fetch metadata before auto-sending to eReader so your books arrive fully tagged
    • Provider Selection - Uses your preferred metadata providers (Google Books, Kobo, Hardcover, etc.)
    • Smart Fallback - If one provider fails, automatically tries the next configured provider and you control the hierarchy. Your library, your choice.
  • Configurable Behavior:

    • Toggle On/Off - Enable or disable auto-fetch in CWA Settings
    • Timing Control - Set when metadata fetch happens in the ingest workflow
    • Quality Control - Choose whether to overwrite existing metadata or only fill in missing fields
    • Choose Which Fields Get Updated - Only ever want certain fields to be automatically updated and others to be left alone? No problem! You can choose what gets updated when.
    • Smart Metadata Application System - When enabled, fetched metadata will only replace existing data if it appears to be better quality (e.g., longer descriptions, higher resolution covers). When disabled, fetched metadata will replace existing data as-is from the preferred provider.

Your books arrive perfectly tagged, automatically! 📖✨

NEW: Deep Stats & Analytics 📊✨

Ever wondered who's using your library the most, what devices people prefer, or when peak reading hours are? The CWA Stats page has been completely rebuilt from scratch with 4 major sections packed with insights!

User Activity Statistics 👥
  • Top Users by Downloads - See who's using your library the most
  • Reading Velocity - Track pages read and reading speed per user
  • Device Breakdown - Understand what devices your users prefer (Kobo, Kindle, web, etc.)
  • Format Preferences - Which formats are most popular?
  • Peak Usage Hours - Heat map showing when your library is busiest
  • Average Session Duration - How long users spend browsing
  • Search Success Rate - Percentage of searches that result in book views/downloads
  • Failed Auth Attempts - Security monitoring for unauthorized access attempts
Library Statistics 📚
  • Publication Year Distribution - Visualize your collection's age range
  • Largest Series - See which series dominate your library
  • Rating Statistics - Average ratings, most highly-rated books
  • Most Fixed Books - Books that required the most EPUB fixes
  • Top Enforced Books - Books with the most metadata enforcement runs
  • Import Source Flows - Track where your books are coming from
  • Format Distribution - Breakdown of all formats in your library
  • Language Distribution - See the linguistic diversity of your collection
API Usage Statistics 🔌
  • OPDS Feed Activity - Monitor OPDS usage and popular feeds
  • Kobo Sync Stats - Track Kobo device syncs and downloads
  • KOReader Sync Stats - KOReader progress sync activity
  • REST API Calls - External API usage tracking
  • Hardcover Sync Stats - Hardcover.app integration activity
Time-Based Analytics & Export ⏰
  • User-Selectable Time Periods - View stats for custom date ranges (last 7 days, 30 days, 90 days, all time, custom)
  • User-Specific Filtering - Drill down into individual user statistics
  • CSV Export - Export any stat section as CSV for external analysis
  • Beautiful Charts - Interactive graphs with consistent dark mode styling
  • Real-Time Updates - Stats update as your library is used

Finally see what's really happening in your library! 📈

NEW: OAuth That Actually Works 🛡️🔐

Let's be honest, OAuth has been a pain point for way too long. The redirect loops, the session weirdness, the cryptic errors—we've heard you. It's been completely rewritten from scratch to actually work properly.

  • New OAuth Features:
    • Auto-User Creation for LDAP & Reverse Proxy: Seamlessly integrate with Active Directory, OpenLDAP, and FreeIPA. New users can now be automatically provisioned upon their first login!
    • Reverse Proxy: Support for Authelia, Authentik, and Traefik ForwardAuth with configurable auto-creation of users.
    • Hybrid Flow Strategy - Google/GitHub use modern direct login, Generic OIDC uses dedicated flow for better compatibility
    • Disable Standard Login - Option to force OAuth-only authentication if that's your setup
    • Admin Role Protection - Prevents accidentally removing the last admin via OAuth
    • JWT Group Mapping - Properly extracts username/email from JWT tokens for various providers
    • Admin Toggle - Admin roles now have an explicit enable/disable toggle to prevent accidents
    • Generic OIDC Support: Connect to any OpenID Connect provider with ease!
    • Security First: Enhanced input validation, SQL injection protection, and comprehensive audit logging ensure your library stays safe.

No more OAuth headaches—it just works now! 🎉

NEW: Better Kobo Integration 📱💜

Kobo support has been dramatically improved with better device communication, sync reliability, and metadata integration.

Enhanced Device Support & Endpoints 📡
  • Featured Products Endpoint - New /v1/products/featuredforkoboplus/ endpoint for newer firmware
  • Category Products - Added /v1/categories/<category>/products endpoint
  • Expired Token Handling - Returns proper 401 when authorization token expires instead of cryptic errors
  • Better Temp File Management - Fixed race condition causing incorrect books to download due to stale temp files
Annotation & Progress Sync 🔄
  • Cascade Delete Safety - Fixed orphaned progress sync records when books deleted (Thanks to doxxx!)
  • Safe Migration - Automatic database migration to add foreign key constraints for data integrity
  • Unit Tests - Added unit tests for cascade deletion behavior
  • Hardcover Client Handling - Gracefully handles missing per-user Hardcover tokens
Metadata Provider Integration 🏷️
  • Kobo Metadata Provider - Added Kobo as a first-class metadata source for better book information (Thanks to opswhisperer!)
  • Hardcover Sync Fixes - Resolved Kobo annotations not syncing to Hardcover properly

Your Kobo experience just got a whole lot better! 🎉

NEW: Enhanced Send-to-eReader Experience 📧✈️

We've completely rebuilt the "Send to eReader" functionality to give you total control over how your books are delivered.

  • New Modal Interface:
    • Multiple Recipients: Send a book to multiple email addresses at once
    • Ad-Hoc Sending: Type in any email address on the fly—perfect for sending a book to a friend or a temporary device without adding it to your profile
    • User-to-User: Easily send books to other users on your CWA instance
  • Custom Subjects: Users can now customize the email subject line (e.g., "convert") to trigger specific behaviors on Amazon's end (Thanks to marauder37!)
NEW: EPUB Fixer 2.0 - No More Amazon E999 Errors! 📧✅

Ever had Amazon reject your perfectly good EPUB with a cryptic E999 error? The EPUB Fixer has been completely overhauled to eliminate those rejections once and for all.

Critical Fixes for Kindle Compatibility
  • IETF BCP 47 Language Tags - Properly detects and repairs malformed <dc:language> tags (e.g., en-US vs. en) that trigger Amazon's E999 rejection—the #​1 cause of Send-to-Kindle failures
  • XML Declaration Repairs - Fixes malformed XML declarations in OPF/NCX files that cause silent corruption
  • UTF-8 Encoding Declaration - Ensures all files have proper UTF-8 declarations to prevent character encoding errors
  • NCX Table of Contents Links - Resolves broken hyperlinks in the navigation document that cause reading app crashes
Content & Asset Cleanup
  • Broken CSS & Font Removal - Detects and removes malformed CSS files and corrupted font files that Amazon's validator rejects
  • Stray Image Tag Cleanup - Removes <img> tags with no source attribute that cause rendering errors
  • Improved Parsing Order - Optimized XML processing order prevents further corruption during fixes

The Amazon Send-to-Kindle service is notoriously strict about EPUB compliance. These fixes target the most common rejection causes found in EPUBs from Calibre conversions, Sigil edits, and web downloads.

Send books to Kindle with confidence—no more E999 errors! 📬

NEW: Hardcover.app ID Auto-Fetch 💜🤖

Automatically populate your library with Hardcover identifiers for better tracking and metadata!

  • Automatic ID Assignment:

    • Background Task - Scheduled task automatically fetches Hardcover IDs for books missing them
    • Task Scheduling - Integrated with CWA's task scheduler using schedule_task() method
    • Batch Processing - Efficiently processes multiple books in queue
    • Smart Matching - Uses title/author to find correct Hardcover editions
  • Settings Integration:

    • Configurable - Enable/disable auto-fetch in CWA Settings
    • Progress Tracking - Monitor auto-fetch tasks in Tasks panel
    • Invalid Token Handling - Gracefully handles invalid Hardcover tokens with user-friendly messages

Keep your Hardcover.app integration up-to-date automatically! 💜

NEW: Performance & UI Overhaul 🎨⚡

Across the board optimizations make CWA feel snappier and more responsive than ever, especially on large libraries.

Major Performance Wins 🚀
  • Advanced Search Refactor - Queries now fetch only the necessary data for the current page, drastically reducing memory usage and load times for large libraries
  • Hot Books Optimization - Eliminated "N+1 query" issues by fetching all book details in a single efficient database query—book pages now load instantly on 50,000+ libraries
  • Thumbnail System 2.0:
    • WebP Optimization - Converted all background images and thumbnails to WebP, reducing page weight by 97%!
    • Always-Active - Thumbnails are now a core feature, ensuring covers load instantly even on large libraries
    • Lazy Loading - Improved lazy loading for covers makes scrolling smooth
  • SQLAlchemy Optimization - All queries now use joinedload(Books.data) to prevent N+1 queries and detached instance errors
  • New Internal Task Scheduler: A brand new, robust internal scheduler now manages background tasks, ensuring reliability even across container restarts
  • Python 3.13 Upgrade: The base image has been upgraded to Python 3.13, future-proofing the application and improving performance
Mobile UI Improvements 📱
  • Better Dark Mode Layouts - Fixed numerous positioning issues in Dark Mode and improved the layout of book descriptions and login screens on mobile devices
  • Responsive Tables - Users table no longer scrolls off screen at lower resolutions
  • Touch Targets - Larger, more accessible buttons for mobile users
Book List Power Tools 🛠️
  • Bulk Actions - Added "Select All" and "Unselect All" buttons, plus Shift-Click functionality to select ranges of books
  • Quick Actions - Hover over any book to instantly Mark as Read, Send to eReader, or Edit Metadata
  • Clickable Duplicates - Book titles in Duplicates Manager now link to book pages for easy verification
Profile & Settings 👤
  • Profile Pictures - Live preview before saving, client-side auto-resize for fast uploads
  • Show Password Toggle - Added on the login screen for easier password entry
  • Better Organized Settings - Got rid of CW's clunky old menus with clean card-based layouts

Everything just feels faster and more polished!

NEW: Better Metadata & Ingest 📋✨

The ingest system has been refined with better logging, smarter error handling, and more reliable processing.

  • Ingest Improvements:

    • Better Logging - Enhanced logging for ingest_processor to track file progress
    • Error Recovery - More robust error handling for failed imports
    • Checksum Split Awareness - Checksums now respect split library configuration (Thanks to SethMilliken!)
    • Books Path Argument - Added --books-path to generate_book_checksums.py for flexibility
  • Metadata Features:

    • Permission Fixes - Resolved metadata update permission errors on network shares

Smarter, more reliable book processing! 🤖

NEW: Network Share Mode - Deploy Anywhere 🌐💾

Running CWA on a NAS or network share? Network Share Mode makes it possible with intelligent adaptations for NFS/SMB environments.

[!IMPORTANT]
Always set NETWORK_SHARE_MODE=true when running CWA on NFS/SMB shares to prevent database corruption and permission errors.

What It Does
  • Disables SQLite WAL Mode - Write-Ahead Logging requires file locking guarantees that many network filesystems can't provide. When NETWORK_SHARE_MODE=true, CWA automatically disables WAL on metadata.db and app.db to prevent "database is locked" errors and corruption risks

    [!WARNING]
    Enabling WAL mode on network shares can cause “database is locked” errors and potential data loss.

  • Skips Permission Operations - Suppresses recursive chown operations that fail or cause permission conflicts on network shares (NFS often ignores or misinterprets ownership changes)
  • Polling-Based File Watching - Switches from inotify to a polling watcher that scans for new files every 5 seconds. Network filesystems often don't propagate filesystem events reliably, and polling ensures ingest always works

    [!NOTE]
    Polling mode may introduce a few seconds of delay when detecting new files, but ensures reliability on network shares.
    [!TIP]
    You can force polling mode on any setup with CWA_WATCH_MODE=poll.

When You Need It
  • NFS Mounts - Synology, TrueNAS, QNAP network shares
  • SMB/CIFS Shares - Windows network drives, Samba shares
  • Docker Desktop - Auto-detected! Docker Desktop mounts don't reliably propagate inotify events from the host filesystem
  • "Database is locked" Errors - If you're seeing these on a network share, this mode will eliminate them
Configuration

Set the environment variable in your docker-compose:

environment:
  - NETWORK_SHARE_MODE=true

Advanced: Force polling mode without disabling WAL using CWA_WATCH_MODE=poll for edge cases.

Deploy on any storage backend with confidence! 💪


Minor Changes ✨
Stability & Performance 🏗️
  • Database & Session Management:

    • Session Management - Fixed session management issues causing "DetachedInstanceError" across multiple endpoints
    • Race Condition Fixes - Added robust error handling for race conditions in cover_enforcer metadata log processing
  • Task System:

    • Scheduled Task Safety - Fixed race conditions in scheduled tasks causing database session corruption
    • Task Cancellation - Proper cleanup when cancelling long-running tasks
    • Better Error Handling - Improved error messages and recovery for failed background tasks
Security & HTTPS 🔒
  • HTTPS Support:

    • Internal API HTTPS - Internal API calls (ingest, library conversion) now respect SSL configuration
    • Health Check Fallback - Dockerfile HEALTHCHECK falls back to HTTPS if HTTP fails
    • External Link Upgrades - Upgraded ISFDB and Rakuten links to HTTPS
    • Helper Function - Added get_internal_api_url() for dynamic localhost URL generation
  • CSRF Protection:

    • Better Coverage - Added CSRF tokens to all forms and AJAX requests that were missing them
    • Magic Shelf Forms - Fixed CSRF validation on Magic Shelf edit pages
    • Clearer Error Messages - Better feedback when CSRF validation fails
UI/UX Improvements 🎨
  • Visual Polish:

    • Fixed Hardcoded Branding - All leftover "Calibre-Web" references replaced
    • Page Title Fixes - HTML characters no longer show up in page titles
    • CSRF Token Coverage - Added CSRF tokens to all AJAX requests that were missing them
    • Dark Mode Consistency - Fixed remaining dark mode styling issues across all pages
    • Task Table Styling - Fixed Tasks table inheriting both bordered and non-bordered classes
  • Book Management:

    • Duplicate Format Prevention - Validate book ID before adding format to prevent duplicates
    • File Size Display - Fixed file size inconsistency for email attachments
    • Cover Hover Links - Fixed book hover links not respecting X-Script-Name in dark theme
    • Clickable Duplicates - Book titles in Duplicates Manager now link to book pages
System Administration 🔧
  • Architecture Support:

    • Unsupported Arch Warnings - Added warnings for users on unsupported architectures
    • libasound2t64 - Added missing audio library for certain environments (Thanks to jeffonthemove!)
  • Service Management:

    • s6-notifyoncheck Fix - Corrected service readiness notification
    • cwa-init Improvements - Better initialization sequence and error handling
    • Logger Fixes - Changed logger.get_logger() to use log variable
Developer Experience 🛠️
  • Testing:

    • CI/CD Fixes - Resolved Docker build and test suite failures
    • OAuth Tests - Fixed new OAuth test in CI pipeline
    • Unit Test Coverage - Added tests for cascade deletion, checksums, and Magic Shelves
  • Code Quality:

    • Split Library Refactor - Improved error handling and test coverage for split library functionality
    • Schema Updates - Fixed comments in DB schemas causing SQL errors
    • Type Safety - Better null checking and type validation throughout codebase

New Integrations & Providers 🔌
  • LitRes Provider: Added support for LitRes metadata (Thanks to nstwfdev!)
  • Kubernetes Support: Added Kubernetes deployment examples (Thanks to opswhisperer!)
Documentation 📚
  • Massive Wiki Updates: Comprehensive guides for OAuth, LDAP, Authentication, Magic Shelves, and Testing
Bugfixes 🐛
Critical Fixes 🚨
  • Cover Enforcer Locking - Fixed database locking and race conditions in cover_enforcer preventing metadata updates
  • Foreign Key Cascade - Safe cascade deletion for progress sync tables prevents orphaned records
  • OAuth Token Storage - Fixed "NoneType object has no attribute token" error
  • Reverse Proxy Race - Fixed UnboundLocalError when reverse proxy authentication disabled
  • Session Expiry - No more unexpected session expirations or redirect loops
Format & Conversion 🔄
  • EPUB to PDF Conversion - Resolved "Cannot convert EPUB to PDF" error
  • Filename Handling - Fixed filename issues during PDF conversion
  • Case Sensitivity - Fixed *.PDF (uppercase) files not being recognized during upload
  • Format Validation - Better validation of supported formats before processing
OAuth & Authentication Issues 🔐
  • #​758 - Generic OAuth2 connection not working due to internal 500 error
  • #​807 - OAuth token storage error: 'NoneType object has no attribute token'
  • #​876 - Admin role lockout protection needed for OAuth users
  • #​887 - UnboundLocalError when reverse proxy auth disabled
Kobo Integration Issues 📱
  • #​798 - Issue with sync from Kobo annotations to Hardcover
  • #​802 - Kobo sync downloading incorrect books due to stale temp files and book hover links not respecting X-Script-Name in dark theme
  • #​821 - Hardcover client initialization error for users without per-user token
EPUB & Kindle Compatibility 📚
  • #​920 - EPUB language tag handling causing Amazon Kindle E999 rejections
Format & Upload Issues 📤
  • #​801 - *.PDF (uppercase extension) not working when uploading books
  • #​813 - Cannot convert EPUB to PDF
  • #​866 - Duplicate format being added to books
  • #​867 - File size display inconsistency for email attachments
UI & Display Issues 🎨
  • #​672, #​756, #​759, #​900 - Series index formatfloat filter causing 500 errors
  • #​882 - HTML characters rendering in page titles
  • #​906 - Inconsistent tag visibility in category views and shelves
  • #​925 - 500 Internal Server Error when API request made to book without formats
  • Send Selected Path - Fixed /send_selected/ request path prefix (Thanks to tmacphail!)
  • Magic Shelf Nav - Fixed Magic Shelves not appearing in sidebar
Metadata & Library Issues 🏷️
  • #​878 - Metadata update permission errors on network shares
  • #​905 - Invalid Hardcover tokens not handled gracefully
Settings & Configuration ⚙️
  • #​903 - Can't save CWA Settings on latest DEV-335 due to duplicate detection settings
  • Wildcard Accept-Language -

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

@ManuelLR ManuelLR self-assigned this Jan 29, 2026
@ManuelLR ManuelLR force-pushed the renovate_cron/crocodilestick-calibre-web-automated-4.x branch 4 times, most recently from 7db792c to d225fac Compare February 2, 2026 16:44
@ManuelLR ManuelLR force-pushed the renovate_cron/crocodilestick-calibre-web-automated-4.x branch from d225fac to dfd975d Compare February 5, 2026 05:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants