Files
xavierk 0faf3d63ee Release 1.1.0
Version bump, the README line about units, and two new manual checks in the release checklist (export then New invoice
through the real save dialog, and units).

Claude-Session: https://claude.ai/code/session_01PZypiWDfMkDTeEPeXjRhW5
2026-10-06 09:35:26 +05:30

94 lines
4.9 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.
- **Export, then New invoice.** Issue and export in both formats through the real save dialog, press "New invoice",
issue and export a second one. The window must stay usable after every export (1.1.0 fixed a blank window caused
by buttons inside a Carbon notification; the dialog itself can only be checked by hand).
- **Units.** Add a rate line in hours typed as `4:30` (amount counts 4.5), one in km and one with a custom unit;
check the quantity and rate columns on a few templates and A4/Letter.
- **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.