diff --git a/.changeset/brave-lions-jump.md b/.changeset/brave-lions-jump.md new file mode 100644 index 0000000..f9b4b6f --- /dev/null +++ b/.changeset/brave-lions-jump.md @@ -0,0 +1,9 @@ +--- +"cmdly": minor +--- + +feat: replace ncc packaging with Node SEA standalone binaries + +Switched the build pipeline from `@vercel/ncc` to Node.js Single Executable Applications (SEA). Binaries are now produced for `linux-x64`, `linux-arm64`, and `darwin-arm64` targets (`darwin-x64` is excluded due to upstream instability). The release workflow uploads the resulting binaries and checksums as GitHub Release assets. + +Also fixes Effect layer dependency ordering in the `configure`, `explain`, and `suggest` commands so that `NodeFileSystem` and `NodePath` layers are provided before dependent services, resolving TypeScript errors at runtime layer composition. diff --git a/scripts/build-sea.mjs b/scripts/build-sea.mjs index 9010810..045709b 100644 --- a/scripts/build-sea.mjs +++ b/scripts/build-sea.mjs @@ -65,9 +65,10 @@ if (!enabledTargets.includes(detectedHostTarget)) { const target = detectedHostTarget; -if (Number.parseInt(process.versions.node.split(".")[0], 10) !== 26) { +const nodeMajor = Number.parseInt(process.versions.node.split(".")[0], 10); +if (nodeMajor < 26) { throw new Error( - `Node 26.x required for SEA build, found ${process.version}. Use Node 26.x.`, + `Node 26+ required for SEA build, found ${process.version}. Use Node 26 or newer.`, ); }