Files
calctext/_bmad-output/implementation-artifacts/9-1-wasm-engine-integration.md
2026-03-16 19:54:53 -04:00

38 lines
1.4 KiB
Markdown

---
epic: 9
story: 9.1
title: "WASM Engine Integration"
status: draft
---
## Epic 9 — Web App (React + WASM)
**Goal:** Zero-install web experience with real-time collaboration.
### Story 9.1: WASM Engine Integration
As a web user,
I want the CalcPad engine running natively in my browser via WebAssembly,
So that I get full calculation fidelity without installing anything.
**Acceptance Criteria:**
**Given** the calcpad-engine Rust crate is configured with wasm-pack targets
**When** the WASM module is compiled with `wasm-pack build --target web`
**Then** a valid `.wasm` binary and JS glue code are produced
**And** the gzipped WASM bundle is less than 500KB
**Given** the web app is loaded in a browser
**When** the WASM engine is initialized
**Then** it is loaded inside a dedicated Web Worker thread
**And** the main UI thread remains unblocked during computation
**Given** the WASM engine is running in a Web Worker
**When** the UI sends an evaluation request
**Then** communication occurs via `postMessage` serialization
**And** the worker returns the computed result back to the main thread via `postMessage`
**Given** the WASM engine is initialized in the worker
**When** a user types a valid CalcPad expression
**Then** the engine evaluates it with identical results to the native Rust engine
**And** all supported operations (arithmetic, units, conversions, variables, functions) produce matching output