kaintuck: online leaderboards via riparion-cms app backend
#44 in Riparion/riparion-retro — merged 2026-06-13
What
A finished kaintuck run now also posts to a shared online hall of fame, alongside the existing local high-score table. Fully optional: when the game isn't served by a CMS (plain dx serve, any non-CMS host), every call is a no-op and the game stays local-only.
Pairs with riparion-cms#91, which adds the leaderboard endpoints and injects the API-base meta tag this code reads.
How it works
retro-kit::leaderboard(new, reusable by any game) — reads the CMS-injected<meta name="riparion-api-base">,submit()(fire-and-forget),fetch_top(). Addsgloo-net+web-systo the workspace.games/kaintuck/src/app.rs— submits infinish()beside the local record (runs once, guarded by therecordedflag), with a typedScorePayloadof run stats + game version.games/kaintuck/src/ui/screens/splash.rs— an online HALL OF FAME board viause_resource, with the local board as the always-present fallback.
Why the run seed isn't captured (yet)
Replay verification would need the seed — but capturing it would force a save-format version break (discarding in-progress saves) and is useless without a decision log. Both belong to a later replay-verification phase, so the payload carries run stats + version for now.
Testing
cargo check -p kaintuckon host and--target wasm32-unknown-unknown— both clean.cargo test -p kaintuck— 49 pass, golden trace stable (no engine regression).cargo test -p retro-kitclean; clippy clean on both crates.
Deploy note
Republish kaintuck via the riparion-apps MCP after the CMS (riparion-cms#91) is deployed, so the endpoints exist and the meta tag is injected.
🤖 Generated with Claude Code
Last updated 2026-06-14
Links to this note
Merged pull requests, newest first.