#1083 — Merchant chat feature

Repo: Twill-AI/facade State: open | Status: open Assignee: nadddder, raymondehizoba

Created: 2026-03-02 · Updated: 2026-03-20

Description

Implement the Merchant Chat / Activity Log UI that works with the Facade APIs and WebSocket events.

Audience

  • Merchant view: Own messages and replies from staff.
  • Partner/Master/Rep view: Full internal feed with optional “send to Merchant” and tasking.

Acceptance criteria

Merchant view

  • Merchant can send a message (POST merchant-message); it appears immediately in the feed without refresh (WebSocket).
  • Merchant sees only their own messages and replies explicitly sent to them (no internal-only messages or internal metadata).
  • Replies show quoted context (parent message) when parent_activity_id is set.

Internal view (Partner/Master/Rep)

  • Internal users see all activities for the merchant (including internal-only messages and MERCHANT_MESSAGE_SENT).
  • New Merchant messages are highlighted as Needs attention until assigned and resolved (derive from assigned_to_id and resolved_at).
  • Assign control: assign a message to a user; assignee/avatar visible to all internal users.
  • Unassign and Mark complete (resolve); resolved state shows resolved_at / resolved_by.
  • When sending a message, optional Send to Merchant and optional Reply to (quote-reply) using parent_activity_id; UI shows quoted context for replies.

Real-time

  • Subscribe to WebSocket for partner / merchant topic.
  • On ActivityEvent, update the in-chat feed and, if applicable, in-app notifications.

Constraints

  • No Slack-style deep thre

Notes

Add implementation notes, blockers, and context here

Add wikilinks to related people, meetings, or other tickets