diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7ff3da7f..26bfba0a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -250,6 +250,14 @@ jobs: - name: Install dependencies run: cd apps/frontend && npm ci + - name: Setup Flatpak + run: | + sudo apt-get update + sudo apt-get install -y flatpak flatpak-builder + flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo + flatpak install -y --user flathub org.freedesktop.Platform//25.08 org.freedesktop.Sdk//25.08 + flatpak install -y --user flathub org.electronjs.Electron2.BaseApp//25.08 + - name: Cache bundled Python uses: actions/cache@v4 with: @@ -273,6 +281,7 @@ jobs: path: | apps/frontend/dist/*.AppImage apps/frontend/dist/*.deb + apps/frontend/dist/*.flatpak create-release: needs: [build-macos-intel, build-macos-arm64, build-windows, build-linux] @@ -292,12 +301,12 @@ jobs: - name: Flatten and validate artifacts run: | mkdir -p release-assets - find dist -type f \( -name "*.dmg" -o -name "*.zip" -o -name "*.exe" -o -name "*.AppImage" -o -name "*.deb" \) -exec cp {} release-assets/ \; + find dist -type f \( -name "*.dmg" -o -name "*.zip" -o -name "*.exe" -o -name "*.AppImage" -o -name "*.deb" -o -name "*.flatpak" \) -exec cp {} release-assets/ \; # Validate that at least one artifact was copied - artifact_count=$(find release-assets -type f \( -name "*.dmg" -o -name "*.zip" -o -name "*.exe" -o -name "*.AppImage" -o -name "*.deb" \) | wc -l) + artifact_count=$(find release-assets -type f \( -name "*.dmg" -o -name "*.zip" -o -name "*.exe" -o -name "*.AppImage" -o -name "*.deb" -o -name "*.flatpak" \) | wc -l) if [ "$artifact_count" -eq 0 ]; then - echo "::error::No build artifacts found! Expected .dmg, .zip, .exe, .AppImage, or .deb files." + echo "::error::No build artifacts found! Expected .dmg, .zip, .exe, .AppImage, .deb, or .flatpak files." exit 1 fi @@ -326,7 +335,7 @@ jobs: echo "## VirusTotal Scan Results" > vt_results.md echo "" >> vt_results.md - for file in release-assets/*.{exe,dmg,AppImage,deb}; do + for file in release-assets/*.{exe,dmg,AppImage,deb,flatpak}; do [ -f "$file" ] || continue filename=$(basename "$file") filesize=$(stat -c%s "$file" 2>/dev/null || stat -f%z "$file") diff --git a/README.md b/README.md index 310c16a3..44273eb7 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ | **macOS (Intel)** | [Auto-Claude-2.7.2-beta.10-darwin-x64.dmg](https://github.com/AndyMik90/Auto-Claude/releases/download/v2.7.2-beta.10/Auto-Claude-2.7.2-beta.10-darwin-x64.dmg) | | **Linux** | [Auto-Claude-2.7.2-beta.10-linux-x86_64.AppImage](https://github.com/AndyMik90/Auto-Claude/releases/download/v2.7.2-beta.10/Auto-Claude-2.7.2-beta.10-linux-x86_64.AppImage) | | **Linux (Debian)** | [Auto-Claude-2.7.2-beta.10-linux-amd64.deb](https://github.com/AndyMik90/Auto-Claude/releases/download/v2.7.2-beta.10/Auto-Claude-2.7.2-beta.10-linux-amd64.deb) | +| **Linux (Flatpak)** | [Auto-Claude-2.7.2-beta.10-linux-x86_64.flatpak](https://github.com/AndyMik90/Auto-Claude/releases/download/v2.7.2-beta.10/Auto-Claude-2.7.2-beta.10-linux-x86_64.flatpak) | > All releases include SHA256 checksums and VirusTotal scan results for security verification. @@ -187,6 +188,28 @@ npm start See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed development setup. +### Building Flatpak + +To build the Flatpak package, you need additional dependencies: + +```bash +# Fedora/RHEL +sudo dnf install flatpak-builder + +# Ubuntu/Debian +sudo apt install flatpak-builder + +# Install required Flatpak runtimes +flatpak install flathub org.freedesktop.Platform//25.08 org.freedesktop.Sdk//25.08 +flatpak install flathub org.electronjs.Electron2.BaseApp//25.08 + +# Build the Flatpak +cd apps/frontend +npm run package:flatpak +``` + +The Flatpak will be created in `apps/frontend/dist/`. + --- ## Security @@ -215,6 +238,7 @@ All releases are: | `npm run package:mac` | Package for macOS | | `npm run package:win` | Package for Windows | | `npm run package:linux` | Package for Linux | +| `npm run package:flatpak` | Package as Flatpak | | `npm run lint` | Run linter | | `npm test` | Run frontend tests | | `npm run test:backend` | Run backend tests | diff --git a/apps/frontend/package.json b/apps/frontend/package.json index a0b9249a..e988c7f9 100644 --- a/apps/frontend/package.json +++ b/apps/frontend/package.json @@ -35,6 +35,7 @@ "package:mac": "npm run python:download && electron-vite build && electron-builder --mac --publish never", "package:win": "npm run python:download && electron-vite build && electron-builder --win --publish never", "package:linux": "npm run python:download && electron-vite build && electron-builder --linux --publish never", + "package:flatpak": "npm run python:download && electron-vite build && electron-builder --linux flatpak --publish never", "start:packaged:mac": "open dist/mac-arm64/Auto-Claude.app || open dist/mac/Auto-Claude.app", "start:packaged:win": "start \"\" \"dist\\win-unpacked\\Auto-Claude.exe\"", "start:packaged:linux": "./dist/linux-unpacked/auto-claude", @@ -205,9 +206,26 @@ "icon": "resources/icon.png", "target": [ "AppImage", - "deb" + "deb", + "flatpak" ], "category": "Development" + }, + "flatpak": { + "runtime": "org.freedesktop.Platform", + "runtimeVersion": "25.08", + "sdk": "org.freedesktop.Sdk", + "base": "org.electronjs.Electron2.BaseApp", + "baseVersion": "25.08", + "finishArgs": [ + "--socket=wayland", + "--socket=x11", + "--share=ipc", + "--share=network", + "--device=dri", + "--filesystem=home", + "--talk-name=org.freedesktop.Notifications" + ] } }, "lint-staged": {