github drallgood/audiobookshelf-hardcover-sync v1.1.0
v1.1.0 - Major Feature and Refactoring Release

latest releases: v3.0.0, v2.1.0, v2.0.1...
4 months ago

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_MODE environment variable
    • continue (default): Log warning and sync with available book data
    • skip: Skip problematic books to avoid wrong edition syncs
    • fail: 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.go for AudiobookShelf API interactions
    • Created hardcover.go for Hardcover API interactions
    • Created config.go for configuration management
    • Created types.go for data structure definitions
    • Created utils.go for utility functions
    • Created mismatch.go for book matching mismatch handling
    • Reduced main.go to 144 lines (startup, HTTP endpoints, lifecycle management)

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

Don't miss a new audiobookshelf-hardcover-sync release

NewReleases is sending notifications on new releases.