summaryrefslogtreecommitdiffstats
path: root/web/README.md
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-11-01 22:23:00 +0100
committersalmonik <salmonik@tuta.io>2026-11-01 22:23:00 +0100
commit4887abc5773b33ab1e213ed5f528dfebd242e2cd (patch)
tree8eb2316783a21817cce422c3fb58ec953206dd9a /web/README.md
parentv4.3.1: render Windows through wgpu and keep the installer window open (diff)
downloadzagan-bet-master.tar.gz
zagan-bet-master.zip
v4.4.0: stable installers that follow the newest published buildHEADmaster
Adds web/latest.php: a plain-text feed of the newest version with each artifact's filename and SHA-256. The per-release generated installers are replaced by stable web/install.sh and web/install.ps1; both read the feed, pick the newest build, verify it, install per-user and add a launcher. Publishing a new app version no longer regenerates or versions the installers. publish.sh drops the installer renderer and Python dependency. deploy.sh now also verifies latest.php against the local artifacts and that the served installer scripts match the repository.
Diffstat (limited to 'web/README.md')
-rw-r--r--web/README.md38
1 files changed, 20 insertions, 18 deletions
diff --git a/web/README.md b/web/README.md
index 1ee794f..13f5f85 100644
--- a/web/README.md
+++ b/web/README.md
@@ -8,10 +8,14 @@ browser defaults: black text, blue links, monospace checksums. PHP 8.0+.
8 8
9``` 9```
10web/ 10web/
11 index.php 11 index.php the download page
12 bin/gui/ served at /bin/gui/... (app and installers) 12 latest.php newest-version feed for the installers
13 bin/client/ served at /bin/client/... 13 releases.php shared scanner and hash cache
14 bin/server/ served at /bin/server/... 14 install.sh stable Linux installer
15 install.ps1 stable Windows installer
16 bin/gui/ apps, served at /bin/gui/...
17 bin/client/ terminal clients
18 bin/server/ servers
15``` 19```
16 20
17Serve `web/` as the document root. Binaries in `bin/` are gitignored. 21Serve `web/` as the document root. Binaries in `bin/` are gitignored.
@@ -23,8 +27,6 @@ those directories is ignored.
23 27
24``` 28```
25bin/gui/zagan-bet-gui-<version>-<platform>-<arch>[.exe] 29bin/gui/zagan-bet-gui-<version>-<platform>-<arch>[.exe]
26bin/gui/zagan-bet-gui-<version>-<platform>-<arch>-install.sh
27bin/gui/zagan-bet-gui-<version>-<platform>-<arch>-install.ps1
28bin/client/zagan-bet-client-<version>-<platform>-<arch>[.exe] 30bin/client/zagan-bet-client-<version>-<platform>-<arch>[.exe]
29bin/server/zagan-bet-server-<version>-<platform>-<arch>[.exe] 31bin/server/zagan-bet-server-<version>-<platform>-<arch>[.exe]
30``` 32```
@@ -32,12 +34,14 @@ bin/server/zagan-bet-server-<version>-<platform>-<arch>[.exe]
32`<version>` is `MAJOR.MINOR.PATCH`, `<platform>` is `linux`, `windows` or 34`<version>` is `MAJOR.MINOR.PATCH`, `<platform>` is `linux`, `windows` or
33`macos`, `<arch>` is `x86_64`, `i686` or `aarch64`. 35`macos`, `<arch>` is `x86_64`, `i686` or `aarch64`.
34 36
35The installers are generated next to their app. They embed the app's SHA-256, 37The installers are not versioned. They read `latest.php`, pick the newest build
36check the file (or download it) and install it for the current user: Linux 38for the machine, verify its SHA-256 and install it for the current user: Linux
37writes `~/.local/bin/zagan-bet-gui` plus a `.desktop` launcher, Windows writes 39writes `~/.local/bin/zagan-bet-gui` plus a `.desktop` launcher, Windows writes
38`%LOCALAPPDATA%\Programs\Zagan-Bet` plus a Start-menu shortcut. The Windows 40`%LOCALAPPDATA%\Programs\Zagan-Bet` plus a Start-menu shortcut. Updating the
39installer waits for Enter before closing (`-NoPause` for automation). The page 41site only needs `publish.sh`; the installer links never change. Set
40links the public git repository for the GPL corresponding source. 42`ZAGAN_SITE` (Linux) or `-Site` (Windows) to test against a staging site. The
43Windows installer waits for Enter before closing (`-NoPause` for automation).
44The page links the public git repository for the GPL corresponding source.
41 45
42## Publishing a build 46## Publishing a build
43 47
@@ -49,19 +53,17 @@ From the repository root:
49 53
50It reads the version from `Cargo.toml`, builds every artifact and installs 54It reads the version from `Cargo.toml`, builds every artifact and installs
51them under `web/bin` with the names above. The GUI is built with the 55them under `web/bin` with the names above. The GUI is built with the
52workspace's `gui-release` profile (LTO, stripped) and the installers are 56workspace's `gui-release` profile (LTO, stripped). Run it from a clean tree so
53rendered with Python 3 and the published SHA-256. Run it from a clean tree so
54the release commit is the source the page links to. Override the destination 57the release commit is the source the page links to. Override the destination
55with `DEST=/srv/www/bin ./scripts/publish.sh`, and the download origin baked 58with `DEST=/srv/www/bin ./scripts/publish.sh`; `ALLOW_DIRTY=1` skips the
56into the installers with `URL_BASE=https://staging.example/ ./scripts/publish.sh`. 59clean-tree check for a preview. The installers are static and need no
57`ALLOW_DIRTY=1` skips the clean-tree check for a preview. 60regeneration.
58 61
59Builds are per target triple, so these must be installed: 62Builds are per target triple, so these must be installed:
60`x86_64-unknown-linux-gnu`, `i686-unknown-linux-gnu` and 63`x86_64-unknown-linux-gnu`, `i686-unknown-linux-gnu` and
61`x86_64-pc-windows-gnu`, plus the mingw linker for the Windows build. Client 64`x86_64-pc-windows-gnu`, plus the mingw linker for the Windows build. Client
62builds always pass `--no-default-features`, which drops the server's OpenSSL 65builds always pass `--no-default-features`, which drops the server's OpenSSL
63dependency; the client is rustls-only. The GUI needs Python 3 at publish time 66dependency; the client is rustls-only.
64for the installer templates in `scripts/installers/`.
65 67
66Cargo itself cannot produce these names: it always writes 68Cargo itself cannot produce these names: it always writes
67`target/<triple>/release/<bin>`. The script renames after each build. 69`target/<triple>/release/<bin>`. The script renames after each build.