Background
The 3 tests in editorcontroller.spec.js's editorcontroller with sointu source suite depend on a remote compilation service:
The service is currently returning 503 Service Unavailable consistently, which makes:
- The compileSong call throw before posting the audio worklet message → first sointu test only passes by luck (intermediate worklet messages arrive before the throw).
- The "export to sointu yaml" and "export to wasm with lib functions exported" tests time out, because
getSointuWasm is called even when the user requested only YAML export — and the YAML download path is gated on a successful synthwasm.
The suite was skipped via xdescribe in PR #119 to unblock CI — see commit context in editorcontroller.spec.js:193-198.
Proposed fix
Replace the cloud sointu compiler with a client-side WebAssembly build of sointu so:
- No external service dependency (CI no longer flakes on uptime / 503s).
- Faster export (no round-trip).
- Works offline.
Sointu is written in Go; one option is tinygo → .wasm. Another is Rust port. Either way, ship the wasm bundle alongside the existing wasm-lib/ and call it from playsointu.js instead of fetch(...).
Acceptance criteria
Related
Background
The 3 tests in
editorcontroller.spec.js'seditorcontroller with sointu sourcesuite depend on a remote compilation service:https://sointu-server-c6w7hd53ia-uc.a.run.app/process— called fromgetSointuWasmwhich the editor's compileSong path hits wheneversongmode == SONG_MODE_SOINTU(editorcontroller.js:401-402).The service is currently returning
503 Service Unavailableconsistently, which makes:getSointuWasmis called even when the user requested only YAML export — and the YAML download path is gated on a successfulsynthwasm.The suite was skipped via
xdescribein PR #119 to unblock CI — see commit context in editorcontroller.spec.js:193-198.Proposed fix
Replace the cloud sointu compiler with a client-side WebAssembly build of sointu so:
Sointu is written in Go; one option is
tinygo→.wasm. Another is Rust port. Either way, ship the wasm bundle alongside the existingwasm-lib/and call it fromplaysointu.jsinstead offetch(...).Acceptance criteria
getSointuWasm(song)runs entirely in the browser (nofetchtosointu-server-*.run.app).editorcontroller with sointu sourceare re-enabled (xdescribe→describe) and pass in both Chromium and Firefox under web-test-runner.if (synthwasm)gate aroundtriggerDownload(... yaml ...)in editorcontroller.js:412-414).Related