Reader side: two Lifecycle buckets and a derived finished label on the flat Bookmark #160

Closed
opened 2026-08-22 12:37:39 +07:00 by sulthan · 1 comment
Owner

Part of #136.

Blocked by: #157.

What to build

The reader-facing half of the cutover. The flat Bookmark wire gains a derived finished bool; Readers see a read-only label on Series the owner has finished, in both userscripts and on the web card. The label is only a label: no tab, no filter, no reordering, no effect on the new-chapter accent. The userscripts finish dropping the third bucket.

Acceptance criteria

  • The flat Bookmark wire carries a derived finished bool (finished_at > 0) — a bool, never the timestamp, which is an operations fact.
  • A client PUT carrying finished: true or finished: false cannot change the Series' finished state: the Upsert's explicit column list stays without the column, the same mechanism that protects cover, and a store test locks it in — a stale cache from this morning cannot resume polling tonight.
  • The label renders as text through the text-setting helper in both userscripts and on the web card — never an HTML sink; it reuses the badge markup and the moss token.
  • No tab, no filter, no reordering, no interaction with the new-chapter accent; a Reader mid-way through a finished Series keeps it exactly where they left it.
  • The novel userscript's merge rank has two values; both userscripts' comments about the rejected value go with it, and the manga userscript's dead finished filters are removed.
  • The wire test asserts the flat Bookmark carries finished and a PUT round-trip preserves the Series' finished state.
  • Userscript logic tests cover the two-value merge rank and the label rendering as text.
Part of #136. Blocked by: #157. ## What to build The reader-facing half of the cutover. The flat Bookmark wire gains a derived finished bool; Readers see a read-only label on Series the owner has finished, in both userscripts and on the web card. The label is only a label: no tab, no filter, no reordering, no effect on the new-chapter accent. The userscripts finish dropping the third bucket. ## Acceptance criteria - [ ] The flat Bookmark wire carries a derived finished bool (`finished_at > 0`) — a bool, never the timestamp, which is an operations fact. - [ ] A client PUT carrying `finished: true` or `finished: false` cannot change the Series' finished state: the Upsert's explicit column list stays without the column, the same mechanism that protects cover, and a store test locks it in — a stale cache from this morning cannot resume polling tonight. - [ ] The label renders as text through the text-setting helper in both userscripts and on the web card — never an HTML sink; it reuses the badge markup and the moss token. - [ ] No tab, no filter, no reordering, no interaction with the new-chapter accent; a Reader mid-way through a finished Series keeps it exactly where they left it. - [ ] The novel userscript's merge rank has two values; both userscripts' comments about the rejected value go with it, and the manga userscript's dead finished filters are removed. - [ ] The wire test asserts the flat Bookmark carries finished and a PUT round-trip preserves the Series' finished state. - [ ] Userscript logic tests cover the two-value merge rank and the label rendering as text.
sulthan added the ready-for-agent label 2026-08-22 12:37:39 +07:00
sulthan self-assigned this 2026-08-22 16:58:40 +07:00
Author
Owner

Merged into spec-136. Flat Bookmark carries derived finished bool (protected by Upsert's column omission, locked in by a store test); web card + both userscripts render a text-only 'Finished' label via --moss; novel merge rank already two values, manga's dead finished filters already gone (#157). 595/595 backend tests, 69/69 userscript tests. Spec+standards review clean. Commit: ea7bb97.

Merged into spec-136. Flat Bookmark carries derived finished bool (protected by Upsert's column omission, locked in by a store test); web card + both userscripts render a text-only 'Finished' label via --moss; novel merge rank already two values, manga's dead finished filters already gone (#157). 595/595 backend tests, 69/69 userscript tests. Spec+standards review clean. Commit: ea7bb97.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sulthan/mangaBookmark#160