Skip to content

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

Open
bastianeicher wants to merge 1 commit into
nodejs:mainfrom
bastianeicher:feat/add-zeroinstall-package-manager
Open

feat: add 0install as an installation method on the downloads page#9026
bastianeicher wants to merge 1 commit into
nodejs:mainfrom
bastianeicher:feat/add-zeroinstall-package-manager

Conversation

@bastianeicher

@bastianeicher bastianeicher commented Jul 28, 2026

Copy link
Copy Markdown

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 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 (UTC)
nodejs-org Ready Ready Preview Jul 28, 2026 5:41pm

Request Review

@cursor

cursor Bot commented Jul 28, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
Content and UI-only changes for a third-party install method; no changes to site auth, release delivery, or core download binaries.

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

The download UI gains a new ZEROINSTALL method (Windows, macOS, Linux) with a dedicated ZeroInstall icon, copy-paste instructions in zeroinstall.bash (0install feed for Node/npm/npx, version pinning on non-Windows, npm global prefix and PATH), and an English blurb describing 0install as a cross-platform decentralized package manager.

Reviewed by Cursor Bugbot for commit 572ff80. 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 on lines +1 to +2
# 0install has specific installation instructions for each operating system.
# Please refer to the official documentation at https://get.0install.net/.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

PRs should only modify the English language content.

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

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
@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
Author

How does 0install allow selecting which version of Node.js to install?

Or to put it another way, if 0install is not able to select which version of Node.js to install, then it is not a candidate for inclusion on the download site. See also #9026 (review)

@MikeMcC399

0install allows running apps two different ways:

One-shot without adding to the PATH

Run current latest:
0install run https://apps.0install.net/javascript/node.xml

Run specific version:
0install run --version=24.18.0 https://apps.0install.net/javascript/node.xml

Add to PATH

Install latest and auto-update:
0install add node https://apps.0install.net/javascript/node.xml

Install specific version and only manually update:
0install add node --version=24.18.0 https://apps.0install.net/javascript/node.xml
(syntax a bit different in the Windows version, added to PR now too)

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 7 out of 7 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (1)

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

  • This SVG icon component doesn’t set a default width/height on the root <svg>, while the other installation-method icons in this folder do. If a consumer renders the icon without passing explicit dimensions, it will fall back to the browser’s default SVG size and appear inconsistent with the rest of the icon set.
  <svg
    xmlns="http://www.w3.org/2000/svg"
    xmlnsXlink="http://www.w3.org/1999/xlink"
    viewBox="0 0 68 68"
    {...props}

Copilot AI review requested due to automatic review settings July 28, 2026 16:52

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit ffc417f. 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

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

Comments suppressed due to low confidence (2)

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

  • Other InstallationMethod icons provide a default width/height (typically 32x32). Without defaults, rendering this icon without explicit sizing can fall back to browser defaults and produce inconsistent icon sizing.
    xmlns="http://www.w3.org/2000/svg"
    xmlnsXlink="http://www.w3.org/1999/xlink"
    viewBox="0 0 68 68"
    {...props}
  >

apps/site/util/download/constants.json:205

  • This introduces a new installation method with an icon string that must match an exported component name. There are existing unit tests for INSTALL_METHODS icon wiring, but they don’t cover this new method, so a typo in icon would fail at runtime without being caught.
      "id": "ZEROINSTALL",
      "icon": "ZeroInstall",
      "name": "0install",
      "compatibility": {
        "os": ["WIN", "MAC", "LINUX"]

Copilot AI review requested due to automatic review settings July 28, 2026 17:22
@bastianeicher
bastianeicher force-pushed the feat/add-zeroinstall-package-manager branch from ffc417f to 9615516 Compare July 28, 2026 17:22

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 7 out of 7 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:9

  • In the Windows (PowerShell) branch, npm config set prefix is currently fed $env:appdata\npm directly. Building the path this way is brittle in PowerShell; use Join-Path so the prefix is computed as a single argument and doesn’t rely on string concatenation/parsing rules.
npm config set prefix ${props.os === 'WIN' ? '$env:appdata\\npm' : '~/.npm-global'}

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.
Copilot AI review requested due to automatic review settings July 28, 2026 17:40
@bastianeicher
bastianeicher force-pushed the feat/add-zeroinstall-package-manager branch from 9615516 to 572ff80 Compare July 28, 2026 17:40

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 7 out of 7 changed files in this pull request and generated no new comments.

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