mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-10 08:27:04 +00:00
Unsealed NIP-59 rumors (private replies/posts arriving in gift wraps from other clients) were indexed as ordinary notes: public reactions, reposts, edits, pins, OTS timestamps, labels, public bookmarks, and deletion requests could all e-tag the private rumor id onto public relays. - Note.isPrivateRumor(): empty-signature discriminator (rumors are the only notes materialized with an empty sig; draft inners are never indexed as standalone notes) - ReactionAction: reactions inherit the target's privacy — empty-sig targets get gift-wrapped kind-7s fanned to the rumor author, every tagged user, and the sender's self-copy (add-only; un-react would need a public NIP-09 deletion that leaks the rumor id) - AccountViewModel.reactToOrDelete: never NIP-09-delete rumor reactions (also fixes the same leak for existing NIP-17 chat reactions), tracked-broadcast mode excluded for rumor targets - ReactionsRow: hide reply/boost/zap on private rumors (each publishes a public e-tag of the target); like stays, now wrapped - DropDownMenu/NoteQuickActionMenu: hide broadcast, edit, timestamp, pin, hashtag label, public bookmarks, deletion request for rumors; private bookmarks and block/report stay available - Lock badge in the note header (reuses existing Lock glyph, no font regen needed) Covered by ReactionActionTest (public vs rumor fan-out, jvmTest green). Plan: commons/plans/2026-06-10-private-replies-reactions-posts.md https://claude.ai/code/session_01B39MQmrT3dz137nfpXABvo