diff options
| author | salmonik <salmonik@tuta.io> | 2026-11-01 22:23:00 +0100 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-11-01 22:23:00 +0100 |
| commit | 4887abc5773b33ab1e213ed5f528dfebd242e2cd (patch) | |
| tree | 8eb2316783a21817cce422c3fb58ec953206dd9a /web/README.md | |
| parent | v4.3.1: render Windows through wgpu and keep the installer window open (diff) | |
| download | zagan-bet-master.tar.gz zagan-bet-master.zip | |
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.md | 38 |
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 | ``` |
| 10 | web/ | 10 | web/ |
| 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 | ||
| 17 | Serve `web/` as the document root. Binaries in `bin/` are gitignored. | 21 | Serve `web/` as the document root. Binaries in `bin/` are gitignored. |
| @@ -23,8 +27,6 @@ those directories is ignored. | |||
| 23 | 27 | ||
| 24 | ``` | 28 | ``` |
| 25 | bin/gui/zagan-bet-gui-<version>-<platform>-<arch>[.exe] | 29 | bin/gui/zagan-bet-gui-<version>-<platform>-<arch>[.exe] |
| 26 | bin/gui/zagan-bet-gui-<version>-<platform>-<arch>-install.sh | ||
| 27 | bin/gui/zagan-bet-gui-<version>-<platform>-<arch>-install.ps1 | ||
| 28 | bin/client/zagan-bet-client-<version>-<platform>-<arch>[.exe] | 30 | bin/client/zagan-bet-client-<version>-<platform>-<arch>[.exe] |
| 29 | bin/server/zagan-bet-server-<version>-<platform>-<arch>[.exe] | 31 | bin/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 | ||
| 35 | The installers are generated next to their app. They embed the app's SHA-256, | 37 | The installers are not versioned. They read `latest.php`, pick the newest build |
| 36 | check the file (or download it) and install it for the current user: Linux | 38 | for the machine, verify its SHA-256 and install it for the current user: Linux |
| 37 | writes `~/.local/bin/zagan-bet-gui` plus a `.desktop` launcher, Windows writes | 39 | writes `~/.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 |
| 39 | installer waits for Enter before closing (`-NoPause` for automation). The page | 41 | site only needs `publish.sh`; the installer links never change. Set |
| 40 | links the public git repository for the GPL corresponding source. | 42 | `ZAGAN_SITE` (Linux) or `-Site` (Windows) to test against a staging site. The |
| 43 | Windows installer waits for Enter before closing (`-NoPause` for automation). | ||
| 44 | The 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 | ||
| 50 | It reads the version from `Cargo.toml`, builds every artifact and installs | 54 | It reads the version from `Cargo.toml`, builds every artifact and installs |
| 51 | them under `web/bin` with the names above. The GUI is built with the | 55 | them under `web/bin` with the names above. The GUI is built with the |
| 52 | workspace's `gui-release` profile (LTO, stripped) and the installers are | 56 | workspace's `gui-release` profile (LTO, stripped). Run it from a clean tree so |
| 53 | rendered with Python 3 and the published SHA-256. Run it from a clean tree so | ||
| 54 | the release commit is the source the page links to. Override the destination | 57 | the release commit is the source the page links to. Override the destination |
| 55 | with `DEST=/srv/www/bin ./scripts/publish.sh`, and the download origin baked | 58 | with `DEST=/srv/www/bin ./scripts/publish.sh`; `ALLOW_DIRTY=1` skips the |
| 56 | into the installers with `URL_BASE=https://staging.example/ ./scripts/publish.sh`. | 59 | clean-tree check for a preview. The installers are static and need no |
| 57 | `ALLOW_DIRTY=1` skips the clean-tree check for a preview. | 60 | regeneration. |
| 58 | 61 | ||
| 59 | Builds are per target triple, so these must be installed: | 62 | Builds 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 |
| 62 | builds always pass `--no-default-features`, which drops the server's OpenSSL | 65 | builds always pass `--no-default-features`, which drops the server's OpenSSL |
| 63 | dependency; the client is rustls-only. The GUI needs Python 3 at publish time | 66 | dependency; the client is rustls-only. |
| 64 | for the installer templates in `scripts/installers/`. | ||
| 65 | 67 | ||
| 66 | Cargo itself cannot produce these names: it always writes | 68 | Cargo 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. |
