From 59296e26333e3d930715a4bd2d3d68a3726034b5 Mon Sep 17 00:00:00 2001 From: hsingh Date: Thu, 14 May 2026 15:18:07 +0530 Subject: [PATCH 1/3] chore: enable ci for windows --- .github/workflows/ci.yml | 2 + .github/workflows/release.yml | 99 ++++++++++++++++-- apps/desktop/forge.config.ts | 5 + apps/desktop/package.json | 5 +- .../mic-detector/bin/prismical-mic-detector | Bin 145440 -> 146384 bytes 5 files changed, 101 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 799883de..3bc1fd1e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,6 +53,8 @@ jobs: include: - os: macos runner: macos-latest + - os: windows + runner: windows-2025 steps: - name: Checkout diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 54f18923..b8aaecf6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,6 +3,8 @@ name: Release on: pull_request: push: + branches: + - hs.windows.ci tags: - "v*" workflow_dispatch: @@ -14,7 +16,7 @@ on: jobs: build: - name: Build macOS (${{ matrix.arch }}) + name: Build ${{ matrix.os == 'macos' && 'macOS' || 'Windows' }} (${{ matrix.arch }}) runs-on: ${{ matrix.runner }} strategy: matrix: @@ -25,6 +27,9 @@ jobs: - os: macos arch: x64 runner: macos-15-intel + - os: windows + arch: x64 + runner: windows-2025 steps: - name: Checkout code @@ -68,6 +73,13 @@ jobs: node-version: "24.1.0" cache: "pnpm" + - name: Install Vulkan SDK + if: matrix.os == 'windows' + uses: humbletim/install-vulkan-sdk@v1.2 + with: + version: 1.3.290.0 + cache: true + - name: Log Node.js architecture and platform run: | echo "=== Node.js Process Information ===" @@ -88,23 +100,29 @@ jobs: GGML_NATIVE: OFF # CI mac runners lack i8mm support; keep CPU features conservative here run: pnpm --filter @prismical/whisper-wrapper build:native + - name: Build whisper native binaries (vulkan) + if: matrix.os == 'windows' + env: + GGML_NATIVE: OFF + run: pnpm --filter @prismical/whisper-wrapper build:native:vulkan + - name: Download Node.js binaries working-directory: apps/desktop run: pnpm download-node - name: Import Developer ID cert - if: matrix.os == 'macos' && github.event_name != 'pull_request' + if: matrix.os == 'macos' && (github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag')) uses: apple-actions/import-codesign-certs@v3 with: p12-file-base64: ${{ secrets.DEVELOPER_CERT_BASE64 }} p12-password: ${{ secrets.DEVELOPER_CERT_PASSPHRASE }} - name: List signing identities (debug) - if: matrix.os == 'macos' && github.event_name != 'pull_request' + if: matrix.os == 'macos' && (github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag')) run: security find-identity -v -p codesigning - name: Build artifacts (macOS release) - if: matrix.os == 'macos' && github.event_name != 'pull_request' + if: matrix.os == 'macos' && (github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag')) working-directory: apps/desktop env: SKIP_CODESIGNING: false @@ -127,7 +145,7 @@ jobs: pnpm make:${{ matrix.arch }} - name: Build artifacts (macOS PR) - if: matrix.os == 'macos' && github.event_name == 'pull_request' + if: matrix.os == 'macos' && (github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref_type == 'branch')) working-directory: apps/desktop env: SKIP_CODESIGNING: "true" @@ -145,6 +163,40 @@ jobs: echo "Building unsigned macOS ${{ matrix.arch }} PR artifacts" pnpm make:${{ matrix.arch }} + - name: Build artifacts (Windows release) + if: matrix.os == 'windows' && (github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag')) + working-directory: apps/desktop + env: + POSTHOG_HOST: https://app.posthog.com + TELEMETRY_ENABLED: true + POSTHOG_API_KEY: ${{ secrets.POSTHOG_API_KEY }} + FEEDBACK_SURVEY_ID: ${{ secrets.FEEDBACK_SURVEY_ID }} + AUTH_CLIENT_ID: ${{ secrets.AUTH_CLIENT_ID }} + AUTHORIZATION_ENDPOINT: ${{ secrets.AUTHORIZATION_ENDPOINT }} + AUTH_TOKEN_ENDPOINT: ${{ secrets.AUTH_TOKEN_ENDPOINT }} + API_ENDPOINT: ${{ secrets.API_ENDPOINT }} + AUTH_REDIRECT_URI: ${{ secrets.AUTH_REDIRECT_URI }} + run: | + echo "Building unsigned Windows ${{ matrix.arch }} release artifacts" + pnpm make:windows + + - name: Build artifacts (Windows PR) + if: matrix.os == 'windows' && (github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref_type == 'branch')) + working-directory: apps/desktop + env: + TELEMETRY_ENABLED: "false" + POSTHOG_HOST: https://app.posthog.com + POSTHOG_API_KEY: "" + FEEDBACK_SURVEY_ID: "" + AUTH_CLIENT_ID: "" + AUTHORIZATION_ENDPOINT: "" + AUTH_TOKEN_ENDPOINT: "" + API_ENDPOINT: "" + AUTH_REDIRECT_URI: "" + run: | + echo "Building unsigned Windows ${{ matrix.arch }} PR artifacts" + pnpm make:windows + - name: Get version from package.json id: package_version working-directory: apps/desktop @@ -161,6 +213,16 @@ jobs: echo "Renamed $dmg → Prismical-macos-${{ matrix.arch }}.dmg" done + - name: Rename artifacts (Windows) + if: matrix.os == 'windows' + shell: bash + run: | + cd apps/desktop/out/make/squirrel.windows/${{ matrix.arch }} + for exe in *.exe; do + mv "$exe" "Prismical-windows-${{ matrix.arch }}.exe" + echo "Renamed $exe → Prismical-windows-${{ matrix.arch }}.exe" + done + - name: Upload artifacts (macOS) if: matrix.os == 'macos' uses: actions/upload-artifact@v4 @@ -170,10 +232,20 @@ jobs: apps/desktop/out/make/Prismical-macos-${{ matrix.arch }}.dmg apps/desktop/out/make/zip/darwin/${{ matrix.arch }}/*.zip + - name: Upload artifacts (Windows) + if: matrix.os == 'windows' + uses: actions/upload-artifact@v4 + with: + name: windows-${{ matrix.arch }} + path: | + apps/desktop/out/make/squirrel.windows/${{ matrix.arch }}/Prismical-windows-${{ matrix.arch }}.exe + apps/desktop/out/make/squirrel.windows/${{ matrix.arch }}/*.nupkg + apps/desktop/out/make/squirrel.windows/${{ matrix.arch }}/RELEASES + release: name: Create Release needs: build - if: github.event_name != 'pull_request' + if: (github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag')) runs-on: ubuntu-latest permissions: contents: write @@ -346,13 +418,19 @@ jobs: echo "- **Apple Silicon (M1/M2/M3)**: Download the DMG or ZIP file for arm64" echo "- **Intel**: Download the DMG or ZIP file for x64" echo "" + echo "#### Windows" + echo "- **Windows (x64)**: Download the .exe installer for 64-bit Windows" + echo "" echo "### Installation" echo "" echo "**macOS**:" echo "- **DMG**: Download and open the DMG file, then drag Prismical to your Applications folder" echo "- **ZIP**: Download and extract the ZIP file, then drag Prismical to your Applications folder" echo "" - echo "Windows builds are temporarily disabled." + echo "**Windows**:" + echo "- Download and run the .exe installer" + echo "- Follow the installation wizard" + echo "- The app will be installed to your user AppData folder and a shortcut will be created" echo "" echo "The ZIP files are primarily for automatic updates. We recommend using the DMG files for initial installation on macOS." } > release-notes.md @@ -459,10 +537,10 @@ jobs: - name: List artifacts run: | echo "=== Full artifacts directory structure ===" - find artifacts -type f \( -name "*.dmg" -o -name "*.zip" \) | sort + find artifacts -type f \( -name "*.dmg" -o -name "*.zip" -o -name "*.exe" -o -name "*.nupkg" -o -name "RELEASES" \) | sort echo "" echo "=== Detailed file listing ===" - find artifacts -type f \( -name "*.dmg" -o -name "*.zip" \) -exec ls -la {} \; + find artifacts -type f \( -name "*.dmg" -o -name "*.zip" -o -name "*.exe" -o -name "*.nupkg" -o -name "RELEASES" \) -exec ls -la {} \; - name: Create Release uses: softprops/action-gh-release@v2 @@ -479,5 +557,8 @@ jobs: artifacts/macos-arm64/zip/darwin/arm64/*.zip artifacts/macos-x64/*.dmg artifacts/macos-x64/zip/darwin/x64/*.zip + artifacts/windows-x64/*.exe + artifacts/windows-x64/*.nupkg + artifacts/windows-x64/RELEASES env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/apps/desktop/forge.config.ts b/apps/desktop/forge.config.ts index 9fd979f4..8987c1e0 100644 --- a/apps/desktop/forge.config.ts +++ b/apps/desktop/forge.config.ts @@ -413,6 +413,11 @@ const config: ForgeConfig = { icon: "./assets/logo", // Path to your icon file appBundleId: "com.prismical.desktop", // Proper bundle ID extraResource: [ + `${ + process.platform === "win32" + ? "../../packages/native-helpers/windows-helper/bin" + : "../../packages/native-helpers/swift-helper/bin" + }`, "./src/db/migrations", // Only include the platform-specific node binary `./node-binaries/${process.platform}-${process.arch}/node${ diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 8fb155c2..4ad9bfd0 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -40,11 +40,14 @@ "db:generate": "drizzle-kit generate", "db:push": "drizzle-kit push", "db:migrate": "drizzle-kit migrate", - "build:deps": "pnpm download-node && pnpm build:types && pnpm build:whisper && pnpm build:audio-capture && pnpm build:mic-detector", + "build:deps": "pnpm download-node && pnpm build:types && pnpm build:whisper && pnpm build:audio-capture && pnpm build:mic-detector && pnpm build:native-helper", "build:audio-capture": "pnpm --filter @prismical/audio-capture build", "build:mic-detector": "pnpm --filter @prismical/mic-detector build", "build:whisper": "pnpm --filter @prismical/whisper-wrapper build", "build:types": "pnpm --filter @prismical/types build", + "build:swift-helper": "pnpm --filter @prismical/swift-helper build", + "build:windows-helper": "pnpm --filter @prismical/windows-helper build", + "build:native-helper": "node -p \"process.platform === 'darwin' ? 'build:swift-helper' : process.platform === 'win32' ? 'build:windows-helper' : 'echo No native helpers'\" | xargs pnpm run", "dev:prepare": "pnpm download-node", "dev": "electron-forge start", "kill": "bash scripts/kill-dev.sh", diff --git a/packages/native-helpers/mic-detector/bin/prismical-mic-detector b/packages/native-helpers/mic-detector/bin/prismical-mic-detector index 90cf0bf24b685adc53424941af7e03a2e7d48375..82175d58077e0d67076c0fabe4266cf2b20f2872 100755 GIT binary patch literal 146384 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
  • I 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 z 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 dz?Oh50b2sL1Z)Y|60jv;OTdc`^ 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 From 116aaf316d352a83311aa6ad5b4a1cf7bb4c1989 Mon Sep 17 00:00:00 2001 From: hsingh Date: Thu, 14 May 2026 17:13:58 +0530 Subject: [PATCH 2/3] chore: workaround for long pathname for windows builds --- .github/workflows/release.yml | 4 ++++ packages/whisper-wrapper/bin/build-addon.js | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b8aaecf6..a6624754 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -104,6 +104,10 @@ jobs: if: matrix.os == 'windows' env: GGML_NATIVE: OFF + # whisper.cpp's vulkan-shaders-gen sub-cmake TryCompile pushes paths + # past Windows' 260-char MAX_PATH from D:\a\prismical\prismical\... . + # Build out-of-tree on a short path; build-addon.js honors this env. + WHISPER_BUILD_OUT_DIR: C:\b run: pnpm --filter @prismical/whisper-wrapper build:native:vulkan - name: Download Node.js binaries diff --git a/packages/whisper-wrapper/bin/build-addon.js b/packages/whisper-wrapper/bin/build-addon.js index a427b9f5..7a4e1bd2 100644 --- a/packages/whisper-wrapper/bin/build-addon.js +++ b/packages/whisper-wrapper/bin/build-addon.js @@ -40,8 +40,12 @@ if (!fs.existsSync(addonDir) || !hasRequiredWhisperSources) { process.exit(1); } -const buildDir = path.join(pkgDir, "build"); -if (!fs.existsSync(buildDir)) fs.mkdirSync(buildDir); +// WHISPER_BUILD_OUT_DIR lets CI place the cmake build tree on a short Windows +// path so vulkan-shaders-gen's sub-cmake TryCompile doesn't hit MAX_PATH (260). +const buildDir = process.env.WHISPER_BUILD_OUT_DIR + ? path.resolve(process.env.WHISPER_BUILD_OUT_DIR) + : path.join(pkgDir, "build"); +if (!fs.existsSync(buildDir)) fs.mkdirSync(buildDir, { recursive: true }); const cacheDir = path.join(pkgDir, ".cmake-js"); if (!fs.existsSync(cacheDir)) fs.mkdirSync(cacheDir); From bfb093d070ba0d37a4f2b9204f81a7684c05a604 Mon Sep 17 00:00:00 2001 From: hsingh Date: Thu, 14 May 2026 20:07:16 +0530 Subject: [PATCH 3/3] chore: adjust release workflow triggers --- .github/workflows/release.yml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a6624754..6fce4cae 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,8 +3,6 @@ name: Release on: pull_request: push: - branches: - - hs.windows.ci tags: - "v*" workflow_dispatch: @@ -115,18 +113,18 @@ jobs: run: pnpm download-node - name: Import Developer ID cert - if: matrix.os == 'macos' && (github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag')) + if: matrix.os == 'macos' && github.event_name != 'pull_request' uses: apple-actions/import-codesign-certs@v3 with: p12-file-base64: ${{ secrets.DEVELOPER_CERT_BASE64 }} p12-password: ${{ secrets.DEVELOPER_CERT_PASSPHRASE }} - name: List signing identities (debug) - if: matrix.os == 'macos' && (github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag')) + if: matrix.os == 'macos' && github.event_name != 'pull_request' run: security find-identity -v -p codesigning - name: Build artifacts (macOS release) - if: matrix.os == 'macos' && (github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag')) + if: matrix.os == 'macos' && github.event_name != 'pull_request' working-directory: apps/desktop env: SKIP_CODESIGNING: false @@ -149,7 +147,7 @@ jobs: pnpm make:${{ matrix.arch }} - name: Build artifacts (macOS PR) - if: matrix.os == 'macos' && (github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref_type == 'branch')) + if: matrix.os == 'macos' && github.event_name == 'pull_request' working-directory: apps/desktop env: SKIP_CODESIGNING: "true" @@ -168,7 +166,7 @@ jobs: pnpm make:${{ matrix.arch }} - name: Build artifacts (Windows release) - if: matrix.os == 'windows' && (github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag')) + if: matrix.os == 'windows' && github.event_name != 'pull_request' working-directory: apps/desktop env: POSTHOG_HOST: https://app.posthog.com @@ -185,7 +183,7 @@ jobs: pnpm make:windows - name: Build artifacts (Windows PR) - if: matrix.os == 'windows' && (github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref_type == 'branch')) + if: matrix.os == 'windows' && github.event_name == 'pull_request' working-directory: apps/desktop env: TELEMETRY_ENABLED: "false" @@ -249,7 +247,7 @@ jobs: release: name: Create Release needs: build - if: (github.event_name == 'workflow_dispatch' || (github.event_name == 'push' && github.ref_type == 'tag')) + if: github.event_name == 'workflow_dispatch' || github.ref_type == 'tag' runs-on: ubuntu-latest permissions: contents: write