- Add routes/acars.py with start/stop/stream endpoints for ACARS decoding
- Build acarsdec from source in Dockerfile (not available in Debian slim)
- Add acarsdec installation script to setup.sh for native installs
- Add ACARS to dependency checker in utils/dependencies.py
- Add collapsible ACARS sidebar next to map in aircraft tracking tab
- Add collapsible ACARS panel in ADS-B dashboard with same layout
- Include guidance about needing two SDRs for simultaneous ADS-B + ACARS
- Support regional frequency presets (N.America, Europe, Asia-Pacific)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The soapysdr-tools package pulls in xtrx-dkms, which fails to compile
its kernel module on Kernel 6.14+ and causes apt to hang. Explicitly
exclude xtrx-dkms since most users don't have XTRX hardware.
Fixes#56
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The dump1090 packages are not available in Debian slim repos, causing
the Docker build to silently skip installation. This builds dump1090-fa
from FlightAware's source repository instead.
Fixes#46
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add install_multimon_ng_from_source_macos() since multimon-ng is not
available in Homebrew core
- Fix brew_install() to properly check return code before printing success
- Show startup instructions before tool check so users see them on macOS
- Make missing Bluetooth tools a warning on macOS instead of hard failure
(bluetoothctl/hcitool/hciconfig are Linux-only BlueZ utilities)
- Add 'health' to allowed routes to prevent Docker healthcheck failures
- Translate Spanish comments to English for consistency
- Reset binary database file to avoid committing user data
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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>