Repository navigation
Install the Homebrew formula from npm on Homebrew's Node - #485
Merged
Merged
Conversation
The formula installed the SEA binary, which on Linux relies on the system's libstdc++ and libatomic, and only covered Apple Silicon macOS and x86_64 Linux. It now installs the published npm package with depends_on "node", so Homebrew supplies the runtime on every platform it supports. The tap update renders the formula from the npm tarball's checksum and no longer waits on the binaries. The SEA binaries still serve install.sh and the Releases page. install.sh now runs the downloaded binary before installing it, and on a missing shared library prints the apt command instead of installing a binary that can't start. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016sqnGa837NoKsxhNefCgnC
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Address the musl loader error matching and remove the redundant Homebrew formula version declaration.
1 open issue
What changed in this PR
This pull request changes Homebrew distribution to install the published @slackwater/cli npm package using Homebrew’s Node runtime, while retaining standalone binaries for the shell installer and GitHub Releases.
Changes:
- Replaces Homebrew binary downloads with the npm tarball and checksum.
- Updates release automation and CI formula rendering.
- Adds shell-installer binary validation and Linux runtime guidance.
- Refreshes documentation, contributor guidance, and release notes.
| File | Description |
|---|---|
README.md |
Updates CLI installation guidance for Homebrew on macOS and Linux. |
packages/cli/README.md |
Documents Homebrew’s Node runtime and standalone binary requirements. |
packages/cli/homebrew/slackwater.rb |
Installs the npm package using Homebrew’s Node dependency. |
install.sh |
Validates the downloaded binary and reports runtime-library guidance on failure. |
CONTRIBUTING.md |
Updates distribution and release workflow documentation. |
.github/workflows/ci.yml |
Renders the Homebrew formula with the npm checksum placeholder. |
.github/workflows/build-binaries.yml |
Downloads the npm tarball and updates the Homebrew tap formula independently of binary builds. |
.changeset/homebrew-npm.md |
Records the Homebrew and installer changes for the CLI release. |
Review effort: Lite
Homebrew parses prerelease versions from npm tarball URLs, so the explicit version line duplicated the URL and brew style flags it. Homebrew and npm installs no longer use the standalone binary, and the shell installer now prints the library instructions itself, so the CLI README keeps one sentence under "Download binary" for direct downloads. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016sqnGa837NoKsxhNefCgnC
@slackwater/api
@slackwater/cli
@slackwater/engine
@slackwater/react
slackwater
commit: |
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.

Follow-up to #480. Instead of documenting the Linux binary's
libstdc++/libatomicrequirement, Homebrew now declares the runtime itself.Homebrew formula (
packages/cli/homebrew/slackwater.rb): installs the published@slackwater/clinpm tarball withdepends_on "node"andstd_npm_args, the standard pattern for Node CLIs. Homebrew supplies the runtime, so the formula no longer depends on system libraries, and it now covers Intel macOS and arm64 Linux, which it previously refused.Release workflow:
update-homebrewrenders the formula from the npm tarball's SHA-256 and no longer waits on the binary build. The release workflow publishes to npm before it dispatchesbuild-binaries.yml; the download retries in case the registry lags. The CI formula check renders the new placeholders.Shell installer: runs the downloaded binary with
--versionbefore installing it. If it can't start, the installer prints the loader error, and on a missing shared library it prints theapt-getcommand and the npm alternative, then exits without installing.The SEA binaries still back
install.shand the Releases page; the trade-off is that brew users now follow Homebrew'snoderather than the pinned Node 26.Validation
npm install -ddd --global --build-from-source --prefix=… cli-1.0.0-beta.4.tgz) from the published tarball on Node 22;slackwater --versionandextremes --station noaa/9414290work.install.shend to end against the real1.0.0-beta.4linux-x64 archive (served locally): installs and runs. Then against the same archive withlibatomic.so.1patched to an absent library viapatchelf: prints the loader error and apt hint, exits 1, installs nothing.shellcheck install.shand Prettier pass.brew install,brew style, orbrew readall. Homebrew's bottle registry isn't reachable from where this was written, so the macOShomebrewCI job is the first real check of the formula. One thing to watch there:brew stylemay flagversionas redundant if Homebrew parses1.0.0-beta.4from the npm URL.Generated by Claude Code