From ccdb6d364b3ccc53d176261fcecc398eb792e10c Mon Sep 17 00:00:00 2001 From: Valerio Date: Wed, 22 Apr 2026 12:44:14 +0200 Subject: [PATCH] fix(ci): release workflow must include webclaw-server MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit v0.4.0 shipped tarballs without the new webclaw-server binary because the release workflow predates that binary and was hardcoded for two: - Package step used `cp ... 2>/dev/null || true`, so a missing binary was silently skipped instead of failing the job. - Docker job's download step copied only webclaw + webclaw-mcp into the build context, so Dockerfile.ci's COPY webclaw-server step then died with 'file not found'. - Homebrew formula's install block only covered the same two, so brew users would have gotten a release with a missing binary. Three changes: 1. Package step now explicitly copies all three binaries and drops the swallow-all-errors pattern. If a future binary gets renamed or removed this step screams instead of silently publishing half a release. 2. Docker Download step copies webclaw-server alongside the other binaries into the build context. 3. Homebrew formula installs webclaw-server too. v0.4.0 tag + GitHub Release will be deleted and re-pushed on top of this commit so the canonical v0.4.0 artifacts are complete. No users affected — download count was 0 on every broken asset. --- .github/workflows/release.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 95be38f..4c4c241 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -66,8 +66,14 @@ jobs: tag="${GITHUB_REF#refs/tags/}" staging="webclaw-${tag}-${{ matrix.target }}" mkdir "$staging" - cp target/${{ matrix.target }}/release/webclaw "$staging/" 2>/dev/null || true - cp target/${{ matrix.target }}/release/webclaw-mcp "$staging/" 2>/dev/null || true + # Fail loud if any binary is missing. A silent `|| true` on the + # copy was how v0.4.0 shipped tarballs that lacked webclaw-server — + # don't repeat that mistake. If a future binary gets renamed or + # removed, this step should scream, not quietly publish an + # incomplete release. + cp target/${{ matrix.target }}/release/webclaw "$staging/" + cp target/${{ matrix.target }}/release/webclaw-mcp "$staging/" + cp target/${{ matrix.target }}/release/webclaw-server "$staging/" cp README.md LICENSE "$staging/" tar czf "$staging.tar.gz" "$staging" echo "ASSET=$staging.tar.gz" >> $GITHUB_ENV @@ -134,6 +140,7 @@ jobs: mkdir -p "binaries-${target}" cp "${dir}/webclaw" "binaries-${target}/webclaw" cp "${dir}/webclaw-mcp" "binaries-${target}/webclaw-mcp" + cp "${dir}/webclaw-server" "binaries-${target}/webclaw-server" chmod +x "binaries-${target}"/* done ls -laR binaries-*/ @@ -220,6 +227,7 @@ jobs: def install bin.install "webclaw" bin.install "webclaw-mcp" + bin.install "webclaw-server" end test do