feat(messenger): reactions, replies, typing, seen ticks + UX fixes #29

Merged
maaz519 merged 1 commits from feat/messenger-ux into goutamnextflow 2026-07-16 11:24:04 +00:00
Collaborator

Wire the IIOS kernel client's existing realtime affordances into the
Messenger UI and fix three display issues.

  • Bubble contrast: incoming bubbles used --panel-2, which equals --bg in
    the dark theme (both #060608) → invisible. Use --panel + a border.
  • DM title: mapped all participants (incl. self → unknown-id fallback),
    producing "User d10888, Maaz Ahmed". Now shows the counterpart only.
  • Live sidebar preview: lastMessage/time update on any inbound socket
    message, reconciled with a debounced conversation-list refetch.
  • Typing indicator: throttled typing() send + auto-expiring "typing…" line.
  • Read receipts: markRead() on open/new message; "Sent"/"Seen" under the
    last outgoing message. Receipt event carries no threadId, so it is a
    global stream filtered to my own messages by actor id.
  • Reactions: emoji picker on hover, chips with counts, live via annotation.
  • Reply/quote: parentInteractionId round-trips; quoted parent renders above
    the reply and in a composer quote bar.

Presence (online + last-seen) is intentionally not included — the kernel
has no presence receive-event yet; that needs an IIOS change + client release.

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com

Wire the IIOS kernel client's existing realtime affordances into the Messenger UI and fix three display issues. - Bubble contrast: incoming bubbles used --panel-2, which equals --bg in the dark theme (both #060608) → invisible. Use --panel + a border. - DM title: mapped all participants (incl. self → unknown-id fallback), producing "User d10888, Maaz Ahmed". Now shows the counterpart only. - Live sidebar preview: lastMessage/time update on any inbound socket message, reconciled with a debounced conversation-list refetch. - Typing indicator: throttled typing() send + auto-expiring "typing…" line. - Read receipts: markRead() on open/new message; "Sent"/"Seen" under the last outgoing message. Receipt event carries no threadId, so it is a global stream filtered to my own messages by actor id. - Reactions: emoji picker on hover, chips with counts, live via annotation. - Reply/quote: parentInteractionId round-trips; quoted parent renders above the reply and in a composer quote bar. Presence (online + last-seen) is intentionally not included — the kernel has no presence receive-event yet; that needs an IIOS change + client release. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
maaz519 added 1 commit 2026-07-16 11:23:47 +00:00
Wire the IIOS kernel client's existing realtime affordances into the
Messenger UI and fix three display issues.

- Bubble contrast: incoming bubbles used --panel-2, which equals --bg in
  the dark theme (both #060608) → invisible. Use --panel + a border.
- DM title: mapped all participants (incl. self → unknown-id fallback),
  producing "User d10888, Maaz Ahmed". Now shows the counterpart only.
- Live sidebar preview: lastMessage/time update on any inbound socket
  message, reconciled with a debounced conversation-list refetch.
- Typing indicator: throttled typing() send + auto-expiring "typing…" line.
- Read receipts: markRead() on open/new message; "Sent"/"Seen" under the
  last outgoing message. Receipt event carries no threadId, so it is a
  global stream filtered to my own messages by actor id.
- Reactions: emoji picker on hover, chips with counts, live via annotation.
- Reply/quote: parentInteractionId round-trips; quoted parent renders above
  the reply and in a composer quote bar.

Presence (online + last-seen) is intentionally not included — the kernel
has no presence receive-event yet; that needs an IIOS change + client release.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
maaz519 merged commit 4b50d682e6 into goutamnextflow 2026-07-16 11:24:04 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Goutam/lynkeduppro-crm#29