diff --git a/.github/workflows/electron-build.yml b/.github/workflows/electron-build.yml index 1b63a88c..ef5f7dd6 100644 --- a/.github/workflows/electron-build.yml +++ b/.github/workflows/electron-build.yml @@ -97,41 +97,6 @@ jobs: run: npm run publish working-directory: apps/x/apps/main - - name: Diagnose built app - run: | - echo "=== Architecture Check ===" - APP_PATH=$(find apps/x/apps/main/out -name "Rowboat.app" -type d | head -1) - if [ -n "$APP_PATH" ]; then - EXECUTABLE="$APP_PATH/Contents/MacOS/rowboat" - if [ -f "$EXECUTABLE" ]; then - echo "App executable found at: $EXECUTABLE" - echo "Architecture:" - lipo -info "$EXECUTABLE" || file "$EXECUTABLE" - echo "" - echo "=== Code Signing Check ===" - codesign --verify --deep --strict --verbose=2 "$APP_PATH" || echo "App is not signed (this is OK if code signing secrets are not configured)" - echo "" - echo "=== _CodeSignature Check ===" - if [ -d "$APP_PATH/Contents/_CodeSignature" ]; then - echo "WARNING: _CodeSignature directory still exists!" - ls -la "$APP_PATH/Contents/_CodeSignature" || true - else - echo "✓ No _CodeSignature directory (expected for unsigned app)" - fi - echo "" - echo "=== Extended Attributes Check ===" - xattr -l "$APP_PATH" | head -5 || echo "No extended attributes (or not on macOS)" - echo "" - echo "=== Gatekeeper Check ===" - spctl --assess --type execute --verbose "$APP_PATH" || echo "Gatekeeper assessment failed (expected for unsigned apps)" - else - echo "Executable not found at: $EXECUTABLE" - fi - else - echo "App bundle not found" - fi - continue-on-error: true - - name: Upload workflow artifacts uses: actions/upload-artifact@v4 with: diff --git a/apps/x/apps/main/forge.config.cjs b/apps/x/apps/main/forge.config.cjs index 49ddfbe2..01ba724c 100644 --- a/apps/x/apps/main/forge.config.cjs +++ b/apps/x/apps/main/forge.config.cjs @@ -11,7 +11,9 @@ module.exports = { icon: './icons/icon', // .icns extension added automatically appBundleId: 'com.rowboat.app', appCategoryType: 'public.app-category.productivity', - osxSign: {}, + osxSign: { + batchCodesignCalls: true, + }, osxNotarize: { appleId: process.env.APPLE_ID, appleIdPassword: process.env.APPLE_PASSWORD, @@ -39,10 +41,10 @@ module.exports = { makers: [ { name: '@electron-forge/maker-dmg', - config: { + config: (arch) => ({ format: 'ULFO', - name: 'Rowboat', - } + name: `Rowboat-${arch}`, // Architecture-specific name to avoid conflicts + }) }, { name: '@electron-forge/maker-zip', @@ -61,7 +63,7 @@ module.exports = { bucket: 'rowboat-desktop-app-releases', region: 'us-east-1', public: true, - folder: 'releases' // Creates structure: releases/darwin/arm64/files + folder: 'releases' // Creates structure: releases/darwin/{arch}/files (separate builds for arm64 and x64) } } ], diff --git a/apps/x/apps/main/package.json b/apps/x/apps/main/package.json index 601e5a49..4cc4a3c6 100644 --- a/apps/x/apps/main/package.json +++ b/apps/x/apps/main/package.json @@ -6,9 +6,9 @@ "scripts": { "start": "electron .", "build": "rm -rf dist && tsc", - "package": "electron-forge package", - "make": "electron-forge make", - "publish": "electron-forge publish" + "package": "electron-forge package --arch=arm64,x64 --platform=darwin", + "make": "electron-forge make --arch=arm64,x64 --platform=darwin", + "publish": "electron-forge publish --arch=arm64,x64 --platform=darwin" }, "dependencies": { "@x/core": "workspace:*", @@ -21,11 +21,11 @@ "@types/node": "^25.0.3", "electron": "^39.2.7", "esbuild": "^0.24.2", - "@electron-forge/cli": "^7.11.1", - "@electron-forge/maker-deb": "^7.11.1", - "@electron-forge/maker-dmg": "^7.11.1", - "@electron-forge/maker-squirrel": "^7.11.1", - "@electron-forge/maker-zip": "^7.11.1", - "@electron-forge/publisher-s3": "^7.11.1" + "@electron-forge/cli": "^7.10.2", + "@electron-forge/maker-deb": "^7.10.2", + "@electron-forge/maker-dmg": "^7.10.2", + "@electron-forge/maker-squirrel": "^7.10.2", + "@electron-forge/maker-zip": "^7.10.2", + "@electron-forge/publisher-s3": "^7.10.2" } } \ No newline at end of file diff --git a/apps/x/pnpm-lock.yaml b/apps/x/pnpm-lock.yaml index 5d56aa18..490581f0 100644 --- a/apps/x/pnpm-lock.yaml +++ b/apps/x/pnpm-lock.yaml @@ -58,22 +58,22 @@ importers: version: 4.2.1 devDependencies: '@electron-forge/cli': - specifier: ^7.11.1 + specifier: ^7.10.2 version: 7.11.1(encoding@0.1.13)(esbuild@0.24.2) '@electron-forge/maker-deb': - specifier: ^7.11.1 + specifier: ^7.10.2 version: 7.11.1 '@electron-forge/maker-dmg': - specifier: ^7.11.1 + specifier: ^7.10.2 version: 7.11.1 '@electron-forge/maker-squirrel': - specifier: ^7.11.1 + specifier: ^7.10.2 version: 7.11.1 '@electron-forge/maker-zip': - specifier: ^7.11.1 + specifier: ^7.10.2 version: 7.11.1 '@electron-forge/publisher-s3': - specifier: ^7.11.1 + specifier: ^7.10.2 version: 7.11.1 '@types/node': specifier: ^25.0.3 @@ -5901,6 +5901,7 @@ packages: tar@6.2.1: resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} + deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me temp@0.9.4: resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==}