- mrpgi-vault (standalone crate): tiny signup/login/world-save service. Argon2 password hashes, random session cookies, JSON-file storage, naive per-IP rate limit, 4MB body cap. tiny_http, no framework, no db. Runs as a container on the dealgod network; nginx proxies /engine/api/ to it. - core: WorldBundle — a whole world (manifest + every room) as one JSON document, with World::to_bundle/apply_bundle. - web bridge: mrpgi_request_save / mrpgi_alloc / mrpgi_world_in exports + an mrpgi_world_saved JS plugin import; the page's SAVE button pulls the live world out of the running engine, LOAD swaps it back in. SAVE_REQUESTED is an AtomicBool on purpose — wasm's thread-less Mutex<bool> is a plain static to LLVM and release builds const-folded the read (the only writer is JS-visible, not IR-visible). - web UI: SIGN IN tab → create account (own username + password) / sign in / Save world / Load world / sign out. Session restores on revisit. Verified live end-to-end through Cloudflare: signup → save → reload → anonymous rejected; throwaway account removed after. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 line
742 B
JSON
1 line
742 B
JSON
{"rustc":11744402056482654987,"features":"[\"block-buffer\", \"core-api\", \"default\", \"mac\", \"subtle\"]","declared_features":"[\"alloc\", \"blobby\", \"block-buffer\", \"const-oid\", \"core-api\", \"default\", \"dev\", \"mac\", \"oid\", \"rand_core\", \"std\", \"subtle\"]","target":7510122432137863311,"profile":14448301111190550315,"path":2626043635653780130,"deps":[[6039282458970808711,"crypto_common",false,15040832999292844657],[10626340395483396037,"block_buffer",false,5192442065127828434],[17003143334332120809,"subtle",false,7647771212883598475]],"local":[{"CheckDepInfo":{"dep_info":"release/.fingerprint/digest-62a103f77ec59270/dep-lib-digest","checksum":false}}],"rustflags":[],"config":8247474407144887393,"compile_kind":0} |