This template should help get you started developing with Tauri, React and Typescript in Vite.
For reasoning about this decision, refer to the ADR (Architecture Decision Record) doc.
This repository uses GitVersion (v6) to derive a SemVer version automatically from the git graph — no manual version bumps needed in most cases.
| Branch pattern | Example | Version produced | Pre-release tag |
|---|---|---|---|
dev / main / master |
dev |
X.(Y+1).0-alpha.N |
alpha |
release/version-demo_vX.Y |
release/version-demo_v3.1 |
X.Y.0-beta.N |
beta |
| Tagged commit | release/version-demo_v3.1.0 |
3.1.0 (stable) |
— |
devbranch uses ContinuousDeployment mode. Every commit producesX.(Y+1).0-alpha.NwhereNis the commit count since the last release tag. Minor version increments automatically.release/version-demo_vX.Ybranches use ContinuousDelivery mode. TheX.Yin the branch name drives the base version — no anchor tag required. Every commit producesX.Y.0-beta.NwhereNis the commit count on that branch.- Tagging a release commit as
release/version-demo_vX.Y.Z(orrelease/version-demo_vX.Y.Z-beta.N) produces exactlyX.Y.Z(orX.Y.Z-beta.N) with no increment.
Include +semver: breaking or +semver: major in dev in a commit message to trigger a major version bump.
Tags must be prefixed with release/version-demo_v (e.g. release/version-demo_v3.1.0).
- The workflow triggers on pushes to
dev,release/*branches, andrelease/*tags. - GitVersion computes the
VERSIONand injects it before the build. - Each CI run embeds a monotonic build id
${{ github.run_id }}-${{ github.run_attempt }}into both the frontend bundle and the Rust binary.
When you push a tag matching release/version-demo_vX.Y.Z, the CI workflow automatically:
- Builds the frontend and Rust backend
- Creates a GitHub Release with:
- Release name and tag from the tag name (e.g.,
release/version-demo_v1.2.3) - Zipped frontend dist artifact
- Auto-generated release notes from merged PRs and commits since the last tag
- Release name and tag from the tag name (e.g.,
- Frontend:
src/build-info.json(generated at build time) containsversion,buildId, andcommitSha. - Backend: the
get_build_infoTauri command returns the same metadata at runtime.
Local testing:
- Install dependencies and build the frontend:
npm install -g pnpm
pnpm install
pnpm build- Build the Rust backend (Tauri):
cd src-tauri
cargo build --releaseIn CI, the src/build-info.json file is created by the workflow before the frontend build so the version is baked into the produced bundle.
A GitHub Action automatically creates cherry-pick pull requests when you comment /cherry-pick-to <branch> on any merged pull request.
Usage:
/cherry-pick-to release/1.x
The bot will:
- Extract the squash-merge commit from the original PR
- Create a new branch off the target branch
- Cherry-pick the commit
- Open a PR titled
[Cherry Pick] <original title> → <target-branch> - Link back to the original PR in a comment
Prerequisites:
For the bot to work, GitHub Actions must have permission to create PRs. Enable this in your repository settings:
- Go to Settings → Actions → General
- Under Workflow permissions, select "Read and write permissions"
- Check "Allow GitHub Actions to create and approve pull requests"
- Click Save
Without this setting, the workflow will fail with HttpError: GitHub Actions is not permitted to create or approve pull requests.
