feat(wifi): enhanced status bar with open count and scan indicator

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
James Smith
2026-03-26 22:11:48 +00:00
parent 702743f826
commit dfa47e27c4
3 changed files with 34 additions and 30 deletions
+19 -11
View File
@@ -3553,20 +3553,28 @@ header h1 .tagline {
font-weight: 600; font-weight: 600;
} }
.wifi-status-indicator { .wifi-scan-indicator {
width: 8px; margin-left: auto;
height: 8px; display: flex;
border-radius: 50%; align-items: center;
background: #666; gap: 6px;
font-size: 10px;
color: var(--accent-cyan);
letter-spacing: 0.5px;
} }
.wifi-status-indicator.idle { background: #666; } .wifi-scan-dot {
.wifi-status-indicator.scanning { background: var(--accent-green); animation: pulse 1s infinite; } width: 7px;
.wifi-status-indicator.error { background: var(--accent-red); } height: 7px;
border-radius: 50%;
background: var(--accent-cyan);
display: none;
animation: wifi-scan-pulse 1.2s ease-in-out infinite;
}
@keyframes pulse { @keyframes wifi-scan-pulse {
0%, 100% { opacity: 1; } 0%, 100% { opacity: 1; transform: scale(1); }
50% { opacity: 0.5; } 50% { opacity: 0.4; transform: scale(0.7); }
} }
/* WiFi Main Content - 3 columns */ /* WiFi Main Content - 3 columns */
+8 -16
View File
@@ -190,7 +190,8 @@ const WiFiMode = (function() {
scanModeDeep: document.getElementById('wifiScanModeDeep'), scanModeDeep: document.getElementById('wifiScanModeDeep'),
// Status bar // Status bar
scanStatus: document.getElementById('wifiScanStatus'), scanIndicator: document.getElementById('wifiScanIndicator'),
openCount: document.getElementById('wifiOpenCount'),
networkCount: document.getElementById('wifiNetworkCount'), networkCount: document.getElementById('wifiNetworkCount'),
clientCount: document.getElementById('wifiClientCount'), clientCount: document.getElementById('wifiClientCount'),
hiddenCount: document.getElementById('wifiHiddenCount'), hiddenCount: document.getElementById('wifiHiddenCount'),
@@ -210,12 +211,6 @@ const WiFiMode = (function() {
zoneNear: document.getElementById('wifiZoneNear'), zoneNear: document.getElementById('wifiZoneNear'),
zoneFar: document.getElementById('wifiZoneFar'), zoneFar: document.getElementById('wifiZoneFar'),
// Security counts
wpa3Count: document.getElementById('wpa3Count'),
wpa2Count: document.getElementById('wpa2Count'),
wepCount: document.getElementById('wepCount'),
openCount: document.getElementById('openCount'),
// Detail drawer // Detail drawer
detailDrawer: document.getElementById('wifiDetailDrawer'), detailDrawer: document.getElementById('wifiDetailDrawer'),
detailEssid: document.getElementById('wifiDetailEssid'), detailEssid: document.getElementById('wifiDetailEssid'),
@@ -669,12 +664,12 @@ const WiFiMode = (function() {
} }
// Update status // Update status
if (elements.scanStatus) { const dot = elements.scanIndicator?.querySelector('.wifi-scan-dot');
elements.scanStatus.textContent = scanning const text = elements.scanIndicator?.querySelector('.wifi-scan-text');
? `Scanning (${scanMode === 'quick' ? 'Quick' : 'Deep'})...` if (dot) dot.style.display = scanning ? 'inline-block' : 'none';
: 'Idle'; if (text) text.textContent = scanning
elements.scanStatus.className = scanning ? 'status-scanning' : 'status-idle'; ? `SCANNING (${scanMode === 'quick' ? 'Quick' : 'Deep'})`
} : 'IDLE';
} }
async function checkScanStatus() { async function checkScanStatus() {
@@ -1497,9 +1492,6 @@ const WiFiMode = (function() {
else if (sec === 'open' || sec === '') securityCounts.open++; else if (sec === 'open' || sec === '') securityCounts.open++;
}); });
if (elements.wpa3Count) elements.wpa3Count.textContent = securityCounts.wpa3;
if (elements.wpa2Count) elements.wpa2Count.textContent = securityCounts.wpa2;
if (elements.wepCount) elements.wepCount.textContent = securityCounts.wep;
if (elements.openCount) elements.openCount.textContent = securityCounts.open; if (elements.openCount) elements.openCount.textContent = securityCounts.open;
// Update zone summary // Update zone summary
+7 -3
View File
@@ -834,9 +834,13 @@
<span class="wifi-status-label">Hidden:</span> <span class="wifi-status-label">Hidden:</span>
<span class="wifi-status-value" id="wifiHiddenCount">0</span> <span class="wifi-status-value" id="wifiHiddenCount">0</span>
</div> </div>
<div class="wifi-status-item" id="wifiScanStatus"> <div class="wifi-status-item">
<span class="wifi-status-indicator idle"></span> <span class="wifi-status-label">Open:</span>
<span>Ready</span> <span class="wifi-status-value" id="wifiOpenCount" style="color:var(--accent-red);">0</span>
</div>
<div class="wifi-scan-indicator" id="wifiScanIndicator">
<span class="wifi-scan-dot"></span>
<span class="wifi-scan-text">IDLE</span>
</div> </div>
</div> </div>