Skip to content

Contributing

Terminal window
# Compile (JVM)
mill krueger.core.jvm.compile
# Compile for Scala.js
mill krueger.core.js.compile
# Compile for Scala Native
mill krueger.core.native.compile
Terminal window
# ZIO Test unit suites (cross-platform)
mill krueger.core.jvm.test
mill krueger.core.js.test
mill krueger.core.native.test
# cucumber-scala BDD integration tests (JVM)
mill krueger.itest

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/.

astro dev only sees /krueger/try/ if the SvelteKit app is built and mirrored into docs/public/try/ (gitignored). The one-step prep is:

Terminal window
cd docs
npm ci
npm run dev:full # ./mill docs.prepareLocalDevSite && astro dev

Open 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:

Terminal window
./mill docs.site

Output: docs/dist/ (including dist/try/). Equivalent npm orchestration:

Terminal window
cd docs && npm ci && npm run site:build # alias for build:full — Mill + try-wasm + Astro + stitch

Preview the static tree:

Terminal window
cd docs && npm run preview # serves docs/dist/
  1. 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
  2. try-wasm./mill krueger.webapp-wasm.writeToWasmSite populates sites/try-wasm/static/wasm/ (both the WASM-compiled compiler artifact and the Scala.js facade JS module) before npm run build in sites/try-wasm.

  3. Astrodocs/public/ (API HTML, optional try/ mirror during dev) is copied into docs/dist/ on npm run build.

From docs/ after npm ci:

Terminal window
npx playwright install
npm run test:playground-e2e

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.