Prepare the 1.0.0 release (Phase G)
- Bump the version to 1.0.0 in package.json, Cargo.toml, tauri.conf.json and the Void template. Fingerprint goldens are unchanged. - Rewrite the README: features, data paths on Linux and Windows, backup and restore (backups contain the ERPNext API secret), bundled fonts and licences, font overrides, the ERPNext recipe, build and packaging commands, gates and known limitations. - Add docs/RELEASE.md with the release steps and a manual first-run checklist. - Void template: use a plain npm ci (the optional-dependency omit breaks vite and tsc), and note vendoring and that no OpenSSL is needed. Verified: build-xbps.sh builds voiced-1.0.0_1; it installs and removes cleanly in a clean void-glibc container with fonts, licences and fc-cache handling in place. The cross-compiled NSIS installer is 11.45 MiB and has not been run on Windows.
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
# 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. Reference licence
|
||||
|
||||
The 13 reference-based templates are re-creations of reference designs. the reference design's content licence may restrict that. Until it
|
||||
is confirmed in writing, distribute builds containing those templates only to this vendor. If the answer is no,
|
||||
remove the templates from `src/pdf/templates/registry.ts` and `catalog.ts` (Classic stays) and rebuild. Also still
|
||||
open: a chartered accountant's sign-off on the SAC code and the signature rule.
|
||||
Reference in New Issue
Block a user