@gargantuan-janitor You can create links from non-input nodes by clicking near the edge of the circle, I'll add that to the hints. For the automatic case switching I chose to do that since there are some puzzle exploits from letting you manually switch cases, but maybe there could have been a better solution. It might also have just been fine to let people cheat to skip levels considering how difficult they can be, and the cheating method is not very obvious either.
My setup with wasm is that I write to a wat file (the text format for wasm) in vim, with a build script running the wat2wasm command whenever I save. The javascript side continuously checks the hash of the main.wasm file, and will reload it when it changes. I have the data separated from the update loop, so that it can be reloaded without losing state or having to refresh the page. At least for a project this small everything was nearly instant.
The graphics are a buffer that gets directly copied onto the canvas from the js side, and similarly the audio is just writing samples from a ring buffer into a js audio worklet. For data structures I have hard-coded addresses for everything, which would probably be a problem if the project grows but it worked out fine for a jam.
This was my first time trying this and I just learned things by reading the wasm docs (which are thankfully not too long) about a week before, so there are definitely ways this could be improved. One thing I originally wanted that I didn't have time to setup before the jam was a custom pre-processor that I could use to have macros, binary file embedding, and a more flexible way to layout memory.
I definitely wouldn't recommend doing hand wasm like this except for fun or to optimize specific functions, but I think a similar setup with a higher-level language before wasm would work very well. The normal way web builds are done is with emscripten, which is meant to let you run desktop apps on the web and consequently it has tons of bloat like emulating a file system which isn't really necessary if things are made for the web in the first place. As a comparison the last web game I made for ludum dare used emscripten and was a 2.58 Mb wasm file, while this one has a 15 kb wasm file.