Laev.Shelf (laev v0.1.40)

Copy Markdown View Source

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.

Summary

Functions

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

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.

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

Which section a Watchlist row belongs to.

Functions

anime_finished()

anime_list()

anime_marks()

anime_watched_note(arg1)

complete_season?(id, season, marked)

concluded?(arg1)

divide_sections(rows)

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(titles)

load_cards(keys, report)

marks_by_show()

rows(report \\ fn _line -> :ok end)

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?(details, marks)

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

section_of(row)

Which section a Watchlist row belongs to.

seen?(t)

series_marks()

unfinished_shows()