1
0
forked from GRIN/grim

macOS app icon = Goblin gradient; keep a contact's name across a decline

- The macOS bundle still shipped the old GRIM paw AppIcon.icns. Regenerated it
  from Goblin-Logo-Gradient-SMALLER.png (the yellow-gradient goblin mark) as a
  proper multi-resolution PNG-icns (16–512), so Finder/Dock show the Goblin icon.

- Declining (or cancelling) a request never re-resolved the counterparty, so
  their @name could drop to a bare npub just because the request didn't go
  through. handle_wrap now re-resolves the counterparty after a void — cheap,
  authoritative via the by-pubkey reverse lookup, and a no-op for anonymous keys.
This commit is contained in:
2ro
2026-06-16 22:15:43 -04:00
parent 919cfcb71e
commit 55b78b78ef
2 changed files with 5 additions and 0 deletions
Binary file not shown.
+5
View File
@@ -1235,6 +1235,11 @@ async fn handle_wrap(svc: &Arc<NostrService>, wallet: &Wallet, client: &Client,
// counterparty inside, so a stranger can't void someone else's request.
if let Some(void_slate_id) = protocol::extract_control(&rumor.tags) {
handle_request_void(svc, wallet, &void_slate_id, &sender_hex);
// A decline/cancel is still an interaction with a known counterparty —
// (re)resolve their @name so it never drops to a bare npub just because the
// request didn't go through. Cheap, authoritative (reverse lookup), and a
// no-op for anonymous keys.
svc.resolve_contact_identity(&sender_hex);
// Record the void keyed by (slate, sender) so a payment S1 that arrives
// AFTER its void (relays reorder; NIP-59 randomizes timestamps) is dropped.
// Binding to the sender stops a stranger pre-voiding someone else's slate.