aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-09-15 22:19:58 -0700
committerAdam Soltys <[email protected]>2026-09-15 22:19:58 -0700
commit12e069fc62bff8715de189aedc777b69d1e56377 (patch)
tree0fdabbc693c6b1c3ca04460960d49954d8b991a2
parentb58e3dc1eb2a578f1cae441d8bba9503bec94567 (diff)
downloadcoinosv3-12e069fc62bff8715de189aedc777b69d1e56377.tar.gz
coinosv3-12e069fc62bff8715de189aedc777b69d1e56377.zip
Community reactions carry the target author's p tag, as Concord specifies.
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 <[email protected]> Claude-Session: https://claude.ai/code/session_01JuwQqNWtDJcxPWtEm9134z
-rw-r--r--src/features/messages.js5
1 files changed, 4 insertions, 1 deletions
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);