feat(electron): add official icons and release workflow (#154)

* feat(electron): add app icons for Windows, macOS, and Linux releases

- icon.ico: Windows application icon (256x256 with multiple resolutions)
- icon.icns: macOS application icon bundle (16px to 1024px)
- icon.png: Linux/general purpose icon (512x512)
- tray-icon.png: System tray icon (32x32)

Icons generated from images/omniroute.png source logo.
Enables branded Electron desktop app builds for all platforms.

* chore: sync package-lock.json

* feat(electron): use official SVG logo and add release workflow

- Regenerated app icons from public/icon-192.svg (official OmniRoute logo)
- Added .github/workflows/electron-release.yml for automated builds
- Icons: icon.icns (macOS), icon.ico (Windows), icon.png (Linux), tray-icon.png
- Build workflow creates DMG (mac), EXE (win), AppImage (linux) on release

* ci: add npm cache to electron-release workflow
This commit is contained in:
Benson
2026-02-28 18:56:46 +05:30
committed by GitHub
parent 52e3d4b37b
commit 2a79b833fb
6 changed files with 66 additions and 0 deletions

65
.github/workflows/electron-release.yml vendored Normal file
View File

@@ -0,0 +1,65 @@
name: Build Electron Desktop App
on:
release:
types: [published]
permissions:
contents: write
jobs:
build:
name: Build Electron (${{ matrix.os }})
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- os: windows
runner: windows-latest
target: win
- os: macos
runner: macos-latest
target: mac
- os: linux
runner: ubuntu-latest
target: linux
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 22
cache: npm
- name: Cache node_modules
uses: actions/cache@v4
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install dependencies
run: npm ci
- name: Build Next.js standalone
run: npm run build
- name: Install Electron dependencies
working-directory: electron
run: npm ci
- name: Build Electron for ${{ matrix.target }}
working-directory: electron
run: npm run build:${{ matrix.target }}
- name: Upload release assets
uses: softprops/action-gh-release@v2
with:
files: electron/dist-electron/**/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

1
.gitignore vendored
View File

@@ -105,3 +105,4 @@ app.__qa_backup/
# Electron (subproject dependency lock)
electron/package-lock.json
icon.iconset/

BIN
electron/assets/icon.icns Normal file

Binary file not shown.

BIN
electron/assets/icon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

BIN
electron/assets/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 713 B