diff --git a/admin/index.html b/admin/index.html index 650a8fe..fa0705e 100644 --- a/admin/index.html +++ b/admin/index.html @@ -85,7 +85,6 @@ 📚 Docs 🧭 Theseus 🪪 Register - Pantheon 🛠 Admin 🔑 Sign in @@ -303,6 +302,6 @@ $("mint-btn").addEventListener("click", async () => { } }); - + diff --git a/brand/index.html b/brand/index.html index 3a9f3da..cae082f 100644 --- a/brand/index.html +++ b/brand/index.html @@ -222,6 +222,6 @@ silentmode.st - + diff --git a/docs/index.html b/docs/index.html index a130f47..a5c117b 100644 --- a/docs/index.html +++ b/docs/index.html @@ -429,6 +429,6 @@ process.exit(0);" register a name - + diff --git a/index.html b/index.html index 01e9ff0..ea9d910 100644 --- a/index.html +++ b/index.html @@ -96,7 +96,6 @@ 📚 Docs 🧭 Theseus 🪪 Register - Pantheon Roadmap 🎨 Brand Silent Mode ↗ @@ -108,15 +107,37 @@

Names on the chain.

Sirius.X is the entry point for BCNR — Bitcoin Cash Name Registry. Register a top-level domain, register a name under one, look up records, - verify anything against the chain. Backed by Sia storage, mirrored on the - operator's VPS, name published on chain — this page survives if any single - mirror goes down.

-
- Get started - Read the docs + verify anything against the chain.

+ + +

One search checks the label across every TLD in the registry. Available names appear first.

+ +
+ Or browse what you can do → + Read the docs
+ +
@@ -312,6 +333,6 @@ process.exit(0);" Alpha on a test network (chipnet). You hold your own keys; verify everything against the chain. - + diff --git a/js/profile-menu.js b/js/profile-menu.js index 4c9c368..8d4af6d 100644 --- a/js/profile-menu.js +++ b/js/profile-menu.js @@ -9,12 +9,26 @@ (() => { const NS = "silentmode.st"; - const PORTAL_URL = "/sirius-x/portal.html"; // Find the .portal anchor already in the nav (the "Sign in" pill). const anchor = document.querySelector(".topnav a.portal"); if (!anchor) return; // page has no nav-portal button; nothing to do + // Reuse the anchor's own href as the base for the dropdown links. The nav + // sets it to the right relative path per page (./portal.html at root, + // ../portal.html in subdirs). An absolute /sirius-x/portal.html would + // break under the BCNR route (sirius.x/) — the origin is different, so + // the gateway hits Sia with a key that does not exist and returns + // NoSuchKey. Deriving from the anchor keeps every context correct. + const PORTAL_URL = anchor.getAttribute("href") || "./portal.html"; + // Admin lives one directory up-or-over relative to the same root — same + // trick: replace the portal.html basename with admin/ on the resolved + // portal path. If the anchor is a hash or empty for some reason, fall + // back to a same-directory link. + const ADMIN_URL = PORTAL_URL.includes("portal.html") + ? PORTAL_URL.replace(/portal\.html.*$/, "admin/") + : "./admin/"; + // Read profile state — portal.html sets this after successful sign-in with // { address, tokenAddress, signedInAt }; clears on sign-out. The read has to // run every time the button label refreshes or the menu opens, because @@ -50,7 +64,7 @@ ${escapeAttr(profile.address)}
📋 My names - 🛠 Admin + 🛠 Admin
🚪 Sign out `; diff --git a/portal.html b/portal.html index 1d39136..a243bb8 100644 --- a/portal.html +++ b/portal.html @@ -787,8 +787,18 @@ $("tld-submit").addEventListener("click", async () => { setTimeout(() => loadNames(), 2500); } catch (e) { msg.style.color = "var(--taken)"; - msg.textContent = "Failed: " + (e.message || e); - push("error: " + (e.message || e)); + const raw = String(e.message || e); + // The most common failure by far: wallet has no chipnet coins. Turn the + // opaque error into a nudge toward a faucet. + if (/wallet is empty/i.test(raw)) { + msg.innerHTML = `Failed: wallet is empty. Fund ${esc(wallet.address)} + with chipnet coins first — free from + tbch.googol.cash or + chipnet.bch.ninja/faucet.`; + } else { + msg.textContent = "Failed: " + raw; + } + push("error: " + raw); $("tld-submit").disabled = false; updateTldPrice(); // reset button label } finally { @@ -798,6 +808,6 @@ $("tld-submit").addEventListener("click", async () => { // Initial paint on page load so the card shows the price even before sign-in. updateTldPrice(); - + diff --git a/register.html b/register.html index 96b9eee..a238950 100644 --- a/register.html +++ b/register.html @@ -410,6 +410,20 @@ async function check() { $("q").addEventListener("input", () => { clearTimeout(timer); timer = setTimeout(check, 350); }); $("q").addEventListener("keydown", (e) => { if (e.key === "Enter") { clearTimeout(timer); check(); } }); +// ---------- ?q= deep-link ---------- +// The landing page has a search box that submits to register.html?q=