// The landing page's tuning panel is a dev-server affordance: // src/components/TunePanel.astro, which src/pages/index.astro renders and // wires up only under `import.meta.env.DEV`. None of it — the markup, the // sliders' descriptions, or the readout quoting this repository's own // `cargo test` agreement floor — belongs in the tree // scripts/publish-site.sh uploads, and the guard that keeps it out is one // expression a refactor can drop without anything else noticing. // // Scope is the pages and bundles this site authors. rustdoc's output under // dist/api/ and wasm-bindgen's generated glue under dist/wasm/ carry Rust // doc comments verbatim and are not written here. import { readFileSync } from "node:fs"; import { relative, sep } from "node:path"; import { distDir, requireDist, walkFiles, fail, report } from "./lib.mjs"; requireDist(); const FORBIDDEN = ["tune-panel", "tune=1", "crystallisation agreement"]; const GENERATED = [`${sep}api${sep}`, `${sep}wasm${sep}`]; const files = [".html", ".js", ".css"] .flatMap((extension) => walkFiles(distDir, extension)) .filter((path) => !GENERATED.some((dir) => path.includes(dir))); for (const file of files) { const text = readFileSync(file, "utf8"); for (const needle of FORBIDDEN) { if (text.includes(needle)) { fail( `${relative(distDir, file)} contains ${JSON.stringify(needle)} — the tuning ` + "panel is development-only and must not reach a published build", ); } } } report("check-dev-surface");