diff options
| author | salmonik <salmonik@tuta.io> | 2026-11-01 21:35:30 +0100 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-11-01 21:38:36 +0100 |
| commit | 7830b3c5e89f0339949940b8986bf4849ad7f223 (patch) | |
| tree | d4ebb4f10583cef1da3b181e093dd5d65ac8a0bb /docs | |
| parent | v4.2.1: plain-language game copy and a balance fetch on login (diff) | |
| download | zagan-bet-7830b3c5e89f0339949940b8986bf4849ad7f223.tar.gz zagan-bet-7830b3c5e89f0339949940b8986bf4849ad7f223.zip | |
v4.3.0: package the desktop app with verifiable installers
publish.sh builds the GUI with the gui-release profile, names it zagan-bet-gui-<version>-<platform>-<arch>, and renders a bash and a PowerShell installer next to each app. Both embed the app's SHA-256, verify the file (or fetch it), install per-user and add a launcher: a desktop entry plus an SVG icon on Linux, a Start-menu shortcut on Windows.
The download page gains a Desktop app section with the apps and installers, keeps the terminal client and server, links the public git repository for the GPL source, and lists every file in the sha256sum block. deploy.sh verifies all four artifact kinds. Publishing refuses a dirty tree so the linked history matches the binaries.
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/GUI-PLAN.md | 31 | ||||
| -rw-r--r-- | docs/TESTING.md | 17 |
2 files changed, 38 insertions, 10 deletions
diff --git a/docs/GUI-PLAN.md b/docs/GUI-PLAN.md index 89cf495..f058e41 100644 --- a/docs/GUI-PLAN.md +++ b/docs/GUI-PLAN.md | |||
| @@ -162,18 +162,29 @@ Measured on Linux at 1080p with llvmpipe software GL: | |||
| 162 | **Gate:** the screenshot set is ready for review. Remaining for the gate: | 162 | **Gate:** the screenshot set is ready for review. Remaining for the gate: |
| 163 | frame rate on integrated graphics and the Windows interactive pass. | 163 | frame rate on integrated graphics and the Windows interactive pass. |
| 164 | 164 | ||
| 165 | ## Phase 5 — packaging | 165 | ## Phase 5 — packaging (code complete, v4.3.0) |
| 166 | ## Phase 5 — packaging | 166 | |
| 167 | 167 | - `publish.sh` builds the GUI with the `gui-release` profile for Linux and | |
| 168 | - `publish.sh` emits `zagan-bet-gui-<version>-<platform>-<arch>[.exe]`. | 168 | Windows and names the app `zagan-bet-gui-<version>-<platform>-<arch>[.exe]`. |
| 169 | - Bash and PowerShell installers that verify the SHA-256, install to the user | 169 | - It renders a bash installer and a PowerShell installer next to each app. |
| 170 | directory, and create `.desktop`/Start-menu entries. | 170 | Both embed the app's SHA-256, verify the file (or download it), install |
| 171 | - Download page lists raw binaries and installers; add the source-code link. | 171 | per-user and add a launcher: `.desktop` plus an SVG icon on Linux, a |
| 172 | 172 | Start-menu shortcut on Windows. Templates live in `scripts/installers/`; | |
| 173 | **Gate:** `deploy.sh` verifies both artifact kinds; a clean machine installs | 173 | `render-installer.py` fills them in. |
| 174 | from the page and launches. | 174 | - The download page scans `bin/gui`, `bin/client` and `bin/server`, lists |
| 175 | apps, installers, clients and servers, and includes every file in the | ||
| 176 | `sha256sum` block. A Source section links the public git repository | ||
| 177 | (<https://git.2137697.xyz/zagan-bet.git>) for the GPL corresponding source. | ||
| 178 | `deploy.sh` verifies every artifact kind over the public URL. | ||
| 179 | - `publish.sh` refuses to run from a dirty tree so the linked history matches | ||
| 180 | the binaries. | ||
| 181 | |||
| 182 | **Gate:** deploy verification passes for apps, installers, clients and | ||
| 183 | servers; the Linux installer is exercised in a clean HOME. The Windows | ||
| 184 | installer needs a Windows machine before the gate closes. | ||
| 175 | 185 | ||
| 176 | ## Testing split | 186 | ## Testing split |
| 187 | ## Testing split | ||
| 177 | 188 | ||
| 178 | - `View`/`Command` tests in the core: flows, gating, state. Always. | 189 | - `View`/`Command` tests in the core: flows, gating, state. Always. |
| 179 | - The TUI adapter remains the regression net through Phases 1–2. | 190 | - The TUI adapter remains the regression net through Phases 1–2. |
diff --git a/docs/TESTING.md b/docs/TESTING.md index 613cd08..c32ac22 100644 --- a/docs/TESTING.md +++ b/docs/TESTING.md | |||
| @@ -266,3 +266,20 @@ terminal client; a saved login from one signs in the other. | |||
| 266 | the row is upgraded to bcrypt. | 266 | the row is upgraded to bcrypt. |
| 267 | - Spin several times and confirm `plays` grows by one row per spin while | 267 | - Spin several times and confirm `plays` grows by one row per spin while |
| 268 | `users.balance` changes by `winnings - bet`. | 268 | `users.balance` changes by `winnings - bet`. |
| 269 | |||
| 270 | ## Packaging checklist | ||
| 271 | |||
| 272 | 1. Set the version in `Cargo.toml` and `gui/Cargo.toml` (same MAJOR.MINOR), | ||
| 273 | run `cargo test --workspace`, and commit. `publish.sh` refuses a dirty tree | ||
| 274 | because the site links the committed git history as the GPL source. | ||
| 275 | 2. `./scripts/publish.sh` (add `DEST=` and `URL_BASE=` to stage elsewhere). It | ||
| 276 | builds the GUI with `gui-release`, the terminal clients and servers, and | ||
| 277 | renders the bash/PowerShell installers with each app's SHA-256. | ||
| 278 | 3. `php -S 127.0.0.1:8899 -t <staging>` and | ||
| 279 | `./scripts/deploy.sh <staging> http://127.0.0.1:8899/` to upload and verify | ||
| 280 | every app, installer, client and server against the page's checksums. | ||
| 281 | 4. On a clean user account: download an app with its installer, run the | ||
| 282 | installer, and launch the new menu entry. The installer must refuse a | ||
| 283 | corrupted download. | ||
| 284 | 5. Repeat on Windows for the `.ps1` installer and the Start-menu shortcut. | ||
| 285 | |||
