Initial commit step0

This commit is contained in:
2026-06-12 18:48:27 +02:00
commit 7093fb49a0
11 changed files with 330 additions and 0 deletions

70
step0/main.js Normal file
View File

@@ -0,0 +1,70 @@
const debug = function() { console.debug(...arguments); };
const log = function() { console.log(...arguments) };
const error = function() { console.error(...arguments) };
async function start() {
try {
const response = await fetch('./bin/app.wasm');
if (!response.ok) {
throw new Error(`Failed to fetch WASM: ${response.status} ${response.statusText}`);
}
const wasmBytes = await response.arrayBuffer();
const wasmCompiled = await WebAssembly.compile(wasmBytes);
const wasmModule = await WebAssembly.instantiate(wasmCompiled, { });
// Set canvas size to match display size
function resizeCanvas() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
}
resizeCanvas();
window.addEventListener('resize', resizeCanvas);
var result = wasmModule.exports.hello();
log("Finished", result);
} catch (error) {
error('runtime error:', error);
}
}
start();
// ------- debug hot-reload code -------
{
const debugCtl = {
connect: () => {
const ws = new WebSocket(`${window.location.href}control`);
ws.onopen = () => {
log('Connected to control WebSocket');
};
ws.onmessage = (event) => {
try {
const message = JSON.parse(event.data);
log('Received message:', message);
if (message.type === 'refresh') {
log('Reloading page...');
window.location.reload();
}
} catch (error) {
error('Error parsing WebSocket message:', error);
}
};
ws.onclose = () => {
log('WebSocket disconnected, reconnecting in 2s...');
setTimeout(debugCtl.connect, 2000);
};
ws.onerror = (error) => {
error('WebSocket error:', error);
};
}
};
debugCtl.connect();
}
// -------------------------------------