Skip to content

fix(ghostkey): link the vault, and stop warning it loses keys - #106

Open
sanity wants to merge 1 commit into
mainfrom
ghostkey-vault-link
Open

fix(ghostkey): link the vault, and stop warning it loses keys#106
sanity wants to merge 1 commit into
mainfrom
ghostkey-vault-link

Conversation

@sanity

@sanity sanity commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Two things, both spotted by @sanity noticing the vault isn't linked from anywhere.

The vault was reachable from nowhere

Its contract id appeared in exactly one place on the entire site — the import button's JavaScript. Meanwhile the prose names "the Ghostkey Vault" six times without ever linking it.

So the only way in was to complete a purchase and click Import. Anyone who already held Ghost Keys had no route at all, and anyone who closed that tab afterwards had no way back.

Adds a link on /ghostkey/ in the section already about storage and backup, and names the address on the success page. Both state plainly that it needs a Freenet node on the same computer and won't resolve otherwise — the address is the user's own machine, not a website, which isn't obvious from a link on a public site.

The pre-purchase warning was wrong

/ghostkey/create/ told people, in a blockquote immediately before paying:

The Ghostkey Vault you can import it into is still experimental and can currently lose keys (freenet/ghostkeys#3), so the backup is what protects you.

ghostkeys#3 is closed and fixed. That's inaccurate friction at the exact moment someone is deciding whether to spend money — telling them the thing they're buying might vanish.

My earlier staleness sweep missed it because I checked /ghostkey/_index.md and never opened the create page's own copy. Owning that: the sweep was less thorough than I reported it as.

Replaced with what's actually true and more useful — the key is created in the browser on the next page and signed once, that page is the only copy, and the donation cannot be reissued, so download or import before closing the tab. Same fact #102 warns about after payment, now stated before the money is spent.

Verification

Driven in a browser against a real build: link renders and points at the local node, the caveat is present, the stale claim is gone, the new warning explains the one-shot page, and the success page names the address. 6/6.

One check initially failed and was my error, not the page's — it grabbed .gk-cta-note with .last(), which picked the existing donate CTA rather than the vault one.

[AI-assisted - Claude]

**The vault was reachable from nowhere.** Its contract id appeared in
exactly one place on the whole site -- the import button's JavaScript --
while the prose named "the Ghostkey Vault" six times without ever linking
it. So the only route in was to complete a purchase and click Import, and
anyone who already had Ghost Keys had no route at all.

Adds a link on /ghostkey/ in the section already about storage, and names
the address on the success page. Both say plainly that it needs a Freenet
node on the same computer and will not resolve otherwise, since the
address is the user's own machine rather than a website.

**The pre-purchase warning was wrong.** /ghostkey/create/ told people,
immediately before paying, that the vault "can currently lose keys",
citing freenet/ghostkeys#3 -- which is closed and fixed. That is
inaccurate friction at the exact moment someone is deciding to spend
money, and my earlier staleness sweep missed it because I checked
/ghostkey/_index.md and not the create page's own copy.

Replaced with what is actually true and more useful: the key is created
in the browser on the next page and signed once, that page is the only
copy, and the donation cannot be reissued -- so download or import before
closing the tab. Same fact the success page now warns about (#102),
stated before the money is spent rather than after.

Verified in a browser against a real build: 6/6.
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.

1 participant