feat/score-persistence
Introduces a long-lived `pid` cookie (365 d) as persistent player identity alongside the existing 24 h `sid` session cookie. On first visit, a player row is upserted into `players`. On round end, a transaction inserts into `games` and updates aggregates (best_attempts on wins only, streak counters, last_played_at). DB failures are caught and logged — the game keeps serving. Adds a 3×2 'Your best' stats panel and a public top-10 scoreboard (fewest best_attempts ASC, earliest last_played_at as tie-breaker; identifiers truncated to 8 chars; current player highlighted). Infrastructure: adds `pg` dependency, Dockerfile now installs npm deps before copying server.mjs, docker-compose forwards all provisioned TXT_GAME_DB_* vars and joins the postgres_postgres network for container-to-container reach. Task: d1c49d59-57bd-4eba-9e22-f25a04157ad4
txt-game
A small text-based number guessing game running as a HAL mesh module. The server picks a random number between 1 and 100, and you have 7 attempts to guess it — after each guess you receive a directional hint (too high / too low) and a temperature clue (cold → warm → hot) to help you zero in. The game runs entirely in the browser via HTML forms: no JavaScript required on the client side. Each player session is tracked by a lightweight cookie so multiple people can play concurrently without interference.
Languages
JavaScript
88.8%
TypeScript
10.5%
Dockerfile
0.7%