Conversation
The Ghost Key vault was linked only from low on /ghostkey/ and from the donation success page, both as raw localhost links that dead-end for anyone without a running peer. - /ghostkey/ hero: "Already have one? Open your vault". - /ghostkey/ vault button and the Apps page entry now go through /open, so a visitor without a peer gets "Get Freenet" instead of a dead link. The import button stays a direct localhost link: its fragment carries the signing key. - /open gains a LOCAL_ONLY list. For the vault it replaces "Use in your browser" with a note: try.freenet.org is for trying Freenet out, and a Ghost Key kept there lives on a peer we host. /ghostkey/ says the same. Tested, including a hashchange back to an ordinary id. - Success page no longer claims nothing else links to the vault. - Correct the stale IPv6-only comment in donation-success.js (freenet-core#4332 serves both loopbacks). Claude-Session: https://claude.ai/code/session_011kgp91jp3UiWjo5eHAQfyq
"Needs a Freenet release newer than 0.2.139" read as "0.2.139 or later": a 0.2.139 user clicked "Open in Freenet" and got "No apps available". The handler (freenet-core#5753) merged after 0.2.139 was cut, so no release has it yet. Claude-Session: https://claude.ai/code/session_011kgp91jp3UiWjo5eHAQfyq
No Freenet release registers freenet: links yet (freenet-core#5753 merged after 0.2.139 was cut), so the button only produced "no app can open this link". Hidden with display:none rather than removed, so the page JS still fills in its href and the shared-vector test still checks it; the comment above it says how to re-enable. Its note is reworded to be correct on the day it comes back. check-links: /open's fragment is a share link its JS reads, not an anchor, so links to /open/#<id>/ were reported as dead anchors. Exempt that one page (it must still exist), with self-test cases proving /open is exempt and other pages are not. Claude-Session: https://claude.ai/code/session_011kgp91jp3UiWjo5eHAQfyq
Review of #189: the exemption was checked only on the linked page, so an alias that redirects to /open would have had its share-link fragment flagged as a dead anchor. Check the redirect target as well; self-test case added (fails with the check removed). Claude-Session: https://claude.ai/code/session_011kgp91jp3UiWjo5eHAQfyq
Contributor
Author
|
Review (Light tier, independent Claude reviewers)
CI green at [AI-assisted - Claude] |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Ghost Key vault was only linked from low on
/ghostkey/and from the donation success page, both as rawlocalhost:7509links that dead-end for anyone without a running peer. The success page even said "nothing else links to it".Changes
/ghostkey/hero: "Already have one? Open your vault"./ghostkey/vault button and the Apps page Ghost Keys entry now go through/open/#<vault id>/, so a visitor without a peer gets "Get Freenet" instead of a dead link./opengains aLOCAL_ONLYlist (currently just the vault's web container id). For those ids, "Use in your browser" is replaced by a note: try.freenet.org is for trying Freenet out, and a Ghost Key kept there lives on a peer we host./ghostkey/now says the same, and the Share Links manual page documents the exception./openwould put a one-click "import on try.freenet.org" in front of the donor./open's "Open in Freenet" button is hidden until a release registersfreenet:links. No release does yet (freenet-core#5753 merged after 0.2.139 was cut), so it only produced "No apps available" for a 0.2.139 user. It isdisplay: nonerather than removed, so the JS still builds its href and the vector test still checks it; the comment above it says how to re-enable. Managed installs self-register the handler at node start once a release carries it.scripts/check-links.py:/open's fragment is a share link, not an anchor, so/open/#<id>/links were flagged as dead anchors (the first CI run failed on exactly that)./open/is now exempt (the page must still exist), with self-test cases showing/openis exempt and other pages are not; emptying the exemption makes the self-test fail.donation-success.jsclaiming the node serves only the IPv6 loopback (freenet-core#4332 serves both).Verification
node hugo-site/tests/open-link-vectors.test.mjs: 57 shared vectors plus new local-only cases (vault hides the try option and shows the note; a hashchange back to an ordinary id restores the button). Removing the vault entry makes the new cases fail (2 failures), so the check can go red.hugobuild is clean. Checked in Chromium: clicked "Open your vault" from/ghostkey/, and/openshowed no try button and showed the note; a hashchange to another id brought the button back. Screenshots checked in light and dark mode and at 390px width.Caveat:
LOCAL_ONLYis keyed by the vault's contract id, so a ghostkeys re-key must update it, along with the other hard-coded copies of that id on this site.[AI-assisted - Claude]
https://claude.ai/code/session_011kgp91jp3UiWjo5eHAQfyq