From 12e069fc62bff8715de189aedc777b69d1e56377 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 15 Sep 2026 22:19:58 -0700 Subject: Community reactions carry the target author's p tag, as Concord specifies. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A reaction sent from v3 never showed in Vector: its parser requires the NIP-25 p tag naming the reacted-to message's author (CORD examples §2.3 has e, p and k), and ours sent only e and k. Added. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01JuwQqNWtDJcxPWtEm9134z --- src/features/messages.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/features') diff --git a/src/features/messages.js b/src/features/messages.js index 429c8fc..e5646e9 100644 --- a/src/features/messages.js +++ b/src/features/messages.js @@ -1370,7 +1370,10 @@ export function messagesFeature(ctx) { const { created_at, ms } = msTags(Date.now()); const rumor = rumorWithId({ kind: 7, pubkey: id.pubkey, content: emoji, - tags: [['channel', chId], ['epoch', String(room.chEpoch(chId))], ['e', m.rumor.id], ['k', '9'], ...reactEmojiTags(emoji), ms], created_at, + // NIP-25 shape per CORD examples §2.3: e = the message, p = ITS AUTHOR, + // k = its kind. Vector refuses a reaction without the p tag, so ours + // never showed there until it was added. + tags: [['channel', chId], ['epoch', String(room.chEpoch(chId))], ['e', m.rumor.id], ['p', m.author], ['k', '9'], ...reactEmojiTags(emoji), ms], created_at, }); const r = room.reactions.get(m.rumor.id) || room.reactions.set(m.rumor.id, new Map()).get(m.rumor.id); const prev = r.get(id.pubkey); -- cgit v1.2.3