How to run the web client
Goal: run Zoen in a browser. There are two entry points in packages/zoen-ui; pick the one you need. Requires: Node.js 22+ and npm.
Shell preview (sample data)
Section titled “Shell preview (sample data)”The reusable React application shell with static, labelled sample conversations — for layout, theme and interaction review. It sends nothing.
npm ci --prefix packages/zoen-ui --ignore-scriptsnpm run typecheck:shell --prefix packages/zoen-uinpm run test:shell --prefix packages/zoen-uinpm run preview --prefix packages/zoen-uiOpen http://127.0.0.1:4173 (loopback only).
Authenticated browser client
Section titled “Authenticated browser client”The real client: paired by your phone, protocol 4, OpenMLS in a worker, a non-exportable WebCrypto signing key and an encrypted IndexedDB session. Also requires the wasm32-unknown-unknown Rust target and wasm-bindgen CLI 0.2.129.
rustup target add wasm32-unknown-unknowncd packages/zoen-uinpm cinpm run typecheck:webnpm run test:webZOEN_WASM_BINDGEN=/absolute/path/to/wasm-bindgen npm run build:webnpm run webOpen http://127.0.0.1:4174 (ZOEN_WEB_PORT overrides the port). Supply the relay in the pairing form or with ?relay=http://127.0.0.1:8787; remote relays require HTTPS.
Shared-core checks from the repository root:
cargo test -p roda-mls --features portablecargo test -p zoen-web-corecargo check -p zoen-web-core --target wasm32-unknown-unknownStatus: real native/browser pairing, MLS interoperability and reload/reconnect journeys are still open. Details: web client README.
