Files
intercept/CHANGELOG.md
Smittix 003c4d62cf feat: add gunicorn + gevent production server via start.sh
Add start.sh as the recommended production entry point with:
- gunicorn + gevent worker for concurrent SSE/WebSocket handling
- CLI flags for port, host, debug, HTTPS, and dependency checks
- Auto-fallback to Flask dev server if gunicorn not installed
- Conditional gevent monkey-patch in app.py via INTERCEPT_USE_GEVENT env var
- Docker CMD updated to use start.sh
- Updated all docs, setup.sh, and requirements.txt accordingly

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 17:18:40 +00:00

24 KiB
Raw Blame History

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_amrrtlamr throughout all docs
  • Fixed incorrect entry point examples (python app.pysudo -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)