bitchat/docs/CONVERSATION-NOTIFICATION-MUTE.md
Taksh 5cec60a97d feat: per-conversation notification mute for DMs and geohash channels
Muted conversations still receive and store messages; only local
notifications are suppressed. Panic wipe clears every preference.

DM mutes key on the peer fingerprint, with no routing-peer-ID fallback:
peer IDs rotate, so a mute keyed on one would silently stop applying
while the UI still showed the conversation muted. Until a handshake
yields a fingerprint the toggle is disabled instead.

The toggle, the notification lookup and the people-sheet badge all
resolve the fingerprint through stableConversationIdentity(for:), so the
key that gets written and the key that gets read cannot disagree.

Closes #1594
2026-08-11 21:13:37 +05:30

1.3 KiB

Per-conversation notification mute

Issue: #1594

Behavior

  • Direct conversations and geohash channels can be muted independently.
  • Mute affects local notifications only — messages still arrive, store, and show unread state.
  • DM mute keys are the peer fingerprint; geohash keys are the lowercase geohash.
  • There is deliberately no routing-peer-ID fallback for DMs: peer IDs rotate, so a mute keyed on one would silently stop applying. Until a handshake yields a fingerprint the toggle is disabled rather than writing a key that expires.
  • The toggle, the notification lookup, and the people-sheet badge all resolve the fingerprint through stableConversationIdentity(for:), so the key written and the key read cannot disagree.
  • Panic wipe clears all mute preferences (ConversationNotificationMuteStore.reset()).

UI

  • DM sheet header: bell / bell.slash toggle next to favorites.
  • Location channel header: same toggle beside bookmark and share.
  • Mesh people sheet: a bell.slash badge on rows whose direct conversation is muted, so the state is visible without opening the thread.

Implementation

ConversationNotificationMuteStore persists muted scope keys in UserDefaults. NotificationService consults the store before posting DM or geohash activity alerts.