From efea39641339e0a511ec5af73bb3671c109a8c82 Mon Sep 17 00:00:00 2001 From: Felix Kotschenreuther Date: Thu, 9 Jul 2026 08:36:15 +0200 Subject: [PATCH 1/3] chore(release): set starting version to 0.1.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Baseline for tag-driven releases (#9). package stays private: true — install is via GitHub Releases tarball + npm pack, not npm publish. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 812b0c2..d8f11c9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ct-cli", - "version": "0.0.0", + "version": "0.1.0", "private": true, "description": "ChurchTools structure-as-code CLI — declarative plan/apply for the overarching, rights-bearing structure (campuses, groups, hierarchies, permissions, auto-groups). Never manages people.", "type": "module", From 166048203b52df9717548aea4d83170c18c2fd58 Mon Sep 17 00:00:00 2001 From: Felix Kotschenreuther Date: Thu, 9 Jul 2026 08:39:34 +0200 Subject: [PATCH 2/3] feat(release): add tag-triggered GitHub Release workflow Pushing a v* tag runs the same lint/typecheck/test/build gate as CI, packages the built CLI with `npm pack`, and publishes a GitHub Release with the tarball + an INSTALL.md, using GitHub's auto-generated release notes (#9). Deviates from the issue's semantic-release + standalone-binary proposal: no pkg/bun/SEA toolchain exists in the repo today, so this ships the minimal robust path (tag push -> release) rather than adding a new packaging toolchain and merge-to-main automation. Standalone macOS binaries and auto-versioning-on-merge remain open follow-ups. --- .github/workflows/release.yml | 66 +++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..f89671b --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,66 @@ +name: Release + +# Triggered by pushing a version tag (e.g. `v0.1.0`). Runs the same +# lint/typecheck/test/build gate as CI, then packages the built CLI as an +# npm-pack tarball and publishes it as a GitHub Release with +# auto-generated release notes. +on: + push: + tags: + - "v*" + +permissions: + contents: write + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: npm + + - run: npm ci + - run: npm run lint + - run: npm run typecheck + - run: npm test + - run: npm run build + + - name: Package release tarball + run: | + mkdir -p release + npm pack --pack-destination release + mv release/*.tgz "release/ct-cli-${GITHUB_REF_NAME}.tgz" + + - name: Write install note + run: | + cat > release/INSTALL.md < Date: Thu, 9 Jul 2026 08:39:39 +0200 Subject: [PATCH 3/3] docs(readme): document install-from-Releases path Add an Install section pointing at the GitHub Releases tarball + npm install -g, ahead of the existing dev/from-source setup docs (#9). --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index 75530e9..f5aa7b4 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,22 @@ Early scaffold. See the [epic (#1)](https://github.com/eqrm/ct-cli/issues/1) and - Node ≥ 20 (repo pins 22 via `.nvmrc`) - A ChurchTools **personal login token** (ChurchTools → your user settings) +## Install + +Grab the latest tarball from the [Releases page](https://github.com/eqrm/ct-cli/releases/latest) +and install it globally with npm — no clone, no build step: + +```bash +npm install -g https://github.com/eqrm/ct-cli/releases/latest/download/ct-cli-.tgz +ct --help +``` + +(Replace `` with the tag of the release you're installing, e.g. `v0.1.0`.) +Each release also attaches an `INSTALL.md` with the exact command for that tag. + +Every push of a `v*` tag runs lint/typecheck/test/build and publishes the +resulting package as a GitHub Release ([`.github/workflows/release.yml`](.github/workflows/release.yml)). + ## Install (dev) ```bash