Repository navigation
release: 0.0.39 — Windows runs the Linux build in WSL, no installer to sign #59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 1 commit
Commits
Show all changes
14 commits
Select commit
Hold shift + click to select a range
ade7916
feat(windows): WSL keepalive supervisor for the browser-GUI architecture
gitcommit90 441fd45
fix(windows): make keepalive install fail loudly and stop racing cold…
gitcommit90 23e852c
build(linux): ship a ready-to-run Linux release archive
gitcommit90 5441712
feat(linux): install and update from the ready-to-run release archive
gitcommit90 4eaf92d
feat(windows): install 1Helm on Windows with a PowerShell one-liner
gitcommit90 67d082e
fix(windows): make the Windows installer able to report success
gitcommit90 a5ac548
fix(windows): stop the unelevated installer calling DISM
gitcommit90 b384434
fix(site): stop requiring Windows release artifacts that no longer exist
gitcommit90 b2bd3ae
feat(windows): add uninstall.ps1 and rewrite Windows documentation
claude a68130c
build(site): add a reproducible 1helm.com deploy
gitcommit90 b52a73d
refactor(windows): retire the Electron/Squirrel Windows lane
gitcommit90 2838d47
docs(release): three release artifacts, Windows accepted by behaviour
gitcommit90 34e5f7f
release: 0.0.39
gitcommit90 f36b15d
chore: restamp index.html for the 0.0.39 bundle
gitcommit90 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
feat(windows): install 1Helm on Windows with a PowerShell one-liner
Windows no longer ships an application. `irm https://1helm.com/install.ps1 | iex` enables WSL 2, imports a digest-pinned Ubuntu root filesystem, runs the ordinary Linux installer inside it, and registers the keepalive. The browser is the interface at http://localhost:8123. Nothing is code-signed because nothing is an executable, so SmartScreen never appears - which matters because 1Helm has no Authenticode identity and was never going to obtain one. Only enabling the Windows optional features and installing Microsoft's WSL package cross the UAC boundary. Importing the distribution, running the Linux installer and registering the keepalive all stay in the signed-in user's session on purpose: WSL state is per-user, so a distribution imported by an elevated session started with over-the-shoulder credentials would belong to that administrator rather than the person at the machine. The restart Windows requires to activate those features is reported as a restart with numbered steps, never as a failure, and every step is idempotent so re-running the same command continues where it stopped. `-Wait` on an elevated ShellExecute is unreliable, so the parent blocks on the real process handle before reading the exit code. Microsoft's WSL package is checked against a pinned digest AND required to carry a valid Microsoft Corporation Authenticode signature; a digest alone only proves we fetched what we expected, not who built it. A port pre-flight refuses to continue when something already holds 8123. Every WSL distribution shares one network namespace with Windows, so a foreign listener would both prevent 1Helm binding and answer its health probe in its place. The keepalive payload moves to site/public/keepalive/ and is fetched from the same origin as the installer, so the two can never be mismatched. Obtaining it is fail-closed: without the keepalive, WSL tears the distribution down when idle and 1Helm silently stops answering, so a missing component aborts the install rather than warning. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Loading branch information
commit 4eaf92da7d33b5f9534adb53e0e7bb5edc2df125
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
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
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
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔒 Security & Privacy | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: gitcommit90/1Helm
Length of output: 3495
🏁 Script executed:
Repository: gitcommit90/1Helm
Length of output: 9394
🏁 Script executed:
Repository: gitcommit90/1Helm
Length of output: 4980
🏁 Script executed:
Repository: gitcommit90/1Helm
Length of output: 7979
Test
safeFiledirectly.fetchand the server’snew URL()both normalize/keepalive/../server.mjsto/server.mjs. Encoding only the slash avoids normalization, butsafeFilethen treats%2fas a literal character, so the 404 still does not test traversal rejection. Add a directsafeFiletest for../server.mjs, and retain an HTTP test for encoded-path handling.🤖 Prompt for AI Agents