Skip to content

[Feature] Update status even when it was manually set #566

Description

@a-bali

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

  • I've searched existing issues and this hasn't been requested yet.

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature request or capability proposal.releasedIssue or PR is included in a released version.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions