Commit Graph
18 Commits
Author SHA1 Message Date
RyanandClaude Sonnet 5.5 c1141ad3af Deploy through the runner's Docker socket instead of SSH
CI/CD / test (push) Successful in 22s
CI/CD / publish (push) Failing after 18s
CI/CD / deploy (push) Skipped
The runner lives on the deployment server, so the deploy job runs
docker compose locally with a temporary registry login.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 11:37:45 +03:30
Hamed 85f562984b Merge remote-tracking branch 'origin/main'
CI/CD / publish (push) Canceled after 0s
CI/CD / deploy (push) Canceled after 0s
CI/CD / test (push) Canceled after 6m8s
2026-10-26 11:23:41 +03:30
HamedandClaude Opus 5.5 8cc0e8ce80 Rename the factory to Robot Market, fix GPS search and add GPS test points
- The factory company is now "شرکت روبات مارکت" on signs, dialogue,
  briefing, map label, manifest and README
- Real-world mode no longer shows "location not found" for every
  problem: it takes a quick coarse Wi-Fi/network fix first, keeps
  searching after a GPS timeout, and reports permission denied (1),
  location off (2), still searching (3) or a non-HTTPS page separately
- Three GPS test machines at real coordinates beside the factory, only
  present in real-world mode; the closest machine within reach is used
  and the arrival radius is twice the GPS error (12–40 m)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 11:23:22 +03:30
RyanandClaude Sonnet 5.5 894e3e25c6 Deploy from a Gitea registry image instead of building on the server
CI/CD / test (push) Failing after 7m19s
CI/CD / publish (push) Skipped
CI/CD / deploy (push) Skipped
CI now builds and pushes the image to the Gitea container registry, links
the package, and the deploy job ships only deploy/docker-compose.yml and an
.env naming the image to /opt/vending-machine-game.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 10:46:57 +03:30
HamedandClaude Opus 5.5 9832f303e8 Make CI and Docker builds survive an unreachable npm registry
CI/CD / test (push) Failing after 7m58s
CI/CD / deploy (push) Skipped
The Gitea runner hung for over 30 minutes on `npm ci` because it cannot
reach registry.npmjs.org. The registry is now configurable through the
NPM_REGISTRY repository variable, passed on to the server's Docker
build, and npm gives up after bounded retries. Jobs also have time
limits (test 15 min, deploy 30 min) so the runner is never held forever.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:15:49 +03:30
HamedandClaude Opus 5.5 22aa11bf32 Add Gitea Actions CI/CD
CI/CD / test (push) Canceled after 0s
CI/CD / deploy (push) Canceled after 0s
Every push and pull request installs, tests and builds the game. Pushes
to main then ship the sources to the server over SSH and restart the
site with docker compose; the deploy step is skipped until the
DEPLOY_HOST / DEPLOY_SSH_KEY secrets exist. An optional HEALTH_URL is
polled after deploying.

The Gitea server is now the `origin` remote; GitHub remains as `github`.
Gitea ignores .github/workflows while .gitea/workflows exists, so the
GitHub Pages workflow keeps running only on GitHub.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:07:54 +03:30
HamedandClaude Opus 5.5 47b2b72ea9 Add Docker deployment with automatic HTTPS
Deploy game to GitHub Pages / deploy (push) Failing after 21m51s
A two-stage image runs the tests and builds the game with Node, then
serves dist/ with Caddy, which obtains and renews Let's Encrypt
certificates for robotmarkets.ir (configurable via SITE_ADDRESS).
HTTPS is required for installing the PWA and for GPS mode.

- Caddyfile: gzip/zstd, long-lived caching for hashed assets, no-cache
  for the page, service worker and manifest, SPA fallback, permissions
  policy for location and motion sensors
- docker-compose.yml: ports 80/443, persistent certificate volumes
- README: server setup, updates, running behind an existing proxy, and
  workarounds when Docker Hub is unreachable from servers in Iran

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 09:59:01 +03:30
HamedandClaude Opus 5.5 2f74788caa Fix the car getting stuck on the Chenaran highway
Traffic cars picked a random direction even on one-way carriageways,
so some drove head-on in the player's lane and stopped dead in front of
them; every bump also threw the player's car backwards while the
traffic car stayed put, so the player could not get past.

- Map data records one-way roads (oneway tags, motorways, roundabouts)
- Traffic drives with the flow in one of two lanes on one-way roads and
  on the right-hand half of two-way roads, spawning only from nearby roads
- Bumps slow the player down instead of reversing them; a traffic car
  pressed against for more than 0.8 s pulls away out of sight
- Regression test for traffic direction and lanes; ?debug collision log

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 09:29:58 +03:30
HamedandClaude Opus 5.5 0939dac9cd Start at the factory, add PWA install and GPS real-world mode
The game now begins inside the Negin Sazan Pishgam Radmehr Atousa
vending-machine factory on the Mashhad–Chenaran road, and the world
extends ~20 km along the real driving route to Park Mellat and
Ferdowsi University.

- Factory compound: production hall with assembly line, office, yard,
  gate and company signs; first mission at its half-price demo machine
- Map data merged from four OSM extracts (factory zone, route corridor,
  region main roads, city zone), clipped to a 15 x 18 km region
- City meshes chunked and culled by distance; traffic recycled around
  the player; minimap and city map drawn from cached tiles + overview
- The Robot Market robot no longer walks with the family: it comes out
  of a machine when they arrive, greets them with expression portraits
  and goes back inside when they leave
- PWA: manifest, icons from the robot avatar, offline service worker
  generated at build time, install button / iOS steps, update prompt;
  Vazirmatn font bundled instead of Google Fonts
- Real-world mode: safety notice, GPS + compass tracking with accuracy
  smoothing, 20-40 m arrival radius, speed lock and in-person bonus

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 08:56:06 +03:30
Hamed e2a1b5fba1 update 2026-10-25 12:47:13 +03:30
HamedandClaude Opus 5.5 95a2ae851d Turn the game into a third-person Mashhad city game
Replace the linear forest walk with an open area of real western Mashhad
built from OpenStreetMap data, starting at Park Mellat. A father and child,
guided by the Robot Market robot, find vending machines at a park, school,
universities, a metro station and a mall, on foot or by car.

- Iran province briefing map; only Mashhad is unlocked
- Third-person camera, building collision, arcade car and ambient traffic
- Minimap and full city map with addresses, opening hours and A* routing
- Purchase scoring, missions with cash rewards, ranks and an end screen
- Map data build script (OSM + Natural Earth) and new logic tests

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 11:27:48 +03:30
Hamed 8a49dc07fa Replace child character with Robot Market mascot 2026-10-22 14:36:12 +03:30
Hamed 6d4c4b7dbe Fix GitHub Pages deployment and document game URL 2026-10-21 11:06:58 +03:30
Hamed b5f3137fff update 2026-10-21 10:58:14 +03:30
Hamed f329acc61c update 2026-10-20 13:30:44 +03:30
Hamed 5857b11bd8 Add interactive picnic journey and synchronize gameplay stages 2026-10-20 12:26:14 +03:30
Hamed 430d7e1c11 update 2026-10-20 12:07:26 +03:30
Hamed f7c6aee286 first commit 2026-10-20 11:41:30 +03:30