Files
Voiced/docs/RELEASE.md
2026-10-05 12:37:42 +05:30

89 lines
4.4 KiB
Markdown

# Release checklist
Run from the repository root on a quiet machine, on a branch cut from `main`.
## 1. Version
Keep these in step: `package.json` and the root entry of `package-lock.json`, `src-tauri/Cargo.toml` and
`src-tauri/Cargo.lock` (`cargo update --offline -p voiced`), `src-tauri/tauri.conf.json`, and `version=` plus
`revision=` in `packaging/void/template`. The PDF Creator string follows `package.json` (`src/lib/pdf.tsx`); layout
fingerprints do not include it, so goldens stay unchanged.
## 2. Gates
```bash
npm run build
npm test # about 7 minutes
npm run fonts:verify
cargo test --manifest-path src-tauri/Cargo.toml
cargo tree -i aws-lc-sys --manifest-path src-tauri/Cargo.toml # must not match
cargo tree -i aws-lc-sys --manifest-path src-tauri/Cargo.toml --target x86_64-pc-windows-msvc # must not match
```
Real-webview self-test on the debug build:
```bash
npm run tauri -- build --debug --no-bundle --features custom-protocol
VOICED_SELFTEST_OUT=/tmp/voiced-e2e/report.json XDG_DATA_HOME=/tmp/voiced-e2e/data \
XDG_CONFIG_HOME=/tmp/voiced-e2e/config timeout 180 src-tauri/target/debug/voiced
```
`/tmp/voiced-e2e/report.json` must contain `"ok": true`. Repeat the same check on each installed build with
Settings, Diagnostics.
## 3. Void package
```bash
./packaging/void/build-xbps.sh
tar --zstd -tf build/void/repo/voiced-<version>_1.x86_64.xbps | less
```
Expect `./usr/bin/voiced`, the desktop file, hicolor icons, `usr/share/fonts/voiced/<family>/*.ttf`,
`usr/share/licenses/voiced/*-OFL.txt`, `./INSTALL` and `./REMOVE`. Then install it into a clean container:
```bash
podman run --rm -v "$PWD/build/void/repo:/repo:Z" ghcr.io/void-linux/void-glibc-full sh -c '
xbps-install -Syu xbps && xbps-install -y -R /repo voiced &&
fc-list | grep -iE "montserrat|poppins|lustria|dm sans|inter|jost|open sans|ibm plex" &&
ls /usr/share/licenses/voiced && ldd /usr/bin/voiced | grep "not found"; xbps-remove -y voiced'
```
`ldd` must print no `not found` line, and `xbps-remove` must finish without errors. Optionally build with
`xbps-src` in a `void-packages` checkout (see the README).
## 4. Windows installer
```bash
npm run app:build:windows # standard installer
npm run app:build:windows:offline # only for machines without internet
```
Needs `cargo-xwin`, `makensis` and the NSIS plugin cache (README, "Building for Windows"). Check the size of
`src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/*-setup.exe` against the budget of about 25 MB. Optional:
sign it with `osslsigncode`. Never commit build outputs (`build/`, `dist/`, `src-tauri/target/`).
## 5. Manual first-run checklist (on a real machine, installed build, not `app:dev`)
Linux and Windows. Windows has never been run on real hardware, so treat it as untested until this passes.
- **Onboarding and Branding.** Complete first-run setup; upload a wide and a square logo, check the dark-theme
wordmark and the signature.
- **Template picker.** Open all 14 templates; switch A4 and Letter and the margin presets; check the logo slots.
- **Export.** Issue an invoice; export searchable and flattened; change settings and re-export; "Original as issued"
must be byte-identical to the archived PDF. On Windows, check file names with `/`, `:` and reserved names.
- **Fonts.** Settings, Fonts: import a TTF for Now, Gotham or Open Sauce One (if a licensed file is at hand), confirm
a template that uses it changes, remove it again.
- **Clients.** Create a client with structured address and GST category; use it on an invoice.
- **Settings tabs.** Business, Branding, Bank and payments, Invoice defaults, Numbering, Templates and export, Fonts,
Data, Integrations: open each and save a change.
- **History, detail and payments.** Filter the list; open an invoice; record a payment with TDS; cancel one; export
CSV, JSON and `voiced.invoice.v1`.
- **Data.** Backup now, change something, restore the backup, restart, confirm the data returned and that
`backups/pre-restore-*` exists. Confirm the archive and fonts directories (Windows: under `%LOCALAPPDATA%`).
- **Integrations.** Test connection and push an invoice to a test ERPNext (README, "ERPNext integration").
- **Single instance.** Launch a second copy: the first window must come to the front.
## 6. Open items
A chartered accountant's sign-off on the SAC code and the signature rule is still open.