diff --git a/ui/suite/index.html b/ui/suite/index.html
index 626bc92..32c6b97 100644
--- a/ui/suite/index.html
+++ b/ui/suite/index.html
@@ -321,34 +321,6 @@
Chat
-
-
-
- Research
-
-
Paper
+
+
+
+ Mail
+
+
Tasks
-
+
- Mail
+ Research
diff --git a/ui/suite/js/htmx-app.js b/ui/suite/js/htmx-app.js
index 1a3942e..084d76f 100644
--- a/ui/suite/js/htmx-app.js
+++ b/ui/suite/js/htmx-app.js
@@ -43,6 +43,21 @@
// If target doesn't exist or response is 404, prevent the swap
if (!target || status === 404) {
event.detail.shouldSwap = false;
+ console.warn("HTMX swap prevented: target not found or 404 response");
+ return;
+ }
+
+ // Check if target is actually in the DOM (prevents insertBefore errors)
+ if (!document.body.contains(target)) {
+ event.detail.shouldSwap = false;
+ console.warn("HTMX swap prevented: target not in DOM");
+ return;
+ }
+
+ // Check if target has a parent (required for most swap operations)
+ if (!target.parentNode) {
+ event.detail.shouldSwap = false;
+ console.warn("HTMX swap prevented: target has no parent");
return;
}
@@ -55,6 +70,17 @@
}
});
+ // Handle swap errors gracefully
+ document.body.addEventListener("htmx:swapError", (event) => {
+ console.error("HTMX swap error:", event.detail);
+ // Don't show notification for swap errors - they're usually timing issues
+ });
+
+ // Handle HTMX errors more gracefully
+ document.body.addEventListener("htmx:onLoadError", (event) => {
+ console.error("HTMX load error:", event.detail);
+ });
+
// Handle successful swaps
document.body.addEventListener("htmx:afterSwap", (event) => {
// Auto-scroll messages if in chat
diff --git a/ui/suite/meet/meet.html b/ui/suite/meet/meet.html
index 4f5a51f..863386d 100644
--- a/ui/suite/meet/meet.html
+++ b/ui/suite/meet/meet.html
@@ -3,19 +3,37 @@