Releasing¶
Versioning follows SemVer MAJOR.MINOR.PATCH. Each major version line is a different implementation:
- 3.x — Tauri 2 + Rust + Svelte 5 (current)
- 2.x — Wails 2 + Go + Svelte 5 (
wails-versionbranch) - 1.x — Python (
python-legacybranch)
Cut a release¶
```bash
1. Bump the version¶
pnpm bump # patch (alias for bump:patch) 3.0.0 -> 3.0.1 pnpm bump:patch # patch 3.0.0 -> 3.0.1 pnpm bump:minor # minor 3.0.5 -> 3.1.0 pnpm bump:major # major 3.1.4 -> 4.0.0
2. Commit the version bump¶
git add -A
git commit -m "Bump to
3. Tag and push (triggers the release workflow)¶
pnpm tag ```
scripts/bump.mjs keeps these in sync:
version.txtsrc-tauri/Cargo.tomlsrc-tauri/tauri.conf.json- root
package.json
What the release workflow does¶
v* tag push → .github/workflows/release.yml:
- Runs CI (fmt, clippy, test, frontend build) as a gate
- Matrix build on
ubuntu-22.04,macos-latest,windows-latest tauri-apps/tauri-actionbuilds the bundle for each platform- macOS additionally builds the BPF helper
.pkg - All artifacts attach to a GitHub Release named
PortFinder v<version>
Manual checks before tagging¶
cargo fmt --checkcargo clippy --all-targets -- -D warningscargo test --lib- Open the app via
pnpm tauri:devand capture a real packet