# `Laev.Shelf`
[🔗](https://github.com/alexdont/laev/blob/main/lib/laev/shelf.ex#L1)

What you are in the middle of, as data.

The Watchlist is the one screen assembled from everything laev records at
once — episode marks, your MyAnimeList list, its own history, holds, the TMDB
cards behind the rows — and reading those together is the fiddly part: what
counts as caught up, when a show has been quiet long enough to call finished,
which anime you put down rather than merely left off.

None of that is display. It lived in the CLI because the CLI was the only
thing asking, and it answers in rows and counts rather than in anything
printed — so it lives here, where a second interface can ask the same
question and get the same answer. Two of them disagreeing about what you are
watching is the bug this arrangement exists to make impossible, and it is not
hypothetical: the count already read 28 in one place and 51 in another once.

# `anime_finished`

# `anime_list`

# `anime_marks`

# `anime_watched_note`

# `complete_season?`

# `concluded?`

# `divide_sections`

The Watchlist page in order, with a dim line before each section that isn't
the first.

Three sections, because there are three answers to "why isn't this finished":
you are in the middle of it, you are up to date and waiting, or you put it
down. Only the first is a list of things to do tonight, which is what the home
screen counts — the other two are there to be looked through, not worked
through, so they sit below a divider each.

Public because it is the one part of that page with a rule in it: a row that
says nothing about being caught up or held is in the middle of being watched,
which is how anime rows arrive.

# `first_unwatched_title`

# `load_cards`

# `marks_by_show`

# `rows`

Every row of the Watchlist page, in the order it shows them — shows you are
partway through, then anime, then whatever you are merely caught up on, with
the divider between.

Separated from the screen that draws it so the page can be checked without a
terminal: this is the part with the fetching, the ordering and the rules in it.

# `seasons_complete?`

Every aired season watched through — what complete means for a show.

# `section_of`

Which section a Watchlist row belongs to.

# `seen?`

# `series_marks`

# `unfinished_shows`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
