Files
2026-07-07 15:07:14 -04:00

4.4 KiB

Push Updates

Use this when pushing code from the Mac to git.whoagland.com, then updating the TrueNAS-hosted server.

Rules

  • Git deploys code only.
  • TrueNAS save data lives in /mnt/usbssds/apps/iwanttoheal/data/game.db.
  • Do not commit, copy, or replace data/game.db.
  • Do not run character reset commands unless you intentionally want a wipe.
  • Restarting the TrueNAS app runs npm ci, npm run db:init, npm run build, and npm start.

Step 1: Build Web Locally

cd /Users/warren/Documents/testgame/testgame
npm run build

This validates TypeScript, builds the browser app, and refreshes src/offline-starter-profile.json.

Step 2: Optional Android APK

Only run this when building a new APK.

set -e

cd /Users/warren/Documents/testgame/testgame

export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
export PATH="$JAVA_HOME/bin:$PATH"

VERSION="1.0.27"

CURRENT_CODE=$(grep -E 'versionCode [0-9]+' android/app/build.gradle | awk '{print $2}')
NEXT_CODE=$((CURRENT_CODE + 1))

perl -0pi -e "s/versionCode\s+\d+/versionCode $NEXT_CODE/" android/app/build.gradle
perl -0pi -e "s/versionName\s+\"[^\"]+\"/versionName \"$VERSION\"/" android/app/build.gradle

VITE_API_BASE_URL="https://iwanttoheal.phenomrom.com" npm run android:sync

cd android
./gradlew clean assembleDebug
cd ..

cp android/app/build/outputs/apk/debug/app-debug.apk "IWantToHeal-Thor-v$VERSION.apk"
ls -lh "IWantToHeal-Thor-v$VERSION.apk"

Step 3: Commit And Push Code

cd /Users/warren/Documents/testgame/testgame

git add .
git commit -m "Update game 1.0.27"
git push origin main

Check before committing:

git status --short

Expected: source/doc/build-output changes only. Do not stage data/game.db.

Step 4: Optional Gitea Release For APK

Only run this when Step 2 created a new APK.

set -e

cd /Users/warren/Documents/testgame/testgame

export GITEA_URL="https://git.whoagland.com"
export GITEA_OWNER="phenom"
export GITEA_REPO="i-want-to-heal"
export GITEA_TOKEN="ed2db3fd54546e9658377d0551b3fc3961583f1d"

VERSION="1.0.27"
APK="IWantToHeal-Thor-v$VERSION.apk"

RELEASE_JSON=$(curl -sS -X POST "$GITEA_URL/api/v1/repos/$GITEA_OWNER/$GITEA_REPO/releases" \
  -H "Authorization: token $GITEA_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"tag_name\":\"v$VERSION\",\"target_commitish\":\"main\",\"name\":\"v$VERSION\",\"body\":\"I Want to Heal Android build v$VERSION\",\"draft\":false,\"prerelease\":false}")

RELEASE_ID=$(python3 -c 'import sys,json; data=json.load(sys.stdin); print(data.get("id") or data)' <<< "$RELEASE_JSON")

curl -sS -X POST "$GITEA_URL/api/v1/repos/$GITEA_OWNER/$GITEA_REPO/releases/$RELEASE_ID/assets?name=$APK" \
  -H "Authorization: token $GITEA_TOKEN" \
  -F "attachment=@$APK"

If the CLI release fails after creating the Gitea release but before uploading the APK asset, retry only the release upload:

npm run release:cli -- --release-only 1.1.26

Step 5: Update TrueNAS

The TrueNAS app checkout should be cloned from the local Gitea bare repository path when Gitea runs on the same TrueNAS host. After that setup, normal updates still use git pull; the remote is local filesystem storage instead of HTTPS.

cd /mnt/usbssds/apps/iwanttoheal/app
git pull

Before restarting, make a DB backup:

cp /mnt/usbssds/apps/iwanttoheal/data/game.db \
  "/mnt/usbssds/apps/iwanttoheal/data/game-before-update-$(date +%Y%m%d-%H%M%S).db"

Then restart the iwanttoheal app in the TrueNAS Apps UI.

What Happens On Restart

The app command runs:

npm ci && npm run db:init && npm run build && npm start

That means:

  • dependency changes apply
  • schema changes apply
  • seed/static-content updates apply
  • browser files rebuild
  • existing accounts and characters stay in data/game.db

npm run db:init should not wipe saves. Character wipes are separate manual reset operations.

Resetting TrueNAS Characters

Only run a reset when intentionally starting everyone over.

Resetting the Mac database does not reset TrueNAS. TrueNAS has its own persistent DB at:

/mnt/usbssds/apps/iwanttoheal/data/game.db

Back it up first, then run the reset command or reset SQL on TrueNAS.

If Something Looks Wrong

Check the mounted DB path:

ls -lh /mnt/usbssds/apps/iwanttoheal/data/game.db

Check the latest code:

cd /mnt/usbssds/apps/iwanttoheal/app
git log --oneline -5

Check the app API:

curl http://127.0.0.1:4173/api/auth/session