mirror of
https://github.com/storytold/wordcraft.git
synced 2026-10-29 21:07:24 -06:00
review.deleteComment removed anchors from the body only, so a comment anchored in a header, footer, note or text box left its CommentStart and CommentEnd behind, pointing at a deleted definition. It also collected only direct replies, so a reply to a reply survived with its parent gone. Anchors are now removed from every story, and the deleted set is the whole thread below the comment. The thread is collected from a parent-to-replies map built once, with a seen set, so a parent cycle from a hostile file ends and a long reply chain doesn't take quadratic time. Undo restores everything. Regression tests: a header comment (anchors checked in the header story), a three-level reply chain (with its text parts and Undo), a parent cycle, and a 50,000-reply chain. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: Brandon Thomas <echelon@gmail.com>