From 00c0e1485d1fb98f32ce541b00ec8bbff9fa4560 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 3 Aug 2026 17:47:18 +0000 Subject: [PATCH 1/2] Make GitHub Releases source-only; keep binaries for commercial sale Stop uploading compiled Mac/Windows/Linux bundles to GitHub Releases. Source tags still publish a release; build installers privately with scripts/build.sh for donvitocodes.com distribution. Co-authored-by: Melvin Vivas --- .github/workflows/release.yml | 84 +++++++++-------------------------- docs/RELEASING.md | 65 +++++++++++++-------------- docs/user-guide.html | 4 +- scripts/build.sh | 5 ++- 4 files changed, 55 insertions(+), 103 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8483f0b..e5f5b27 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,7 +1,8 @@ name: Release -# Builds multi-platform GAIA Personal Setup bundles and publishes a GitHub Release. -# Distribute from GitHub Releases and/or link the same assets on donvitocodes.com. +# Publishes a GitHub Release with source only (GitHub attaches Source code zip/tar.gz). +# Compiled Mac / Windows / Linux bundles are NOT uploaded — build those privately +# with scripts/build.sh for commercial distribution (e.g. donvitocodes.com). # # Create a release: # git tag v0.2.1 @@ -33,10 +34,10 @@ concurrency: cancel-in-progress: false jobs: - build-and-release: - name: Build & publish release + publish-source-release: + name: Publish source release runs-on: ubuntu-latest - timeout-minutes: 30 + timeout-minutes: 10 steps: - name: Checkout @@ -64,86 +65,41 @@ jobs: echo "version=$VERSION_NUM" >> "$GITHUB_OUTPUT" echo "Resolved tag=$TAG version=$VERSION_NUM" - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version-file: go.mod - cache: true - - - name: Build release bundles - env: - VERSION: ${{ steps.ver.outputs.version }} - run: | - set -euo pipefail - chmod +x scripts/build.sh - ./scripts/build.sh - ls -lah dist - - - name: Smoke test (linux binary) - run: | - set -euo pipefail - ./dist/gaia-setup-personal-linux-amd64 version - ./dist/gaia-setup-personal-linux-amd64 doctor || true - - - name: Upload build artifacts (Actions) - uses: actions/upload-artifact@v4 - with: - name: gaia-personal-setup-${{ steps.ver.outputs.version }} - path: | - dist/*.zip - dist/*.tar.gz - dist/SHA256SUMS.txt - if-no-files-found: error - retention-days: 30 - - - name: Create / update GitHub Release + - name: Create / update GitHub Release (source only) uses: softprops/action-gh-release@v2 with: tag_name: ${{ steps.ver.outputs.tag }} name: GAIA Personal Setup ${{ steps.ver.outputs.tag }} prerelease: ${{ github.event_name == 'workflow_dispatch' && inputs.prerelease || false }} generate_release_notes: true - fail_on_unmatched_files: true body: | ## GAIA Personal AI Assistant Setup ${{ steps.ver.outputs.tag }} **Brand:** [donvitocodes.com](https://donvitocodes.com) - Private AI Assistant installer for your computer (Docker + Hermes Agent). - - ### Download (pick your system) + This GitHub Release publishes **source code only**. - | Platform | File | - |----------|------| - | macOS Apple Silicon (M1/M2/M3/M4) | `gaia-personal-setup-darwin-arm64-v${{ steps.ver.outputs.version }}.zip` | - | macOS Intel | `gaia-personal-setup-darwin-amd64-v${{ steps.ver.outputs.version }}.zip` | - | Windows 64-bit | `gaia-personal-setup-windows-amd64-v${{ steps.ver.outputs.version }}.zip` | - | Linux amd64 | `gaia-personal-setup-linux-amd64-v${{ steps.ver.outputs.version }}.tar.gz` | - | Linux arm64 | `gaia-personal-setup-linux-arm64-v${{ steps.ver.outputs.version }}.tar.gz` | + ### Source - Checksums: `SHA256SUMS.txt` + Use the **Source code** (zip / tar.gz) assets GitHub attaches to this release, or clone the tagged commit: - ### Install (non-technical) + ```bash + git clone https://github.com/${{ github.repository }}.git + cd gaia-personal-setup + git checkout ${{ steps.ver.outputs.tag }} + go build -o bin/gaia-setup-personal ./cmd/gaia-setup-personal + ``` - 1. Install and start [Docker Desktop](https://www.docker.com/products/docker-desktop/) - 2. Unzip the download - 3. **Mac:** double-click `Start GAIA Personal Setup.command` - **Windows:** double-click `Start GAIA Personal Setup.bat` - **Linux:** run `./start-gaia-personal-setup.sh` - 4. Keep the small window open — browser opens the setup page - 5. Open `docs/user-guide.html` if you need help + ### Compiled installers (Mac / Windows) - ### Website distribution + Pre-built Mac and Windows setup packs are **not** attached here. + Get the compiled product from [donvitocodes.com](https://donvitocodes.com). - You can deep-link these same GitHub Release assets from donvitocodes.com, or mirror the zip files + `SHA256SUMS.txt` on your CDN. + (Maintainers: build commercial bundles locally with `VERSION=${{ steps.ver.outputs.version }} ./scripts/build.sh` — do not upload `dist/*` to GitHub Releases.) ### Notes - Powered by open-source Hermes Agent (Nous Research). Not an official Nous product. - Does not bundle Docker or Hermes source — pulls the Hermes Docker image on first launch. - files: | - dist/*.zip - dist/*.tar.gz - dist/SHA256SUMS.txt env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 8c27999..a32e68e 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -1,17 +1,19 @@ # Releasing GAIA Personal Setup -Brand: https://donvitocodes.com -Repo releases power both **GitHub Downloads** and your **website** links. +Brand: https://donvitocodes.com + +**GitHub Releases = source only.** +Compiled Mac / Windows / Linux installers are built privately and sold (or distributed) from your website — they are **not** uploaded to GitHub. ## One-time GitHub setup 1. Push this repo to GitHub (public or private). 2. Ensure Actions are enabled: **Settings → Actions → Allow**. -3. No extra secrets needed for public releases (`GITHUB_TOKEN` is enough). +3. No extra secrets needed for public source releases (`GITHUB_TOKEN` is enough). If the repo is under an org with restricted Actions, allow `softprops/action-gh-release`. -## Create a release (recommended) +## Create a source release (recommended) ```bash # 1) Commit everything on main @@ -23,11 +25,10 @@ git tag v0.2.1 git push origin v0.2.1 ``` -That triggers **Release** workflow: +That triggers the **Release** workflow, which: -- builds Mac / Windows / Linux bundles -- uploads zip + tar.gz + SHA256SUMS -- creates a GitHub Release with install notes +- creates a GitHub Release for the tag +- relies on GitHub’s automatic **Source code** zip / tar.gz (no binary assets) ## Manual run (no tag push) @@ -36,10 +37,17 @@ GitHub → **Actions** → **Release** → **Run workflow** - Tag: `v0.2.1` - Optional: mark pre-release -## What users download +## Build compiled bundles for sale (private) + +Run locally (or on a private CI machine). Do **not** attach the output to GitHub Releases. + +```bash +VERSION=0.2.1 ./scripts/build.sh +ls -lah dist/ +``` -| User | Asset | -|------|--------| +| Product | Archive | +|---------|---------| | Mac M1/M2/M3/M4 | `gaia-personal-setup-darwin-arm64-vX.Y.Z.zip` | | Mac Intel | `gaia-personal-setup-darwin-amd64-vX.Y.Z.zip` | | Windows | `gaia-personal-setup-windows-amd64-vX.Y.Z.zip` | @@ -48,43 +56,30 @@ GitHub → **Actions** → **Release** → **Run workflow** Each zip contains double-click starters + `docs/user-guide.html`. +Host these on donvitocodes.com (or your store / CDN) with `SHA256SUMS.txt` if you want verification. + ## Link from donvitocodes.com -Use stable GitHub release asset URLs: +Point download buttons at **your** hosted files, not GitHub release assets. Example: -```text -https://github.com///releases/latest/download/gaia-personal-setup-darwin-arm64-vX.Y.Z.zip +```html + + Download for Mac (Apple Silicon) + ``` -For a “latest” button without hardcoding the version, either: - -1. Use GitHub’s `/releases/latest` page, or -2. Publish a small JSON on your site that CI updates, or -3. Use release asset names **without** the version suffix (optional future change). - -Checksums: attach or host `SHA256SUMS.txt` from the same release. - -### Example website copy +You may still link the GitHub release page for source / changelog: ```html - Download GAIA Personal AI Assistant + Source & changelog ``` -Or direct file links after each release. - -## Local dry-run - -```bash -VERSION=0.2.1 ./scripts/build.sh -ls -lah dist/ -``` - ## Version string -`scripts/build.sh` injects `main.version` from `VERSION` env -(the Release workflow sets this from the git tag, e.g. `v0.2.1` → `0.2.1`). +`scripts/build.sh` injects `main.version` from the `VERSION` env +(e.g. `VERSION=0.2.1` → binary reports `0.2.1`). Keep the git tag and commercial bundle version in sync. ## Signing (later) diff --git a/docs/user-guide.html b/docs/user-guide.html index 029ea31..eb7828d 100644 --- a/docs/user-guide.html +++ b/docs/user-guide.html @@ -428,8 +428,8 @@

Start here

Download and unzip GAIA

Get the setup pack from - donvitocodes.com - or GitHub Releases. Unzip it. Open the folder that appears. + donvitocodes.com. + Unzip it. Open the folder that appears.

diff --git a/scripts/build.sh b/scripts/build.sh index ddc53d0..afec082 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,5 +1,6 @@ #!/usr/bin/env bash -# Build binaries + user bundles + zip/tar archives for GitHub & website distribution. +# Build binaries + user bundles + zip/tar archives for private / commercial distribution. +# Do not upload dist/* to GitHub Releases (those are source-only). set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "$ROOT" @@ -116,7 +117,7 @@ copy_common "$d" cp dist/gaia-setup-personal-windows-amd64.exe "$d/gaia-setup-personal.exe" cp "packaging/windows/Start GAIA Personal Setup.bat" "$d/" -# Archives for GitHub Releases + website downloads +# Archives for website / store downloads (not for GitHub Releases) rm -f dist/*.zip dist/*.tar.gz dist/SHA256SUMS.txt 2>/dev/null || true ( cd dist From ec20303e533c5747ca21d61512c95ec89883147e Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 3 Aug 2026 17:47:42 +0000 Subject: [PATCH 2/2] Strip leftover binary assets when publishing source releases When re-releasing an existing tag (e.g. v0.2.0), delete any previously uploaded zip/tar.gz/checksum assets so compiled builds are not left public. Co-authored-by: Melvin Vivas --- .github/workflows/release.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e5f5b27..e96e2e6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -65,6 +65,25 @@ jobs: echo "version=$VERSION_NUM" >> "$GITHUB_OUTPUT" echo "Resolved tag=$TAG version=$VERSION_NUM" + - name: Remove any previously uploaded binary assets + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + TAG: ${{ steps.ver.outputs.tag }} + shell: bash + run: | + set -euo pipefail + # Source-only policy: strip zip/tar.gz/checksums left from older binary releases. + RELEASE_JSON="$(gh api "repos/${GITHUB_REPOSITORY}/releases/tags/${TAG}" 2>/dev/null || true)" + if [[ -z "$RELEASE_JSON" ]]; then + echo "No existing release for ${TAG}; nothing to clean." + exit 0 + fi + echo "$RELEASE_JSON" | jq -r '.assets[]? | "\(.id)\t\(.name)"' | while IFS=$'\t' read -r id name; do + [[ -z "${id:-}" ]] && continue + echo "Deleting asset: ${name} (${id})" + gh api -X DELETE "repos/${GITHUB_REPOSITORY}/releases/assets/${id}" + done + - name: Create / update GitHub Release (source only) uses: softprops/action-gh-release@v2 with: