feat(open): freenet: handler support, shared vector test, uninstall.sh sync - #186
Merged
Merged
Conversation
…h sync freenet-core#5753 (merged 5bc43553) ships the freenet:// scheme handler (#5726). Follow-ups on the site: - /open's "Open in Freenet" button now emits the authority-less freenet:<id><rest>. In freenet://<id> the case-sensitive contract id is the URL host, which some desktops (Qt/KDE) lowercase before the handler sees it; the handler accepts both forms. The button stays secondary until a release carrying the handler has reached peers. - A CI check runs the page's own validation JS over the share-link vectors the freenet-core handler is also tested against (a copy, drift-checked daily and on change against freenet-core main), so the two sides cannot diverge silently. - Sync static/uninstall.sh with freenet-core main: removes the freenet:// handler's desktop entry and association (only Freenet's own), and brings in the macOS Launch-at-Login agent removal the mirror was missing. - Share Links manual page updated. Claude-Session: https://claude.ai/code/session_013fuenPkF3T7ZkeypDFSRmx
This was referenced Sep 28, 2026
Review of #186: the vector test checked the local and freenet: buttons but not try.freenet.org (a mutation pointing it elsewhere stayed green; now 20 failures). Two comments still described the freenet:// handler as future. Claude-Session: https://claude.ai/code/session_013fuenPkF3T7ZkeypDFSRmx
sanity
commented
Sep 28, 2026
sanity
left a comment
Contributor
Author
There was a problem hiding this comment.
Review: #186 (tier: Full, since it touches deploy/CI and an installer mirror)
Lenses: combined security + test-harness + deploy (Opus), big-picture, and Gemini. Gemini reported no findings. There were no Must findings.
- The test didn't check the try.freenet.org button (security lens). Fixed in
173ba06e: pointing that button elsewhere now fails 20 vectors. - Stale "future handler" comments (both lenses). Fixed.
- Nothing tracks swapping the button back to primary after the release (big-picture). Filed #188.
static/install.shis behind core (security lens; this predates the PR). Filed #187. It stays out of this PR on purpose, as an installer change that needs its own review.- Checked:
uninstall.shis byte-identical to freenet-core main (cmp).- The
freenet:prefix is a fixed literal, so no fragment can change the scheme. - The harness genuinely executes the page's script. Mutations fail it: reverting to
freenet://gives 20 failures, and removing any single validation rule gives 1-9.
[AI-assisted - Claude]
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.
Problem
freenet/freenet-core#5753 (merged as
5bc43553) ships thefreenet://scheme handler (freenet/freenet-core#5726). Three things on the site need to follow:freenet://<id>, which puts the case-sensitive contract id in the URL's host position. Some desktops lowercase hosts before the handler sees them (Qt'sQUrl, under KDE). About a quarter of lowercased ids still decode to a valid but different id. The handler refuses those, so those users just get an "invalid link" page.static/uninstall.shis stale. It doesn't remove the new handler registration, and it was already out of sync with freenet-core (it's missing the macOS Launch-at-Login agent removal).Approach
freenet:<id><rest>, which has no host to lowercase. The handler accepts both forms, so links already out there keep working. The button stays secondary until a release carrying the handler has reached peers; the notes in the markup and in the Share Links page say when to swap it.hugo-site/tests/open-link-vectors.test.mjsruns the page's actual<script>, with a stub DOM, overshare-link-vectors.json. The freenet-core handler's tests use the same vectors. The new workflow runs it on change, on push to main, and daily, and fails if the copy here differs from freenet-core main.static/uninstall.shis now byte-identical to freenet-core main.static/install.sh. It is also behind freenet-core: fix: restore SELinux file context after installing binaries, create user level service if using user level binary. freenet-core#4958, the SELinux fix, was never mirrored. Nothing in this change needs it, and it is a separate installer change that deserves its own review, so it isn't synced here.Testing
node hugo-site/tests/open-link-vectors.test.mjs: 57 vectors, 0 failures. Both mutations make it fail:freenet://gives 20 failures;static/uninstall.shis identical to freenet-core main. Its behaviour is tested in freenet-core byscripts/test-uninstall-sh.sh, including the new handler cases.Refs freenet/freenet-core#5726
[AI-assisted - Claude]
https://claude.ai/code/session_013fuenPkF3T7ZkeypDFSRmx