From a9d5d2450c4f3bd58f36fdd2a7b9be5d1f6cf9d1 Mon Sep 17 00:00:00 2001 From: you Date: Sun, 22 Mar 2026 07:20:59 +0000 Subject: [PATCH] Matrix mode forces dark mode, restores on toggle off - Saves previous theme, switches to dark, disables theme toggle - On Matrix off: restores original theme + re-enables toggle - Dark mode tiles + green filter = actually visible map --- public/index.html | 2 +- public/live.js | 28 ++++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/public/index.html b/public/index.html index 1680a156..9d4f6a35 100644 --- a/public/index.html +++ b/public/index.html @@ -90,7 +90,7 @@ - + diff --git a/public/live.js b/public/live.js index fb7794d9..14f5b255 100644 --- a/public/live.js +++ b/public/live.js @@ -1683,15 +1683,24 @@ const container = document.getElementById('liveMap'); if (!container) return; if (on) { + // Force dark mode, save previous theme to restore later + const currentTheme = document.documentElement.getAttribute('data-theme'); + if (currentTheme !== 'dark') { + container.dataset.matrixPrevTheme = currentTheme || 'light'; + document.documentElement.setAttribute('data-theme', 'dark'); + const dt = document.getElementById('darkModeToggle'); + if (dt) { dt.textContent = '🌙'; dt.disabled = true; } + } else { + const dt = document.getElementById('darkModeToggle'); + if (dt) dt.disabled = true; + } container.classList.add('matrix-theme'); - // Add scanline overlay if not present if (!document.getElementById('matrixScanlines')) { const scanlines = document.createElement('div'); scanlines.id = 'matrixScanlines'; scanlines.className = 'matrix-scanlines'; container.appendChild(scanlines); } - // Re-tint existing node markers green for (const [key, marker] of Object.entries(nodeMarkers)) { marker._matrixPrevColor = marker._baseColor; marker._baseColor = '#005f15'; @@ -1702,11 +1711,22 @@ container.classList.remove('matrix-theme'); const scanlines = document.getElementById('matrixScanlines'); if (scanlines) scanlines.remove(); - // Restore node marker colors + // Restore previous theme + const prevTheme = container.dataset.matrixPrevTheme; + if (prevTheme) { + document.documentElement.setAttribute('data-theme', prevTheme); + localStorage.setItem('meshcore-theme', prevTheme); + const dt = document.getElementById('darkModeToggle'); + if (dt) { dt.textContent = prevTheme === 'dark' ? '🌙' : '☀️'; dt.disabled = false; } + delete container.dataset.matrixPrevTheme; + } else { + const dt = document.getElementById('darkModeToggle'); + if (dt) dt.disabled = false; + } for (const [key, marker] of Object.entries(nodeMarkers)) { if (marker._matrixPrevColor) { marker._baseColor = marker._matrixPrevColor; - marker.setStyle({ fillColor: marker._matrixPrevColor, color: '#fff' }); + marker.setStyle({ fillColor: marker._matrixPrevColor, color: '#fff', fillOpacity: 0.85, opacity: 1 }); if (marker._glowMarker) marker._glowMarker.setStyle({ fillColor: marker._matrixPrevColor }); delete marker._matrixPrevColor; }