parse_chapter_list previously returned Vec::new() on any selector miss. The empty list flowed into sync_manga_chapters, whose soft-drop branch then flipped every existing chapter's dropped_at to NOW(). Bookmarks subsequently pointed at dropped sources, and enqueue_bookmarked_pending (filters on cs.dropped_at IS NULL) silently stopped re-fetching pages. Same shape as the walker race fixed in 0.35.1: a transient parse miss masquerading as "source removed everything" → false soft-drop. Fix: require #chapter_table in the DOM. Present-but-empty is preserved as Ok(vec![]) so a freshly added manga with no published chapters still parses cleanly. Absent table is now Transient — the job system reschedules with backoff instead of treating the partial render as data. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1.6 KiB
1.6 KiB