Skip to content

Latest commit

 

History

History
55 lines (38 loc) · 2.65 KB

File metadata and controls

55 lines (38 loc) · 2.65 KB

Building and releasing

PyInstaller creates a one-file Python sidecar before Tauri builds native desktop packages. Windows x64, macOS arm64, and Linux x86_64 builds must run natively on their target platforms.

Common setup

Install Python 3.12/3.13, Node.js 22, pnpm, Rust stable, and the target platform's Tauri prerequisites:

python3 -m venv .venv
.venv/bin/python -m pip install -e ".[dev]"
pnpm --dir frontend install --frozen-lockfile

Use .venv\Scripts\python.exe on Windows.

Platform builds

# Windows x64
packaging\prepare-ffmpeg.ps1
packaging\build-desktop.ps1 -Python .\.venv\Scripts\python.exe
packaging\build-portable.ps1 -Python .\.venv\Scripts\python.exe -SkipBuild
# Apple Silicon macOS
brew install pkg-config
bash packaging/prepare-ffmpeg-macos.sh
PYTHON=.venv/bin/python bash packaging/build-desktop.sh
# Debian/Ubuntu Linux x86_64
sudo apt-get install -y pkg-config libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
bash packaging/prepare-ffmpeg-linux.sh
PYTHON=.venv/bin/python bash packaging/build-desktop-linux.sh
SKIP_BUILD=1 bash packaging/build-portable-linux.sh

Windows produces NSIS/MSI and a portable ZIP. macOS produces an app/DMG. Linux produces DEB/RPM/AppImage packages and a portable TAR.GZ.

FFmpeg provenance

Windows and Linux use separate, unmodified BtbN LGPL binaries pinned to immutable autobuild-* tags and verified with SHA-256. macOS compiles pinned FFmpeg 8.1.2 and LAME 3.100 sources. Every package carries build information, licenses, and FFMPEG_SOURCE.txt; formal Releases include corresponding source archives.

Never combine a mutable /latest/ download URL with a fixed checksum. An FFmpeg update must change the preparation script, source notice, third-party notice, Release source archive job, and regression tests together.

GitHub Actions and releases

CI runs backend, frontend, browser, and Rust checks on pull requests and main/master pushes. Desktop builds can create development artifacts manually. A vX.Y.Z tag matching all project version files creates a formal Release; matching vX.Y.Z-rc.N tags create prereleases.

The release workflow builds and smoke-tests all three platforms, uploads corresponding sources, creates per-asset checksums plus SHA256SUMS.txt, and records macOS signing status. Apple notarization is enabled only when every required signing secret is available; otherwise the macOS package is ad-hoc signed.

Before publishing, verify version consistency, all platform jobs, asset names, checksums, licenses, source archives, signing status, and release notes. Record any untested operating systems or real-account/4K scenarios.