diff --git a/templates/index.html b/templates/index.html index 966eff6..2a3d16b 100644 --- a/templates/index.html +++ b/templates/index.html @@ -2028,6 +2028,34 @@ document.getElementById('disclaimerModal').style.display = 'flex'; } + // Mode from query string (e.g., /?mode=wifi) + let pendingStartMode = null; + const validModes = new Set([ + 'pager', 'sensor', 'rtlamr', 'aprs', 'listening', + 'spystations', 'meshtastic', 'wifi', 'bluetooth', + 'tscm', 'satellite', 'sstv' + ]); + + function getModeFromQuery() { + const params = new URLSearchParams(window.location.search); + const mode = params.get('mode'); + if (!mode || !validModes.has(mode)) return null; + return mode; + } + + function applyModeFromQuery() { + const mode = getModeFromQuery(); + if (!mode) return; + const accepted = localStorage.getItem('disclaimerAccepted') === 'true'; + if (accepted) { + const welcome = document.getElementById('welcomePage'); + if (welcome) welcome.style.display = 'none'; + switchMode(mode); + } else { + pendingStartMode = mode; + } + } + function acceptDisclaimer() { localStorage.setItem('disclaimerAccepted', 'true'); document.getElementById('disclaimerModal').classList.add('disclaimer-hidden'); @@ -2039,7 +2067,14 @@ const gateStyle = document.getElementById('disclaimer-gate'); if (gateStyle) gateStyle.remove(); // Ensure welcome page is visible - document.getElementById('welcomePage').style.display = ''; + const welcome = document.getElementById('welcomePage'); + if (welcome) welcome.style.display = ''; + if (pendingStartMode) { + // Bypass welcome and jump to requested mode + welcome.style.display = 'none'; + switchMode(pendingStartMode); + pendingStartMode = null; + } }, 300); } @@ -2358,6 +2393,9 @@ // Start SDR device status polling startSdrStatusPolling(); + + // Apply mode from URL query (e.g., /?mode=wifi) + applyModeFromQuery(); }); // Toggle section collapse