Problem
NIP-46 JSON-RPC messages between app and signer are encrypted. Older signers use NIP-04; newer signers (notably Primal's mobile signer) use NIP-44 and may reject NIP-04.
Zapcooking relies on `NDKNip46Signer` from `@nostr-dev-kit/ndk` to handle this. We don't currently have a documented test matrix confirming that NDK's NIP-46 implementation can pair and round-trip a signing request against:
- Amber (Android)
- Primal (iOS and Android)
- Any other signer a contributor brings
Without this, Primal-iOS users may silently fail to pair (or pair but fail to sign) and we won't know until a user files a bug.
Proposed test matrix
For each signer × each URI form (`bunker://`, `nostrconnect://`, scan QR), verify:
| Step |
Expected |
| Initial pairing |
Success within 60 s on local wifi |
| `get_public_key` returns |
User's actual npub (not the signer's own pubkey) |
| `sign_event` on a kind-1 note |
Signed event received back; publishable to a relay |
| `nip44_encrypt` / `nip44_decrypt` DM |
Roundtrips with a test peer |
| Reconnect after app restart |
Session restored from localStorage without re-pairing |
| Logout + re-pair with same signer |
Fresh pairing succeeds, no stale state |
Deliverables
- A written test log — matrix of signer × operation × result — stored in `docs/dev/NIP46_SIGNER_COMPAT.md` (new file) and updated as more signers are tested.
- If any NIP-44-only signer fails: a specific reproduction and the NDK version it fails against. Fix-or-upgrade decision then lives in a follow-up issue.
- If all pass: the doc becomes the supported-signer reference and we can confidently point users to it.
Out of scope
- Test automation. Manual testing is fine — NIP-46 signer apps live on real devices.
- Changes to the NIP-46 code. This is an investigation; any code changes fall out of what we find.
Problem
NIP-46 JSON-RPC messages between app and signer are encrypted. Older signers use NIP-04; newer signers (notably Primal's mobile signer) use NIP-44 and may reject NIP-04.
Zapcooking relies on `NDKNip46Signer` from `@nostr-dev-kit/ndk` to handle this. We don't currently have a documented test matrix confirming that NDK's NIP-46 implementation can pair and round-trip a signing request against:
Without this, Primal-iOS users may silently fail to pair (or pair but fail to sign) and we won't know until a user files a bug.
Proposed test matrix
For each signer × each URI form (`bunker://`, `nostrconnect://`, scan QR), verify:
Deliverables
Out of scope