mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-10 08:27:04 +00:00
Receiving reactions/replies already worked (they decrypt via channelRumors and wire to their target Note by id). This adds the send side, which must NOT go through the generic public/NIP-17 reaction path — a plaintext kind-7 would e-tag the private rumor id onto public relays, and the NIP-17 path wraps to named recipients, not the channel plane. - ChannelChat.reaction/reply build kind-7/kind-9 rumors bound to channel+epoch (reaction e-tags the target; reply q-tags the parent) - ConcordActions.buildChannelReaction/buildChannelReply wrap them on the plane - Account.reactToConcordMessage + sendConcordChannelMessage(replyTo) publish the wrap with an instant local echo, factored through publishConcordWrap - AccountViewModel.reactToOrDelete intercepts Concord notes (detected by the ConcordChannel gatherer) and routes to the plane-wrapped reaction - ConcordChannelScreen wires onWantsToReply into the composer with a reply banner Zaps already route correctly: a Concord message is an unsigned rumor, so the existing isPrivateRumor() path forces a PRIVATE (NIP-57 encrypted) zap, same as NIP-17 DMs. A fully on-plane nutzap (no public receipt) remains a future upgrade. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CzJ2Cwo8tg4oZq43oRa3ig