- Service: accounts with Argon2 password hashes and session tokens; the first login creates
the admin (shared savegames of before move to the admin); the admin creates and deletes
users; everybody can change the password; savegames are stored and listed per user
- Game: login page before the title (only when the service is reachable), with licence and
repository link; account page (password, logout; users for the admin); text fields with
Tab/Enter, masked passwords, browser dialog on touch screens; long status messages wrap
- Download Standalone: DungeonCraft.html with the game embedded (built in the Docker image,
served to logged-in users via nginx auth_request); works from file:// without server and
opens downloaded savegames
- Without the service (standalone, local files) there is no login, savegame files as before
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- manifest.webmanifest (full screen, any orientation), icons 192/512/maskable/apple-touch
- sw.js: network first, cache as offline fallback, the savegame API is never cached
- registered only over HTTPS or on localhost; nginx serves the manifest type
- README: installing, HTTPS requirement
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- server/: small axum service storing savegames as files (1 MB each, 500 MB total, rate limit)
- docker compose: second container with a volume; nginx forwards /api/
- JS plugin: asynchronous HTTP requests polled by the game
- Save/Load open a list page (name field, new, overwrite, load, delete with confirmation)
- Without a reachable service the game keeps using savegame files and the browser autosave
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- in-game texts moved to lang/en.lang and lang/de.lang (key = text, placeholders)
- game logic emits message keys + args, translated at display time
- localStorage access via own miniquad JS plugin (www/dc_plugin.js)
- code comments, DESIGN.md, CREDITS.md translated; README.md added
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>