From 6efac94f58b2e0af8af2f5ae35679821ae3ae9aa Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Fri, 5 Dec 2025 22:56:22 -0600 Subject: [PATCH 1/7] chore: update GitHub Actions workflow for multi-platform builds - Added support for legacy builds with specific Electron versions for Windows and Linux. - Updated artifact naming conventions to include '-legacy' suffix for legacy builds. - Introduced conditional steps for setting Electron versions and renaming artifacts based on build variant. --- .github/workflows/build.yml | 63 +++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6657362..95ad198 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -80,6 +80,8 @@ jobs: release_artifacts: "dist/*-win-installer.exe,dist/*-win-portable.exe" build_input: build_windows dist_script: dist-prebuilt + variant: standard + electron_version: "39.2.4" - name: mac os: macos-14 node: 18 @@ -87,6 +89,8 @@ jobs: release_artifacts: "dist/*-mac-*.dmg" build_input: build_mac dist_script: dist:mac-universal + variant: standard + electron_version: "39.2.4" - name: linux os: ubuntu-latest node: 22 @@ -94,6 +98,26 @@ jobs: release_artifacts: "dist/*-linux.AppImage,dist/*-linux.deb,python-dist/*.whl" build_input: build_linux dist_script: dist-prebuilt + variant: standard + electron_version: "39.2.4" + - name: windows-legacy + os: windows-latest + node: 22 + python: "3.12" + release_artifacts: "dist/*-win-installer*.exe,dist/*-win-portable*.exe" + build_input: build_windows + dist_script: dist-prebuilt + variant: legacy + electron_version: "30.0.8" + - name: linux-legacy + os: ubuntu-latest + node: 22 + python: "3.12" + release_artifacts: "dist/*-linux*.AppImage,dist/*-linux*.deb,python-dist/*.whl" + build_input: build_linux + dist_script: dist-prebuilt + variant: legacy + electron_version: "30.0.8" permissions: contents: write steps: @@ -103,6 +127,16 @@ jobs: (github.event_name == 'workflow_dispatch' && inputs[matrix.build_input] == true) uses: actions/checkout@50fbc622fc4ef5163becd7fab6573eac35f8462e # v1 + - name: Set legacy Electron version + if: | + matrix.variant == 'legacy' && + (github.event_name == 'push' || + (github.event_name == 'workflow_dispatch' && inputs[matrix.build_input] == true)) + shell: bash + run: | + node -e "const fs=require('fs');const pkg=require('./package.json');pkg.devDependencies.electron='${{ matrix.electron_version }}';fs.writeFileSync('package.json', JSON.stringify(pkg,null,2));" + if [ -f package-lock.json ]; then rm package-lock.json; fi + - name: Install NodeJS if: | github.event_name == 'push' || @@ -160,14 +194,14 @@ jobs: - name: Install patchelf if: | - matrix.name == 'linux' && + startsWith(matrix.name, 'linux') && (github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs[matrix.build_input] == true)) run: sudo apt-get update && sudo apt-get install -y patchelf - name: Build Python wheel if: | - matrix.name == 'linux' && + startsWith(matrix.name, 'linux') && (github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs[matrix.build_input] == true)) run: | @@ -182,6 +216,23 @@ jobs: (github.event_name == 'workflow_dispatch' && inputs[matrix.build_input] == true) run: npm run ${{ matrix.dist_script }} + - name: Rename artifacts for legacy build + if: | + matrix.variant == 'legacy' && + (github.event_name == 'push' || + (github.event_name == 'workflow_dispatch' && inputs[matrix.build_input] == true)) + shell: bash + run: | + shopt -s nullglob + for f in dist/*-win-installer.exe dist/*-win-portable.exe dist/*-linux.AppImage dist/*-linux.deb; do + [ -e "$f" ] || continue + dir=$(dirname "$f") + base=$(basename "$f") + ext="${base##*.}" + name="${base%.$ext}" + mv "$f" "$dir/${name}-legacy.${ext}" + done + - name: Upload build artifacts if: | github.event_name == 'push' || @@ -190,11 +241,11 @@ jobs: with: name: build-${{ matrix.name }} path: | - dist/*-win-installer.exe - dist/*-win-portable.exe + dist/*-win-installer*.exe + dist/*-win-portable*.exe dist/*-mac-*.dmg - dist/*-linux.AppImage - dist/*-linux.deb + dist/*-linux*.AppImage + dist/*-linux*.deb python-dist/*.whl if-no-files-found: ignore -- 2.49.1 From 0443734ee39dac79aaabdf21e2b35008ee776e1f Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Fri, 5 Dec 2025 22:56:28 -0600 Subject: [PATCH 2/7] chore: add legacy build support for Electron in Makefile - Introduced new targets for legacy Electron builds, including 'electron-legacy', 'build-appimage-legacy', and 'build-exe-legacy'. - Updated artifact naming to include '-legacy' suffix for better differentiation of legacy builds. - Set default legacy Electron version for compatibility. --- Makefile | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 82bbbf0..fe7d637 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,9 @@ -.PHONY: install run develop clean build build-appimage build-exe dist sync-version wheel node_modules python build-docker run-docker +.PHONY: install run develop clean build build-appimage build-exe dist sync-version wheel node_modules python build-docker run-docker electron-legacy build-appimage-legacy build-exe-legacy PYTHON ?= python POETRY = $(PYTHON) -m poetry NPM = npm +LEGACY_ELECTRON_VERSION ?= 30.0.8 DOCKER_COMPOSE_CMD ?= docker compose DOCKER_COMPOSE_FILE ?= docker-compose.yml @@ -44,6 +45,27 @@ build-exe: build dist: build-appimage +electron-legacy: + $(NPM) install --no-save electron@$(LEGACY_ELECTRON_VERSION) + +build-appimage-legacy: build electron-legacy + $(NPM) run electron-postinstall + $(NPM) run dist -- --linux AppImage + @set -e; for f in dist/*-linux.AppImage dist/*-linux.deb; do \ + [ -e "$$f" ] || continue; \ + dir=$$(dirname "$$f"); base=$$(basename "$$f"); ext=$${base##*.}; name=$${base%.$$ext}; \ + mv "$$f" "$$dir/$${name}-legacy.$$ext"; \ + done + +build-exe-legacy: build electron-legacy + $(NPM) run electron-postinstall + $(NPM) run dist -- --win portable + @set -e; for f in dist/*-win-installer.exe dist/*-win-portable.exe; do \ + [ -e "$$f" ] || continue; \ + dir=$$(dirname "$$f"); base=$$(basename "$$f"); ext=$${base##*.}; name=$${base%.$$ext}; \ + mv "$$f" "$$dir/$${name}-legacy.$$ext"; \ + done + clean: rm -rf node_modules rm -rf build -- 2.49.1 From 9a9022ffb06fdc8dd5edac40ba62f03e8e3db92b Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Fri, 5 Dec 2025 23:11:54 -0600 Subject: [PATCH 3/7] chore: update Python and Node.js versions in GitHub Actions workflow - Upgraded Python version to 3.13 for Windows, macOS, and Linux builds. - Updated Node.js version to 22 for Windows and Linux builds, while reverting to Node.js 18 for legacy builds on Windows and Linux. --- .github/workflows/build.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 95ad198..e6fb13e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -76,7 +76,7 @@ jobs: - name: windows os: windows-latest node: 22 - python: "3.12" + python: "3.13" release_artifacts: "dist/*-win-installer.exe,dist/*-win-portable.exe" build_input: build_windows dist_script: dist-prebuilt @@ -84,8 +84,8 @@ jobs: electron_version: "39.2.4" - name: mac os: macos-14 - node: 18 - python: "3.11" + node: 22 + python: "3.13" release_artifacts: "dist/*-mac-*.dmg" build_input: build_mac dist_script: dist:mac-universal @@ -94,7 +94,7 @@ jobs: - name: linux os: ubuntu-latest node: 22 - python: "3.12" + python: "3.13" release_artifacts: "dist/*-linux.AppImage,dist/*-linux.deb,python-dist/*.whl" build_input: build_linux dist_script: dist-prebuilt @@ -102,8 +102,8 @@ jobs: electron_version: "39.2.4" - name: windows-legacy os: windows-latest - node: 22 - python: "3.12" + node: 18 + python: "3.11" release_artifacts: "dist/*-win-installer*.exe,dist/*-win-portable*.exe" build_input: build_windows dist_script: dist-prebuilt @@ -111,8 +111,8 @@ jobs: electron_version: "30.0.8" - name: linux-legacy os: ubuntu-latest - node: 22 - python: "3.12" + node: 18 + python: "3.11" release_artifacts: "dist/*-linux*.AppImage,dist/*-linux*.deb,python-dist/*.whl" build_input: build_linux dist_script: dist-prebuilt -- 2.49.1 From bf8c22c31a23c2f036688969857e45a2e8fdda0a Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Fri, 5 Dec 2025 23:15:44 -0600 Subject: [PATCH 4/7] chore: add dependency review workflow for pull requests - Introduced a new GitHub Actions workflow for dependency review on pull requests to the master branch. - Configured permissions for reading contents and writing pull requests. - Included steps for checking out the repository and running the dependency review action with a summary comment in PRs. --- .github/workflows/dependency-review.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 .github/workflows/dependency-review.yml diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml new file mode 100644 index 0000000..af9b511 --- /dev/null +++ b/.github/workflows/dependency-review.yml @@ -0,0 +1,22 @@ +name: 'Dependency review' + +on: + pull_request: + branches: [ "master" ] + +permissions: + contents: read + pull-requests: write + +jobs: + dependency-review: + runs-on: ubuntu-latest + + steps: + - name: 'Checkout repository' + uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 + + - name: 'Dependency Review' + uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4 + with: + comment-summary-in-pr: always \ No newline at end of file -- 2.49.1 From c5ae53bf55421054372bced1a4206ffd9b55a8c8 Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Fri, 5 Dec 2025 23:19:31 -0600 Subject: [PATCH 5/7] chore: streamline legacy artifact renaming in GitHub Actions workflow - Replaced inline script for renaming legacy artifacts with a dedicated script call to `rename_legacy_artifacts.sh` for improved maintainability and clarity. --- .github/workflows/build.yml | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e6fb13e..93b4177 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -221,17 +221,7 @@ jobs: matrix.variant == 'legacy' && (github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && inputs[matrix.build_input] == true)) - shell: bash - run: | - shopt -s nullglob - for f in dist/*-win-installer.exe dist/*-win-portable.exe dist/*-linux.AppImage dist/*-linux.deb; do - [ -e "$f" ] || continue - dir=$(dirname "$f") - base=$(basename "$f") - ext="${base##*.}" - name="${base%.$ext}" - mv "$f" "$dir/${name}-legacy.${ext}" - done + run: ./scripts/rename_legacy_artifacts.sh - name: Upload build artifacts if: | -- 2.49.1 From 4200e43618e13f20896d9cc293cb6e965c5895dc Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Fri, 5 Dec 2025 23:19:38 -0600 Subject: [PATCH 6/7] feat: add script for renaming legacy artifacts - Introduced `rename_legacy_artifacts.sh` to automate the renaming of legacy artifacts with a '-legacy' suffix for better differentiation and maintainability. --- scripts/rename_legacy_artifacts.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100755 scripts/rename_legacy_artifacts.sh diff --git a/scripts/rename_legacy_artifacts.sh b/scripts/rename_legacy_artifacts.sh new file mode 100755 index 0000000..7d39aef --- /dev/null +++ b/scripts/rename_legacy_artifacts.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -euo pipefail + +shopt -s nullglob + +patterns=( + "dist/*-win-installer.exe" + "dist/*-win-portable.exe" + "dist/*-linux.AppImage" + "dist/*-linux.deb" +) + +for pattern in "${patterns[@]}"; do + for f in $pattern; do + dir=$(dirname "$f") + base=$(basename "$f") + ext="${base##*.}" + name="${base%.$ext}" + mv "$f" "$dir/${name}-legacy.${ext}" + done +done -- 2.49.1 From d97676ad27819691ad2fc64f65a791e3815f76f8 Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Fri, 5 Dec 2025 23:19:43 -0600 Subject: [PATCH 7/7] refactor: replace inline artifact renaming with script call - Updated the Makefile to utilize `rename_legacy_artifacts.sh` for renaming legacy artifacts in the `build-appimage-legacy` and `build-exe-legacy` targets, enhancing maintainability and clarity. --- Makefile | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index fe7d637..56d174b 100644 --- a/Makefile +++ b/Makefile @@ -48,23 +48,16 @@ dist: build-appimage electron-legacy: $(NPM) install --no-save electron@$(LEGACY_ELECTRON_VERSION) +# Legacy targets intended for manual/local builds; CI uses workflow jobs. build-appimage-legacy: build electron-legacy $(NPM) run electron-postinstall $(NPM) run dist -- --linux AppImage - @set -e; for f in dist/*-linux.AppImage dist/*-linux.deb; do \ - [ -e "$$f" ] || continue; \ - dir=$$(dirname "$$f"); base=$$(basename "$$f"); ext=$${base##*.}; name=$${base%.$$ext}; \ - mv "$$f" "$$dir/$${name}-legacy.$$ext"; \ - done + ./scripts/rename_legacy_artifacts.sh build-exe-legacy: build electron-legacy $(NPM) run electron-postinstall $(NPM) run dist -- --win portable - @set -e; for f in dist/*-win-installer.exe dist/*-win-portable.exe; do \ - [ -e "$$f" ] || continue; \ - dir=$$(dirname "$$f"); base=$$(basename "$$f"); ext=$${base##*.}; name=$${base%.$$ext}; \ - mv "$$f" "$$dir/$${name}-legacy.$$ext"; \ - done + ./scripts/rename_legacy_artifacts.sh clean: rm -rf node_modules -- 2.49.1