From b25d660e2a01657bf0e70738c9a7bf6780cc67cc Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 9 May 2026 10:20:10 +0000 Subject: [PATCH 1/2] ci(build-tauri): expose Linux AppImage/deb/rpm bundles as artifacts aw-tauri's Tauri bundler already produces .AppImage/.deb/.rpm files under dist/activitywatch/aw-tauri/ on Linux runs, but the upload-artifact step only globs dist/activitywatch-*.*, so they were silently dropped from the build artifacts (and therefore from drafted releases). Add a Linux-only step that copies the bundles out with versioned, arch-suffixed filenames (activitywatch-tauri-$VERSION-linux-$ARCH.$ext) so they match the existing upload pattern. No changes to Windows or macOS jobs. Refs: ActivityWatch/activitywatch#1300 --- .github/workflows/build-tauri.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/build-tauri.yml b/.github/workflows/build-tauri.yml index dbe4458ff..a7a3b4033 100644 --- a/.github/workflows/build-tauri.yml +++ b/.github/workflows/build-tauri.yml @@ -159,6 +159,22 @@ jobs: poetry install make package SKIP_SERVER_RUST=${{ matrix.skip_rust }} + - name: Package Linux (Tauri bundles) + if: runner.os == 'Linux' + run: | + # aw-tauri's bundler produces .AppImage/.deb/.rpm under + # dist/activitywatch/aw-tauri/ via `make package`. Copy them out with + # versioned, arch-suffixed filenames so they match the + # `dist/activitywatch-*.*` upload pattern below. + ARCH=$(uname -m) + shopt -s nullglob + for src in dist/activitywatch/aw-tauri/*.AppImage \ + dist/activitywatch/aw-tauri/*.deb \ + dist/activitywatch/aw-tauri/*.rpm; do + ext="${src##*.}" + cp -v "$src" "dist/activitywatch-tauri-${VERSION_WITH_V}-linux-${ARCH}.${ext}" + done + - name: Package dmg if: runner.os == 'macOS' run: | From 76ec0578f2178ebb7e9fe211a424971c5bfc6054 Mon Sep 17 00:00:00 2001 From: TimeToBuildBob Date: Sat, 9 May 2026 11:26:02 +0000 Subject: [PATCH 2/2] ci(build-tauri): guard against multiple bundles per extension If more than one file of the same extension lands in the bundler output dir, fail fast instead of silently keeping only the last copy. Addresses Greptile P2 review feedback. --- .github/workflows/build-tauri.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-tauri.yml b/.github/workflows/build-tauri.yml index a7a3b4033..88759261f 100644 --- a/.github/workflows/build-tauri.yml +++ b/.github/workflows/build-tauri.yml @@ -168,11 +168,13 @@ jobs: # `dist/activitywatch-*.*` upload pattern below. ARCH=$(uname -m) shopt -s nullglob - for src in dist/activitywatch/aw-tauri/*.AppImage \ - dist/activitywatch/aw-tauri/*.deb \ - dist/activitywatch/aw-tauri/*.rpm; do - ext="${src##*.}" - cp -v "$src" "dist/activitywatch-tauri-${VERSION_WITH_V}-linux-${ARCH}.${ext}" + for ext in AppImage deb rpm; do + files=( dist/activitywatch/aw-tauri/*.${ext} ) + case ${#files[@]} in + 0) continue ;; + 1) cp -v "${files[0]}" "dist/activitywatch-tauri-${VERSION_WITH_V}-linux-${ARCH}.${ext}" ;; + *) echo "ERROR: expected at most 1 .${ext} bundle, found ${#files[@]}" >&2; exit 1 ;; + esac done - name: Package dmg