Skip to content

feat: add 0install as an installation method on the downloads page - #9026

Merged
avivkeller merged 1 commit into
nodejs:mainfrom
bastianeicher:feat/add-zeroinstall-package-manager
Oct 10, 2026
Merged

avivkeller merged 1 commit into
nodejs:mainfrom
bastianeicher:feat/add-zeroinstall-package-manager

Conversation

@bastianeicher

@bastianeicher bastianeicher commented Jul 28, 2026 •

Copy link
Copy Markdown
Contributor

Description

0install is a cross-platform decentralized package manager. Applications are packaged as "feeds": XML files listing available versions, where to download them, and how to extract and execute them. The 0install project maintains a feed for Node.js: https://apps.0install.net/javascript/node.xml

This adds 0install alongside the other community installation methods such as asdf and Chocolatey.

Validation

nodejs_0install

Check List

  • I have read the Contributing Guidelines and made commit messages that follow the guideline.
  • I have run pnpm format to ensure the code follows the style guide.
  • I have run pnpm test to check if all tests are passing.
  • I have run pnpm build to check if the website builds without errors.
  • I've covered new added functionality with unit tests if necessary.

@bastianeicher
bastianeicher requested a review from a team as a code owner July 28, 2026 11:13
Copilot AI lite review requested due to automatic review settings July 28, 2026 11:13
@vercel

vercel Bot commented Jul 28, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
nodejs-org Ready Ready Preview Oct 10, 2026 4:18pm UTC

Request Review

@cursor

cursor Bot commented Jul 28, 2026 •

Copy link
Copy Markdown

PR Summary

Low Risk
Download-page content and types only; no auth, runtime Node changes, or official installer logic.

Overview
Adds 0install as a community install option on the Node.js download page, alongside tools like asdf and Chocolatey.

Users on Windows, macOS, and Linux can pick it from the install-method dropdown and get OS-specific copy-paste commands: install 0install (winget vs curl script), wire up node / npm / npx from the official 0install Node feed (with pinned version on Unix), and set npm global prefix plus PATH. Wiring includes a new ZEROINSTALL install-method type, an entry in download constants, English platform blurb, a ZeroInstall SVG icon in the design system, and the zeroinstall.bash snippet consumed by the existing snippet loader.

Reviewed by Cursor Bugbot for commit 0eaaf0a. Bugbot is set up for automated code reviews on this repo. Configure here.

Comment thread apps/site/snippets/en/download/zeroinstall.bash Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds 0install as a community installation method on the Downloads page, including a new UI icon and snippet logic to support installing pnpm via 0install’s feed instead of Corepack.

Changes:

  • Added a new ZeroInstall installation-method icon and exported it through the UI icon index (plus Storybook coverage).
  • Added ZEROINSTALL to the downloads install-method constants and the InstallationMethod type union.
  • Introduced a new 0install download snippet and adjusted snippet processing to skip Corepack installation when using ZEROINSTALL + PNPM; updated the English pnpm snippet accordingly.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
packages/ui-components/src/Icons/InstallationMethod/ZeroInstall.tsx Adds the 0install SVG icon component.
packages/ui-components/src/Icons/InstallationMethod/index.ts Exports the new ZeroInstall icon.
packages/ui-components/design/platform-logos.stories.tsx Displays the new icon in the design Storybook.
packages/i18n/src/locales/en.json Adds English platform info text for 0install.
apps/site/util/download/constants.json Registers ZEROINSTALL as a new install method (name/icon/url/info).
apps/site/types/release.ts Extends the InstallationMethod union with ZEROINSTALL.
apps/site/snippets/en/download/zeroinstall.bash Adds the English 0install installation snippet.
apps/site/snippets/en/download/pnpm.bash Uses 0install feed for pnpm when installMethod === 'ZEROINSTALL'.
apps/site/components/Downloads/Release/ReleaseCodeBox.tsx Skips Corepack-install snippet when using ZEROINSTALL + PNPM.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/ui-components/src/Icons/InstallationMethod/ZeroInstall.tsx Outdated
Comment thread apps/site/snippets/en/download/zeroinstall.bash Outdated
Comment thread apps/site/snippets/en/download/pnpm.bash Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 9 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

apps/site/snippets/en/download/zeroinstall.bash:7

  • 0install add does not support a --version flag (per 0install CLI docs, version constraints are handled via 0install select --version=... / selections). As written, these commands will likely fail with an unknown option error, breaking the generated download snippet for 0install.

If you don't intend to pin an exact version here, remove the --version templating from the add commands (or switch to the documented 0install select flow if pinning is required).

0install add node https://apps.0install.net/javascript/node.xml${props.os === 'WIN' ? '' : ' --version=' + props.release.version}
0install add npm https://apps.0install.net/javascript/node.xml --command=npm${props.os === 'WIN' ? '' : ' --version=' + props.release.version}
0install add npx https://apps.0install.net/javascript/node.xml --command=npx${props.os === 'WIN' ? '' : ' --version=' + props.release.version}

Copilot AI review requested due to automatic review settings July 28, 2026 11:56
@github-actions

Copy link
Copy Markdown
Contributor

Note

Your Pull Request seems to be updating Translations of the Node.js Website.

Whilst we appreciate your intent; Any Translation update should be done through our Crowdin Project.
We recommend giving a read on our Translation Guidelines.

Thank you!

Comment thread apps/site/snippets/en/download/zeroinstall.bash Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 23 out of 23 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

packages/ui-components/src/Icons/InstallationMethod/ZeroInstall.tsx:9

  • This new SVG icon component omits default width/height attributes on the root <svg>, unlike the other InstallationMethod icons in this folder (they default to 32×32). Without explicit sizing props, the browser default (300×150) can cause inconsistent rendering in consumers.
  <svg
    xmlns="http://www.w3.org/2000/svg"
    xmlnsXlink="http://www.w3.org/1999/xlink"
    viewBox="0 0 68 68"
    {...props}
  >

Comment thread apps/site/snippets/en/download/zeroinstall.bash Outdated
@MikeMcC399

This comment was marked as outdated.

@avivkeller

Copy link
Copy Markdown
Member

Please only update the english site

@avivkeller

Copy link
Copy Markdown
Member
  • Version Support: Must support all currently supported, non-End-of-Life (EOL) Node.js versions.
  • OS Compatibility: Must function on at least one officially supported Operating System (OS).
  • Free and Open Source: Must be free to use and open source, must not be sold as a commercial product, and must not be a paid service.

Comment thread apps/site/snippets/es/download/pnpm.bash Outdated
Copilot AI review requested due to automatic review settings July 28, 2026 15:53
@bastianeicher
bastianeicher force-pushed the feat/add-zeroinstall-package-manager branch from 3ff16a6 to 0f5fa0b Compare July 28, 2026 15:53
Comment thread apps/site/components/Downloads/Release/ReleaseCodeBox.tsx Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Comments suppressed due to low confidence (1)

apps/site/snippets/en/download/zeroinstall.bash:6

  • These 0install add commands use --command=... for npm/npx. The published 0install man pages and user guide for add document the form 0install add NAME URI and do not list --command as a supported option for add, which makes this snippet likely to fail for users on some 0install versions/platforms.
0install add node https://apps.0install.net/javascript/node.xml${props.os === 'WIN' ? '' : ' --version=' + props.release.version}
0install add npm https://apps.0install.net/javascript/node.xml --command=npm${props.os === 'WIN' ? '' : ' --version=' + props.release.version}
0install add npx https://apps.0install.net/javascript/node.xml --command=npx${props.os === 'WIN' ? '' : ' --version=' + props.release.version}

Comment thread apps/site/components/Downloads/Release/ReleaseCodeBox.tsx Outdated
Copilot AI review requested due to automatic review settings July 28, 2026 16:45
@bastianeicher
bastianeicher force-pushed the feat/add-zeroinstall-package-manager branch from 0f5fa0b to 732e67f Compare July 28, 2026 16:45
@bastianeicher

Copy link
Copy Markdown
Contributor Author

@avivkeller Thanks for the approval. Anything missing to merge?

@codecov

codecov Bot commented Aug 29, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 85.99%. Comparing base (bbbdde7) to head (78e2cab).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #9026      +/-   ##
==========================================
- Coverage   86.07%   85.99%   -0.08%     
==========================================
  Files          86       86              
  Lines        6060     6070      +10     
  Branches      359      360       +1     
==========================================
+ Hits         5216     5220       +4     
- Misses        840      846       +6     
  Partials        4        4              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

@github-actions

github-actions Bot commented Aug 29, 2026 •

Copy link
Copy Markdown
Contributor

📦 Build Size Comparison

Summary

Metric Value
Old Total First Load JS 7.15 MB
New Total First Load JS 7.20 MB
Delta 46.71 KB (+0.64%)

Changes

🔄 Modified Routes (4)
Route Old First Load JS New First Load JS Delta
/[locale] 1.68 MB 1.69 MB 📈 11.68 KB (+0.68%)
/[locale]/[...path] 1.68 MB 1.69 MB 📈 11.68 KB (+0.68%)
/[locale]/blog/[...path] 1.68 MB 1.69 MB 📈 11.68 KB (+0.68%)
/[locale]/download/archive/[version] 1.68 MB 1.69 MB 📈 11.68 KB (+0.68%)

@bastianeicher

Copy link
Copy Markdown
Contributor Author

I have:

  • rebased one more time
  • added an empty changeset to satisfy the "Changesets" CI job
  • run prettier --write to satisfy the "Quality checks" CI job

The "Cromatic" CI job seems to be failing for reasons unrelated to the PR:

✖ Missing project token
             
             Sign in to https://www.chromatic.com/start and create a new project,
             or find your project token on the Manage screen in an existing project.
             Set your project token as the CHROMATIC_PROJECT_TOKEN environment variable
             or pass the --project-token command line option.

@avivkeller Could you help me finish this up?

@avivkeller

Copy link
Copy Markdown
Member

@bastianeicher Can you rebase, I'll merge this post that

@bastianeicher
bastianeicher force-pushed the feat/add-zeroinstall-package-manager branch 2 times, most recently from 0a8d34f to 8737f31 Compare October 7, 2026 14:59
@bastianeicher

Copy link
Copy Markdown
Contributor Author

@bastianeicher Can you rebase, I'll merge this post that

@avivkeller Done 👍

@avivkeller

Copy link
Copy Markdown
Member

And lint please 🙏

0install is a cross-platform decentralized package manager.
Applications are packaged as "feeds": XML files listing available
versions, where to download them, and how to extract and execute
them. The 0install project maintains a feed for Node.js:
https://apps.0install.net/javascript/node.xml

This adds 0install alongside the other community installation
methods such as asdf and Chocolatey.
@bastianeicher
bastianeicher force-pushed the feat/add-zeroinstall-package-manager branch from 8737f31 to 78e2cab Compare October 10, 2026 16:17
@bastianeicher

Copy link
Copy Markdown
Contributor Author

@avivkeller Fixed linter warning.

This branch was successfully deployed

2 active deployments
Storybook — 78e2cab3 Deployed Oct 10, 2026 by bastianeicher via Chromatic #2308
Preview — 78e2cab3 Deployed Oct 10, 2026 by vercel[bot]
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.

4 participants