Skip to content

Comprehensive React 19 upgrade with MUI v7 compatibility, dynamic theming, production deployment fixes, and Android build compatibility #109

Comprehensive React 19 upgrade with MUI v7 compatibility, dynamic theming, production deployment fixes, and Android build compatibility

Comprehensive React 19 upgrade with MUI v7 compatibility, dynamic theming, production deployment fixes, and Android build compatibility #109

name: Build Windows Native
on:
push:
branches: [ main, develop, 'feature/*', 'fix/*', 'copilot/*' ]
paths-ignore:
- 'docs/**'
- '*.md'
pull_request:
branches: [ main, develop ]
paths-ignore:
- 'docs/**'
- '*.md'
workflow_dispatch:
release:
types: [ published ]
jobs:
build-windows-native:
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'yarn'
- name: Cache Node modules
uses: actions/cache@v4
with:
path: |
node_modules
~/.yarn/cache
~/AppData/Local/electron/Cache
~/AppData/Local/electron-builder/Cache
key: ${{ runner.os }}-windows-native-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-windows-native-
${{ runner.os }}-yarn-
- name: Install dependencies
shell: bash
run: |
for i in 1 2 3; do
yarn install --frozen-lockfile && break || sleep 10
done
- name: Build web application
run: yarn build
- name: Install system dependencies for native builds
run: |
# Install Wine for potential cross-compilation support
# Note: Not needed on Windows, but kept for consistency
echo "Windows native build environment ready"
- name: Build Windows native applications
run: ./scripts/build-native-windows.sh
shell: bash
- name: Verify Windows builds
run: |
echo "Verifying Windows native builds..."
if (Test-Path "native-builds/windows") {
Get-ChildItem -Recurse "native-builds/windows" -Include *.exe,*.msi | ForEach-Object {
$size = [math]::Round($_.Length / 1MB, 2)
Write-Host "✓ $($_.Name): ${size}MB"
}
} else {
Write-Error "Windows builds not found!"
exit 1
}
shell: powershell
- name: Create build artifacts metadata
run: |
$version = (Get-Content package.json | ConvertFrom-Json).version
$timestamp = Get-Date -Format "yyyyMMdd-HHmmss"
# Create metadata file using simple string concatenation
$metadata = "SVMSeek Wallet - Windows Native Build Artifacts`n"
$metadata += "===============================================`n"
$metadata += "Version: $version`n"
$metadata += "Build Date: $(Get-Date)`n"
$metadata += "Build System: Windows (GitHub Actions)`n"
$metadata += "Node Version: $(node --version)`n`n"
$metadata += "Windows Native Packages:`n"
if (Test-Path "native-builds/windows") {
Get-ChildItem -Recurse "native-builds/windows" -Include *.exe,*.msi | ForEach-Object {
$size = [math]::Round($_.Length / 1MB, 2)
$metadata += "- $($_.Name): ${size}MB`n"
}
}
$metadata += "`nInstallation Instructions:`n"
$metadata += "1. NSIS Installer (.exe): Run and follow setup wizard`n"
$metadata += "2. Portable (.exe): Extract and run directly`n"
$metadata += "3. MSI Package (.msi): Use Windows Installer`n`n"
$metadata += "Distribution Ready: Yes`n"
$metadata += "Digitally Signed: No (requires code signing certificate)`n"
$metadata | Out-File -FilePath "native-builds/windows/windows-build-metadata.txt" -Encoding UTF8
shell: powershell
- name: Upload Windows native artifacts
uses: actions/upload-artifact@v4
with:
name: svmseek-wallet-windows-native
path: |
native-builds/windows/
retention-days: 30
if-no-files-found: error
- name: Upload Windows installer for releases
if: github.event_name == 'release'
uses: actions/upload-artifact@v4
with:
name: svmseek-wallet-windows-installer
path: |
native-builds/windows/**/*.exe
native-builds/windows/**/*.msi
retention-days: 90
- name: Attach to GitHub Release
if: github.event_name == 'release'
uses: softprops/action-gh-release@v1
with:
files: |
native-builds/windows/**/*.exe
native-builds/windows/**/*.msi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create Windows Store package (if configured)
if: github.ref == 'refs/heads/main' && github.event_name == 'push'
run: |
# Future: Create MSIX package for Microsoft Store
echo "Windows Store package creation would go here"
echo "Requires Microsoft Store developer account and certificates"
shell: bash