name: Desktop Build on: push: branches: [main, neutralino] workflow_dispatch: permissions: contents: write jobs: build: runs-on: ${{ matrix.os }} strategy: matrix: include: - os: windows-latest platform: windows binary_source: Monochrome-win_x64.exe binary_dest: Monochrome.exe archive_name: monochrome-windows.zip - os: ubuntu-latest platform: linux binary_source: Monochrome-linux_x64 binary_dest: Monochrome archive_name: monochrome-linux.zip - os: macos-latest platform: macos binary_source: Monochrome-mac_universal binary_dest: Monochrome archive_name: monochrome-mac.zip steps: - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 1 - name: Setup Bun uses: oven-sh/setup-bun@v1 with: bun-version: latest - name: Install dependencies run: bun install - name: Download Neutralino binaries run: bun x neu update - name: Build application run: bun run build - name: Prepare Release Folder run: | mkdir release cp dist/Monochrome/resources.neu release/ cp neutralino.config.json release/ cp -r dist/Monochrome/extensions release/ cp dist/Monochrome/${{ matrix.binary_source }} release/${{ matrix.binary_dest }} shell: bash - name: Set Permissions (Linux/macOS) if: matrix.platform != 'windows' run: chmod +x release/${{ matrix.binary_dest }} - name: Zip for R2 (Windows) if: matrix.platform == 'windows' run: Compress-Archive -Path release/* -DestinationPath ${{ matrix.archive_name }} -Force shell: pwsh - name: Zip for R2 (Linux/macOS) if: matrix.platform != 'windows' run: | cd release zip -r ../${{ matrix.archive_name }} . shell: bash - name: Upload to R2 uses: ryand56/r2-upload-action@latest with: r2-account-id: ${{ secrets.R2_ACCOUNT_ID }} r2-access-key-id: ${{ secrets.R2_ACCESS_KEY_ID }} r2-secret-access-key: ${{ secrets.R2_SECRET_ACCESS_KEY }} r2-bucket: ${{ secrets.R2_BUCKET }} source-dir: '.' include: '${{ matrix.archive_name }}' destination-dir: '' - name: Upload Artifact (GH Internal) uses: actions/upload-artifact@v4 with: name: Monochrome-${{ matrix.platform }} path: release/ retention-days: 30