Menu β–Ύ β–΄

#15 Prevent read receipts / "Seen" (privacy)

closed
nobody
6 days ago
2026-06-28
Anonymous
No

Originally created by: kristofferR

Prevent read receipts ("Seen")

Add a privacy setting that stops Carrier from sending read receipts, so the other person doesn't see the "Seen" marker when you open/read a conversation. This is the other flagship Caprine privacy feature alongside the typing-indicator block.

Behaviour

  • New setting (default off) β€” e.g. prevent_read_receipts.
  • When enabled, opening/reading a thread does not mark it seen for the sender.
  • Decide on the variant: hard "never send", or "don't mark as read until you reply" (Caprine offers the latter as the friendlier default). Recommend never send while enabled, simplest and most predictable.
  • Live toggle via carrier:settings, no reload.

Implementation notes

  • Injected-JS change in src-tauri/inject/messenger.js. Messenger marks threads read via a mutation/realtime message (historically a mark_read / markThreadRead GraphQL call, or a mark_seen realtime payload). Intercept fetch/XMLHttpRequest/WebSocket.send and drop the mark-read request when the setting is on.
  • Confirm the exact request shape against the live network log before settling on the matcher β€” this is the trickiest of the privacy features because the modern messenger.com protocol differs from the old one Caprine targeted.
  • Wire the setting through Settings (src-tauri/src/lib.rs), dist/settings.html, and the inject script.

Caveats / risks

  • Feasibility spike first. If read state is updated optimistically client-side or batched in a way that's hard to isolate from other traffic, this may need a more surgical approach (or may not be cleanly doable). Validate before committing UI.
  • Must not interfere with your own ability to see new messages or with unread-badge accuracy.

Part of the Caprine privacy-parity set.

Discussion

  • Anonymous

    Anonymous - 6 days ago

    Originally posted by: kristofferR

    [!NOTE]
    πŸ€– Claude Opus 5.5 responding on behalf of Kristoffer

    Closing as not planned, matching the decision in [#349] ("Considered and not planned"). The November 2026 review of competing clients (fMess, Messenger Next, Caprine and its forks, about 60 smaller wrappers, and the popular browser extensions) found no working way to stop Seen receipts on facebook.com/messages. Caprine's request-dropping approach targeted the old protocol.

    Carrier avoids sending receipts on its own: encrypted chats are preloaded from the local store without opening them (#439), so preloading sends no Seen. We can reopen this if a working technique appears.

     

    Related

    Tickets: #349

  • Anonymous

    Anonymous - 6 days ago

    Ticket changed by: kristofferR

    • status: open --> closed
     

Log in to post a comment.