Release v0.1.0 2026-07-10

This commit is contained in:
Warren H
2026-07-10 22:03:51 -04:00
parent e0be0458aa
commit 537a311f52
65 changed files with 2303 additions and 56 deletions
+55 -13
View File
@@ -13,6 +13,29 @@ pnpm dev
The development server listens on `0.0.0.0:4173`.
## Android / AYN Thor test APK
The Android host uses Capacitor, locks to landscape, requests immersive mode and
60 Hz, and sends controller input directly to the game WebView. Build an
installable debug APK:
```bash
pnpm android:apk
```
Output is written under `android/app/build/outputs/apk/debug/`. With Android
platform tools and a connected Thor, build and install it with:
```bash
pnpm android:install
```
The first Android milestone uses the complete single-display fallback. Press
Select (or Tab with a keyboard) to switch between the main game surface and the
620 × 540 tactical surface. Native routing to both physical Thor displays is the
next milestone; it needs two Android display contexts backed by one shared game
state rather than two independent WebViews.
## TrueNAS deployment
The production preview server uses the existing deployment address and port:
@@ -21,10 +44,19 @@ The production preview server uses the existing deployment address and port:
- Host/container port: `4173`
- App directory: `/mnt/usbssds/apps/iwanttoheal/app`
Copy the repository into the app directory, then deploy `compose.yaml`. The old
app's `db:init` step is intentionally omitted because this game has no database.
Clone the repository into the app directory, then deploy `compose.yaml`. Compared
with the old game configuration:
- use `corepack pnpm install --frozen-lockfile`, not `npm ci`;
- remove `npm run db:init` because this game has no server database;
- remove `COOKIE_SECURE`, `CORS_ORIGINS`, and `TRUST_PROXY`; the static Vite
preview server does not consume them;
- remove `/app/data`; offline saves live in each player's browser/Android WebView
storage, not on TrueNAS.
The existing reverse proxy can keep forwarding the public hostname to port
`4173`.
`4173`. Add server data and authentication environment variables only when an
actual sync API is introduced.
## Publish updates to Gitea
@@ -34,18 +66,25 @@ The repository target is:
https://git.whoagland.com/phenom/i-want-to-heal-mmo.git
```
Publish a checked update from the `main` branch:
Create a Gitea access token with repository write permission, expose it only for
the publishing process, then publish from `main`:
```bash
export GITEA_TOKEN="..."
pnpm publish:gitea -- --message "Describe the update"
```
The script installs locked dependencies, builds, runs tests, commits all project
changes, and pushes `main`. If the TrueNAS app directory is mounted locally, it
also performs a fast-forward-only pull. Otherwise it prints the clone/pull command
to run on TrueNAS before restarting the app. The pull refuses to run when the
TrueNAS checkout still points at the old game's repository; move or archive that
checkout and clone the new repository first.
The script installs locked dependencies, builds the web app, runs web and Android
checks, builds a debug APK, commits all project changes, pushes `main`, creates a
version tag and Gitea prerelease, and uploads the APK plus its SHA-256 file. It
uses `package.json` version unless that version is already tagged, then advances
the patch number. Pass `--version 0.2.0` to choose an explicit version.
If the TrueNAS app directory is mounted locally, publishing also performs a
fast-forward-only pull. Otherwise it prints the clone/pull command to run on
TrueNAS before restarting the app. The pull refuses to run when the TrueNAS
checkout still points at the old game's repository; move or archive that checkout
and clone the new repository first.
Preview checks without changing Git or TrueNAS:
@@ -53,8 +92,9 @@ Preview checks without changing Git or TrueNAS:
pnpm publish:gitea -- --dry-run
```
Gitea credentials must come from Git's credential manager or an SSH remote. Do
not store access tokens in this repository.
Git push credentials still come from Git's credential manager. Gitea release API
credentials come from `GITEA_TOKEN`. Never store access tokens or Android signing
keys in this repository.
## Controls
@@ -81,4 +121,6 @@ Touch controls on lower display support party targeting, ability casting, map, a
- Android layout targets: approximately 960×540 CSS pixels top and 620×540 CSS pixels bottom
- Lower-screen typography scales against its own container, never the main page viewport
Current build is browser-based for fast iteration. Shipping to separate physical Thor displays needs an Android host that presents the game viewport and tactical React surface on distinct display contexts.
Current Android build is an installable single-display test host. Shipping to both
physical Thor displays still needs distinct Android display contexts that project
one authoritative game state.