Skip to content

feat: threaded replies UI — inline replies, grouped replies-to-replies, collapsed older replies #964

Description

@arturasmckwcz

Context

Threading UI for the Posts page rebuild, per the prototype proposal + amendment, corrected per final-approval feedback (2026-09-01, Round 3 on #969). Blocked on need4deed-org/be#927 (Reply entity + endpoints + SDK types) — do not stub this ahead of the contract, per shared-rules.md.

Scope

  • Reply uses the same bottom composer component as top-level posts (feat: Posts composer — free text, @mention (incl. @all), multi-opportunity picker, emoji picker #961) — clicking "Reply" switches it into reply mode, showing the target's author, timestamp, and original-message context. No separate inline reply fields.
  • Threads are collapsed by default. Expanding a thread shows all its replies as full cards (Round 3 point 2 — drops the earlier "newest reply full card / older replies compact preview" split from Round 1).
  • After sending a reply, the expanded thread stays open so the result can be reviewed; it collapses again on leaving the conversation, pressing Escape, or via "Hide replies".
  • Replies-to-replies appear directly beneath their parent reply, with a small indent + connector line, grouped within that same reply conversation — not unlimited recursive nesting (one level of grouping).
  • Reply count shown on the post = all responses in the conversation (direct replies + replies-to-replies).
  • Three-dot menu (edit/delete) and delete confirmation on replies too, matching post-level behavior (fe#963)

Acceptance criteria

  • Replying to a post or to a reply opens the shared bottom composer in reply mode, showing author/timestamp/original-message context
  • Threads are collapsed by default; expanding shows all replies as full cards (no compact-preview variant)
  • After sending a reply, the thread stays expanded until explicitly collapsed (leave conversation / Escape / "Hide replies")
  • Replies-to-replies render indented with a connector line beneath their parent reply, grouped in the same conversation
  • Reply count reflects the full conversation, not just direct replies
  • Edit/delete + confirmation work the same as for posts

Blocked on: need4deed-org/be#927
Part of Epic: #969 (see Round 3 corrections, 2026-09-01, points 1–5)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions