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)
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>/productsendpoint - 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-USvs.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-pathtogenerate_book_checksums.pyfor 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 onmetadata.dbandapp.dbto 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
chownoperations that fail or cause permission conflicts on network shares (NFS often ignores or misinterprets ownership changes) - Polling-Based File Watching - Switches from
inotifyto 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
inotifyevents 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=trueAdvanced: 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 uselogvariable
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 - Suppressed locale parsing error for wildcard headers to prevent log spam
System & Performance Issues β‘
- #818 - Internal API calls not respecting SSL configuration
- #875 - Logger.get_logger() does not exist error
- #918 - Race conditions in scheduled tasks causing database session corruption
Translations π
Updated:
- Portuguese (Brazil) (pt-BR) - Fixed wrong and missing messages (Thanks to alexantao!)
- German (de) - Multiple translation updates (Thanks to ManuelDrescher, marodeur80!)
- Dutch (nl) - Significant contributions from jordibrouwer & helmerzNL!
- Polish (pl) - Updated Polish translations (Thanks to FilipMakowski!)
- Russian (ru) - Continued improvements
- Spanish, Italian, French, Hungarian, Korean, Chinese - Various fixes and improvements
Thanks to our Contributors! π
This release represents over 600 commits from an incredible community of developers, testers, translators, and users. Special recognition to:
Core Contributors π
- @BrachiumX - Duplicate merging, Kobo sync enhancements, Magic Shelf fixes, settings persistence
- @doxxx - Cascade delete implementation and testing
- @mehalter - WWW-Authenticate header compliance
- @navels - Ingest metadata improvements and auto-send enhancements
- @SethMilliken - Checksum split library awareness
- @Caligatio - OAuth loop fixes and logging improvements
- @aaronpowell - Duplicate merging UI
- @halkeye - Logger fixes
Feature Contributors β¨
- @ManuelDrescher - German translations (multiple PRs)
- @helmerzNL - Dutch translation updates
- @FilipMakowski - Polish translation updates
- @alexantao - Portuguese (Brazil) translation fixes
- @jeffonthemove - libasound2t64 addition
- @tmacphail - Script root support fixes
- @galeksandrp - README typo fixes
- @Olen - Reverse proxy loading fixes
- @Nementon - s6-notifyoncheck fixes
- @thetorminal - Shelfmark updates and Grand Hotel font
- @KucharczykL - Font updates
- @ceruleandeep - Kobo sync improvements
- @angelicadvocate for Profile Pictures & Retained Formats
- @opswhisperer for Kobo Metadata & K8s examples
- @sirwolfgang for KOReader Sync
- @wolffshots for Hardcover Annotation Sync
- @jgoguen for Amazon fixes, KFX support, and Local Build tools
- @Domoel for Two-way deletion sync
- @natabat for Ingest on Upload
- @marauder37 for Custom Email Subjects
- @nstwfdev for Russian translations & LitRes
Bug Hunters & Testers π
Thank you to everyone who filed detailed bug reports, tested dev builds, and helped us track down elusive issues. The quality of this release is a testament to your dedication!
Upcoming changes
Major changes are still coming to CWA including:
- A brand new Svelte based Frontend. The days of the current Bootstrap UI are numbers and migrating to Svelte ensures that the new UI will still be easy to edit and add to for as many contributors as possible due to it's very familiar syntax to traditional sites and can be compiled with Capacitor for native mobile apps which is very exiting
- A new web reader, epub.js is a little dated now and there are now much better alternatives
- A much more robust & powerful progress syncing system that will be able to have CWA act as a single source of truth for reading progress no matter what device you read from
- Full Text Search functionality
- π is coming very soon, the integration just had to be as sensible & respectful to the π and it's servers as possible and a good balance has now been reached
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 (Kobo devices, tablets, various platforms)
- Development tools and infrastructure
- Coffee β (lots of coffee)



