diff --git a/package.json b/package.json
index fba59e7..0226bfd 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "nostr_quantum_preparation",
- "version": "0.0.35",
+ "version": "0.0.36",
"description": "A migration strategy for bringing post-quantum security to Nostr without breaking the social graph, without requiring consensus on a single post-quantum algorithm, and without forcing existing users to abandon their identities.",
"main": "index.js",
"scripts": {
diff --git a/www/index.html b/www/index.html
index 642af9d..52b78d4 100644
--- a/www/index.html
+++ b/www/index.html
@@ -549,9 +549,6 @@
-
-
-
Relays to publish to:
diff --git a/www/js/index-app.mjs b/www/js/index-app.mjs
index ddd29d0..710f7b8 100644
--- a/www/js/index-app.mjs
+++ b/www/js/index-app.mjs
@@ -1050,16 +1050,6 @@
if (e.key === 'Enter') { e.preventDefault(); document.getElementById('pqRelayAddBtn').click(); }
});
- // Copy Proof Carrier Event button
- document.getElementById('pqCopyProofCarrierBtn').addEventListener('click', () => {
- if (!pqEvent) return;
- navigator.clipboard.writeText(JSON.stringify(pqEvent, null, 2)).then(() => {
- const btn = document.getElementById('pqCopyProofCarrierBtn');
- btn.textContent = 'Copied!';
- setTimeout(() => { btn.textContent = 'Copy Proof Carrier Event'; }, 2000);
- });
- });
-
// Sign out button
const pqSignOutBtn = document.getElementById('pqSignOutBtn');
pqSignOutBtn.addEventListener('click', async () => {
diff --git a/www/js/pq-crypto.mjs b/www/js/pq-crypto.mjs
index e63179f..554f8f7 100644
--- a/www/js/pq-crypto.mjs
+++ b/www/js/pq-crypto.mjs
@@ -638,7 +638,8 @@ Post-quantum public keys in tags:
Each post-quantum key has cryptographically signed this attestation. This event is pending timestamp on the Bitcoin blockchain via OpenTimestamps.
-Verify this attestation: https://laantungir.net/quantum-prep/verify.html
+Verify this attestation: https://laantungir.net/quantum-prep/verify.html?npub=${npub}
+
Created at: https://laantungir.net/quantum-prep/`;
const statementBytes = new TextEncoder().encode(content);
diff --git a/www/js/verify-app.mjs b/www/js/verify-app.mjs
index 5b12c60..3c66840 100644
--- a/www/js/verify-app.mjs
+++ b/www/js/verify-app.mjs
@@ -49,7 +49,6 @@
const resultsWrap = document.getElementById('pqResultsWrap');
const resultList = document.getElementById('pqResultList');
const eventJsonWrap = document.getElementById('pqEventJsonWrap');
- const downloadEventBtn = document.getElementById('pqDownloadEventBtn');
const eventJsonEl = document.getElementById('pqEventJson');
const otsBadge = document.getElementById('pqOtsBadge');
const otsUpgradeWrap = document.getElementById('pqOtsUpgradeWrap');
@@ -496,22 +495,6 @@
});
}
- /* ================================================================
- DOWNLOAD EVENT JSON
- ================================================================ */
- downloadEventBtn.addEventListener('click', () => {
- if (!currentEvent) return;
- const blob = new Blob([JSON.stringify(currentEvent, null, 2)], { type: 'application/json' });
- const url = URL.createObjectURL(blob);
- const a = document.createElement('a');
- a.href = url;
- a.download = (currentEvent.id ? currentEvent.id.substring(0, 16) : 'event') + '.json';
- document.body.appendChild(a);
- a.click();
- document.body.removeChild(a);
- URL.revokeObjectURL(url);
- });
-
/* ================================================================
OTS UPGRADE (from verify page)
================================================================ */
@@ -750,12 +733,30 @@
});
/* ================================================================
- AUTO-DETECT SIGNED-IN USER
- On page load, check for a NIP-07 signer / nostr-login-lite. If the
- user is already signed in, pre-fill the pubkey field and auto-query
- relays for their kind 9999 event.
+ URL ?npub= PARAMETER + AUTO-DETECT SIGNED-IN USER
+ On page load, first check for a ?npub= query parameter (used by the
+ "Verify this attestation" link in the kind 1 event). If present,
+ pre-fill the pubkey field and auto-query relays for that pubkey's
+ kind 9999 event. Otherwise, fall back to detecting a NIP-07 signer /
+ nostr-login-lite session and auto-query for the signed-in user.
================================================================ */
async function initAutoDetect() {
+ // 1. Check for ?npub= (or ?pubkey=) URL parameter first
+ const params = new URLSearchParams(window.location.search);
+ const npubParam = params.get('npub') || params.get('pubkey');
+ if (npubParam) {
+ const pubkeyHex = normalizePubkey(npubParam);
+ if (pubkeyHex) {
+ console.log('[verify] URL parameter pubkey:', pubkeyHex);
+ const pubkeyInput = document.getElementById('pqPubkeyInput');
+ const npub = hexToNpub(pubkeyHex);
+ pubkeyInput.value = npub || pubkeyHex;
+ queryBtn.click();
+ return;
+ }
+ }
+
+ // 2. Fall back to signed-in user detection
if (window.NOSTR_LOGIN_LITE) {
try {
await initNostrLoginLite();
diff --git a/www/js/version.json b/www/js/version.json
index f6ea5d0..535ba4f 100644
--- a/www/js/version.json
+++ b/www/js/version.json
@@ -1,5 +1,5 @@
{
- "VERSION": "v0.0.35",
- "VERSION_NUMBER": "0.0.35",
- "BUILD_DATE": "2026-07-27T17:03:35.968Z"
+ "VERSION": "v0.0.36",
+ "VERSION_NUMBER": "0.0.36",
+ "BUILD_DATE": "2026-07-27T20:31:02.763Z"
}
diff --git a/www/pq-crypto.bundle.js b/www/pq-crypto.bundle.js
index ed172be..0afe58f 100644
--- a/www/pq-crypto.bundle.js
+++ b/www/pq-crypto.bundle.js
@@ -9929,7 +9929,8 @@ Post-quantum public keys in tags:
Each post-quantum key has cryptographically signed this attestation. This event is pending timestamp on the Bitcoin blockchain via OpenTimestamps.
-Verify this attestation: https://laantungir.net/quantum-prep/verify.html
+Verify this attestation: https://laantungir.net/quantum-prep/verify.html?npub=${npub}
+
Created at: https://laantungir.net/quantum-prep/`;
const statementBytes = new TextEncoder().encode(content);
const mlDsa44Sig = signWithMLDSA44(statementBytes, pqKeys.mlDsa44.secretKey);
diff --git a/www/verify.html b/www/verify.html
index 6d45493..0e88290 100644
--- a/www/verify.html
+++ b/www/verify.html
@@ -326,9 +326,6 @@