IW-345: Mill module for dashboard with Vite + Tailwind + Web Awesome #370

Merged
mprihoda merged 33 commits from IW-345 into main 2026-04-27 09:30:26 +00:00
mprihoda commented 2026-04-23 22:52:14 +00:00 (Migrated from github.com)

Summary

Replaces the scala-cli-based dashboard build with a Mill module producing a self-contained fat jar. Adds a Vite + Tailwind v4 + Web Awesome 3.2.1.1 frontend pipeline, relocates dashboard sources under dashboard/jvm/ (package rename iw.core.dashboard.*iw.dashboard.*), and flips iw-run / command scripts to spawn java -jar build/iw-dashboard.jar. Double-gated dev mode (--dev + VITE_DEV_URL, loopback-only) enables Vite HMR for dashboard editors.

Infrastructure-only — no user-visible feature changes to iw dashboard output.

Phases

  • Phase 1 (#366): Mill bootstrap + core jar production
  • Phase 2 (#367): Dashboard JVM module — move, rename, test migration (89-file rename)
  • Phase 3 (#368): Frontend pipeline + fat-jar assembly + integration tests
  • Phase 4 (#369): Command integration + dev mode

Changes

  • New Mill build (build.mill, ./mill, .mill-version) producing core.jar and dashboard.assembly
  • dashboard/jvm/ module with migrated tests (dashboard.test) and new integration tests (dashboard.itest)
  • dashboard/frontend/ with Yarn 4 via Corepack, Vite, Tailwind v4, cherry-picked Web Awesome components
  • iw-run: ensure_dashboard_jar / needs_dashboard_rebuild helpers; IW_DASHBOARD_JAR env var contract
  • ServerDaemon, SampleDataCli, DevModeConfig, AssetUrl added; commands/server-daemon.scala removed
  • CI (.github/workflows/ci.yml, .github/Dockerfile.ci): Node 20 + Corepack + Mill + WEBAWESOME_NPM_TOKEN
  • New BATS tests: dashboard-dev-gate.bats, dashboard-jar-launch.bats, dashboard-rebuild-gate.bats
  • Docs: CLAUDE.md two-build-tool boundary, README dashboard prereqs

Review

Testing

  • 193 unit tests pass (./mill dashboard.test, core tests)
  • 15 integration tests pass (./mill dashboard.itest.testForked)
  • 3 new BATS tests cover dev gate, jar launch, rebuild gate
  • Dashboard verified in both prod (fat-jar) and dev (--dev + Vite HMR) modes

🤖 Generated with Claude Code

## Summary Replaces the scala-cli-based dashboard build with a Mill module producing a self-contained fat jar. Adds a Vite + Tailwind v4 + Web Awesome 3.2.1.1 frontend pipeline, relocates dashboard sources under `dashboard/jvm/` (package rename `iw.core.dashboard.*` → `iw.dashboard.*`), and flips `iw-run` / command scripts to spawn `java -jar build/iw-dashboard.jar`. Double-gated dev mode (`--dev` + `VITE_DEV_URL`, loopback-only) enables Vite HMR for dashboard editors. Infrastructure-only — no user-visible feature changes to `iw dashboard` output. ## Phases - **Phase 1** (#366): Mill bootstrap + core jar production - **Phase 2** (#367): Dashboard JVM module — move, rename, test migration (89-file rename) - **Phase 3** (#368): Frontend pipeline + fat-jar assembly + integration tests - **Phase 4** (#369): Command integration + dev mode ## Changes - New Mill build (`build.mill`, `./mill`, `.mill-version`) producing `core.jar` and `dashboard.assembly` - `dashboard/jvm/` module with migrated tests (`dashboard.test`) and new integration tests (`dashboard.itest`) - `dashboard/frontend/` with Yarn 4 via Corepack, Vite, Tailwind v4, cherry-picked Web Awesome components - `iw-run`: `ensure_dashboard_jar` / `needs_dashboard_rebuild` helpers; `IW_DASHBOARD_JAR` env var contract - `ServerDaemon`, `SampleDataCli`, `DevModeConfig`, `AssetUrl` added; `commands/server-daemon.scala` removed - CI (`.github/workflows/ci.yml`, `.github/Dockerfile.ci`): Node 20 + Corepack + Mill + `WEBAWESOME_NPM_TOKEN` - New BATS tests: `dashboard-dev-gate.bats`, `dashboard-jar-launch.bats`, `dashboard-rebuild-gate.bats` - Docs: CLAUDE.md two-build-tool boundary, README dashboard prereqs ## Review - **Full review packet:** [`project-management/issues/IW-345/review-packet.md`](project-management/issues/IW-345/review-packet.md) — entry points, diagrams, scenarios, invariants - **Phase contexts:** `project-management/issues/IW-345/phase-0{1,2,3,4}-context.md` - **Implementation log:** `project-management/issues/IW-345/implementation-log.md` - **Release notes (Czech):** [`project-management/issues/IW-345/release-notes.md`](project-management/issues/IW-345/release-notes.md) ## Testing - 193 unit tests pass (`./mill dashboard.test`, core tests) - 15 integration tests pass (`./mill dashboard.itest.testForked`) - 3 new BATS tests cover dev gate, jar launch, rebuild gate - Dashboard verified in both prod (fat-jar) and dev (`--dev` + Vite HMR) modes 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No description provided.