Repository navigation
v0.2.0
Artboard no longer requires a wasmJs target. Modules that already declare jvm() or only android can still get a spatial gallery of pre-rendered previews; live Wasm remains the fully interactive path.
Highlights
Snapshot galleries (no Wasm required)
Artboard binds to one target you already declare (preference: live Wasm → JVM snapshots → Android snapshots):
wasmJs { browser() }— live interactive gallery (unchanged)jvm()without Wasm — headless Skia renders every theme × locale to PNGsandroid { … }only — same images via Robolectric host tests
Snapshot mode uses a prebuilt viewer (artboard-viewer-dist) over manifest.json + PNGs. Board chrome still works: pan/zoom, search, theme, locale, device, deep links, layout grid, artboardRun, and artboardExport.
./gradlew :ui:artboardSnapshot
./gradlew :ui:artboardRun
./gradlew :ui:artboardExport
Live interaction inside a preview, animation scrubbing, and runtime PNG download still need the Wasm path.
Locale-correct snapshots
Platform locale is set for the full offscreen scene so Compose resources and RTL match the gallery locale control.
Layout grid on image tiles
The screen column/margin/gutter overlay works over snapshot PNGs the same as live frames.
Camera reliability
Gestures accumulate correctly within a frame. Restored cameras are discarded when they would open on empty space, and the board auto-fits instead.
Café showcase
Previews ordered by user flow (browse → item → cart → checkout → orders → settings).
Upgrade
id("io.github.crowded-libs.artboard") version "0.2.0"
No consumer source changes required for existing Wasm galleries. New Maven artifact: artboard-viewer-dist.
Android snapshots: Robolectric sandbox is pinned to API 34 so captures run on JDK 17 (API 36 sandboxes require JDK 21). compileSdk may remain 36.