Skip to content

Feature Request: Support Multiple Reading Sessions / Re-reads per Book #114

Closed

Description

@stream-river

First of all, thank you for this amazing project!

I really love LibrisLog and the idea behind it! It's a fantastic project, and I genuinely appreciate the work that has gone into creating such a nice, self-hosted solution for tracking books and reading habits.

One thing I've always done with my physical books is write down the dates whenever I've read them, including every time I've re-read them. There's something really nice about picking up a book years later and seeing when you've read it before.

I'd absolutely love to bring this little habit into LibrisLog as well!

That brings me to a feature I'd really like to suggest: support for multiple reading sessions per book. Since I'm not a Techy - this is ChatGPTs suggestion :)

Current Behavior

Currently, a book has a single date_started and date_finished pair. Reading progress entries are also associated directly with the book rather than with individual reading sessions.

This makes it difficult to accurately track a book that has been read multiple times.

For example:

  • First read: January 5, 2024 – January 22, 2024

  • Second read: October 10, 2026 – Currently reading

Ideally, both reading periods should be preserved. At the moment, starting the book again can result in the original dates being replaced or cleared instead of creating a separate reading session.

Creating a duplicate book entry isn't an ideal workaround either, since it would duplicate the book's metadata and interfere with library organization.

Proposed Behavior

I would suggest introducing a Reading History / Reading Sessions feature.

Each book would retain its existing library entry, but could have multiple independent reading sessions.

Ideally, users could:

  • Start a re-read of a previously completed book using a dedicated "Read Again" action.

  • View their reading history, showing every reading session with its own start and finish dates.

  • Track reading progress independently for each session, starting from page 0 again without losing previous progress.

  • Manually add previous reading sessions, including historical start and finish dates.

  • Edit or delete individual sessions without affecting the book itself or other sessions.

  • See how many times a book has been read, potentially as a small indicator in the book details.

Example

Book: The Hobbit

Reading History

Session Started Finished Status
1st read Jan 5, 2024 Jan 22, 2024 Completed
2nd read Oct 10, 2026 — Currently Reading

The book would still appear only once in the library, but its complete reading history would be preserved.

Possible Implementation Approach

I had a quick look at the existing codebase. Since date_started and date_finished are currently stored directly on the Book model, supporting multiple reading sessions would probably require an extension to the underlying data model.

The following is just a high-level suggestion, not a strict implementation requirement.

1. Introduce a Reading Sessions Model

Add a separate ReadingSession model/table linked to a book.

Each session could store:

  • Unique session ID

  • Associated book ID (and user ownership)

  • Start date

  • Optional finish date

  • Session status (e.g. currently reading, completed, abandoned)

This would allow a single book to have multiple independent reading periods.

2. Associate Reading Progress with Sessions

Currently, ReadingProgress entries reference the book directly.

Adding a session_id relationship would make it possible to:

  • Preserve previous reading progress timelines.

  • Start tracking from the beginning when re-reading a book.

  • Display separate progress histories for each reading session.

3. Extend the Frontend

A few UI additions could make this feature relatively intuitive:

  • A "Read Again" button for previously completed books.

  • A "Reading History" section in the book details.

  • Options to add, edit, or delete individual reading sessions.

  • An optional indicator showing the number of completed reads.

The existing book details could continue to show the current or most recent session by default.

4. Adjust Reading Statistics

Reading statistics could distinguish between:

  • Unique books read: The number of different books completed.

  • Total reading completions: The total number of completed reading sessions, including re-reads.

For example, reading The Hobbit twice would count as one unique book but two completed reading sessions.

Existing statistics should ideally retain their current meaning unless explicitly updated, so re-reads don't unexpectedly inflate unique book counts.

5. Migrate Existing Data

To maintain backward compatibility, existing reading dates and progress entries could be migrated into an initial reading session for each applicable book.

This would preserve users' current reading history and avoid breaking existing installations.

Existing API consumers and import/export functionality would also need to be considered.

Expected Result / Acceptance Criteria

  • A book can have multiple reading sessions with independent start and finish dates.

  • Starting a re-read does not overwrite previous reading dates or progress.

  • Users can view and manage historical reading sessions.

  • Reading progress can be tracked independently for each session.

  • Statistics handle re-reads without incorrectly counting duplicate books.

  • Existing reading data remains intact after upgrading.

Final Thoughts

I think this would be a really nice addition to LibrisLog, especially for readers who enjoy revisiting their favorite books.

For me personally, it would be wonderful to have the same kind of reading history that I've been keeping handwritten inside my books for years, but now neatly organized and searchable in LibrisLog.

Of course, the proposed technical approach is only a suggestion. I'm sure there may be better ways to integrate this into the existing architecture.

Thanks again for creating and maintaining LibrisLog, and for considering this idea!

Activity

  1. codebude commented on Oct 21, 2026

    @codebude
    Owner

    Hi @stream-river ,

    Thanks for taking the time providing valuable feedback. Don't worry about using chatgpt for your suggestion. If programming isn't your business, it's totally fine to use such tool to sketch your ideas.

    I get you points and like the idea, but I have to think a day (or two) about a possible solution. Technically it's not that hard, but I don't want to complicate the user experience for users that don't need the reread feature. (Presenting sessions and another couple more of buttons and options, may overwhelm them.) If I have found a way to implement reading sessions, while keeping the interface clean and simple, I'll implement your feature wish.

    I'll keep you updated in this issue.

  2. self-assigned this
    on Oct 21, 2026
  3. codebude commented on Oct 23, 2026

    @codebude
    Owner

    Hi @stream-river I implemented your feature wish. You can try out by using the docker image with the "develop" tag.
    It will be part of the next release.

  4. codebude commented on Oct 24, 2026

    @codebude
    Owner

    The feature is part of v1.11.0 which was release a couple of minutes ago. Feel free to re-open the issue in case you're missing anything.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions