feat/read-receipts #8

Merged
nrupard merged 14 commits from feat/read-receipts into main 2026-04-13 20:43:22 +02:00
Owner
No description provided.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
broadcast_to_room only reaches WS subscribers of that room. DM recipients
who haven't opened the thread are not subscribed, so their sidebar never
saw new DMs. Also broadcast NewMessage directly to each non-sender member.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The server broadcasts DmRead to the whole room, so the sender received
their own mark-read back and overwrote peer_last_read_id with their own
read position (which points at a peer message id). The "Seen" label
then jumped to a stale older own-message, or disappeared if no own
message fell ≤ that id. Filter on user_id != me.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously peer read state was copied from the server_future into a
signal via use_effect, then rendered from the signal. On refresh the
effect's set-signal path left a window where the render saw None and
no Seen appeared until a WS DmRead arrived (e.g. after sending a new
message). Read peer_state directly at render, with WS updates tracked
in an override signal that wins when present.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
nrupard changed title from WIP: feat/read-receipts to feat/read-receipts 2026-04-13 20:43:18 +02:00
nrupard deleted branch feat/read-receipts 2026-04-13 20:43:22 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/lets-chat!8
No description provided.