From 500b1f5497574d4b06e9a31ecd8a045f71acb5cf Mon Sep 17 00:00:00 2001 From: Gavin Mogan Date: Tue, 23 Jun 2026 20:42:15 -0700 Subject: [PATCH] Update release script to build all OSes and do the release * Switch to GITHUB_TOKEN so its short lived and no secret managements. Uses permissions * Matrix of osses to build all packages * Add flatback because i want it I used claude to help cause i was super lazy --- .github/workflows/release.yml | 33 +++++++++++++++++++++++++++++---- README.md | 20 ++++++++++++++++++++ package.json | 26 ++++++++++++++++++++++++-- 3 files changed, 73 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7ebcdf9..795c2bd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,10 +4,27 @@ on: push: tags: - "v*" + workflow_dispatch: jobs: - release: - runs-on: windows-latest + build: + strategy: + fail-fast: false + matrix: + os: + - name: Linux amd64 + image: ubuntu-24.04 + - name: Linux arm64 + image: ubuntu-24.04-arm + - name: macOS + image: macos-latest + - name: Windows + image: windows-latest + runs-on: ${{ matrix.os.image }} + name: Build (${{ matrix.os.name }}) + permissions: + contents: write + packages: write steps: - name: Checkout code @@ -18,10 +35,18 @@ jobs: with: node-version: "24" + - name: Install Flatpak tooling + if: startsWith(matrix.os.name, 'Linux') + run: | + sudo apt-get update + sudo apt-get install -y flatpak flatpak-builder elfutils + flatpak remote-add --if-not-exists --user flathub https://flathub.org/repo/flathub.flatpakrepo + flatpak install -y --user flathub org.freedesktop.Platform//23.08 org.freedesktop.Sdk//23.08 org.electronjs.Electron2.BaseApp//23.08 + - name: Install dependencies - run: npm install + run: npm ci - name: Build and publish env: - GH_TOKEN: ${{ secrets.GH_TOKEN }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: npm run publish diff --git a/README.md b/README.md index e8f00eb..a9749ee 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,26 @@ This project is not affliated with the RomM project. It is a third-party client - Sync save data between local storage and RomM server - Support for multiple emulators (e.g., PPSSPP, Dolphin...) +## Downloads + +Pre-built packages are published on the [releases page](https://github.com/chaun14/romm-client/releases): + +- **Windows** — NSIS installer (`.exe`) +- **macOS** — disk image (`.dmg`) +- **Linux** — AppImage (`.AppImage`) and Flatpak (`.flatpak`) + +## Building from source + +```bash +npm install +npm run dist:linux # builds both AppImage and Flatpak +npm run dist:win # builds the Windows installer +npm run dist:mac # builds the macOS disk image +``` + +Building the Flatpak locally requires `flatpak`, `flatpak-builder` and the +`org.electronjs.Electron2.BaseApp//23.08` runtime to be installed. + ## Supported Emulators - PPSSPP (PlayStation Portable) diff --git a/package.json b/package.json index 07e885c..e69b8af 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "dist:win": "npm run build && electron-builder --win", "dist:mac": "npm run build && electron-builder --mac", "dist:linux": "npm run build && electron-builder --linux", - "publish": "npm run build && electron-builder --win --publish always" + "publish": "npm run build && electron-builder --publish always" }, "keywords": [ "romm", @@ -79,7 +79,29 @@ "target": "dmg" }, "linux": { - "target": "AppImage" + "target": [ + "AppImage", + "flatpak" + ], + "category": "Game", + "icon": "build/icon.png", + "artifactName": "RomMClient-${version}-${arch}.${ext}", + "synopsis": "Desktop client for the RomM API", + "syncDesktopName": true + }, + "flatpak": { + "runtimeVersion": "23.08", + "baseVersion": "23.08", + "branch": "stable", + "finishArgs": [ + "--share=ipc", + "--socket=x11", + "--socket=wayland", + "--socket=pulseaudio", + "--share=network", + "--device=all", + "--filesystem=home" + ] }, "nsis": { "oneClick": false,