revert: restore all files to 52ddee3 — kiosk JS patches broke JARVIS completely

This commit is contained in:
2026-06-21 05:10:30 +00:00
parent aaf9f9d56a
commit 383de0146c
3 changed files with 13 additions and 55 deletions
-21
View File
@@ -1364,24 +1364,3 @@ body.tablet-mode .alert-item { font-size:0.75rem; padding:9px 11px; }
/* ── BOTTOM BAR ─────────────────────────────────────────────────── */ /* ── BOTTOM BAR ─────────────────────────────────────────────────── */
body.tablet-mode #bottomBar { font-size:0.7rem; height:34px; } body.tablet-mode #bottomBar { font-size:0.7rem; height:34px; }
/* ════════════════════════════════════════════════════════════════════════
KIOSK MODE — hide noisy panels, keep it clean on Fire tablet
Only active when body.kiosk-mode (fullscreen + tablet)
════════════════════════════════════════════════════════════════════════ */
/* Hide server stats, agents tab, guardian tab in kiosk */
body.kiosk-mode #server-panel { display:none !important; }
body.kiosk-mode #tab-btn-agents { display:none !important; }
body.kiosk-mode #tab-btn-guardian { display:none !important; }
body.kiosk-mode #tab-agents { display:none !important; }
body.kiosk-mode #tab-guardian { display:none !important; }
/* Hide bottom bar: Home Assistant, Agents, Memory, Proxmox */
body.kiosk-mode #bb-ha-item { display:none !important; }
body.kiosk-mode #bb-agents-item { display:none !important; }
body.kiosk-mode #bb-memory-item { display:none !important; }
body.kiosk-mode #bb-pve-item { display:none !important; }
body.kiosk-mode #network-status-panel { display:none !important; }
/* If agents or guardian was the active tab, switch to intel */
-21
View File
@@ -1768,16 +1768,6 @@ function applyTabletMode() {
} }
if (isTablet()) applyTabletMode(); if (isTablet()) applyTabletMode();
// On tablet via HTTP: show a banner prompting HTTPS for mic/camera
if (isTablet() && location.protocol === "http:") {
document.addEventListener("DOMContentLoaded", () => {
const banner = document.createElement("div");
banner.style.cssText = "position:fixed;top:0;left:0;right:0;z-index:99999;background:#ff6600;color:#fff;text-align:center;padding:10px 16px;font-family:monospace;font-size:0.85rem;display:flex;align-items:center;justify-content:center;gap:12px";
banner.innerHTML = "⚠ Mic & camera require HTTPS — <a href="https://jarvis.orbishosting.com" style="color:#fff;font-weight:bold;text-decoration:underline">tap here to switch</a> &nbsp;<button onclick="this.parentNode.remove()" style="background:transparent;border:1px solid #fff;color:#fff;cursor:pointer;padding:2px 8px;font-size:0.75rem">✕</button>";
document.body.prepend(banner);
});
}
// ── KIOSK MODE ──────────────────────────────────────────────────────────────────────── // ── KIOSK MODE ────────────────────────────────────────────────────────────────────────
let _wakeLock = null; let _wakeLock = null;
@@ -1793,20 +1783,11 @@ async function toggleKiosk() {
if ("wakeLock" in navigator) { if ("wakeLock" in navigator) {
try { _wakeLock = await navigator.wakeLock.request("screen"); } catch(e) {} try { _wakeLock = await navigator.wakeLock.request("screen"); } catch(e) {}
} }
document.body.classList.add("kiosk-mode");
// Switch away from hidden tabs if one is active
const activeTab = document.querySelector(".tab-pane.active");
if (activeTab && (activeTab.id === "tab-agents" || activeTab.id === "tab-guardian")) {
switchTab("intel");
}
document.body.classList.add("kiosk-mode");
if (btn) { btn.textContent = "⧞ EXIT"; btn.style.color = "var(--cyan)"; } if (btn) { btn.textContent = "⧞ EXIT"; btn.style.color = "var(--cyan)"; }
} else { } else {
const ex = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen; const ex = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen;
if (ex) ex.call(document).catch(() => {}); if (ex) ex.call(document).catch(() => {});
if (_wakeLock) { _wakeLock.release().catch(() => {}); _wakeLock = null; } if (_wakeLock) { _wakeLock.release().catch(() => {}); _wakeLock = null; }
document.body.classList.remove("kiosk-mode");
document.body.classList.remove("kiosk-mode");
if (btn) { btn.textContent = "⧞ KIOSK"; btn.style.color = ""; } if (btn) { btn.textContent = "⧞ KIOSK"; btn.style.color = ""; }
if (!isTablet()) document.body.classList.remove("tablet-mode"); if (!isTablet()) document.body.classList.remove("tablet-mode");
} }
@@ -1822,8 +1803,6 @@ function _onFsChange() {
const btn = document.getElementById("kioskBtn"); const btn = document.getElementById("kioskBtn");
if (!document.fullscreenElement && !document.webkitFullscreenElement) { if (!document.fullscreenElement && !document.webkitFullscreenElement) {
if (_wakeLock) { _wakeLock.release().catch(() => {}); _wakeLock = null; } if (_wakeLock) { _wakeLock.release().catch(() => {}); _wakeLock = null; }
document.body.classList.remove("kiosk-mode");
document.body.classList.remove("kiosk-mode");
if (btn) { btn.textContent = "⧞ KIOSK"; btn.style.color = ""; } if (btn) { btn.textContent = "⧞ KIOSK"; btn.style.color = ""; }
if (!isTablet()) document.body.classList.remove("tablet-mode"); if (!isTablet()) document.body.classList.remove("tablet-mode");
} }
+13 -13
View File
@@ -6,7 +6,7 @@
<title>JARVIS — Integrated Defense and Logistics System</title> <title>JARVIS — Integrated Defense and Logistics System</title>
<link rel="preconnect" href="https://fonts.googleapis.com"/> <link rel="preconnect" href="https://fonts.googleapis.com"/>
<link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;700;900&family=Rajdhani:wght@300;400;500;600&family=Share+Tech+Mono&display=swap" rel="stylesheet"/> <link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;600;700;900&family=Rajdhani:wght@300;400;500;600&family=Share+Tech+Mono&display=swap" rel="stylesheet"/>
<link rel="stylesheet" href="assets/css/jarvis.css?v=20260621f"/> <link rel="stylesheet" href="assets/css/jarvis.css"/>
</head> </head>
<body> <body>
<canvas id="particleCanvas"></canvas> <canvas id="particleCanvas"></canvas>
@@ -103,7 +103,7 @@
</div> </div>
<div id="weather-forecast" style="display:grid;grid-template-columns:repeat(4,1fr);gap:4px"></div> <div id="weather-forecast" style="display:grid;grid-template-columns:repeat(4,1fr);gap:4px"></div>
</div> </div>
<div class="panel" id="server-panel"> <div class="panel">
<div class="panel-title">JARVIS SERVER <span style="font-size:0.5rem;color:var(--text-dim)">10.48.200.211</span><div class="indicator"></div></div> <div class="panel-title">JARVIS SERVER <span style="font-size:0.5rem;color:var(--text-dim)">10.48.200.211</span><div class="indicator"></div></div>
<!-- Metric bars + sparklines --> <!-- Metric bars + sparklines -->
@@ -203,7 +203,7 @@
<div id="rightPanel"> <div id="rightPanel">
<!-- Network Status --> <!-- Network Status -->
<div class="panel" id="network-status-panel" style="flex:0 1 auto;max-height:35%;display:flex;flex-direction:column;min-height:100px"> <div class="panel" style="flex:0 1 auto;max-height:35%;display:flex;flex-direction:column;min-height:100px">
<div class="panel-title">NETWORK STATUS <div class="indicator"></div><span id="net-agent-count" style="font-size:0.6rem;color:var(--cyan);margin-left:auto"></span><button onclick="addNetworkDevice()" title="Add device" style="background:none;border:none;color:var(--cyan);cursor:pointer;font-size:1rem;padding:0 4px;margin-left:4px;line-height:1">+</button></div> <div class="panel-title">NETWORK STATUS <div class="indicator"></div><span id="net-agent-count" style="font-size:0.6rem;color:var(--cyan);margin-left:auto"></span><button onclick="addNetworkDevice()" title="Add device" style="background:none;border:none;color:var(--cyan);cursor:pointer;font-size:1rem;padding:0 4px;margin-left:4px;line-height:1">+</button></div>
<canvas id="topoCanvas" height="100"></canvas> <canvas id="topoCanvas" height="100"></canvas>
<div id="network-list" style="overflow-y:auto;flex:1;padding-right:2px"> <div id="network-list" style="overflow-y:auto;flex:1;padding-right:2px">
@@ -228,7 +228,7 @@
<div class="tab active" onclick="switchTab('ha')">HOME</div> <div class="tab active" onclick="switchTab('ha')">HOME</div>
<div class="tab" onclick="switchTab('alerts')">ALERTS</div> <div class="tab" onclick="switchTab('alerts')">ALERTS</div>
<div class="tab" onclick="switchTab('news')">NEWS</div> <div class="tab" onclick="switchTab('news')">NEWS</div>
<div class="tab" id="tab-btn-agents" onclick="switchTab('agents')">AGENTS</div> <div class="tab" onclick="switchTab('agents')">AGENTS</div>
<div class="tab" onclick="switchTab('sites')">SITES</div> <div class="tab" onclick="switchTab('sites')">SITES</div>
<div class="tab" id="tab-btn-intel" onclick="switchTab('intel')">INTEL</div> <div class="tab" id="tab-btn-intel" onclick="switchTab('intel')">INTEL</div>
<div class="tab" id="tab-btn-comms" onclick="switchTab('comms')">COMMS</div> <div class="tab" id="tab-btn-comms" onclick="switchTab('comms')">COMMS</div>
@@ -302,15 +302,15 @@
<div class="bb-dot" id="bb-do-dot"></div> <div class="bb-dot" id="bb-do-dot"></div>
<span>JARVIS VM</span> <span id="bb-do-status">CHECKING</span> <span>JARVIS VM</span> <span id="bb-do-status">CHECKING</span>
</div> </div>
<div class="bb-item" id="bb-pve-item"> <div class="bb-item">
<div class="bb-dot" id="bb-pve-dot"></div> <div class="bb-dot" id="bb-pve-dot"></div>
<span>PROXMOX</span> <span id="bb-pve-status">CHECKING</span> <span>PROXMOX</span> <span id="bb-pve-status">CHECKING</span>
</div> </div>
<div class="bb-item" id="bb-ha-item"> <div class="bb-item">
<div class="bb-dot" id="bb-ha-dot"></div> <div class="bb-dot" id="bb-ha-dot"></div>
<span>HOME ASSISTANT</span> <span id="bb-ha-status">CHECKING</span> <span>HOME ASSISTANT</span> <span id="bb-ha-status">CHECKING</span>
</div> </div>
<div class="bb-item" id="bb-agents-item"> <div class="bb-item">
<div class="bb-dot" id="bb-agent-dot"></div> <div class="bb-dot" id="bb-agent-dot"></div>
<span>AGENTS</span> <span id="bb-agent-status">--</span> <span>AGENTS</span> <span id="bb-agent-status">--</span>
</div> </div>
@@ -426,12 +426,12 @@
style="position:fixed;top:-9999px;left:-9999px;width:320px;height:240px"></video> style="position:fixed;top:-9999px;left:-9999px;width:320px;height:240px"></video>
<script data-cfasync="false" src="https://cdn.jsdelivr.net/npm/face-api.js@0.22.2/dist/face-api.min.js" crossorigin="anonymous"></script> <script data-cfasync="false" src="https://cdn.jsdelivr.net/npm/face-api.js@0.22.2/dist/face-api.min.js" crossorigin="anonymous"></script>
<script data-cfasync="false" src="assets/js/jarvis-effects.js?v=20260621f"></script> <script data-cfasync="false" src="assets/js/jarvis-effects.js?v=20260621g"></script>
<script data-cfasync="false" src="assets/js/jarvis-overlays.js?v=20260621f"></script> <script data-cfasync="false" src="assets/js/jarvis-overlays.js?v=20260621g"></script>
<script data-cfasync="false" src="assets/js/jarvis-app.js?v=20260621f"></script> <script data-cfasync="false" src="assets/js/jarvis-app.js?v=20260621g"></script>
<script data-cfasync="false" src="assets/js/panels/jarvis-arc.js?v=20260621f"></script> <script data-cfasync="false" src="assets/js/panels/jarvis-arc.js?v=20260621g"></script>
<script data-cfasync="false" src="assets/js/panels/jarvis-agents.js?v=20260621f"></script> <script data-cfasync="false" src="assets/js/panels/jarvis-agents.js?v=20260621g"></script>
<script data-cfasync="false" src="assets/js/panels/jarvis-assistant.js?v=20260621f"></script> <script data-cfasync="false" src="assets/js/panels/jarvis-assistant.js?v=20260621g"></script>
<!-- VISION LIGHTBOX --> <!-- VISION LIGHTBOX -->
<div id="vision-lightbox"> <div id="vision-lightbox">