diff --git a/modules/rmeets/mod.ts b/modules/rmeets/mod.ts
index d730b1d..611590e 100644
--- a/modules/rmeets/mod.ts
+++ b/modules/rmeets/mod.ts
@@ -454,6 +454,19 @@ routes.get("/:room", (c) => {
const director = c.req.query("director") === "1";
const sessionId = c.req.query("session") || "";
+ // Full rSpace shell mode — only when explicitly requested via ?shell=1 or director mode
+ if (c.req.query("shell") === "1" || director) {
+ return c.html(renderShell({
+ title: `${room} — rMeets | rSpace`,
+ moduleId: "rmeets",
+ spaceSlug: space,
+ modules: getModuleInfoList(),
+ theme: "dark",
+ body: ``,
+ scripts: ``,
+ }));
+ }
+
if (c.req.query("iframe") === "1") {
return c.html(renderExternalAppShell({
title: `${room} — rMeets | rSpace`,
@@ -466,21 +479,27 @@ routes.get("/:room", (c) => {
}));
}
- // Minimal mode — full-screen Jitsi without rSpace shell (for scheduled meeting links)
- if (c.req.query("minimal") === "1" || c.req.query("join") === "1") {
- const jitsiRoom = encodeURIComponent(room);
- return c.html(`
+ // Default: clean full-screen Jitsi — no rSpace shell, mobile-friendly
+ const jitsiRoom = encodeURIComponent(room);
+ return c.html(`
-
+
+
+
+
${escapeHtml(room)} — Meeting
@@ -500,34 +519,35 @@ routes.get("/:room", (c) => {
startWithVideoMuted: false,
prejoinPageEnabled: true,
disableDeepLinking: true,
+ disableThirdPartyRequests: true,
+ enableClosePage: false,
+ disableInviteFunctions: false,
+ toolbarButtons: [
+ "microphone","camera","desktop","hangup",
+ "raisehand","tileview","toggle-camera",
+ "fullscreen","chat","settings",
+ "participants-pane","select-background",
+ ],
},
interfaceConfigOverrides: {
SHOW_JITSI_WATERMARK: false,
SHOW_BRAND_WATERMARK: false,
SHOW_POWERED_BY: false,
- TOOLBAR_BUTTONS: [
- "microphone","camera","closedcaptions","desktop","fullscreen",
- "fodeviceselection","hangup","chat","recording","livestreaming",
- "etherpad","settings","raisehand","videoquality","filmstrip",
- "feedback","shortcuts","tileview","participants-pane",
- ],
+ MOBILE_APP_PROMO: false,
+ HIDE_DEEP_LINKING_LOGO: true,
+ DISABLE_JOIN_LEAVE_NOTIFICATIONS: false,
},
});
- api.addEventListener("readyToClose", () => { window.close(); });
+ api.addEventListener("readyToClose", function() {
+ try { window.close(); } catch(e) {}
+ // window.close() fails if the tab wasn't opened by JS (common on mobile)
+ document.getElementById("jitsi-container").innerHTML =
+ '';
+ });