diff --git a/templates/index.html b/templates/index.html
index 3fcb950..2970619 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -1337,13 +1337,25 @@
+
+
🔵 Discovered Devices (0)
+
+
Start scanning to discover devices...
+
+
+
+
📍 Tracker Detection
+
+
Monitoring for AirTags, Tiles, and other trackers...
+
+
@@ -5970,6 +5982,109 @@
// Add device card
addBtDeviceCard(device, isNew);
+
+ // Update device list panel
+ updateBtDeviceList();
+
+ // Check for trackers and update tracker list
+ if (device.tracker || device.findmy) {
+ updateBtTrackerList();
+ }
+ }
+
+ // Currently selected BT device for signal tracking
+ let selectedBtDevice = null;
+
+ // Update the Bluetooth device list panel
+ function updateBtDeviceList() {
+ const listEl = document.getElementById('btDeviceList');
+ const countEl = document.getElementById('btListCount');
+ if (!listEl) return;
+
+ const devices = Object.values(btDevices);
+ countEl.textContent = devices.length;
+
+ if (devices.length === 0) {
+ listEl.innerHTML = 'Start scanning to discover devices...
';
+ return;
+ }
+
+ // Sort by RSSI (strongest first)
+ devices.sort((a, b) => (b.rssi || -100) - (a.rssi || -100));
+
+ listEl.innerHTML = devices.map(d => {
+ const typeIcon = {
+ 'phone': '📱', 'audio': '🎧', 'wearable': '⌚', 'tracker': '📍',
+ 'computer': '💻', 'input': '⌨️', 'other': '📶'
+ }[d.device_type || d.type] || '📶';
+
+ const rssiColor = d.rssi > -50 ? 'var(--accent-green)' :
+ d.rssi > -70 ? 'var(--accent-cyan)' :
+ d.rssi > -85 ? 'var(--accent-orange)' : 'var(--accent-red)';
+
+ const isSelected = selectedBtDevice === d.mac;
+ const trackerBadge = d.findmy ? `FindMy` :
+ d.tracker ? `Tracker` : '';
+
+ return `
+
+
+ ${typeIcon} ${escapeHtml(d.name || 'Unknown')}
+ ${d.rssi || '--'} dBm
+
+
+ ${escapeHtml(d.mac)}
+ ${trackerBadge}
+
+
+ `;
+ }).join('');
+ }
+
+ // Select a BT device for signal tracking
+ function selectBtDevice(mac) {
+ selectedBtDevice = mac;
+ const device = btDevices[mac];
+ if (device) {
+ document.getElementById('btSignalGraphDevice').textContent = device.name || mac;
+ document.getElementById('btTargetMac').value = mac;
+ }
+ updateBtDeviceList(); // Refresh to show selection
+ }
+
+ // Update tracker list panel
+ function updateBtTrackerList() {
+ const listEl = document.getElementById('btTrackerList');
+ if (!listEl) return;
+
+ const trackers = Object.values(btDevices).filter(d => d.tracker || d.findmy);
+
+ if (trackers.length === 0) {
+ listEl.innerHTML = 'Monitoring for AirTags, Tiles, and other trackers...
';
+ return;
+ }
+
+ listEl.innerHTML = trackers.map(d => {
+ const icon = d.findmy ? '🍎' : '📍';
+ const type = d.findmy ? d.findmy.type : (d.tracker ? d.tracker.name : 'Unknown');
+ const color = d.findmy ? '#007aff' : 'var(--accent-red)';
+
+ return `
+
+
+ ${icon} ${escapeHtml(type)}
+ ${d.rssi || '--'} dBm
+
+
${escapeHtml(d.mac)}
+
+ `;
+ }).join('');
}
// Add Bluetooth device card to output