Nightward distribution should optimize for trust first, then convenience.
- GitHub Releases with signed checksums and SBOMs. Shipped.
- Scoped npm launcher
@jsonbored/nightwardwith trusted publishing and provenance. Shipped. - Source builds with
make install-local. Development-only. - Trunk plugin import from a release tag. Shipped.
- GitHub Action release tags. Shipped.
- Homebrew tap.
- Nix flake/package.
- Scoop and WinGet.
- mise and aqua.
Docker is deferred until Nightward has a useful local report browser. A container is not a good default for safely scanning a user's HOME directory.
Homebrew is straightforward once the release archive layout stays stable. Add a dedicated tap repository, then generate a formula from the signed GitHub Release archive and checksum data. The formula should install both nightward and nw, include a lightweight nightward --version test, and avoid becoming a separate packaging implementation.
The npm package is @jsonbored/nightward. It is published through npm trusted publishing and must remain a launcher:
- no
postinstall - no bundled second implementation
- no long-lived npm token
- trusted publishing with provenance
- checksum verification before executing downloaded release archives
- Merge through reviewed PR when a non-author reviewer exists, or document a solo-maintainer admin bypass.
- Confirm branch and tag protection.
- Confirm npm trusted publishing for
.github/workflows/release.yml. - Run local verification.
- Create a signed SemVer tag.
- Verify GitHub release artifacts.
- Verify npm metadata and launcher behavior with
scripts/verify-npm-release.sh. - Update OpenSSF badge evidence.