Skip to main content

Ace Up docs — publishing

This repo is the source of record and the live git source for the Ace Up docs site. Written 2026-09-11.

Live

https://aceup.mintlify.site · project app.mintlify.com/xhuntr/aceup · account nextrongear@gmail.com (GitHub nxsdevv) · plan hobby 41 pages across two tabs — Players (30) and Venue owners (11).

How to update it

Push to main. That is the whole workflow. The deployment’s git source is nxsdevv/aceup-docs, so a push rebuilds the site. One wrinkle: studio’s git cannot reach GitHub. git push and even git ls-remote hang indefinitely from this box — not fail, hang, and GIT_TERMINAL_PROMPT=0 does not make them fail fast. Plain HTTPS is fine (api.github.com answers in 0.2 s; info/refs correctly returns 401), so it is git’s transport specifically, not the network and not credentials. xhuntr’s git works normally. So:
Verify with the GitHub MCP (authenticated as nxsdevv), which does work here.
Every repo on these machines is private, permanently. nxsdevv/aceup-docs is private — do not change that.

The git source

Repointed 2026-09-11 from Mintlify’s auto-created mintlify-community/docs-xhuntr-4ad3ccd2 to nxsdevv/aceup-docs using deployment.updateGitSourceItem through the admin MCP. The Mintlify GitHub App already had access to nxsdevv — proven before trusting it, by checkout returning this repo’s own HEAD sha as its base. Rollback, if ever needed:

The admin MCP (for config and nav, which are not in this repo’s control path)

https://mcp.mintlify.com, JSON-RPC over HTTP, OAuth token in xhuntr’s ~/.claude/.credentials.json (scopes include docs:write, nav:write, config:write, deployment:write). The token is not tied to that box — it works over plain HTTP from anywhere. Helper scripts on xhuntr: /tmp/mcli.py (generic caller), /tmp/publish.py, /tmp/republish.py. Three gotchas that cost real time:
  1. Cloudflare 1010-blocks a bare Python user-agent. Send User-Agent: node.
  2. checkout is required before any editor tool, and a session goes stale once save merges it — the next update_config then fails with no_editor_metadata. Pass a fresh branch to checkout on every run.
  3. create_node on a path that already exists silently attaches to the existing file instead of seeding your content. This is what left the homepage as an empty index.mdx serving a / → / redirect loop while every status check said 200. Use write_page after creating, and verify.
docs.json is not writable via write_page. Site config goes through update_config; navigation only through create_node / update_node. Do not confuse this with app.mintlify.com/xhuntr/aceup/products/mcp — that is an MCP server Mintlify auto-generates from the published docs for readers’ AI tools. It needs no setup and publishes nothing.

Images

images/screens/ holds 30 WebP screenshots of the real built Mini App, captured by the Gate F Playwright walk — not design mockups. Downscaled to 780px and converted from PNG (7.8 MB → 1.4 MB). Brand assets in images/brand/. All references are repo-relative (/images/...). An earlier pass hotlinked them from aceup.xhuntr.com because the admin MCP has zero asset operations (verified by searching the SDK); that was undone once the repo was connected, since hotlinking produced CORS console noise and tied the docs to the casino server being up. Leftover unused copies at rhbot/miniapp/public/docs and rhbot/miniapp/dist/docs can be deleted whenever convenient.

Content rules baked into these pages

Do not undo these in an edit pass:
  • Mainnet framing. Every money page reads as if mainnet is live — the user’s explicit choice. It was not live when written (Gate H blocked on bankroll funding, cold addresses, token rotation), which is why a pre-launch banner is set in docs.json. Remove the banner when mainnet goes live.
  • “Robinhood Chain” / “ETH on Robinhood Chain”. Never “Robinhood ETH” or “Robinhood Ethereum”. The not-affiliated disclaimer is on money/chains.mdx, help/security.mdx and help/faq.mdx.
  • The edges are printed — 0.380% main, 6.0% Perfect Pairs, 4.8% 21+3.
  • No loss-chasing copy. No deposit prompt after a loss, no “approaching your limit” nudges, nothing that encourages another hand.
  • Owners and managers cannot play at their own venue — in the owner section, the tables page and the FAQ.
  • Nothing from .env, no wallet addresses in copy, key handling described only as “encrypted at rest”.

Where the facts came from

Every number was read out of the running code, not the design artifacts — rhbot/docs/ARTIFACT-GAPS.md exists because the build and the artifacts disagree on nearly every screen, and it says the build wins. The published numbers are the live numbers. config.ts parses money policy as int(NAME, fallback, …), so a .env override would diverge silently from the code default — exactly how the XHuntr docs shipped wrong prices. Checked by counting keys in rhbot’s .env without opening it: MIN_DEPOSIT_LAMPORTS, MIN_DEPOSIT_GWEI, AUTO_WITHDRAW_DAILY_LAMPORTS, AUTO_WITHDRAW_DAILY_GWEI, WITHDRAW_HOLD_MIN, DAILY_ROUND_CAP, OWNER_SHARE_DEFAULT_PCT, PAYOUT_MIN_LAMPORTS, TABLE_BET_SECONDS are all absent, so the fallbacks are what the service runs. Re-check after any .env change. Three claims verified against the build rather than the design prose:
  • Group card is edited in place — src/telegram/groupcard.ts:106.
  • No game audio exists (ARTIFACT-GAPS G1 is OPEN). No page mentions sounds.
  • The public verify page is a four-field verifier form, not a whole-table round viewer. An earlier draft said otherwise and was corrected.

Open at handover

  • Remove the pre-launch banner when mainnet is live (banner in docs.json).
  • Recapture 12-wallet-deposit.webp on mainnet — it shows “Solana devnet” from the pilot and carries an honest <Info> caption on money/deposit.mdx that should go with it.
  • Custom domain: the user chose to stay on aceup.mintlify.site for now. The pattern, when wanted, is vercel dns add xhuntr.com docs.aceup CNAME cname.mintlify.builders plus the two TXT records Mintlify issues for the cert.