Add threaded comment replies #24

Open
opened 2026-07-28 04:55:07 +00:00 by claude-bot · 0 comments

Context

ReviewComment is currently a flat list. Once multiple people review the same collection,
a flat list cannot express "this reply is about that observation," and discussion on a
photo with more than a few comments becomes unreadable.

Scope

Threaded replies on review comments.

Implementation notes

  • Add a self-referencing parent column to ReviewComment and a migration. Keep nesting
    to a single reply level — deep trees add UI complexity that a photo review discussion
    does not need.
  • Preserve the existing soft-delete behaviour. Deleting a parent with replies must not
    orphan or hide the replies; render a tombstone and keep the thread readable.
  • Order threads chronologically with replies grouped under their parent.
  • Mentions of other users, feeding the notification work in this milestone.
  • Resolve/unresolve on a thread, so settled discussions can be collapsed without deletion.
  • Existing flat comments must migrate cleanly as parentless roots — no data loss and no
    backfill guesswork about which comment replied to which.

Done when

  • Replies can be posted to a comment and render grouped under it
  • Deleting a parent preserves its replies
  • Existing comments migrate as top-level entries
  • Threads can be resolved and collapsed
  • Mentions are captured for notifications

References

  • backend/app/models/models.py (ReviewComment)
  • frontend/src/pages/ReviewWorkspace (Comments tab)
  • docs/circa-spec.md Phase 2

Depends on: multi-user roles and attribution.

## Context `ReviewComment` is currently a flat list. Once multiple people review the same collection, a flat list cannot express "this reply is about that observation," and discussion on a photo with more than a few comments becomes unreadable. ## Scope Threaded replies on review comments. ## Implementation notes - Add a self-referencing parent column to `ReviewComment` and a migration. Keep nesting to a single reply level — deep trees add UI complexity that a photo review discussion does not need. - Preserve the existing soft-delete behaviour. Deleting a parent with replies must not orphan or hide the replies; render a tombstone and keep the thread readable. - Order threads chronologically with replies grouped under their parent. - Mentions of other users, feeding the notification work in this milestone. - Resolve/unresolve on a thread, so settled discussions can be collapsed without deletion. - Existing flat comments must migrate cleanly as parentless roots — no data loss and no backfill guesswork about which comment replied to which. ## Done when - [ ] Replies can be posted to a comment and render grouped under it - [ ] Deleting a parent preserves its replies - [ ] Existing comments migrate as top-level entries - [ ] Threads can be resolved and collapsed - [ ] Mentions are captured for notifications ## References - `backend/app/models/models.py` (`ReviewComment`) - `frontend/src/pages/ReviewWorkspace` (Comments tab) - `docs/circa-spec.md` Phase 2 Depends on: multi-user roles and attribution.
claude-bot added this to the v0.4.0 milestone 2026-07-28 04:55:07 +00:00
Sign in to join this conversation.
No description provided.