Merge branch 'dev'
CI/CD / deploy (push) Failing after 2m20s Details

This commit is contained in:
Jeff Emmett 2026-04-06 12:28:01 -04:00
commit 5af2eec04e
2 changed files with 55 additions and 1 deletions

View File

@ -466,6 +466,59 @@ 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(`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>${escapeHtml(room)} Meeting</title>
<style>
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;overflow:hidden;background:#111;font-family:system-ui,sans-serif}
#jitsi-container{width:100%;height:100%}
.loading{display:flex;align-items:center;justify-content:center;height:100%;color:#94a3b8;flex-direction:column;gap:12px}
.loading .spinner{width:32px;height:32px;border:3px solid #334155;border-top-color:#6366f1;border-radius:50%;animation:spin 0.8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
</style>
</head>
<body>
<div id="jitsi-container">
<div class="loading"><div class="spinner"></div><span>Connecting to meeting...</span></div>
</div>
<script src="${escapeHtml(JITSI_URL)}/external_api.js"></script>
<script>
const api = new JitsiMeetExternalAPI("${escapeHtml(JITSI_URL.replace(/^https?:\/\//, ""))}", {
roomName: "${jitsiRoom}",
parentNode: document.getElementById("jitsi-container"),
width: "100%",
height: "100%",
configOverrides: {
startWithAudioMuted: false,
startWithVideoMuted: false,
prejoinPageEnabled: true,
disableDeepLinking: true,
},
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",
],
},
});
api.addEventListener("readyToClose", () => { window.close(); });
</script>
</body>
</html>`);
}
return c.html(renderShell({
title: `${room} — rMeets | rSpace`,
moduleId: "rmeets",

View File

@ -2936,6 +2936,7 @@ for (const mod of getAllModules()) {
// Landing page: rspace.online/ → server-rendered main landing
app.get("/", (c) => {
c.header("Cache-Control", "no-cache, no-store, must-revalidate");
return c.html(renderMainLanding(getModuleInfoList()));
});
@ -3352,7 +3353,7 @@ const server = Bun.serve<WSData>({
redirectUrl = `https://rspace.online/${standaloneModuleId}${remainingPath}`;
}
if (url.search) redirectUrl += url.search;
return Response.redirect(redirectUrl, 301);
return Response.redirect(redirectUrl, 302);
}
// ── WebSocket upgrade ──