#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT_DIR" APP_VERSION="2.2.2" APP_BUILD="20260703.0335" ARCH="${1:-amd64}" if [[ "$ARCH" != "amd64" ]]; then echo "Only amd64 is supported for the Windows preview build." >&2 exit 2 fi for tool in go npm x86_64-w64-mingw32-gcc x86_64-w64-mingw32-g++; do if ! command -v "$tool" >/dev/null 2>&1; then echo "Missing required tool: $tool" >&2 exit 127 fi done OUT_ROOT="$ROOT_DIR/build/windows-preview" OUT_DIR="$OUT_ROOT/PrivateVoice-Dictation-${APP_VERSION}-build${APP_BUILD}-windows-${ARCH}-preview" ZIP_PATH="$OUT_ROOT/PrivateVoice-Dictation-${APP_VERSION}-build${APP_BUILD}-windows-${ARCH}-preview.zip" rm -rf "$OUT_DIR" "$ZIP_PATH" mkdir -p "$OUT_DIR" echo "Building frontend..." npm --prefix frontend install npm --prefix frontend run build SHERPA_WINDOWS_DIR="$(go list -m -f '{{.Dir}}' github.com/k2-fsa/sherpa-onnx-go-windows)" SHERPA_DLL_DIR="$SHERPA_WINDOWS_DIR/lib/x86_64-pc-windows-gnu" for dll in onnxruntime.dll sherpa-onnx-c-api.dll sherpa-onnx-cxx-api.dll; do if [[ ! -f "$SHERPA_DLL_DIR/$dll" ]]; then echo "Missing sherpa runtime DLL: $SHERPA_DLL_DIR/$dll" >&2 exit 3 fi done echo "Building Windows executable..." GOOS=windows \ GOARCH=amd64 \ CGO_ENABLED=1 \ CC=x86_64-w64-mingw32-gcc \ CXX=x86_64-w64-mingw32-g++ \ go build \ -buildvcs=false \ -ldflags="-H windowsgui" \ -o "$OUT_DIR/PrivateVoice Dictation.exe" \ . cp "$SHERPA_DLL_DIR/onnxruntime.dll" "$OUT_DIR/" cp "$SHERPA_DLL_DIR/sherpa-onnx-c-api.dll" "$OUT_DIR/" cp "$SHERPA_DLL_DIR/sherpa-onnx-cxx-api.dll" "$OUT_DIR/" cp "$ROOT_DIR/scripts/QA-WINDOWS-PREVIEW.ps1" "$OUT_DIR/" cp "$ROOT_DIR/scripts/RUN-WINDOWS-QA.cmd" "$OUT_DIR/" cat >"$OUT_DIR/README-WINDOWS-PREVIEW.txt" <