From ffe3af1035d963d59624686a95feb3b69d14a393 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 18 Jun 2026 20:58:11 +0000 Subject: [PATCH] feat: index direct message content (NIP-17 ChatMessageEvent) ChatMessageEvent (kind 14) is the decrypted NIP-17 rumor; its content is the plaintext message. Index it so DMs are locally searchable, consistent with messaging-client search. Opt-in confirmed by the maintainer; private zaps (9733) remain excluded. Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01RFdWREvyvixRXnmNXNzmmN --- .../quartz/nip17Dm/messages/ChatMessageEvent.kt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip17Dm/messages/ChatMessageEvent.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip17Dm/messages/ChatMessageEvent.kt index 212096b6a8..5ab47f319b 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip17Dm/messages/ChatMessageEvent.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip17Dm/messages/ChatMessageEvent.kt @@ -30,6 +30,7 @@ import com.vitorpamplona.quartz.nip01Core.tags.people.PTag import com.vitorpamplona.quartz.nip01Core.tags.people.toPTag import com.vitorpamplona.quartz.nip17Dm.base.BaseDMGroupEvent import com.vitorpamplona.quartz.nip31Alts.alt +import com.vitorpamplona.quartz.nip50Search.SearchableEvent import com.vitorpamplona.quartz.utils.TimeUtils @Immutable @@ -40,7 +41,11 @@ class ChatMessageEvent( tags: Array>, content: String, sig: HexKey, -) : BaseDMGroupEvent(id, pubKey, createdAt, KIND, tags, content, sig) { +) : BaseDMGroupEvent(id, pubKey, createdAt, KIND, tags, content, sig), + SearchableEvent { + // content is the decrypted (plaintext) direct-message body. + override fun indexableContent() = content + fun replyTo() = tags.mapNotNull(ETag::parseId) companion object {