- PyInstaller frozen sidecar: spec file, build script, and ffmpeg path resolver for self-contained distribution without Python prerequisites - Dual-mode sidecar launcher: frozen binary (production) with dev mode fallback - Parallel transcription + diarization pipeline (~30-40% faster) - GPU auto-detection for diarization (CUDA when available) - Async run_pipeline command for real-time progress event delivery - Web Audio API backend for instant playback and seeking - OpenAI-compatible provider replacing LiteLLM client-side routing - Cross-platform RAM detection (Linux/macOS/Windows) - Settings: speaker count hint, token reveal toggles, dark dropdown styling - Loading splash screen, flexbox layout fix for viewport overflow - Gitea Actions CI/CD pipeline (Linux, Windows, macOS ARM) - Updated README and CLAUDE.md documentation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
137 lines
3.9 KiB
YAML
137 lines
3.9 KiB
YAML
name: Build & Release
|
|
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
tags: ["v*"]
|
|
pull_request:
|
|
branches: [main]
|
|
|
|
env:
|
|
PYTHON_VERSION: "3.11"
|
|
NODE_VERSION: "20"
|
|
|
|
jobs:
|
|
build-sidecar:
|
|
name: Build sidecar (${{ matrix.target }})
|
|
runs-on: ${{ matrix.runner }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- runner: ubuntu-latest
|
|
target: x86_64-unknown-linux-gnu
|
|
platform: linux
|
|
- runner: windows-latest
|
|
target: x86_64-pc-windows-msvc
|
|
platform: windows
|
|
- runner: macos-latest
|
|
target: aarch64-apple-darwin
|
|
platform: macos
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
|
|
- name: Build sidecar
|
|
working-directory: python
|
|
run: python build_sidecar.py --cpu-only
|
|
|
|
- name: Upload sidecar artifact
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sidecar-${{ matrix.target }}
|
|
path: python/dist/voice-to-notes-sidecar/
|
|
retention-days: 7
|
|
|
|
build-tauri:
|
|
name: Build app (${{ matrix.target }})
|
|
needs: build-sidecar
|
|
runs-on: ${{ matrix.runner }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- runner: ubuntu-latest
|
|
target: x86_64-unknown-linux-gnu
|
|
platform: linux
|
|
- runner: windows-latest
|
|
target: x86_64-pc-windows-msvc
|
|
platform: windows
|
|
- runner: macos-latest
|
|
target: aarch64-apple-darwin
|
|
platform: macos
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ env.NODE_VERSION }}
|
|
# Note: 'cache: npm' requires the Gitea instance to have
|
|
# Actions cache configured. Remove this if caching is unavailable.
|
|
cache: npm
|
|
|
|
- name: Install Rust stable
|
|
uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Install system dependencies (Linux)
|
|
if: matrix.platform == 'linux'
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
|
|
|
|
- name: Download sidecar artifact
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
name: sidecar-${{ matrix.target }}
|
|
path: src-tauri/binaries/
|
|
|
|
- name: Make sidecar executable (Unix)
|
|
if: matrix.platform != 'windows'
|
|
run: chmod +x src-tauri/binaries/voice-to-notes-sidecar-${{ matrix.target }}
|
|
|
|
- name: Install npm dependencies
|
|
run: npm ci
|
|
|
|
- name: Build Tauri app
|
|
run: npm run tauri build
|
|
env:
|
|
TAURI_SIGNING_PRIVATE_KEY: ${{ secrets.TAURI_SIGNING_PRIVATE_KEY }}
|
|
TAURI_CONFIG: '{"bundle":{"externalBin":["binaries/voice-to-notes-sidecar"]}}'
|
|
|
|
- name: Upload app artifacts (Linux)
|
|
if: matrix.platform == 'linux'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: app-${{ matrix.target }}
|
|
path: |
|
|
src-tauri/target/release/bundle/deb/*.deb
|
|
src-tauri/target/release/bundle/appimage/*.AppImage
|
|
retention-days: 30
|
|
|
|
- name: Upload app artifacts (Windows)
|
|
if: matrix.platform == 'windows'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: app-${{ matrix.target }}
|
|
path: |
|
|
src-tauri/target/release/bundle/msi/*.msi
|
|
src-tauri/target/release/bundle/nsis/*.exe
|
|
retention-days: 30
|
|
|
|
- name: Upload app artifacts (macOS)
|
|
if: matrix.platform == 'macos'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: app-${{ matrix.target }}
|
|
path: |
|
|
src-tauri/target/release/bundle/dmg/*.dmg
|
|
src-tauri/target/release/bundle/macos/*.app
|
|
retention-days: 30
|