From fa7f3740ec3635a04ffa4cb447b37a67fb48d90d Mon Sep 17 00:00:00 2001 From: defiantnerd <97224712+defiantnerd@users.noreply.github.com> Date: Mon, 14 Sep 2026 19:56:19 +0200 Subject: [PATCH] README: document the contribution flow and the WebAssembly target Two things the README did not say: that development happens on next and that an open issue is not proof of an unfixed bug, and that a WASM build wraps nothing - it compiles the CLAP itself into a .wclap. --- README.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/README.md b/README.md index 034ad78b..be73f43c 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,29 @@ is a complete standalone synth you can release. See [docs/ios.md](docs/ios.md) for the full iOS instructions. +On **WebAssembly** nothing is wrapped at all. Rather than presenting your CLAP +to a host as some other format, the build compiles the CLAP itself into a +`.wclap` — a WebAssembly CLAP — so VST3, AUv2, AUv3, AAX and standalone are all +unavailable there and `PLUGIN_FORMATS` defaults to `WCLAP` on its own. Either +Emscripten or the WASI-SDK will do; the toolchain file you configure with picks +one, and the build detects it from `CMAKE_SYSTEM_NAME` or a `wasm32`/`wasm64` +processor. The module is compiled with SIMD (`-msimd128`) and exports +`clap_entry` and `malloc` for the web host to call. + +The layout depends on whether you pass a `RESOURCE_DIRECTORY`. With one, you get +a bundle — `YourPlugin.wclap/module.wasm` beside a copy of that directory, and a +`.tar.gz` of the whole bundle for shipping. Without one, a single flat +`YourPlugin.wclap.wasm`. + +## Contribution + +Development happens on `next`; `main` only moves at a release. Before opening an +issue or a pull request: + +- Check whether the problem is already fixed on `next`. Issues are not closed + automatically when a fix lands, so an open issue is not proof of an unfixed bug. +- Base pull requests on `next`, not `main`. + ## Licensing The `clap-wrapper` project is released under the MIT license.