github cporcellijr/abs-kosync-bridge v6.1.0
Release 6.1.0

latest releases: v6.3.3, v6.3.2, v6.3.1...
one month ago

Release 6.1.0

Featuring an integrated KoSync server, ebook-only sync support, and significant performance improvements.

🚀 New Features

  • Integrated KoSync Server: Implemented a built-in KoSync server with endpoints for progress syncing (PUT/GET /syncs/progress), document management, and "furthest progress wins" logic.

  • Ebook-Only Sync Mode: Full support for syncing ebooks without audiobooks, including dashboard filters and cover display.

  • Progress Suggestions & Logic:

    • Audiobooks: Automatically retrieves and offers progress suggestions when starting a new audiobook.
    • Ebooks: If using the Internal KoSync Server, starting an ebook will now fetch and display progress suggestions.
    • Fallback: If Internal KoSync is not detected, the system defaults to linking the document in "Ebook Only" mode.
  • Performance Overhaul:

    • Implemented parallel execution for fetching service states.
    • Added requests.Session() reuse for connection pooling (Keep-Alive).
    • Added bulk data pre-fetching for Storyteller and ABS to reduce API calls.
    • Added MD5 hash cache for KOReader hash computations.
  • SMIL Support: Added validation and auto-fix fallback logic for SMIL transcripts.

  • Auto-Discovery: Added audiobook suggestion priority to KoSync auto-discovery.

  • Delete Cleanup: Removing a book mapping now cleans up external collections (ABS, Booklore shelf, Storyteller).

🐛 Bug Fixes

  • BookNexus Compatibility: Fixed auth validation (/users/auth) and response formats (stringified booleans) to support BookNexus and BookFuse clients.

  • Sync Logic:

    • Fixed race conditions in progress syncing with sync locks.
    • Fixed "Book not found" crashes and infinite loading bugs.
    • Resolved time_listened calculation errors.
    • Fixed clear progress to delete KoSync document (satisfies furthest-wins logic).
  • KOReader: Updated hash computation to use an exponential sampling algorithm.

  • Booklore: Fixed API timeouts, caching issues, shelf name usage, and search TypeError.

  • UI/UX: Fixed UI lockups, added application icons/favicons, and implemented "Retry Now" for failed jobs.

⚙️ Chores & Refactoring

  • Refactored fuzzy matching logic to a shared utility.
  • Added regression tests for settings routes and sync logic.
  • Added [abs_id] logging context for better sync correlation.
  • Standardized ISO 8601 timestamps for sync progress responses.
  • Added PR target check workflow to enforce PRs target dev branch.
  • Added contribution guidelines (CONTRIBUTING.md).

📝 Configuration Notes

  • Database Migration: New kosync_documents table is created automatically on startup - no manual steps required.

  • New Environment Variables (Optional):

    • BOOKLORE_ENABLED - Enable/disable Booklore integration (defaults to true if configured)
    • BOOKLORE_SHELF_NAME - Shelf name for synced books (defaults to abs-kosync)
    • KOSYNC_USE_PERCENTAGE_FROM_SERVER - Toggle percentage source authority (defaults to false)

👥 Contributors

  • @giejay - Test fixes and Flask testability improvements

Don't miss a new abs-kosync-bridge release

NewReleases is sending notifications on new releases.