MD Reader Open in MD Reader

Handoff — Group Feed becomes an EVENT feed (+ the return-after-the-win modal)


Product / feature change (one line)
The group feed stops being a chat: nobody types free text any more — the week posts events (medals, four week milestones, a joiner welcome, a try request, the goal-reached win), members react on them, and the only words they can send back are preset chips from a vocabulary the event itself loads, landing as a threaded reply under that event. Members also get a "Your updates" band + drawer collecting the reactions/replies their own events drew, and returning after a won week now opens a Group Win celebration modal on Home.

The single biggest integration consequence: on integration FeedCard subsumes the repo's celebration-card.tsx / system-card.tsx / group-win-card.tsx trio — those three stop being siblings and become three of one card's five faces, discriminated by a new server-side FeedEvent.type.


Component changes

New

Changed


Page changes

Registration

Motion

Shared helpers

Assets

None added — every asset the new components reference already existed (trophy.png, tier medals, icons/modal-close.svg, icons/avatar-*.svg, icons/lucide/{calendar-clock,calendar-plus,circle-check,flame,message-circle}.svg, game tiles).


Open questions for the dev

  1. FeedCard's repo binding is a proposed one. group-feed/feed-item.tsx exists, but this card is a superset of it plus celebration-card.tsx / system-card.tsx / group-win-card.tsx. Confirm you want the trio collapsed into one discriminated card before wiring — that's a repo-shape decision, not a markup one.
  2. Milestone events must be server-scheduled, not derived client-side. If the backend can't schedule posts, the four milestone states need a different contract (and would visibly rewrite themselves mid-week).
  3. The preset vocabulary is copy that changes often — confirm it ships as served data keyed by preset key, so postReply(eventId, presetKey) stays valid across copy edits.