diff --git a/warzone/crates/warzone-server/src/routes/web.rs b/warzone/crates/warzone-server/src/routes/web.rs
index 6fecd8c..9210b04 100644
--- a/warzone/crates/warzone-server/src/routes/web.rs
+++ b/warzone/crates/warzone-server/src/routes/web.rs
@@ -110,11 +110,11 @@ const WEB_HTML: &str = r##"
end-to-end encrypted messenger
-
-
+
+
-
+
@@ -124,7 +124,7 @@ const WEB_HTML: &str = r##"
SAVE YOUR SEED — only way to recover your identity
-
+
@@ -139,7 +139,7 @@ const WEB_HTML: &str = r##"
-
+
@@ -639,6 +639,13 @@ $input.addEventListener('input', function() {
this.style.height = Math.min(this.scrollHeight, 120) + 'px';
});
+// Wire up buttons (module scope can't use onclick in HTML)
+document.getElementById('btn-generate').onclick = () => doGenerate();
+document.getElementById('btn-show-recover').onclick = () => document.getElementById('recover-area').style.display = 'block';
+document.getElementById('btn-recover').onclick = () => doRecover();
+document.getElementById('btn-enter').onclick = () => enterChat();
+document.getElementById('send-btn').onclick = () => doSend();
+
// Initialize WASM and auto-load
(async function() {
try {