Add portable Windows desktop downloads and release uploads

This commit is contained in:
2026-10-11 11:44:27 +05:00
parent fc6da6756d
commit a54a3e7705
24 changed files with 4159 additions and 5 deletions

22
docs/desktop.md Normal file
View File

@@ -0,0 +1,22 @@
# MineGeo Desktop
The Windows x64 client is a portable Electron EXE. Open it directly; no installation or administrator access is needed. It connects to https://minegeo.vercel.app and requires internet access. Website updates appear automatically on reload; Electron runtime updates require a new EXE.
The EXE extracts its runtime into a temporary directory while running. Sign-in, cookies, and site preferences persist separately in `%APPDATA%/minegeo-desktop`. Removing the EXE does not clear that profile. External HTTPS links open in the default browser. The client has no Node.js bridge to the remote site, uses Chromium sandboxing and context isolation, and denies device permissions.
## Build and publish
From the repository root:
```powershell
npm --prefix desktop ci
npm run desktop:build
npm run desktop:publish
npm run deploy
```
`desktop:build` generates the multi-resolution Windows icon from `app/icon.png` and builds `desktop/dist/MineGeo-1.0.0-windows-x64.exe`. `desktop:publish` copies only the portable EXE and SHA-256 checksum into `public/desktop/` and updates the shared release metadata used by both download buttons. Bump `desktop/package.json` before future releases, rebuild, and publish. The desktop toolchain has its own lockfile and is excluded from the Vercel build.
Run `npm run desktop:dev` during desktop development. Run `desktop/dist/win-unpacked/MineGeo.exe --smoke-test` to verify that the packaged client loads production with its security settings. The smoke test exits with a nonzero status if loading fails or times out.
This initial release is unsigned and Windows may display an unknown-publisher warning. Signing future releases requires the publisher's code-signing certificate; no signing credentials are bundled. macOS and Linux builds are not included in this release.

View File

@@ -1,5 +1,17 @@
# Deploy MineGeo
The portable Windows Electron client and release process are described in
[Desktop client](desktop.md). Build and publish the EXE before deploying changes
to desktop download links. Public desktop releases are included in the upload;
the local Electron source, build cache, and packaging toolchain are excluded.
For the Vercel plugin deployment of Desktop 1.0.0, the public installer parts
are staged in Supabase Storage's `minegeo-desktop-builds` bucket under the
release SHA-256. The deployment snapshot downloads and verifies each part before
the existing assembly script verifies the complete EXE. Keep these immutable
parts for rebuilding that snapshot. No Storage credentials are included in the
snapshot, and players download the assembled EXE from `/desktop/` on MineGeo.
Optional Discord map and multiplayer-party announcements use `DISCORD_BOT_TOKEN`,
`DISCORD_MAPS_CHANNEL_ID`, and `DISCORD_PARTIES_CHANNEL_ID`. All published parties
use the same configured channel. Follow [Discord bot setup](discord-integration.md)
@@ -19,7 +31,8 @@ invite links. Blank, malformed, or unsupported URLs hide the corresponding
button. Each button opens its configured destination in a new tab.
Run `npm run deploy` from the project directory. The script collects all web
source files and public assets, uploads them in one request, waits for the build,
source files and public assets, uploads large release files separately and the
remaining source in one request, waits for the build,
and prints the deployment URL. It uses the [Vercel deployments API](https://vercel.com/docs/rest-api/deployments/create-a-new-deployment). The database credentials already configured in
Vercel remain there. Mod captures are processed by the deployed Vercel API:
upload finalization starts background image processing with Next.js `after`,