Replaces hardcoded admin credentials with a users table in the database, storing hashed passwords and user roles. Updates the login logic in app.py to authenticate against the database using Werkzeug's password hashing utilities. Adds admin credential configuration to config.py and ensures a default admin user is created during database initialization.
Introduced a login system to restrict access to the application. Added session-based authentication in app.py, including login and logout routes, and a new login.html template for the login form. Updated .dockerignore to exclude .uv directory.
In Ubuntu Desktop 25.10, dump1090 is dump1090-mutability. Because of this, cmd_exists dump1090 fails even after successful apt install. Added code to create a symbolic link from /usr/local/sbin/dump1090 to the dump1090-mutability if it exists
Added tests for satellite-related routes, including validation, error handling, and mocking of external dependencies. Updated .gitignore to exclude database files (*.db, *.sqlite3) in addition to lock files.
- Rebrand from INTERCEPT to iNTERCEPT
- New logo design with 'i' and signal wave brackets
- Add animated landing page with "See the Invisible" tagline
- Fix tuning dial audio issues with debouncing and restart prevention
- Fix Listening Post scanner with proper signal hit logging
- Update setup script for apt-based Python package installation
- Add Instagram promo video template
- Add full-size logo assets for external use
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Show actual error output when apt-get fails instead of silently
failing. Now displays which packages failed, the last 10 lines of
apt output, and suggests a manual fix command.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Document how to use non-RTL-SDR devices:
- ADS-B via readsb with SoapySDR (Remote mode or build from source)
- Listening Post via rx_fm from soapysdr-tools
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The Listening Post module now uses the SDR abstraction layer to support
non-RTL-SDR devices via rx_fm (SoapySDR). Previously only rtl_fm worked.
- Add sdr_type parameter to /audio/start and /scanner/start endpoints
- Use appropriate command builder based on SDR type
- Update /tools endpoint to report rx_fm and supported SDR types
Fixes compatibility issue reported by DragonOS users with HackRF/Airspy.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add/remove callsigns, registrations, or ICAO codes to watch
- Alert notification and sound when watched aircraft detected
- Filter view to show only watched aircraft
- Visual highlighting with cyan border and star icon
- Watchlist persisted to localStorage
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Click any aircraft's squawk code to see its meaning and a full
reference table of common codes. Emergency codes highlighted in red.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update browser titles and headers across all pages with the new
tagline. Add 'Signal Intelligence Platform' as subtitle.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds support for SDRPlay RSP devices (RSPdx, RSP1A, RSPduo, etc.)
through the SoapySDR interface. Closes#44.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The LoRa mode was removed because:
- rtl_433 cannot decode actual LoRa (CSS modulation)
- The 433MHz mode already handles ISM band devices
- True LoRa decoding requires specialized tools like gr-lora
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add new LoRa backend route (routes/lora.py) with:
- Frequency band definitions (EU868, US915, AU915, AS923, IN865, ISM433)
- Start/stop/stream/status endpoints using rtl_433
- Device pattern matching for LoRa/LPWAN devices
- Signal quality calculation from RSSI
- Add LoRa frontend UI with:
- Navigation button in SDR/RF group
- Band selector with channel presets
- Visualization layout (radar, device types, signal quality, activity log)
- Device card list with selection details
- Header stats for devices and signals
- Fix Bias-T toggle visibility for Listening Post and LoRa modes
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Moved from bottom of sidebar to right after device capabilities,
before the Refresh Devices button. Now has orange gradient
background and is immediately visible without scrolling.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed to orange styling to stand out
- Added "Power Settings" header with lightning icon
- Larger checkbox
- Added description text explaining purpose
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Bluetooth mode now has its own dedicated layout with device cards,
so the generic waterfall and output panels are hidden.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When a new device is discovered with bluetoothctl, extract and
capture the RSSI value from the discovery line instead of
discarding it.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix scannerStatus -> scannerStatusText element reference
- Hide global signal meter (individual panels show signal)
- Expand Bluetooth device classification patterns
- Add more audio, phone, wearable, computer patterns
- Add manufacturer-based device type inference
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The code referenced 'scannerStatus' but the element ID is
'scannerStatusText'. Fixed all instances to use the correct ID.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
HTML:
- Create bt-layout-container with flex layout
- Left side: visualizations (radar, selected device, device types,
tracker detection, signal distribution, FindMy detection)
- Right side: scrollable device card list
CSS:
- Add bt-layout-container styles matching wifi-layout-container
- Add bt-device-card styles with purple accent
- Add device type overview styles
- Add signal distribution bar styles
- Add responsive breakpoints
JavaScript:
- Update addBtDeviceCard to create cards in new device list
- Add selectBtDevice for device selection
- Add updateBtStatsPanels for device type and signal stats
- Add updateBtFindMyList for FindMy device tracking
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add .wifi-client-card styles matching network card layout
- Purple border and subtle background for visual distinction
- Consistent font sizing with network cards
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Backend:
- Send client updates when probes or signal change significantly
- Previously only new clients were reported, updates were ignored
Frontend:
- Add client cards to device list (was only showing networks)
- Fix rogue AP detection to check OUI - excludes legitimate mesh systems
- Improve channel recommendation with detailed usage breakdown
- Show per-channel interference counts for 2.4GHz
- Show unused channel count for 5GHz
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add rogueBssids Set to track all BSSIDs flagged as rogues
- Display red banner with pulsing animation on rogue network cards
- Apply red border and background tint to rogue AP cards
- Show prominent warning in selected device panel for rogue APs
- Change SSID color to red when viewing rogue AP details
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Hidden SSID fixes:
- Only track networks that are originally hidden (empty/Hidden ESSID)
- Reveal hidden SSIDs when network ESSID changes or client probes match
- Show count of hidden networks being monitored
- Show revealed SSIDs with checkmark
Probe analysis fixes:
- Call scheduleProbeAnalysisUpdate when client has probes
- Add periodic updateProbeAnalysis call every 2 seconds
- Properly trigger probe analysis from client handler
Other fixes:
- Remove drawNetworkGraph call (topology panel was removed)
- Add updateHiddenSsidDisplay to periodic updates
- Improve panel messages when no data available
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Layout changes:
- Security overview now next to network radar
- Channel utilization (2.4 GHz and 5 GHz) side by side
- Removed network topology panel
- Removed PMKID capture panel and functionality
Handshake improvements:
- Added "Crack with Aircrack-ng" button when handshake is captured
- Added /wifi/handshake/crack backend route
- Prompts for wordlist path with common defaults
- Shows password when found with notification
- 5 minute timeout with helpful error message
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Layout changes:
- Move device list to right column beside visualizations
- Add dedicated WiFi device list panel with header and count
- Hide waterfall and generic output for WiFi mode
- Add responsive styles for smaller screens
Capture fixes:
- Fix handshake capture: add interface param, stop existing scan first
- Fix PMKID capture: add interface param, stop existing scan first
- Add proper error handling with try/catch for both capture functions
- Use monitorInterface variable when available
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add min-height: 0 to output-panel to fix grid overflow scrolling
- Add min-height: 200px to output-content for device cards visibility
- Add max-height: 50vh to wifi-visuals to leave room for device list
- Make wifi-visuals scrollable when content exceeds max-height
- Remove Target Signal panel (redundant with Selected Device panel)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Moves the Selected Device panel to be the first element in the
WiFi visualizations grid so it's visible without scrolling.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add new panel to display aircraft photos when selected
- Fetch photos from planespotters API via /adsb/aircraft-photo endpoint
- Cache photos to avoid repeated API calls
- Show loading, no photo, and placeholder states appropriately
- Reduced map panel to span 2 to accommodate new image panel
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Selected Device panel showing detailed info for networks/clients
- Make network cards clickable to view details
- Make probe analysis client entries clickable
- Fix signal strength to show "N/A" when airodump returns -1
- Add visual signal meter and action buttons to selected device panel
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Verify monitor interface actually exists before returning success
- Check for common interface naming patterns (wlan0mon, wlan1mon, etc.)
- Add interface existence check before starting scan
- Show available interfaces in error messages for debugging
- Better logging of monitor mode and scan failures
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Hide waterfall and output panels in aircraft mode (use dedicated visualization)
- Add aircraft list panel with clickable aircraft selection
- Add selected aircraft info panel showing altitude, speed, heading, squawk
- Add "Open Full Dashboard" button linking to dedicated aircraft radar
- Add debugging console logs and alert messages to WiFi scan function
- Better error feedback when WiFi interface not selected or scan fails
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added "Select Device" label to WiFi adapter dropdown
- Better error handling with user notifications when interfaces fail to load
- Shows loading state while detecting interfaces
- Clearer notification messages for found/missing interfaces
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>