- canvas fills the entire screen on any device; the 480x640 world is
scaled to fit and bottom-aligned so the ground always sits on the
bottom edge, with the sky painted full-bleed behind it
- the canvas buffer now always matches its laid-out size, so the drawing
can never drift out of step with the screen
- HUD (score, badge, buffs, toasts, biome banner) moved to screen space
so it stays pinned to the real screen edges
- sun and stars drawn in screen space so the sky above the play area is
not empty
- PWA: manifest, service worker (offline), generated app icons and an
in-game INSTALL APP button
- overlays now dim the whole screen, not just the game strip
Coolify routes to port 3000 when 'Ports exposes' is left blank, but nginx
only listened on 80 - so Traefik found nothing and returned 502 while the
container itself was healthy and passing its healthcheck.
nginx now listens on both 80 and 3000, so the game is served whichever port
the proxy routes to. README documents setting Ports exposes = 80.
Single-file HTML5 canvas game - sprites, bitmap font, music and sound are
all generated in code, no external assets.
Game:
- 6 playable birds, each with a unique ability (Double Flap, Teleport,
Allay Magnet, Melt, Phase, Howl)
- 5 score-driven biomes (Plains, Desert, Mineshaft, Nether, Ice Peaks)
- Day/night cycle, weather (rain, snow, embers), camera drift
- Pickups: gold, bubble shield, elytra wings, lucky cube buffs
- Difficulty settings, bird unlocks, per-bird bests, advancement toasts
- Daily challenge with a shareable code and a ghost of your best run
- 2-player on one screen
Deployment:
- Dockerfile (nginx:alpine) serving the single file
- nginx.conf with no-cache headers, gzip and a /healthz endpoint
- docker-compose.yml and Coolify instructions in the README