Contributing
# Compile (JVM)mill krueger.core.jvm.compile
# Compile for Scala.jsmill krueger.core.js.compile
# Compile for Scala Nativemill krueger.core.native.compile# ZIO Test unit suites (cross-platform)mill krueger.core.jvm.testmill krueger.core.js.testmill krueger.core.native.test
# cucumber-scala BDD integration tests (JVM)mill krueger.itestDocs site
Section titled “Docs site”The handbook under docs/ is Starlight / Astro alongside a single
SvelteKit playground at
/krueger/try/. GitHub
Pages runs the same pipeline as ./mill docs.site: Scaladoc, WASM artifacts for
the playground, SvelteKit production build, Astro build, then a copy of
sites/try-wasm/build/ into docs/dist/try/.
Local dev (full site, including /try/)
Section titled “Local dev (full site, including /try/)”astro dev only sees /krueger/try/ if the SvelteKit app is built and
mirrored into docs/public/try/ (gitignored). The one-step prep is:
cd docsnpm cinpm run dev:full # ./mill docs.prepareLocalDevSite && astro devOpen http://localhost:4321/krueger/ and /krueger/try/.
Production-sized artifact / GitHub Pages parity
Section titled “Production-sized artifact / GitHub Pages parity”Build everything exactly as deploy does:
./mill docs.siteOutput: docs/dist/ (including dist/try/). Equivalent npm orchestration:
cd docs && npm ci && npm run site:build # alias for build:full — Mill + try-wasm + Astro + stitchPreview the static tree:
cd docs && npm run preview # serves docs/dist/Under the hood
Section titled “Under the hood”-
Scaladoc for JVM, Scala.js, and Scala Native is emitted into
docs/public/api/{jvm,js,native}/(gitignored):Terminal window ./mill docs.writeToDocsPublic./mill docs.apiJvm./mill docs.apiJs./mill docs.apiNative -
try-wasm —
./mill krueger.webapp-wasm.writeToWasmSitepopulatessites/try-wasm/static/wasm/(both the WASM-compiled compiler artifact and the Scala.js facade JS module) beforenpm run buildinsites/try-wasm. -
Astro —
docs/public/(API HTML, optionaltry/mirror during dev) is copied intodocs/dist/onnpm run build.
Playwright checks
Section titled “Playwright checks”From docs/ after npm ci:
npx playwright installnpm run test:playground-e2eWorkflow
Section titled “Workflow”Krueger follows strict Red-Green-Refactor TDD. Open an issue (or a bd
ticket) before starting non-trivial work, then submit a PR against main.
See the top-level CLAUDE.md
and AGENTS.md
for the full engineering conventions.