- Fix ground track to show full orbit (±45 min) with past/future segments
- Redesign satellite section as 2x2 grid layout for better visibility
- Add startup dependency notification in top-left corner
- Make tool status mode-specific (pager/433MHz/aircraft show relevant tools)
- Add skyfield library for accurate orbital calculations
Make the radar panel span both grid columns to eliminate empty space on the right and center the visualization.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace canvas aircraft map with Leaflet.js + OpenStreetMap
- Add dark/light theme toggle with localStorage persistence
- Add satellite pass countdown with live timer
- Add countdown to satellite popout with selectable passes
- Add client probe analysis for WiFi privacy leak detection
- Hide waterfall and output console in satellite mode
- Fix satellite countdown to update when selecting different passes
- Update documentation with new features
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Make drone counter clickable with detailed popup showing brand, SSID,
BSSID, channel, signal, distance estimate, and detection time
- Replace stats bar text labels with emoji icons and tooltips
- Add collapsible sections (click header to toggle)
- Slim down mode tabs with icons (📟📡📶🔵)
- Tighten spacing throughout (smaller padding, margins)
- Add border-radius to buttons and tabs for softer look
- Improve hover states and visual feedback
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add drone detection via SSID patterns and OUI prefixes with visual alerts
- Add optional "kill interfering processes" checkbox for monitor mode to prevent
affecting other network adapters
- Remove unused BT attack options (replay, dos, spoof, vuln scan, l2cap ping)
- Make rogue AP counter clickable to show detailed popup with all BSSIDs
- Add handshake capture status panel with real-time progress, elapsed time,
file size, and automatic handshake detection using aircrack-ng
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New features:
- Client vendor lookup: Shows manufacturer for WiFi clients using OUI database
- 5GHz channel utilization graph: Visual display of 5GHz channel usage
- Proximity alerts: Watch list for specific MAC addresses with popup alerts
- Rogue AP detection: Alerts when same SSID appears on multiple BSSIDs
- Handshake capture status: Pulsing indicator during active capture
- Sound toggle already exists via MUTE button
UI improvements:
- Added ROGUE counter to WiFi stats bar
- Added Proximity Alerts section with watch list management
- Both 2.4GHz and 5GHz channel graphs update in real-time
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Channel utilization labels now white for better visibility
- After enabling monitor mode, automatically refresh interface list
- Auto-select the new monitor interface in dropdown
- Add loading state to Enable Monitor button
- Show "Ready to scan!" message after monitor mode enabled
- Simplified workflow: Select adapter → Enable Monitor → Scan
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Get list of interfaces before/after enabling monitor mode
- Detect new interface by comparing before/after sets
- Multiple fallback methods: new interface detection, regex patterns, iwconfig check
- Verify interface exists before using it
- Add detailed debug logging for troubleshooting
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove kismet_process global variable
- Remove Kismet from tool status display
- Remove Kismet scan mode radio button
- Simplify start/stop WiFi functions to use airodump directly
- Remove Kismet routes (/wifi/kismet/start, /wifi/kismet/stop, /wifi/kismet/devices)
- Remove Kismet from kill_all and tools check
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Simplified Bluetooth scanning to just:
- bluetoothctl (Recommended)
- hcitool (Legacy)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
These features weren't providing useful data since:
- Most BLE devices don't broadcast friendly names
- Many OUI prefixes are unregistered/private
- Classification requires identifiable device names
Kept: Bluetooth Proximity Radar (visual device tracking)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Created oui_database.json with 300+ vendor prefixes
- Code now loads from external JSON file first, falls back to built-in
- Added /bt/reload-oui endpoint to reload database without restart
- Easy to add new vendors: just edit oui_database.json
To add a new vendor, edit oui_database.json and add:
"XX:XX:XX": "Vendor Name"
Then call POST /bt/reload-oui or restart the server.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Log device_type in updateBtTypeChart to see what values are received
- Log manufacturer in updateBtManufacturerList
- This will help diagnose why types/manufacturers aren't showing
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fixed updateBtTypeChart to use device_type instead of type field
- Fixed hcitool queue data to include device_type field (was overwriting type)
- Added console.log debug statements to trace device intelligence flow
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed reconEnabled to default to true (was false when localStorage empty)
- Added else clause to properly hide panel when explicitly disabled
- Device intelligence now works by default on first run
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The device dict had a 'type' field (audio, phone, etc.) that was
overwriting the queue message 'type: device' field. Fixed by:
- Spreading device first, then setting 'type': 'device'
- Adding 'device_type' field for the device classification
- Updating frontend to use device_type for display
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Added debug prints to trace device flow:
- "[BT] Queuing device:" when adding to queue
- "[BT Stream] Sending device:" when SSE sends to client
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add missing time and re imports in stream function
- Improve ANSI escape code stripping (add \x1b[K and \r removal)
- Make MAC address regex more explicit
- Add debug logging for Device lines
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change default scan mode from hcitool (deprecated) to bluetoothctl
- Rename labels: bluetoothctl (Recommended), hcitool (Legacy)
- Add power on command before scan for reliability
- Add initialization delays for bluetoothctl startup
hcitool is deprecated for Bluetooth 5.x adapters and causes
"set scan parameters failed" errors on modern systems.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Check if running as root, try sudo -n if not
- Try rfkill unblock bluetooth first
- Fall back to bluetoothctl power off/on if hciconfig fails
- Better error messaging when adapter stays down
- Suggest manual command when auto-reset fails
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Detect "set scan parameters failed" and "input/output error"
- Attempt automatic adapter reset when these errors occur
- Improve reset function: kill hcitool/bluetoothctl processes,
add delays between down/up commands for more reliable reset
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The generateDeviceId function only handled POCSAG, FLEX, and sensor
protocols. Added handlers for:
- WiFi-AP: generates WIFI_AP_<bssid>
- WiFi-Client: generates WIFI_CLIENT_<mac>
- Bluetooth/BLE: generates BT_<mac>
This fixes device tracking in the intelligence section for WiFi
and Bluetooth scans.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix hciconfig parsing to check for "UP RUNNING" in the full
interface block, not just the first line
- Use pty for bluetoothctl to get proper output (interactive tools
need a pseudo-terminal)
- Strip ANSI escape codes from bluetoothctl output
- Properly read from pty master_fd with select() for non-blocking I/O
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Rewrote escapeAttr to use simple replace chains instead of
arrow function with object lookup, which was causing JavaScript
parsing issues.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Security:
- Add escapeAttr() and validation functions to prevent XSS in onclick handlers
- Escape BSSID, MAC, channel, manufacturer, tracker names in HTML output
- Add backend is_valid_mac() and is_valid_channel() validation
- Validate MAC addresses in /wifi/deauth, /wifi/handshake/capture, /bt/ping, /bt/dos
- Add bounds checking for count/size parameters to prevent abuse
Bluetooth:
- Fix stuck scan state by checking if process is actually running
- Add /bt/reset endpoint to force reset adapter and clear state
- Add "Reset Adapter" button to UI
WiFi:
- Improve monitor interface regex to require digits (prevents matching "airmon")
- Add second fallback to look for exact interface name + "mon"
Other:
- Fix redundant CSV parsing bounds check
- Remove debug logging
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The previous regex incorrectly captured "for" from airmon-ng output
like "monitor mode enabled for [phy0]wlp3s0 on wlp3s0mon". Now uses
a more specific pattern that looks for "on <interface>mon" first,
with fallback to any word ending in "mon".
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add stderr capture and display for airodump-ng errors in WiFi scanning
- Add early failure detection with helpful error messages for WiFi scan
- Add timeout warning when no scan data received after 5 seconds
- Add error handling for Bluetooth scanning with stderr capture
- Add showError() function to display errors in red in the output panel
- Add error type handlers to WiFi and Bluetooth SSE event streams
- Hide RTL-SDR device section when in WiFi or Bluetooth modes
- Improve error messages with install instructions for missing tools
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add disclaimer modal requiring acceptance on first visit
- Store acceptance in localStorage to remember returning users
- Add hacker-themed rejection page for declined users
- Auto-stop running scans when switching between modes
- Rename Bluetooth tab to "BT" for cleaner UI
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Audio alerts on new messages with mute toggle (persisted in localStorage)
- CSV and JSON export for captured messages
- Signal strength meter showing message activity
- Waterfall display with activity visualization
- Auto-scroll toggle (persisted in localStorage)
- Relative timestamps (e.g., "5s ago", "2m ago")
- Visual feedback on control buttons (active/muted states)
- Flash effect on waterfall canvas when messages arrive
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Features:
- Real-time POCSAG (512/1200/2400) and FLEX decoding
- Web-based interface with SpaceX-inspired dark theme
- Live message streaming via SSE
- Message logging to file
- Customizable frequency presets
- RTL-SDR device detection and selection
- Configurable gain, squelch, and PPM correction
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>