Releases
Translay uses semantic versioning: major.minor.patch. The version lives in vt/__init__.py (python run.py --version), docs/package.json and the desktop app (desktop/package.json, desktop/src-tauri/Cargo.toml and tauri.conf.json); scripts/release.py changes them all together. Each version is a vX.Y.Z tag.
| Bumps | When since the last version there is… |
|---|---|
| Major | an incompatible change (! or BREAKING CHANGE:): data that has to be migrated, API routes that change |
| Minor | at least one feat |
| Patch | only fix or perf |
Release
Section titled “Release”-
Check that “Unreleased” in
CHANGELOG.mdand “Sin publicar” inCHANGELOG.es.mdcover everything that changed, grouped as in previous versions. -
Find out which number is next based on the commits:
Terminal window python scripts/release.py --next -
Test and release:
Terminal window python scripts/release.py 1.1.0 --dry-runpython scripts/release.py 1.1.0It changes the version, turns “Unreleased” and “Sin publicar” into
## 1.1.0 · <date>in both changelogs (no empty section is left above it; the docs site only shows released versions), makes thechore(release): v1.1.0commit and the annotatedv1.1.0tag with the notes. -
Publish:
Terminal window git push --follow-tagsWhen the tag arrives,
.github/workflows/release.ymlbuilds the Windows installer (npm --prefix desktop run build) and creates the release on Releases with the notes from both changelogs (English, and Spanish below) andTranslay_<version>_x64-setup.exeattached.
Build the installer by hand
Section titled “Build the installer by hand”cd desktopnpm cinpm run buildIt needs Node.js and Rust (rustup). scripts/prepare.mjs downloads the tools listed in desktop/tools.json (once; they stay in desktop/.cache/) and checks their SHA-256 before bundling them. The installer ends up in desktop/src-tauri/target/release/bundle/nsis/. To try the app without installing it: npm run dev (it uses the code in the repository).
If you change requirements.txt, regenerate the server lock (the next time the app opens it installs it):
uv pip compile requirements.txt --python-version 3.12 --python-platform x86_64-pc-windows-msvc --generate-hashes --no-header -o desktop/locks/server.txtRepository
Section titled “Repository”github.com/alenj0x1/translay, main branch. Commits are authored as alenj0x1 with GitHub’s private email (140274341+alenj0x1@users.noreply.github.com), configured in the repository:
git config user.name alenj0x1git config user.email 140274341+alenj0x1@users.noreply.github.com| Workflow | When | What it does |
|---|---|---|
docs.yml |
push to main with changes in docs/, vt/ or the changelogs |
Builds and publishes the documentation |
release.yml |
vX.Y.Z tag |
Builds the installer and creates the release with the notes and the installer |
commits.yml |
pull request | Checks that commits follow the convention |