Skip to content

simnJS/stake-dev-tool

Repository files navigation

Stake Dev Tool

Desktop workbench for slot games on the Stake Engine RGS contract.
Run, debug, and visually QA your slot locally — multi-resolution test view, fast Rust LGS, team sync, one-click shareable preview links.

Latest release Total downloads CI License

Rust Tauri 2 SvelteKit


Download

Grab the latest build from the Releases page:

Platform File Notes
Windows 10/11 (x64) Stake-Dev-Tool-vX.Y.Z-windows-x64.exe NSIS installer
macOS Apple Silicon Stake-Dev-Tool-vX.Y.Z-macos-arm64.app.tar.gz Extract → drag .app into /Applications
Debian / Ubuntu (x64) Stake-Dev-Tool-vX.Y.Z-linux-x64.deb sudo apt install ./<file>.deb
Other Linux (x64) Stake-Dev-Tool-vX.Y.Z-linux-x64.AppImage chmod +x then run

Intel Macs aren't supported — open an issue if that's a blocker.

Features

  • Fast Rust LGS — drop-in /api/rgs/<game>/wallet/… server. Reads index.json + lookuptable_*.csv + books_*.jsonl.zst from disk, indexes books once per mode, weighted RNG via binary search.
  • Multi-resolution test view — run your game side-by-side at 7 built-in resolutions plus any custom sizes. Each iframe is its own session.
  • Live event stream — SSE pushes every spin to the test view, with bet history + last-event strip per frame.
  • Force / replay / bookmark — pin any (mode, eventId), replay a saved outcome, bookmark notable rounds (auto-picked min / avg / max per mode).
  • Local HTTPS — bundled CA installs into your user trust store. Zero browser warnings, no game-code hacks.
  • Teams — collaborative workspaces backed by a private GitHub repo. Sync profiles + saved rounds + math files (chunked Release assets).
  • Share preview link — one click ships your game as a static page on GitHub Pages. Math + game run in the browser via a WASM RGS — no server, anyone with the URL can play. Three privacy modes (Sampled / Partial / Full).
  • Profiles — math folder + front URL + resolution snapshot saved per game, one-click reload.
  • Auto-updater — Minisign-signed releases, silent install on Windows, replace-in-place on macOS/Linux.

Quick start

  1. Launch the app and click Install Local CA in the amber banner. One prompt on macOS, silent on Windows; on Linux the .deb pulls libnss3-tools automatically (AppImage users: sudo apt install libnss3-tools). Firefox uses its own store — trust manually if needed.
  2. Browse… to your game's math folder.
  3. Enter the Front URL of your game's frontend (e.g. http://localhost:5174).
  4. Launch test view — a Chromium window opens on https://localhost:<port>/test/… (default port 3001, configurable from the topbar Settings) with your game at every enabled resolution.
  5. Save the profile to reload it in one click next time.

The test view sidebar covers balance, currency, language, device, social mode, custom resolutions, force / bookmark / replay, and per-frame mute.

Math folder layout

<math_root>/
└── <game-slug>/
    ├── index.json            # { "modes": [{ "name", "cost", "events", "weights" }, …] }
    ├── lookuptable_<mode>.csv     # eventId,weight,payoutMultiplier
    └── books_<mode>.jsonl.zst     # one event per line, zstd-compressed

Modes are auto-detected from index.json.

Architecture

┌─ Tauri desktop app ───────────────────────────────────┐
│  WebView2 UI (SvelteKit)  ←IPC→  Rust commands        │
│                                    │                   │
│                          Embedded LGS (axum + rustls)  │
└──────────────────────────────────┬────────────────────┘
                                   │ HTTPS (local CA)
                                   ▼
                       External Chromium (--max-active-webgl-contexts=64)
                       → iframe × N (one per resolution)

The test view is served by the LGS (not Tauri's custom protocol) so iframes load from a real browser context with full WebGL support.

Crates

  • crates/lgs — LGS library + standalone binary. Run without the desktop via cargo run -p lgs --release.
  • crates/desktop — Tauri shell + commands.
  • crates/lgs-wasm — math engine compiled to wasm32 for browser-hosted preview links.
  • ui/ — SvelteKit frontend, builds to static HTML/JS.

HTTP endpoints

RGS contract (Stake Engine compatible)

POST /api/rgs/<game>/wallet/{authenticate,balance,play,end-round}
POST /api/rgs/<game>/bet/event
GET  /bet/replay/<game>/<version>/<mode>/<event>

Devtool (test view + desktop, no auth)

GET    /api/devtool/status
POST   /api/devtool/sessions/prepare
GET    /api/devtool/sessions/<sid>/{last-event,events,stream}     ← SSE
GET    /api/devtool/games/<game>/modes
GET    /api/devtool/bet-stats/<game>
GET    /api/devtool/saved-rounds                                  (POST + PATCH/DELETE :id)
GET    /api/devtool/settings                                      (POST toggle, custom + DELETE :id)
GET    /api/devtool/force-event                                   (POST + DELETE)

Run the LGS standalone

LGS_BIND_ADDR=127.0.0.1:3001 \
LGS_MATH_DIR=./math \
cargo run -p lgs --release
Variable Default Purpose
LGS_BIND_ADDR 0.0.0.0:3001 Where the LGS binds
LGS_MATH_DIR ./math Root folder of game subfolders
LGS_UI_DIR auto-detected Override path to ui/build/
RUST_LOG info tracing-subscriber filter

Build from source

Prerequisites

  • Rust 1.90+ (rustup)
  • Node.js 20+ and pnpm 10+
  • Windows: WebView2 Runtime (pre-installed on Win 11)
  • macOS: Xcode Command Line Tools
  • Linux: libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev
git clone https://github.com/simnJS/stake-dev-tool.git
cd stake-dev-tool
pnpm install

pnpm tauri:dev      # hot-reload dev build
pnpm tauri:build    # release build → target/release/bundle/

Auto-updater

The app checks GitHub Releases on startup and shows a banner when a newer version is published. Updates are Minisign-verified and installed silently (passive NSIS on Windows, replace-in-place elsewhere).

Releases are signed via the GitHub Actions workflow on every v* tag — see CONTRIBUTING.md for the maintainer setup.

Contributing

Issues, PRs, and discussions are welcome — see CONTRIBUTING.md.

License

MIT — see LICENSE.


Built by @simnJS · Changelog · Report a bug

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors