All checks were successful
PR checks / checks (pull_request) Successful in 1m5s
Builds `/app/` and `/beta/`, the SQLite signup store, the rate limiting and the export CLI of PLAN.md §8, and adds this repository's first test suite. Four decisions of record, D26–D29 (§8, "How phase 5 built the app and the beta"): - D26 — the screenshot slot ships empty, reserved for phase 9. §10 promised `/app/` "the 14 existing screenshots"; they are a July trusted-device smoke test against an unseeded dev instance, captured before the theming work, and five of the fourteen are two-factor prompts. Shipping them would break D4. Phase 9 already builds the rig, so it gains an emulator pass. - D27 — the public demo is the tester target. `ConnectScreen.kt` gates the whole app on a validated deployment address, so a tester needs somewhere to point it. The beta therefore waits on the demo VM, and the page says so. - D28 — `/beta` handles its own POST; there is no `/api/beta-signup`. An endpoint cannot report a validation error without JavaScript. §6's diagram is amended. - D29 — the APK and the beta get equal billing, and the APK link is off: `androidApk.serviceable` is false because the published v0.5.0 build does not work. The panel stays and states that plainly rather than being removed. Three mechanisms the plan did not anticipate: - `liveBrand()` — a server-rendered page never passes through the boot rewrite, so `/beta` reads the mounted brand.json itself. Pasting the Play opt-in URL in takes effect on the next request rather than the next restart. - `checkLinks.mjs` derives on-demand routes from `prerender = false` in the source. A PLANNED_ROUTES entry would have been wrong: its reverse check fires when a route has been built, and an on-demand route never produces a file, so the entry could never rot out. - `npm test` — the five existing checks all read built output, and none of this logic appears there. A honeypot can stop working and leave the build identical. Also: `checkFacts.mjs` gains the APK assets and `minSdk`, and learns that RFC 2606 reserved domains are not contact addresses; the D13 rule is otherwise unchanged. Verified end to end against the built server: every outcome renders with no JavaScript, cross-origin POSTs are refused, a mounted opt-in URL appears without a restart, and the export CLI round-trips. Co-Authored-By: Claude <noreply@anthropic.com>
41 lines
1.3 KiB
JSON
41 lines
1.3 KiB
JSON
{
|
|
"name": "runicgateway.com",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"license": "GPL-3.0-or-later",
|
|
"description": "The public marketing and documentation site for Runic Gateway",
|
|
"engines": {
|
|
"node": ">=22"
|
|
},
|
|
"scripts": {
|
|
"dev": "astro dev",
|
|
"build": "astro build",
|
|
"preview": "astro preview",
|
|
"start": "node scripts/applyBrand.mjs && node ./dist/server/entry.mjs",
|
|
"check": "astro check",
|
|
"check:facts": "node scripts/checkFacts.mjs",
|
|
"check:tokens": "node scripts/checkTokens.mjs",
|
|
"check:brand": "node scripts/checkBrand.mjs",
|
|
"check:links": "node scripts/checkLinks.mjs",
|
|
"beta": "node scripts/beta.mjs",
|
|
"test": "node --test test/beta.test.mjs",
|
|
"brand:assets": "node scripts/buildBrandAssets.mjs",
|
|
"verify": "npm run check:tokens && npm run check:brand && npm run check && npm test && npm run build && npm run check:links && npm run check:facts"
|
|
},
|
|
"dependencies": {
|
|
"@astrojs/node": "^11.1.4",
|
|
"@astrojs/starlight": "^0.41.7",
|
|
"@fontsource-variable/cinzel": "^5.3.0",
|
|
"@fontsource-variable/inter": "^5.3.0",
|
|
"astro": "^7.2.4",
|
|
"better-sqlite3": "^12.11.1",
|
|
"sharp": "^0.35.3"
|
|
},
|
|
"devDependencies": {
|
|
"@astrojs/check": "^0.9.10",
|
|
"opentype.js": "^2.0.0",
|
|
"typescript": "^6.0.3"
|
|
}
|
|
}
|