Add a claim

  1. 1. Channel
  2. 2. Identifier
  3. 3. Publish
  4. 4. Done
{#if step === "pick"}
{#each CHANNELS as c} {/each}
{/if} {#if step === "identifier" && selected}
{ e.preventDefault(); buildAndSign(); }} >
{#if selected.key === "nostr" && nip07Available} Reads your pubkey via NIP-07 — no copy/paste. {/if} {#if identifierInput.trim()}

Subject will be: {selected.toSubject(identifierInput)}

{/if}
{/if} {#if step === "publish" && envelope && selected}

1. Publish on {selected.label}

{selected.instructions(envelope.payload.subject)}

2. Copy this:

{#await renderArtifact(envelope, format)}
Computing…
{:then text}
{text}
{#if format === "compact"}

{text.length} chars · zstd-compressed signed envelope, base64url-encoded.

{/if} {:catch e}
Error: {e.message}
{/await}
{#if selected.key === "nostr" && nip07Available}

⚡ One-click publish via your nostr extension

Wraps the markdown block in a normal nostr post (kind 1), asks your extension to sign it, and broadcasts to the relay pool. Verifiers (web + Rust CLI) will pick it up automatically.

{#if nostrPublish.status === "ok"} ✓ Posted to {nostrPublish.result.ok.length} relay(s). view on njump.me {:else if nostrPublish.status === "error"} ✗ {nostrPublish.message} {/if}
{#if nostrPublish.status === "ok" && nostrPublish.result.failed.length > 0}

{nostrPublish.result.failed.length} relay(s) didn't ack: {nostrPublish.result.failed.map((f) => f.relay).join(", ")}

{/if}
{/if}
{/if} {#if step === "done" && envelope}

✓ Claim saved

You signed a claim for {envelope.payload.subject}. Once you've published the proof on that channel, come back to the Claims page and mark it published.

{#if sigchainSync.status === "pending"}

⏳ Updating your sigchain on the chain service…

{:else if sigchainSync.status === "ok"}

{#if sigchainSync.noop} ⛓ Already on your sigchain (seq {sigchainSync.seq}) — nothing to add. {:else} ⛓ Sigchain updated — added at seq {sigchainSync.seq} on the chain service. {/if}

{:else if sigchainSync.status === "error"}

⚠ Couldn't update your sigchain on the chain service: {sigchainSync.message}. The claim is saved locally — retry the sigchain sync from the Claims page.

{/if}
Back to claims
{/if}