| name | release-check |
| description | Use before cutting a release to verify build, version, and smoke test. |
Release Check
Pre-release verification for Handless. Run all checks, report pass/fail per item, and block release on any failure.
Steps
1. Version Sync
All three files must contain the same version string:
src-tauri/tauri.conf.json → "version": "X.Y.Z" (primary source — release workflow reads this)
src-tauri/Cargo.toml → version = "X.Y.Z"
package.json → "version": "X.Y.Z"
Read all three files and compare. Any mismatch is a Fail.
2. CHANGELOG.md
CHANGELOG.md must have a ## [X.Y.Z] - YYYY-MM-DD section matching the version from step 1.
- The
## [Unreleased] section should be empty (all items moved to the new version section).
- The version section must have at least one entry under Added, Changed, or Fixed.
3. Translation Consistency
Run:
bun run check:translations
Non-zero exit code is a Fail. Report any missing or extra keys.
4. TypeScript Lint & Type Check
Run in parallel:
bun run lint
npx tsc --noEmit
Non-zero exit code on either is a Fail.
5. Formatting
Run in parallel:
bun run format:check
cd src-tauri && cargo fmt --check
Non-zero exit code on either is a Fail.
6. Rust Clippy
Run:
cargo clippy --manifest-path src-tauri/Cargo.toml -- -D warnings
Non-zero exit code is a Fail. Warnings promoted to errors.
7. Cargo.lock Sync
Run:
cargo check --manifest-path src-tauri/Cargo.toml --locked
Fails if Cargo.lock is out of date with Cargo.toml.
8. Bindings Up-to-Date
Specta auto-generates src/bindings.ts during cargo check. After the Rust check in step 7, verify:
git diff --name-only src/bindings.ts
If bindings.ts has uncommitted changes, bindings are stale — Fail.
9. Build Smoke Test
Run:
bun run tauri build
Non-zero exit code is a Fail. This is the slowest step; run it last.
10. Clean Working Tree
Run:
git status --porcelain
Any uncommitted changes (other than the release commit itself) is a Fail. Everything must be committed before triggering the release workflow.
Output
Print a summary table:
## Release Check: vX.Y.Z
| # | Check | Status |
|----|------------------------|--------|
| 1 | Version sync | Pass |
| 2 | CHANGELOG.md | Pass |
| 3 | Translations | Pass |
| 4 | Lint & type check | Pass |
| 5 | Formatting | Pass |
| 6 | Clippy | Pass |
| 7 | Cargo.lock sync | Pass |
| 8 | Bindings up-to-date | Pass |
| 9 | Build smoke test | Pass |
| 10 | Clean working tree | Pass |
Result: READY TO RELEASE ✓
Any Fail must be fixed before release. After all checks pass, the release can be triggered via gh workflow run release.yml.