Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
[v1.1.0] - 2025-06-02
Added
- Book Matching Mismatch Collection: New comprehensive system to track and report books that may need manual verification
- Collects three types of mismatches: complete lookup failures, audiobook edition failures, and fallback matches
- Provides detailed summaries after sync with actionable recommendations
- Helps users identify books requiring manual review
- Configurable Audiobook Edition Matching: New
AUDIOBOOK_MATCH_MODEenvironment variablecontinue(default): Log warning and sync with available book dataskip: Skip problematic books to avoid wrong edition syncsfail: Stop sync immediately when audiobook edition cannot be verified
- Conditional Sync Logic: Smart API usage to avoid unnecessary Hardcover API calls
- Checks existing read status before making changes
- Only syncs when progress has actually changed
- Reduces API load and improves performance
- Version Injection: Build system now properly injects version information
- Comprehensive Documentation: Organized feature docs in
docs/folder
Fixed
- Critical: Duplicate user_book_read entries spam in Hardcover feed
- Critical: Progress data mapping bug in AudioBookShelf sync
- Critical: Detection of manually finished books in AudiobookShelf
- Critical: Include 100% completed books in sync process (was excluding them)
- Critical:
getMinimumProgressThreshold()returning 0.0 instead of correct default 0.01 - GraphQL mutation errors with user_book_read operations
- GraphQL query syntax issues in book lookup functions
- Improved _ilike to _eq for more precise GraphQL queries
- Enhanced response validation for GraphQL mutations
- Input validation for configuration threshold values
Changed
- Major Code Refactoring: Extracted sync functionality into separate modules for improved maintainability
- Split monolithic
main.go(~774 lines) into focused modules - Created
sync.go(630 lines) for core sync logic - Created
audiobookshelf.gofor AudiobookShelf API interactions - Created
hardcover.gofor Hardcover API interactions - Created
config.gofor configuration management - Created
types.gofor data structure definitions - Created
utils.gofor utility functions - Created
mismatch.gofor book matching mismatch handling - Reduced
main.goto 144 lines (startup, HTTP endpoints, lifecycle management)
- Split monolithic
Technical Improvements
- Better separation of concerns between application lifecycle and business logic
- Improved code organization and modularity
- Enhanced maintainability for future development
- Easier testing of individual components
- Multi-architecture Docker builds (amd64, arm64)
- Build reproducibility and cache optimization
- All existing functionality preserved and tested
Notes
- This is a major feature and refactoring release with no breaking changes
- All existing features and API compatibility maintained
- No configuration changes required for existing users
- New environment variables are optional with sensible defaults
[v1.0.0] - Previous Release
- Initial stable release with full sync functionality between AudiobookShelf and Hardcover