# Vocalinux Release Process This document outlines the step-by-step process for creating a new release of Vocalinux. ## Overview Vocalinux uses [Semantic Versioning](https://semver.org/) with pre-release suffixes: - **Alpha**: Early testing phase (e.g., `0.4.1-alpha`) - **Beta**: Feature-complete, testing phase (e.g., `0.5.0-beta`) - **RC** (Release Candidate): Final testing before stable (e.g., `0.5.0-rc1`) - **Stable**: Production-ready (e.g., `1.0.0`) ## Quick Release Checklist Use this checklist for every release: ```markdown ## Version Bump Checklist for X.Y.Z-PHASE ### Core Version Files - [ ] `src/vocalinux/version.py` - Update `__version__` and `__version_info__` - [ ] `pyproject.toml` - Confirm `Development Status` classifier and `requires-python` are correct for this release phase ### Documentation - [ ] `README.md` - Update release announcement and status references - [ ] `docs/INSTALL.md` - Verify install examples use `main/install.sh` (not version-pinned raw URLs) - [ ] `docs/UPDATE.md` - Add "What's New" section for new version - [ ] `SECURITY.md` - Update supported versions table ### Website - [ ] `web/src/app/page.tsx` - Update `softwareVersion` in schema - [ ] `web/src/app/page.tsx` - Update version badge / live version surfaces if present - [ ] `web/src/app/changelog/page.tsx` - Add new release entry to changelog - [ ] `web/package.json` - Update version field - [ ] `web/package-lock.json` - Keep top-level/version metadata aligned with `web/package.json` - [ ] `web/PRODUCT.md` - Keep capabilities aligned with shipped features - [ ] Confirm install docs/website mention **AppImage** when this release ships AppImages ### Testing & Verification Install `just` from https://just.systems or the distro package `just`. - [ ] Run `just test` - All tests pass - [ ] Run `just lint` - No linting errors - [ ] Run `just typecheck` - No type errors - [ ] Run `just build` - Package builds successfully - [ ] Run `npm run build` in `web/` - Website builds successfully > Note: CI workflows also sync website version metadata from `src/vocalinux/version.py`, but source files should still be updated in-repo during release prep for review clarity. ### Git Operations - [ ] Create release branch: `git checkout -b release/vX.Y.Z-PHASE` - [ ] Commit all version changes - [ ] Push branch and create PR - [ ] After PR merge, create tag: `git tag -a vX.Y.Z-PHASE -m "Release X.Y.Z-PHASE"` - [ ] Push tag: `git push origin vX.Y.Z-PHASE` ``` ## Detailed Release Steps ### Step 1: Determine Version Number Follow semantic versioning: ``` Given version MAJOR.MINOR.PATCH-PHASE: MAJOR - Breaking changes (for 1.0.0: public API stable) MINOR - New features, backwards compatible PATCH - Bug fixes, backwards compatible PHASE - alpha, beta, rc1, rc2, etc. (omit for stable releases) ``` **Examples:** - Alpha → Beta: `0.4.1-alpha` → `0.5.0-beta` (new features, phase change) - Beta → RC: `0.5.0-beta` → `0.5.0-rc1` (same features, testing phase) - RC → Stable: `0.5.0-rc1` → `1.0.0` (first stable release) - Stable patch: `1.0.0` → `1.0.1` (bug fixes only) - Stable minor: `1.0.0` → `1.1.0` (new features) ### Step 2: Update Core Version Files #### 2.1 Update `src/vocalinux/version.py` ```python __version__ = "0.5.0-beta" __version_info__ = (0, 5, 0, "beta") ``` #### 2.2 Update `pyproject.toml` Change the Development Status classifier: ```toml # For Alpha: "Development Status :: 3 - Alpha", # For Beta: "Development Status :: 4 - Beta", # For Stable: "Development Status :: 5 - Production/Stable", ``` ### Patch releases within a minor line (e.g. 0.14.x) When shipping bug fixes only (PATCH bump, same MINOR): - **README / `docs/UPDATE.md` "What's New"** keeps the **minor-series feature list** (everything introduced in that 0.Y line) and adds a short **Bug fixes in this patch** subsection for the delta only. Do not make the marketing highlight table look featureless because this tag only contains fixes. - **Website changelog** (`web/src/app/changelog/page.tsx`) may list only the delta for the new entry; older entries stay historical. - **AppStream** (`packaging/flatpak/com.vocalinux.Vocalinux.metainfo.xml`): add a short `` note for the patch delta only; leave the long product feature `