From a7101147a46cad20129819a6325624bc7390f9f7 Mon Sep 17 00:00:00 2001 From: Prasenjit Sarkar Date: Tue, 7 Jul 2026 14:25:28 +0100 Subject: [PATCH] fix(release): npm package README + Docker publishing via ghcr.io MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - prepublishOnly now copies the root README.md and LICENSE into web/ so the npm package page renders documentation (npm shows the tarball root README; web/ never had one, so npmjs.com showed an empty page) - publish workflow pushes the Docker image to ghcr.io using the built-in GITHUB_TOKEN (packages: write) instead of Docker Hub, which required credentials that were never configured — this also populates the repo's Packages tab - release 0.2.1 Co-Authored-By: Claude Fable 5 --- .github/workflows/publish.yml | 27 +++++++++------------------ .release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ package.json | 2 +- web/.gitignore | 4 ++++ web/package.json | 4 ++-- 6 files changed, 24 insertions(+), 22 deletions(-) create mode 100644 web/.gitignore diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 490a058..4fe9623 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -54,21 +54,11 @@ jobs: # Secrets aren't readable in job-level `if:` expressions, so a tiny check # job exposes whether Docker Hub credentials exist. The docker job is - # skipped cleanly (not failed) until they're configured. - check-docker-creds: - name: Check Docker credentials - runs-on: ubuntu-latest - outputs: - has-creds: ${{ steps.check.outputs.has }} - steps: - - id: check - run: echo "has=${{ secrets.DOCKERHUB_USERNAME != '' && secrets.DOCKERHUB_TOKEN != '' }}" >> "$GITHUB_OUTPUT" - + # Publishes to the GitHub Container Registry using the workflow's own + # GITHUB_TOKEN (packages: write) — no external registry secrets needed. publish-docker: - name: Push Docker image + name: Push Docker image (ghcr.io) runs-on: ubuntu-latest - needs: check-docker-creds - if: needs.check-docker-creds.outputs.has-creds == 'true' steps: - uses: actions/checkout@v4 @@ -76,7 +66,7 @@ jobs: id: meta uses: docker/metadata-action@v5 with: - images: stretchcloud/campfire + images: ghcr.io/${{ github.repository }} tags: | type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} @@ -86,8 +76,9 @@ jobs: - uses: docker/login-action@v3 with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - uses: docker/build-push-action@v6 with: @@ -101,8 +92,8 @@ jobs: github-release: name: Create GitHub Release runs-on: ubuntu-latest - # Only the npm publish is required; the Docker image is optional and - # must not block a release when Docker Hub credentials are absent. + # Only the npm publish is required; the Docker image must not block a + # release if the image build fails. needs: [publish-npm] steps: - uses: actions/checkout@v4 diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2be9c43..af55ef0 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.2.0" + ".": "0.2.1" } diff --git a/CHANGELOG.md b/CHANGELOG.md index d00584c..c99e84c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ > Campfire began as a fork of [the-companion](https://github.com/The-Vibe-Company/companion) and diverged into a separate product. Pre-fork history (versions up to 0.42.0) lives in the upstream repository; Campfire's own releases start at 0.1.0. +## 0.2.1 (2026-07-07) + +### Fixes + +* **npm:** include the project README and LICENSE in the published tarball so the npm package page renders documentation (previously the package root had neither) +* **ci:** publish the Docker image to GitHub Container Registry (`ghcr.io/stretchcloud/campfire`) using the workflow's built-in token — the Docker Hub path required credentials that were never configured, so no image had ever been published + ## 0.2.0 (2026-07-07) ### Features diff --git a/package.json b/package.json index 0d7c2f5..76ec7d4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "the-campfire-workspace", - "version": "0.2.0", + "version": "0.2.1", "private": true, "description": "Workspace root for Campfire \u2014 the collaborative web platform for AI coding agents. The published package lives in web/.", "scripts": { diff --git a/web/.gitignore b/web/.gitignore new file mode 100644 index 0000000..b260c89 --- /dev/null +++ b/web/.gitignore @@ -0,0 +1,4 @@ + +# Copied in by prepublishOnly for the npm tarball +README.md +LICENSE diff --git a/web/package.json b/web/package.json index e873234..8b91e68 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "the-campfire", - "version": "0.2.0", + "version": "0.2.1", "type": "module", "description": "Campfire \u2014 collaborative web platform for AI coding agents. Run Claude Code, Codex, Goose, Aider, and more from one browser UI with real-time collaboration, permission voting, and automation.", "license": "MIT", @@ -45,7 +45,7 @@ "dev:vite": "vite", "build": "vite build", "start": "NODE_ENV=production bun server/index.ts", - "prepublishOnly": "bun run build", + "prepublishOnly": "cp ../README.md ../LICENSE . && bun run build", "typecheck": "tsc --noEmit", "test": "vitest run", "test:watch": "vitest",