fix: rename shadowed isMobile in renderLeft to avoid TDZ crash

The outer IIFE declares const isMobile (line 27, from #340) and
renderLeft() declares its own const isMobile (line 821, pre-existing).
JavaScript hoists const declarations within the function scope, so
referencing isMobile at line 574 (inside renderLeft but before line 821)
throws 'Cannot access isMobile before initialization'.

Rename the inner declaration to isNarrow since it uses a different
breakpoint (640px for column hiding vs 1024px for packet limit).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Kpa-clawbot
2026-03-31 22:58:34 -07:00
co-authored by Copilot
parent f7c182c5f7
commit e7232c0d29
2 changed files with 30 additions and 30 deletions
+28 -28
View File
@@ -22,9 +22,9 @@
<meta name="twitter:title" content="CoreScope">
<meta name="twitter:description" content="Real-time MeshCore LoRa mesh network analyzer — live packet visualization, node tracking, channel decryption, and route analysis.">
<meta name="twitter:image" content="https://raw.githubusercontent.com/Kpa-clawbot/corescope/master/public/og-image.png">
<link rel="stylesheet" href="style.css?v=1775021600">
<link rel="stylesheet" href="home.css?v=1775021600">
<link rel="stylesheet" href="live.css?v=1775021600">
<link rel="stylesheet" href="style.css?v=1775023114">
<link rel="stylesheet" href="home.css?v=1775023114">
<link rel="stylesheet" href="live.css?v=1775023114">
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
crossorigin="anonymous">
@@ -81,30 +81,30 @@
<main id="app" role="main"></main>
<script src="vendor/qrcode.js"></script>
<script src="roles.js?v=1775021600"></script>
<script src="customize.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="region-filter.js?v=1775021600"></script>
<script src="hop-resolver.js?v=1775021600"></script>
<script src="hop-display.js?v=1775021600"></script>
<script src="app.js?v=1775021600"></script>
<script src="home.js?v=1775021600"></script>
<script src="packet-filter.js?v=1775021600"></script>
<script src="packets.js?v=1775021600"></script>
<script src="geo-filter-overlay.js?v=1775021600"></script>
<script src="map.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="channels.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="nodes.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="traces.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="analytics.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="audio.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="audio-v1-constellation.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="audio-v2-constellation.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="audio-lab.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="live.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="observers.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="observer-detail.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="compare.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="node-analytics.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="perf.js?v=1775021600" onerror="console.error('Failed to load:', this.src)"></script>
<script src="roles.js?v=1775023114"></script>
<script src="customize.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="region-filter.js?v=1775023114"></script>
<script src="hop-resolver.js?v=1775023114"></script>
<script src="hop-display.js?v=1775023114"></script>
<script src="app.js?v=1775023114"></script>
<script src="home.js?v=1775023114"></script>
<script src="packet-filter.js?v=1775023114"></script>
<script src="packets.js?v=1775023114"></script>
<script src="geo-filter-overlay.js?v=1775023114"></script>
<script src="map.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="channels.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="nodes.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="traces.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="analytics.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="audio.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="audio-v1-constellation.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="audio-v2-constellation.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="audio-lab.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="live.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="observers.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="observer-detail.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="compare.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="node-analytics.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
<script src="perf.js?v=1775023114" onerror="console.error('Failed to load:', this.src)"></script>
</body>
</html>
+2 -2
View File
@@ -818,8 +818,8 @@
{ key: 'rpt', label: 'Rpt' },
{ key: 'details', label: 'Details' },
];
const isMobile = window.innerWidth <= 640;
const defaultHidden = isMobile ? ['region', 'hash', 'observer', 'path', 'rpt', 'size'] : ['region'];
const isNarrow = window.innerWidth <= 640;
const defaultHidden = isNarrow ? ['region', 'hash', 'observer', 'path', 'rpt', 'size'] : ['region'];
let visibleCols;
try {
visibleCols = JSON.parse(localStorage.getItem('packets-visible-cols'));