# Changelog All notable changes to iNTERCEPT will be documented in this file. ## [2.23.0] - 2026-02-27 ### Added - **Radiosonde Weather Balloon Tracking** - 400-406 MHz reception via radiosonde_auto_rx with telemetry, map, and station distance tracking - **CW/Morse Code Decoder** - Custom Goertzel tone detection with OOK/AM envelope detection mode for ISM bands - **WeFax (Weather Fax) Decoder** - HF weather fax reception with auto-scheduler, broadcast timeline, and image gallery - **System Health Monitoring** - Telemetry dashboard with process monitoring and system metrics - **HTTPS Support** - TLS via `INTERCEPT_HTTPS` configuration - **ADS-B Voice Alerts** - Text-to-speech notifications for military and emergency aircraft detections - **HackRF TSCM RF Scan** - HackRF support added to TSCM counter-surveillance RF sweep - **Multi-SDR WeFax** - Multiple SDR hardware support for WeFax decoder - **Tool Path Overrides** - `INTERCEPT_*_PATH` environment variables for custom tool locations - **Homebrew Tool Detection** - Native path detection for Apple Silicon Homebrew installations - **Production Server** - `start.sh` with gunicorn + gevent for concurrent SSE/WebSocket handling — eliminates multi-client page load delays ### Changed - Morse decoder rebuilt with custom Goertzel decoder, replacing multimon-ng dependency - GPS mode upgraded to textured 3D globe visualization - Destroy lifecycle added to all mode modules to prevent resource leaks - Docker container now uses gunicorn + gevent by default via `start.sh` ### Fixed - ADS-B device release leak and startup performance regression - ADS-B probe incorrectly treating "No devices found" as success - USB claim race condition after SDR probe - SDR device registry collision when multiple SDR types present - APRS 15-minute startup delay caused by pipe buffering - APRS map centering at [0,0] when GPS unavailable - DSC decoder ITU-R M.493 compliance issues - Weather satellite 0dB SNR — increased sample rate for Meteor LRPT - SSE fanout backlog causing delayed updates across all modes - SSE reconnect packet loss during client reconnection - Waterfall monitor tuning race conditions - Mode FOUC (flash of unstyled content) on initial navigation - Various Morse decoder stability and lifecycle fixes --- ## [2.22.3] - 2026-02-23 ### Fixed - Waterfall control panel rendered as unstyled text for up to 20 seconds on first visit — CSS is now loaded eagerly with the rest of the page assets - WebSDR globe failed to render on first page load — initialization now waits for a layout frame before mounting the WebGL renderer, ensuring the container has non-zero dimensions - Waterfall monitor audio took minutes to start — `_waitForPlayback` now only reports success on actual audio playback (`playing`/`timeupdate`), not from the WAV header alone (`loadeddata`/`canplay`) - Waterfall monitor could not be stopped — `stopMonitor()` now pauses audio and updates the UI immediately instead of waiting for the backend stop request (which blocked for 1+ seconds during SDR process cleanup) - Stopping the waterfall no longer shows a stale "WebSocket closed before ready" message — the `onclose` handler now detects intentional closes --- ## [2.22.1] - 2026-02-23 ### Fixed - PWA install prompt not appearing — manifest now includes required PNG icons (192×192, 512×512) - Apple touch icon updated to PNG for iOS Safari compatibility - Service worker cache bumped to bust stale cached assets --- ## [2.22.0] - 2026-02-23 ### Added - **Waterfall Receiver Overhaul** - WebSocket-based I/Q streaming with server-side FFT, click-to-tune, zoom controls, and auto-scaling - **Voice Alerts** - Configurable text-to-speech event notifications across modes - **Signal Fingerprinting** - RF device identification and pattern analysis mode - **SignalID** - Automatic signal classification via SigIDWiki API integration - **PWA Support** - Installable web app with service worker caching and manifest - **Real-time Signal Scope** - Live signal visualization for pager, sensor, and SSTV modes - **ADS-B MSG2 Surface Parsing** - Ground vehicle movement tracking from MSG2 frames - **Cheat Sheets** - Quick reference overlays for keyboard shortcuts and mode controls - App icon (SVG) for PWA and browser tab ### Changed - **WebSDR overhaul** - Improved receiver management, audio streaming, and UI - **Mode stop responsiveness** - Faster timeout handling and improved WiFi/Bluetooth scanner shutdown - **Mode transitions** - Smoother navigation with performance instrumentation - **BT Locate** - Refactored JS engine with improved trail management and signal smoothing - **Listening Post** - Refactored with cross-module frequency routing - **SSTV decoder** - State machine improvements and partial image streaming - Analytics mode removed; per-mode analytics panels integrated into existing dashboards ### Fixed - ADS-B SSE multi-client fanout stability and update flush timing - WiFi scanner robustness and monitor mode teardown reliability - Agent client reliability improvements for remote sensor nodes - SSTV VIS detector state reporting in signal monitor diagnostics ### Documentation - Complete documentation audit across README, FEATURES, USAGE, help modal, and GitHub Pages - Fixed license badge (MIT → Apache 2.0) to match actual LICENSE file - Fixed tool name `rtl_amr` → `rtlamr` throughout all docs - Fixed incorrect entry point examples (`python app.py` → `sudo -E venv/bin/python intercept.py`) - Removed duplicate AIS Vessel Tracking section from FEATURES.md - Updated SSTV requirements: pure Python decoder, no external `slowrx` needed - Added ACARS and VDL2 mode descriptions to in-app help modal - GitHub Pages site: corrected Docker command, license, and tool name references --- ## [2.21.1] - 2026-02-20 ### Fixed - BT Locate map first-load rendering race that could cause blank/late map initialization - BT Locate mode switch timing so Leaflet invalidation runs after panel visibility settles - BT Locate trail restore startup latency by batching historical GPS point rendering --- ## [2.21.0] - 2026-02-20 ### Added - Analytics panels for operational insights and temporal pattern analysis ### Changed - Global map theme refresh with improved contrast and cross-dashboard consistency - Cross-app UX refinements for accessibility, mode consistency, and render performance - BT Locate enhancements including improved continuity, smoothing, and confidence reporting ### Fixed - Weather satellite auto-scheduler and Mercator tracking reliability issues - Bluetooth/WiFi runtime health issues affecting scanner continuity - ADS-B SSE multi-client fanout stability and remote VDL2 streaming reliability --- ## [2.15.0] - 2026-02-09 ### Added - **Real-time WebSocket Waterfall** - I/Q capture with server-side FFT - Click-to-tune, zoom controls, and auto-scaling quantization - Shared waterfall UI across SDR modes with function bar controls - WebSocket frame serialization and connection reuse - **Cross-Module Frequency Routing** - Tune from Listening Post directly to decoders - **Pure Python SSTV Decoder** - Replaces broken slowrx C dependency - Real-time decode progress with partial image streaming - VIS detector state in signal monitor diagnostics - Image gallery with delete and download functionality - **Real-time Signal Scope** - Live signal visualization for pager, sensor, and SSTV modes - **SSTV Image Gallery** - Delete and download decoded images - **USB Device Probe** - Detect broken SDR devices before rtl_fm crashes ### Fixed - DMR dsd-fme protocol flags, device label, and tuning controls - DMR frontend/backend state desync causing 409 on start - Digital voice decoder producing no output due to wrong dsd-fme flags - SDR device lock-up from unreleased device registry on process crash - APRS crash on large station count and station list overflow - Settings modal overflowing viewport on smaller screens - Waterfall crash on zoom by reusing WebSocket and adding USB release retry - PD120 SSTV decode hang and false leader tone detection - WebSocket waterfall blocked by login redirect - TSCM sweep KeyError on RiskLevel.NEEDS_REVIEW ### Removed - GSM Spy functionality removed for legal compliance --- ## [2.14.0] - 2026-02-06 ### Added - **DMR Digital Voice Decoder** - Decode DMR, P25, NXDN, and D-STAR protocols - Integration with dsd-fme (Digital Speech Decoder - Florida Man Edition) - Real-time SSE streaming of sync, call, voice, and slot events - Call history table with talkgroup, source ID, and protocol tracking - Protocol auto-detection or manual selection - Pipeline error diagnostics with rtl_fm stderr capture - **DMR Visual Synthesizer** - Canvas-based signal activity visualization - Spring-physics animated bars reacting to SSE decoder events - Color-coded by event type: cyan (sync), green (call), orange (voice) - Center-outward ripple bursts on sync events - Smooth decay and idle breathing animation - Responsive canvas with window resize handling - **HF SSTV General Mode** - Terrestrial slow-scan TV on shortwave frequencies - Predefined HF SSTV frequencies (14.230, 21.340, 28.680 MHz, etc.) - Modulation support for USB/LSB reception - **WebSDR Integration** - Remote HF/shortwave listening via WebSDR servers - **Listening Post Enhancements** - Improved signal scanner and audio handling ### Fixed - APRS rtl_fm startup failure and SDR device conflicts - DSD voice decoder detection for dsd-fme and PulseAudio errors - dsd-fme protocol flags and ncurses disable for headless operation - dsd-fme audio output flag for pipeline compatibility - TSCM sweep scan resilience with per-device error isolation - TSCM WiFi detection using scanner singleton for device availability - TSCM correlation and cluster emission fixes - Detected Threats panel items now clickable to show device details - Proximity radar tooltip flicker on hover - Radar blip flicker by deferring renders during hover - ISS position API priority swap to avoid timeout delays - Updater settings panel error when updater.js is blocked - Missing scapy in optionals dependency group --- ## [2.13.1] - 2026-02-04 ### Added - **UI Overhaul** - Revamped styling with slate/cyan theme - Switched app font to JetBrains Mono - Global navigation bar across all dashboards - Cyan-tinted map tiles as default - **Signal Scanner Rewrite** - Switched to rtl_power sweep for better coverage - SNR column added to signal hits table - SNR threshold control for power scan - Improved sweep progress tracking and stability - Frequency-based sweep display with range syncing - **Listening Post Audio** - WAV streaming with retry and fallback - WebSocket audio fallback for listening - User-initiated audio play prompt - Audio pipeline restart for fresh stream headers ### Fixed - WiFi connected clients panel now filters to selected AP instead of showing all clients - USB device contention when starting audio pipeline - Dual scrollbar issue on main dashboard - Controls bar alignment in dashboard pages - Mode query routing from dashboard nav --- ## [2.13.0] - 2026-02-04 ### Added - **WiFi Client Display** - Connected clients shown in AP detail drawer - Real-time client updates via SSE streaming - Probed SSID badges for connected clients - Signal strength indicators and vendor identification - **Help Modal** - Keyboard shortcuts reference system - **Main Dashboard Button** - Quick navigation from any page - **Settings Modal** - Accessible from all dashboards ### Changed - Dashboard CSS improvements and consistency fixes --- ## [2.12.1] - 2026-02-02 ### Added - **SDR Device Registry** - Prevents decoder conflicts between concurrent modes - **SDR Device Status Panel** - Shows connected SDR devices with ADS-B Bias-T toggle - **Real-time Doppler Tracking** - ISS SSTV reception with Doppler correction - **TCP Connection Support** - Meshtastic devices connectable over TCP - **Shared Observer Location** - Configurable shared location with auto-start options - **slowrx Source Build** - Fallback build for Debian/Ubuntu ### Fixed - SDR device type not synced on page refresh - Meshtastic connection type not restored on page refresh - WiFi deep scan polling on agent with normalized scan_type value - Auto-detect RTL-SDR drivers and blacklist instead of prompting - TPMS pressure field mappings for 433MHz sensor display - Agent capabilities cache invalidation after monitor mode toggle --- ## [2.12.0] - 2026-01-29 ### Added - **ISS SSTV Decoder Mode** - Receive Slow Scan Television transmissions from the ISS - Real-time ISS tracking globe with accurate position via N2YO API - Leaflet world map showing ISS ground track and current position - Location settings for ISS pass predictions - Integration with satellite tracking TLE data - **GitHub Update Notifications** - Automatic new version alerts - Checks for updates on app startup - Unobtrusive notification when new releases are available - Configurable check interval via settings - **Meshtastic Enhancements** - QR code support for easy device sharing - Telemetry display with battery, voltage, and environmental data - Traceroute visualization for mesh network topology - Improved node synchronization between map and top bar - **UI Improvements** - New Space category for satellite and ISS-related modes - Pulsating ring effect for tracked aircraft/vessels - Map marker highlighting for selected aircraft in ADS-B - Consolidated settings and dependencies into single modal - **Auto-Update TLE Data** - Satellite tracking data updates automatically on app startup - **GPS Auto-Connect** - AIS dashboard now connects to gpsd automatically ### Changed - **Utility Meters** - Added device grouping by ID with consumption trends - **Utility Meters** - Device intelligence and manufacturer information display ### Fixed - **SoapySDR** - Module detection on macOS with Homebrew - **dump1090** - Build failures in Docker containers - **dump1090** - Build failures on Kali Linux and newer GCC versions - **Flask** - Ensure Flask 3.0+ compatibility in setup script - **psycopg2** - Now optional for Flask/Werkzeug compatibility - **Bias-T** - Setting now properly passed to ADS-B and AIS dashboards - **Dark Mode Maps** - Removed CSS filter that was inverting dark tiles - **Map Tiles** - Fixed CARTO tile URLs and added cache-busting - **Meshtastic** - Traceroute button and dark mode map fixes - **ADS-B Dashboard** - Height adjustment to prevent bottom controls cutoff - **Audio Visualizer** - Now works without spectrum canvas --- ## [2.11.0] - 2026-01-28 ### Added - **Meshtastic Mesh Network Integration** - LoRa mesh communication support - Connect to Meshtastic devices (Heltec, T-Beam, RAK) via USB/Serial - Real-time message streaming via SSE - Channel configuration with encryption key support - Node information display with signal metrics (RSSI, SNR) - Message history with up to 500 messages - **Ubertooth One BLE Scanner** - Advanced Bluetooth scanning - Passive BLE packet capture across all 40 BLE channels - Raw advertising payload access - Integration with existing Bluetooth scanning modes - Automatic detection of Ubertooth hardware - **Offline Mode** - Run iNTERCEPT without internet connectivity - Bundled Leaflet 1.9.4 (JS, CSS, marker images) - Bundled Chart.js 4.4.1 - Bundled Inter and JetBrains Mono fonts (woff2) - Local asset status checking and validation - **Settings Modal** - New configuration interface accessible from navigation - Offline tab: Toggle offline mode, configure asset sources - Display tab: Theme and animation preferences - About tab: Version info and links - **Multiple Map Tile Providers** - Choose from: - OpenStreetMap (default) - CartoDB Dark - CartoDB Positron (light) - ESRI World Imagery - Custom tile server URL ### Changed - **Dashboard Templates** - Conditional asset loading based on offline settings - **Bluetooth Scanner** - Added Ubertooth backend alongside BlueZ/DBus - **Dependencies** - Added meshtastic SDK to requirements.txt ### Technical - Added `routes/meshtastic.py` for Meshtastic API endpoints - Added `utils/meshtastic.py` for device management - Added `utils/bluetooth/ubertooth_scanner.py` for Ubertooth support - Added `routes/offline.py` for offline mode API - Added `static/js/core/settings-manager.js` for client-side settings - Added `static/css/settings.css` for settings modal styles - Added `static/css/modes/meshtastic.css` for Meshtastic UI - Added `static/js/modes/meshtastic.js` for Meshtastic frontend - Added `templates/partials/modes/meshtastic.html` for Meshtastic mode - Added `templates/partials/settings-modal.html` for settings UI - Added `static/vendor/` directory structure for bundled assets --- ## [2.10.0] - 2026-01-25 ### Added - **AIS Vessel Tracking** - Real-time ship tracking via AIS-catcher - Full-screen dashboard with interactive maritime map - Vessel details: name, MMSI, callsign, destination, ETA - Navigation data: speed, course, heading, rate of turn - Ship type classification and dimensions - Multi-SDR support (RTL-SDR, HackRF, LimeSDR, Airspy, SDRplay) - **VHF DSC Channel 70 Monitoring** - Digital Selective Calling for maritime distress - Real-time decoding of DSC messages (Distress, Urgency, Safety, Routine) - MMSI country identification via Maritime Identification Digits (MID) lookup - Position extraction and map markers for distress alerts - Prominent visual overlay for DISTRESS and URGENCY alerts - Permanent database storage for critical alerts with acknowledgement workflow - **Spy Stations Database** - Number stations and diplomatic HF networks - Comprehensive database from priyom.org - Station profiles with frequencies, schedules, operators - Filter by type (number/diplomatic), country, and mode - Tune integration with Listening Post - Famous stations: UVB-76, Cuban HM01, Israeli E17z - **SDR Device Conflict Detection** - Prevents collisions between AIS and DSC - **DSC Alert Summary** - Dashboard counts for unacknowledged distress/urgency alerts - **AIS-catcher Installation** - Added to setup.sh for Debian and macOS ### Changed - **UI Labels** - Renamed "Scanner" to "Listening Post" and "RTLAMR" to "Meters" - **Pager Filter** - Changed from onchange to oninput for real-time filtering - **Vessels Dashboard** - Now includes VHF DSC message panel alongside AIS tracking - **Dependencies** - Added scipy and numpy for DSC signal processing ### Fixed - **DSC Position Decoder** - Corrected octal literal in quadrant check --- ## [2.9.5] - 2026-01-14 ### Added - **MAC-Randomization Resistant Detection** - TSCM now identifies devices using randomized MAC addresses - **Clickable Score Cards** - Click on threat scores to see detailed findings - **Device Detail Expansion** - Click-to-expand device details in TSCM results - **Root Privilege Check** - Warning display when running without required privileges - **Real-time Device Streaming** - Devices stream to dashboard during TSCM sweep ### Changed - **TSCM Correlation Engine** - Improved device correlation with comprehensive reporting - **Device Classification System** - Enhanced threat classification and scoring - **WiFi Scanning** - Improved scanning reliability and device naming ### Fixed - **RF Scanning** - Fixed scanning issues with improved status feedback - **TSCM Modal Readability** - Improved modal styling and close button visibility - **Linux Device Detection** - Added more fallback methods for device detection - **macOS Device Detection** - Fixed TSCM device detection on macOS - **Bluetooth Event Type** - Fixed device type being overwritten - **rtl_433 Bias-T Flag** - Corrected bias-t flag handling --- ## [2.9.0] - 2026-01-10 ### Added - **Landing Page** - Animated welcome screen with logo reveal and "See the Invisible" tagline - **New Branding** - Redesigned logo featuring 'i' with signal wave brackets - **Logo Assets** - Full-size SVG logos in `/static/img/` for external use - **Instagram Promo** - Animated HTML promo video template in `/promo/` directory - **Listening Post Scanner** - Fully functional frequency scanning with signal detection - Scan button toggles between start/stop states - Signal hits logged with Listen button to tune directly - Proper 4-column display (Time, Frequency, Modulation, Action) ### Changed - **Rebranding** - Application renamed from "INTERCEPT" to "iNTERCEPT" - **Updated Tagline** - "Signal Intelligence & Counter Surveillance Platform" - **Setup Script** - Now installs Python packages via apt first (more reliable on Debian/Ubuntu) - Uses `--system-site-packages` for venv to leverage apt packages - Added fallback logic when pip fails - **Troubleshooting Docs** - Added sections for pip install issues and apt alternatives ### Fixed - **Tuning Dial Audio** - Fixed audio stopping when using tuning knob - Added restart prevention flags to avoid overlapping restarts - Increased debounce time for smoother operation - Added silent mode for programmatic value changes - **Scanner Signal Hits** - Fixed table column count and colspan - **Favicon** - Updated to new 'i' logo design --- ## [2.0.0] - 2026-01-06 ### Added - **Listening Post Mode** - New frequency scanner with automatic signal detection - Scans frequency ranges and stops on detected signals - Real-time audio monitoring with ffmpeg integration - Skip button to continue scanning after signal detection - Configurable dwell time, squelch, and step size - Preset frequency bands (FM broadcast, Air band, Marine, etc.) - Activity log of detected signals - **Aircraft Dashboard Improvements** - Dependency warning when rtl_fm or ffmpeg not installed - Auto-restart audio when switching frequencies - Fixed toolbar overflow with custom frequency input - **Device Correlation** - Match WiFi and Bluetooth devices by manufacturer - **Settings System** - SQLite-based persistent settings storage - **Comprehensive Test Suite** - Added tests for routes, validation, correlation, database ### Changed - **Documentation Overhaul** - Simplified README with clear macOS and Debian installation steps - Added Docker installation option - Complete tool reference table in HARDWARE.md - Removed redundant/confusing content - **Setup Script Rewrite** - Full macOS support with Homebrew auto-installation - Improved Debian/Ubuntu package detection - Added ffmpeg to tool checks - Better error messages with platform-specific install commands - **Dockerfile Updated** - Added ffmpeg for Listening Post audio encoding - Added dump1090 with fallback for different package names ### Fixed - SoapySDR device detection for RTL-SDR and HackRF - Aircraft dashboard toolbar layout when using custom frequency input - Frequency switching now properly stops/restarts audio ### Technical - Added `utils/constants.py` for centralized configuration values - Added `utils/database.py` for SQLite settings storage - Added `utils/correlation.py` for device correlation logic - Added `routes/listening_post.py` for scanner endpoints - Added `routes/settings.py` for settings API - Added `routes/correlation.py` for correlation API --- ## [1.2.0] - 2026-12-29 ### Added - Airspy SDR support - GPS coordinate persistence - SoapySDR device detection improvements ### Fixed - RTL-SDR and HackRF detection via SoapySDR --- ## [1.1.0] - 2026-12-18 ### Added - Satellite tracking with TLE data - Full-screen dashboard for aircraft radar - Full-screen dashboard for satellite tracking --- ## [1.0.0] - 2026-12-15 ### Initial Release - Pager decoding (POCSAG/FLEX) - 433MHz sensor decoding - ADS-B aircraft tracking - WiFi reconnaissance - Bluetooth scanning - Multi-SDR support (RTL-SDR, LimeSDR, HackRF)