89 lines
4.4 KiB
Markdown
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.
|