Some checks failed
PR checks / checks (pull_request) Failing after 2m16s
The public demo (demo.runicgateway.com) is live, so the site's demo slot can be switched on. Two decisions of record, PLAN.md §15: - D82: /beta reads the demo's GET /api/v1/public/settings demo.logins on the server, caches it for a minute, and lists the published sign-ins with the next wipe. If the demo does not answer, /beta links to its sign-in page instead. Gate two reads as in place. - D83: a deep link into a game module's pages carries data-demo-game, and applyBrand.mjs fills it only for games in the new mounted demoGames list. The Rust features gain links into /rust and /rust/servers/demo. UO's stay hidden on a Rust demo. The public-demo not-built entry is removed, because its resolvedBy was met. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
57 lines
2.8 KiB
JSON
57 lines
2.8 KiB
JSON
{
|
|
"$comment": [
|
|
"PLAN.md §7: the stock brand, baked into the image at /app/brand-default and always",
|
|
"complete. The bind mount at /app/brand may be empty, partial or full; every field and",
|
|
"every asset resolves against the mount first and these defaults second, per key, so an",
|
|
"empty mount produces exactly this.",
|
|
"",
|
|
"This file is also the ONLY place in the repository allowed to contain an email address",
|
|
"(D13). The org lead has no mailbox at the domain and chose to publish the existing",
|
|
"address rather than delay the beta; what makes that reversible is that moving to",
|
|
"privacy@ / security@ later is an edit to the mounted copy of this file and a container",
|
|
"restart — no rebuild, no PR. scripts/checkFacts.mjs fails the build if an address",
|
|
"appears anywhere else in the source, because the promise only survives while that",
|
|
"stays true."
|
|
],
|
|
|
|
"siteName": "Runic Gateway",
|
|
"tagline": "Put your game server on the web without putting it on the internet.",
|
|
|
|
"contactEmail": "whitlocktech@gmail.com",
|
|
|
|
"discordInvite": "https://discord.gg/t2Jav8yT4g",
|
|
"giteaOrg": "https://gitea.whitlocktech.com/RunicGateway",
|
|
|
|
"$comment_demo": [
|
|
"§15 / D12. The public demo's address, e.g. https://demo.runicgateway.com. The",
|
|
"homepage's 'See it running' slot and /features/'s per-capability affordance render only",
|
|
"when this is a non-empty URL, so the site gains a working demo by way of one line in a",
|
|
"mounted file — no rebuild, consistent with §7. /beta also reads the demo's published",
|
|
"sign-ins from it, on the next request (D82)."
|
|
],
|
|
"demoUrl": "",
|
|
|
|
"$comment_demoGames": [
|
|
"D83. The game modules the demo at demoUrl runs, by module id (\"rust\", \"uo\"). A",
|
|
"'See it running' link into a game's own pages shows only for a game listed here, so",
|
|
"a Rust demo never links to a /uo/ page it does not have. Core's links (the wiki, the",
|
|
"event calendar, news) follow demoUrl alone. Read at the next restart, like demoUrl."
|
|
],
|
|
"demoGames": [],
|
|
|
|
"$comment_beta": [
|
|
"PLAN.md §8 / D27. The Google Play closed-test opt-in URL. Empty until the track",
|
|
"exists, and /beta renders a waiting state rather than a broken link while it is.",
|
|
"",
|
|
"It is safe to publish once it is filled in, and that is the whole reason the beta can",
|
|
"work with a site that sends no email (D7): the opt-in link only works for addresses",
|
|
"already on the tester list, so anyone else who opens it is refused. Google does not",
|
|
"notify testers on the email-list path either — Discord carries the announcement.",
|
|
"",
|
|
"/beta is one of the two routes that render per request, so unlike every other field",
|
|
"here this one is read from the mounted copy on the NEXT REQUEST rather than at the",
|
|
"next restart. Paste the URL in and reload the page."
|
|
],
|
|
"betaOptInUrl": ""
|
|
}
|