- .github/workflows/wai-ui.yml becomes wai-app.yml: the unit job runs wai-app's
tests, its clippy (native and wasm32) and the line language's verifier; the e2e
job runs wai/wai-app/e2e/run.sh, which now also reads wai/quickstart/build-web.sh.
- wai-conformance runs tests/cli_app.rs with the feature `app`, and fires on
wai/wai-app and the joule-ui crates it builds on.
- The e2e (run.sh builds `wai` with `app` in a target directory of its own, and
the room client `wai dev` serves): the Create page served by `wai dev --show`; the
show recording renders as it streams; the host joins, chats and opens the poll;
the sealed log verifies; Export hands over app.oui and the command; `wai create
--from app.oui` writes the project; `wai app check` passes on it and refuses it
with its room not its app's, another audience, no room named, a runtime file
changed or a refused line; `wai dev` in the project runs its own room, its keys in
.wai/ that the front never serves, where a host and a viewer answer a poll the
room's clock signs; the refused lines never render; the visitor's own model gets
their key alone; `wai mcp --toolset app` streams into the page through its bridge
and app_export writes the same project.
- CHANGELOG: Create as wai-app, `wai create --from app.oui`, `wai app`, the app
toolset, LICENSE in every project, `wai dev --show`. wai/README.md: the app
toolset and Create.
Co-Authored-By: Claude Opus 5.5 <[email protected]>