Skip to content

feat: add deeplink nostr identity binding flow#1648

Merged
kalvinnchau merged 2 commits into
mainfrom
kalvin/nostr-bind-deeplink
Jul 8, 2026
Merged

feat: add deeplink nostr identity binding flow#1648
kalvinnchau merged 2 commits into
mainfrom
kalvin/nostr-bind-deeplink

Conversation

@kalvinnchau

Copy link
Copy Markdown
Contributor

summary

adds a buzz://nostr-bind deeplink flow for one-time nostr identity binding.

  • parses and validates scoped binding links in the tauri backend
  • shows a consent dialog before signing
  • signs a buzz-owned custom event kind 24243
  • copies the signed event json to the clipboard for the requesting app
  • keeps the frontend payload typed and the signing command behind tauri ipc

screenshots

after opening the deeplink:
image

after agreeing and signing:
image

test plan

  • cargo test --manifest-path desktop/src-tauri/Cargo.toml nostr_bind
  • cargo test --manifest-path desktop/src-tauri/Cargo.toml nostr_identity
  • cd desktop && pnpm typecheck
  • pre-commit hooks passed

add a buzz://nostr-bind entrypoint that validates a scoped one-time challenge, shows a consent dialog, signs the response with the selected nostr identity, and copies the signed event json for the caller.

use a buzz-owned custom ephemeral event kind (24243) instead of nip-98. nip-98 is tied to http request authorization and requires u/method semantics, while this flow is an app-to-app identity binding proof with challenge_id, nonce, audience, action, protocol, origin, and expires_at tags.

keep the ipc boundary narrow: tauri parses and validates deeplink inputs, frontend only handles the typed payload, and signing stays behind a profile feature helper. restrict v1 to https origins, clipboard return mode, and the buzz-nostr-identity protocol so unsupported callbacks or protocol variants fail before signing.
@kalvinnchau kalvinnchau force-pushed the kalvin/nostr-bind-deeplink branch from f586254 to 9b67c0a Compare July 8, 2026 18:48
Co-authored-by: npub1703xjpnw9z6ngtz632j4c7x82ve3mx4wg3wqgegjktllz8syepes0hu37e <f3e269066e28b5342c5a8aa55c78c753331d9aae445c046512b2fff11e04c873@sprout-oss.stage.blox.sqprod.co>
Signed-off-by: npub1703xjpnw9z6ngtz632j4c7x82ve3mx4wg3wqgegjktllz8syepes0hu37e <f3e269066e28b5342c5a8aa55c78c753331d9aae445c046512b2fff11e04c873@sprout-oss.stage.blox.sqprod.co>
@kalvinnchau kalvinnchau merged commit cecd031 into main Jul 8, 2026
29 checks passed
@kalvinnchau kalvinnchau deleted the kalvin/nostr-bind-deeplink branch July 8, 2026 21:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants