mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-12 09:13:23 +00:00
Gift-wrapped un-react: - NIP17Factory.createDeletionNIP17 wraps a NIP-09 deletion to explicit recipients + self-copy, so the retracted rumor id never reaches public relays; DeletionIndex keys by (id, pubkey) and rumor pubkeys are forced to the seal's, so wrapped deletions are authenticated on receive - Account.deletePrivately sends the wrapped deletion to the target rumor's participants (author + tagged users) - AccountViewModel.reactToOrDelete now partitions reactions: public ones get a public NIP-09, rumor reactions get a wrapped one — un-react on private notes and NIP-17 chats works instead of no-op Force-private zaps on private rumors: - AccountViewModel.zap forces ZapType.PRIVATE for empty-sig targets (NONZAP kept: no receipt at all is even more private) - ZapCustomDialog only offers Private/None for private targets - Zap button re-enabled on private rumors; nutzap (public kind 9321) is refused with an explanatory error and the onchain rail is hidden, as both would e-tag the rumor id publicly - Note: the LN provider's public 9735 receipt still carries the e-tag — the private zap type protects sender identity and comment, not the zapped id itself Also verified: ReactionEvent consume counts empty-sig rumors (wasVerified path) so wrapped reactions tally correctly. https://claude.ai/code/session_01B39MQmrT3dz137nfpXABvo