name: windows-build on: workflow_dispatch: push: tags: ['v*'] jobs: build-windows: runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Setup Node uses: actions/setup-node@v4 with: node-version: 20 - name: Setup Rust uses: dtolnay/rust-toolchain@stable - name: Install backend deps run: | pip install pyinstaller pywin32 pip install -r requirements.txt # pedalboard --no-deps: tránh supertonic (kéo onnx2tf/opencv/pocket-tts — # xung đột numpy<2 vs >=2 — 2026-08-08) pip install --no-deps pedalboard>=0.8.0 - name: Precompile JS (Babel) shell: bash run: | npm install --no-audit --no-fund 2>/dev/null || true node node_modules/@babel/cli/bin/babel.js app/static/js/app.jsx --config-file ./babel.config.json -o app/static/js/app.precompiled.js - name: Build daw_engine.exe (PyInstaller) run: pyinstaller engine.spec --clean --noconfirm - name: Stage sidecar binary (Tauri naming) shell: bash run: | mkdir -p src-tauri/binaries cp dist/daw_engine.exe "src-tauri/binaries/daw_engine-x86_64-pc-windows-msvc.exe" - name: Install Tauri CLI run: npm install -D @tauri-apps/cli@^2 - name: Build Windows installers (NSIS + MSI) run: npx tauri build --no-bundle 2>/dev/null || npx tauri build - name: Upload installer artifacts uses: actions/upload-artifact@v4 with: name: SonicForgeDAW-windows path: | src-tauri/target/release/bundle/nsis/*.exe src-tauri/target/release/bundle/msi/*.msi dist/daw_engine.exe