🚀 New Features
-
Database Migration
Transitions the application from JSON-based file storage to a robust SQLite database using SQLAlchemy.
Includes Alembic for managing database migrations, ensuring better data integrity and persistence. -
Web Settings Page
Added a new web-based settings page for easier configuration and management. -
SMIL Extraction for EPUB3
Introduces support for SMIL extraction for EPUB3 files, enhancing matching accuracy between audiobooks and eBooks. -
ABS eBook Tracking
Added full tracking support for AudioBookShelf eBooks, enabling progress synchronization for eBooks (new capability). -
Hardcover Integration
- Implemented a full Hardcover sync client
- Added logic for matching books with Hardcover
-
Match Processing Progress
Added a progress percentage display to track the status of book matching. -
Shelfmark Tab
Added a dedicated Shelfmark tab to the web interface. -
Library Links
Added direct, clickable links/icons to Audiobooks and eBooks libraries within the UI.
✨ Improvements
-
Major Refactoring
- Refactored the core codebase to use Dependency Injection (DI) via the
dependency-injectorlibrary - Consolidated service access through a central container, replacing scattered manager instantiations
- Improved web server structure for better testability and consistency
- Refactored the core codebase to use Dependency Injection (DI) via the
-
Sync Logic
- Enhanced CFI parsing using the
epubcfilibrary - Added a sync delta threshold to prevent client "hopping" caused by minor timestamp differences
- Enhanced CFI parsing using the
-
Logging & Stability
- Added crash logging to better track unexpected failures
- Improved verification logic for sync states
🧩 Closes Issues
Closes #33, #26, #23, #20, #19
What's Changed
- Feature/smil support by @cporcellijr in #40
- Feature/sqlite by @giejay in #43
- Feature/clickable icon shelfmark tab by @cporcellijr in #45
- Refactor sync client structure to make it easier to add new clients and update progress methods to use LocatorResult by @giejay in #38
New Contributors
- @cporcellijr made their first contribution in #40
Full Changelog: v6.0.1...V6.1.0