Initial SyncGames tree: agent, Android, deploy, docs.

Session-gated MinIO save sync with AppImage GUI, CLI edit/session flow, and Gitea release helper.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
2026-07-14 22:06:36 -05:00
co-authored by Cursor
commit 0d6b0b2f80
76 changed files with 5697 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
# Path 1 fallback — Hardened Syncthing
Use this if Path 3 (MinIO over Cloudflare/NGINX) becomes unreliable or Android S3 access is blocked more often than Syncthing-Fork would be.
## Triggers
- WAN MinIO downtime / CF limits / NGINX upload bugs that block play sessions
- Android app cannot obtain durable storage access for emulator saves and Syncthing folder sync of the **SSOT tree** is acceptable
- You still refuse to sync live game directories directly
## What stays the same
Keep the Python session agent (`start`/`end`). It continues to copy:
`native save paths` ↔ local SSOT tree
Only the transport of the SSOT tree changes (Syncthing instead of MinIO).
## Migration MinIO → Syncthing SSOT folder
1. On a trusted machine with MinIO access:
```bash
syncgames export-ssot --out ~/SyncGames-SSOT
```
(Downloads all `games/*/live`, `history`, `meta.json` into a filesystem mirror.)
2. Share `~/SyncGames-SSOT` with Syncthing across devices.
3. Enable **Simple File Versioning**, Keep Versions ≥ 5, on every device.
4. Point `agent.toml`:
```toml
store = "filesystem"
ssot_root = "/home/you/SyncGames-SSOT"
```
5. Stop relying on MinIO for that install (or keep MinIO as cold backup via periodic `export-ssot`).
## Hardening rules (do not violate)
- Syncthing folder = SSOT tree **only**
- Never add Proton `compatdata` / Android emulator internal dirs as Syncthing folders
- Lease/hash gates remain enforced by the agent against filesystem `meta.json`
## Rollback
Point `store` back to `minio` and keep using the same game ids if the bucket is still intact.