What's your idea?
When a user manually (or via Hardcover backfill) sets a book's status to want_to_read and then starts reading it via KOReader and syncs, the status is never automatically updated to reading despite progress exceeding the library's reading threshold. This also blocks Hardcover sync from updating the status on Hardcover's side.
What problem does it solve?
Updating status from "want to read" to "reading".
Anything else? (optional)
Root cause:
server/src/modules/user-book-status/user-book-status.service.ts:127:
async autoUpdate(userId, bookId, percentage, readingThreshold?, finishThreshold?): Promise<void> {
const existing = await this.repo.findOne(userId, bookId);
if (existing?.source === 'manual') return; // ← bails out unconditionally
// ... threshold check and status update never reached
}
The early return at line 127 prevents any auto-status-update for books whose current status was set manually, regardless of whether the status is want_to_read (an aspirational status that should yield to actual reading activity) or a deliberate terminal status like read, on_hold, or abandoned.
Suggested fix:
Change the guard to allow auto-updating away from want_to_read even when the source is manual:
if (existing?.source === 'manual' && existing.status !== 'want_to_read') return;
Want to help?
Yes, I'd like to implement this
Before submitting
What's your idea?
When a user manually (or via Hardcover backfill) sets a book's status to
want_to_readand then starts reading it via KOReader and syncs, the status is never automatically updated to reading despite progress exceeding the library's reading threshold. This also blocks Hardcover sync from updating the status on Hardcover's side.What problem does it solve?
Updating status from "want to read" to "reading".
Anything else? (optional)
Root cause:
The early return at line 127 prevents any auto-status-update for books whose current status was set manually, regardless of whether the status is want_to_read (an aspirational status that should yield to actual reading activity) or a deliberate terminal status like read, on_hold, or abandoned.
Suggested fix:
Change the guard to allow auto-updating away from want_to_read even when the source is manual:
Want to help?
Yes, I'd like to implement this
Before submitting