I'm so glad you enjoyed it!
You're right, the levels are procedurally generated but in a very simple way. It's just one noise texture that's copied over to the terrain texture each time the level is loaded. All I had to do was set the noise seed to a random int each time.
Sadly, I couldn't get a HTML export to work :/ I think its because I use a couple of compute shaders for rendering the terrain and lighting and I don't think Godot's web export supports compute shaders at the moment.