diff --git a/bitchat/ViewModels/ChatViewModel.swift b/bitchat/ViewModels/ChatViewModel.swift index 6716b205..ee40fe41 100644 --- a/bitchat/ViewModels/ChatViewModel.swift +++ b/bitchat/ViewModels/ChatViewModel.swift @@ -5133,8 +5133,9 @@ final class ChatViewModel: ObservableObject, BitchatDelegate { // Classify origin: geochat if senderPeerID starts with 'nostr:', else mesh (or system) let isGeo = finalMessage.senderPeerID?.isGeoChat == true - // Apply spam filter (per-sender and per-content rate limits) - if !spamFilter.shouldAllow( + // Apply spam filter ONLY to geohash messages (internet spam risk) + // Mesh messages are from local trusted peers via Bluetooth - no spam filtering needed + if isGeo && !spamFilter.shouldAllow( message: finalMessage, nostrKeyMapping: nostrKeyMapping, getNoiseKeyForShortID: { [weak self] shortID in