ae0f36d287
Web "Open in Goblin" pay buttons fired generic nostr: URIs, which the OS routed to whatever social client claims nostr:. Register a dedicated goblin: scheme and route it (plus nostr: pay URIs) to the prefilled send-review screen, the same destination as scanning a checkout QR. Parser (payuri): accept goblin: alongside nostr: (same payload, either scheme); add is_pay_uri() to tell a payment link from a slatepack. Runtime: an argv/intent/socket payload that is a pay URI is stashed and opened by the Goblin surface via SendFlow::from_deeplink, which shares the exact apply_scan path the camera uses. Desktop cold + warm start (argv + single-instance socket) and Android cold + warm (intent-filter) covered. Registration: Linux .desktop x-scheme-handler/goblin, Android goblin intent-filter, macOS CFBundleURLTypes, Windows WiX HKCR URL protocol.