diff --git a/.github/workflows/desktop-build.yml b/.github/workflows/desktop-build.yml index 1b855fb..99b6f1b 100644 --- a/.github/workflows/desktop-build.yml +++ b/.github/workflows/desktop-build.yml @@ -58,7 +58,7 @@ jobs: run: npm test build-desktop: - name: Build (${{ matrix.os }}) + name: Build (${{ matrix.platform }}) needs: test-desktop runs-on: ${{ matrix.os }} if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') @@ -67,11 +67,17 @@ jobs: matrix: include: - os: ubuntu-latest + platform: linux build_cmd: npm run build:linux - os: windows-latest + platform: windows build_cmd: npm run build:win + - os: macos-13 + platform: mac-x64 + build_cmd: npm run build:mac -- --x64 - os: macos-latest - build_cmd: npm run build:mac + platform: mac-arm64 + build_cmd: npm run build:mac -- --arm64 steps: - uses: actions/checkout@v4 @@ -95,7 +101,9 @@ jobs: - name: Build backend working-directory: desktop - run: npm run build:backend + run: | + npm ci + npm run build:backend - name: Install frontend dependencies working-directory: frontend @@ -118,6 +126,7 @@ jobs: echo "Error: frontend/out not found. Ensure ELECTRON_BUILD=1 was set." >&2 exit 1 fi + - name: Verify package-lock.json exists working-directory: desktop shell: bash @@ -128,10 +137,6 @@ jobs: fi echo "package-lock.json found" - - name: Install desktop dependencies - working-directory: desktop - run: npm ci - - name: Build installer working-directory: desktop run: ${{ matrix.build_cmd }} @@ -139,7 +144,7 @@ jobs: - name: Upload artifacts uses: actions/upload-artifact@v4 with: - name: odia-desktop-${{ matrix.os }} + name: odia-desktop-${{ matrix.platform }} path: | desktop/dist/*.dmg desktop/dist/*.exe diff --git a/.github/workflows/release-desktop.yml b/.github/workflows/release-desktop.yml index d9ba9d3..72f1d1f 100644 --- a/.github/workflows/release-desktop.yml +++ b/.github/workflows/release-desktop.yml @@ -14,17 +14,23 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, windows-latest, macos-latest] include: - os: ubuntu-latest platform: linux + build_cmd: npm run build:linux artifact: ODIA-*.AppImage - os: windows-latest platform: windows + build_cmd: npm run build:win artifact: ODIA-Setup-*.exe + - os: macos-13 + platform: mac-x64 + build_cmd: npm run build:mac -- --x64 + artifact: ODIA-*-x64.dmg - os: macos-latest - platform: mac - artifact: ODIA-*.dmg + platform: mac-arm64 + build_cmd: npm run build:mac -- --arm64 + artifact: ODIA-*-arm64.dmg runs-on: ${{ matrix.os }} @@ -95,7 +101,7 @@ jobs: - name: Build Electron installer working-directory: desktop - run: npm run build + run: ${{ matrix.build_cmd }} - name: Upload artifacts uses: actions/upload-artifact@v4 @@ -106,9 +112,9 @@ jobs: - name: Upload to Release if: startsWith(github.ref, 'refs/tags/v') - uses: softprops/action-gh-release@v1 + uses: softprops/action-gh-release@v2 with: - files: desktop/dist/* + files: desktop/dist/${{ matrix.artifact }} draft: false prerelease: false generate_release_notes: true diff --git a/README.md b/README.md index 1529d79..e82a819 100644 --- a/README.md +++ b/README.md @@ -25,12 +25,14 @@ Download the latest version from the [**Releases page**](https://github.com/SynT | Platform | Installer | Architecture | |----------|-----------|--------------| | **Windows** | `ODIA-Setup-2.1.0.exe` | x64 | -| **macOS** | `ODIA-2.1.0.dmg` | x64, arm64 (Universal) | +| **macOS (Apple Silicon)** | `ODIA-2.1.0-arm64.dmg` | arm64 (M1/M2/M3/M4) | +| **macOS (Intel)** | `ODIA-2.1.0-x64.dmg` | x64 | | **Linux** | `ODIA-2.1.0.AppImage` | x64 | **Direct download links (after v2.1.0 release):** - [Windows x64](https://github.com/SynTechRev/ODIA/releases/download/v2.1.0/ODIA-Setup-2.1.0.exe) -- [macOS Universal](https://github.com/SynTechRev/ODIA/releases/download/v2.1.0/ODIA-2.1.0.dmg) +- [macOS Apple Silicon (arm64)](https://github.com/SynTechRev/ODIA/releases/download/v2.1.0/ODIA-2.1.0-arm64.dmg) +- [macOS Intel (x64)](https://github.com/SynTechRev/ODIA/releases/download/v2.1.0/ODIA-2.1.0-x64.dmg) - [Linux AppImage](https://github.com/SynTechRev/ODIA/releases/download/v2.1.0/ODIA-2.1.0.AppImage) **System Requirements:** diff --git a/desktop/README.md b/desktop/README.md index 91b0d20..755b42a 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -24,7 +24,8 @@ Download the latest installer for your platform from the | Platform | File | |----------|------| | Windows | `ODIA-Setup-x.x.x.exe` | -| macOS | `ODIA-x.x.x.dmg` | +| macOS (Apple Silicon) | `ODIA-x.x.x-arm64.dmg` | +| macOS (Intel) | `ODIA-x.x.x-x64.dmg` | | Linux | `ODIA-x.x.x.AppImage` | ### Install and Run @@ -126,9 +127,10 @@ cp -r out/* ../desktop/build/frontend/ # 4. Build the installer for your platform cd ../desktop -npm run build:win # Windows -npm run build:mac # macOS -npm run build:linux # Linux +npm run build:win # Windows (x64) +npm run build:mac -- --arm64 # macOS Apple Silicon (arm64) +npm run build:mac -- --x64 # macOS Intel (x64) +npm run build:linux # Linux (x64) ``` Installers are output to `desktop/dist/`. diff --git a/desktop/package.json b/desktop/package.json index df9e529..d04b104 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -62,17 +62,18 @@ "arch": ["x64"] } ], - "icon": "resources/icon.ico" + "icon": "resources/icon.ico", + "artifactName": "${productName}-Setup-${version}.${ext}" }, "mac": { "target": [ { - "target": "dmg", - "arch": ["x64", "arm64"] + "target": "dmg" } ], "icon": "resources/icon.icns", - "category": "public.app-category.productivity" + "category": "public.app-category.productivity", + "artifactName": "${productName}-${version}-${arch}.${ext}" }, "linux": { "target": [ @@ -82,7 +83,8 @@ } ], "icon": "resources/icon.png", - "category": "Office" + "category": "Office", + "artifactName": "${productName}-${version}.${ext}" }, "nsis": { "oneClick": false, diff --git a/desktop/resources/icon.icns b/desktop/resources/icon.icns new file mode 100644 index 0000000..4a7e975 Binary files /dev/null and b/desktop/resources/icon.icns differ diff --git a/desktop/resources/icon.ico b/desktop/resources/icon.ico new file mode 100644 index 0000000..8b375c5 Binary files /dev/null and b/desktop/resources/icon.ico differ diff --git a/desktop/resources/icon.png b/desktop/resources/icon.png new file mode 100644 index 0000000..04aa7c6 Binary files /dev/null and b/desktop/resources/icon.png differ