What went wrong?
I added "A Parade of Horribles Dungeon Crawler Carl, Book 8" to my library and setup the metadata to match Hardcover. When the Hardcover sync integration attempts to send this to Hardcover it chooses a random edition that does not match the page count or ISBN of the edition that is in my Bookorbit library. This leads to incorrect progress tracking in Hardcover and incorrect cover art etc. I removed and added the book to the library it appears to choose a random edition of the book when sync to Hardcover each time. I have tested this with other books and encountered similar issues.
Note: I am not a coder, but I've dabbled with using LLM for solving simple personal software needs and here is what it identified (apologies if this is miles off the mark):
- Arbitrary Edition Selection (limit: 1): When matching a book by its Hardcover ID, Slug, or Title search, the GraphQL queries hardcode editions(limit: 1) without any sorting or filtering. This means Bookorbit blindly accepts the very first arbitrary edition returned by the Hardcover API.
- Silent Fallback Bug: If Bookorbit does match the correct edition, but that edition happens to have no page numbers defined on Hardcover, the resolveCachedMatch logic silently overwrites my edition ID with a random fallback edition that does have page numbers.
- Missing Local Context: The database query for syncable books (findSyncableBooksForUser in hardcover.repository.ts) doesn't pull my local book's actual pageCount or format. This prevents the sync service from smartly picking an edition on Hardcover that matches the length or format (e.g., ebook vs audiobook) of my actual book.
Steps to reproduce
- Add a book to your Bookorbit library, ensure metadata is complete and enable Hardcover sync.
- Update your reading progress (e.g., 50%).
- Check your Hardcover account. You will likely see the reading progress tracked against a completely different edition of the book (sometimes an audiobook edition or with a drastically different page count).
Expected vs actual behavior
Expected: Bookorbit should try to match the exact edition I am reading using my book's ISBN. If it has to guess, it should pick the edition with a page count and format closest to my local file. Additionally, it shouldn't silently change my book's edition on Hardcover just because my current edition is missing page count metadata.
Actual: Bookorbit frequently grabs the first random edition returned by the Hardcover API (such as an audiobook), or actively overrides my correctly matched edition with a random one just to find a page count to calculate progress percentages against.
Your setup
- Bookorbit version: latest
- Deployment: Docker
- OS: Unraid
- Browser: Firefox 151.0.4
Relevant logs (optional)
Screenshots (optional)
No response
Before submitting
What went wrong?
I added "A Parade of Horribles Dungeon Crawler Carl, Book 8" to my library and setup the metadata to match Hardcover. When the Hardcover sync integration attempts to send this to Hardcover it chooses a random edition that does not match the page count or ISBN of the edition that is in my Bookorbit library. This leads to incorrect progress tracking in Hardcover and incorrect cover art etc. I removed and added the book to the library it appears to choose a random edition of the book when sync to Hardcover each time. I have tested this with other books and encountered similar issues.
Note: I am not a coder, but I've dabbled with using LLM for solving simple personal software needs and here is what it identified (apologies if this is miles off the mark):
Steps to reproduce
Expected vs actual behavior
Expected: Bookorbit should try to match the exact edition I am reading using my book's ISBN. If it has to guess, it should pick the edition with a page count and format closest to my local file. Additionally, it shouldn't silently change my book's edition on Hardcover just because my current edition is missing page count metadata.
Actual: Bookorbit frequently grabs the first random edition returned by the Hardcover API (such as an audiobook), or actively overrides my correctly matched edition with a random one just to find a page count to calculate progress percentages against.
Your setup
Relevant logs (optional)
Screenshots (optional)
No response
Before submitting