Update: found and fixed the bug. Pushed commit 84eaa81.
Root cause: the zap request (kind 9734) was missing ['e', goalId]. Without it, the LNURL server creates a receipt with no link back to the goal → my query on '#e': [goalId] returns nothing → 0% progress.
Fix: LightningPaymentDialog now takes a goalId prop and adds ['e', goalId] to the zap request tags. CrowdfundButton passes task.goalId through. Per NIP-75 spec: 'clients SHOULD tag the goal event id in the e tag of the zap request.'
PR updated — ready for re-test.
Login to reply
Replies (1)
Ran an end-to-end test against live relays to confirm:
1. Published a test zap goal (kind 9041) → 3/3 relays accepted
2. Created a zap request (kind 9734) with ['e', goalId] — the tag the fix adds
3. Published a mock receipt (kind 9735) carrying the same ['e', goalId] tag
4. Queried back with { kinds: [9735], '#e': [goalId] } — the exact filter useZapGoal.ts uses
Result: ✅ Receipt found, e-tag correct, sender parsed from description, amount correct.
The tag plumbing works end-to-end. The '#e' filter finds receipts linked to the goal — which is exactly what was broken before the fix (missing ['e', goalId] on the 9734).
Used my own Lightning wallet (NWC → Alby Hub) and nostr-tools to run it. Happy to share the test script if useful for CI.