diff --git a/CHANGELOG.md b/CHANGELOG.md index d3e551e..ddf0e2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,44 @@ All notable changes to iNTERCEPT will be documented in this file. +## [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 diff --git a/README.md b/README.md index c05dc49..e3ad0d6 100644 --- a/README.md +++ b/README.md @@ -31,11 +31,16 @@ Support the developer of this open-source project - **Aircraft Tracking** - ADS-B via dump1090 with real-time map and radar - **Vessel Tracking** - AIS ship tracking with VHF DSC distress monitoring - **ACARS Messaging** - Aircraft datalink messages via acarsdec +- **DMR Digital Voice** - DMR/P25/NXDN/D-STAR decoding via dsd-fme with visual synthesizer - **Listening Post** - Frequency scanner with audio monitoring +- **WebSDR** - Remote HF/shortwave listening via WebSDR servers +- **ISS SSTV** - Receive slow-scan TV from the International Space Station +- **HF SSTV** - Terrestrial SSTV on shortwave frequencies - **Satellite Tracking** - Pass prediction using TLE data - **ADS-B History** - Persistent aircraft history with reporting dashboard (Postgres optional) - **WiFi Scanning** - Monitor mode reconnaissance via aircrack-ng - **Bluetooth Scanning** - Device discovery and tracker detection (with Ubertooth support) +- **TSCM** - Counter-surveillance with RF baseline comparison and threat detection - **Meshtastic** - LoRa mesh network integration - **Spy Stations** - Number stations and diplomatic HF network database - **Remote Agents** - Distributed SIGINT with remote sensor nodes @@ -63,59 +68,59 @@ cd intercept docker compose up -d ``` -> **Note:** Docker requires privileged mode for USB SDR access. See `docker-compose.yml` for configuration options. - -### ADS-B History (Optional) - -The ADS-B history feature persists aircraft messages to Postgres for long-term analysis. - -```bash -# Start with ADS-B history and Postgres -docker compose --profile history up -d -``` - -Set the following environment variables (for example in a `.env` file): - -```bash -INTERCEPT_ADSB_HISTORY_ENABLED=true -INTERCEPT_ADSB_DB_HOST=adsb_db -INTERCEPT_ADSB_DB_PORT=5432 -INTERCEPT_ADSB_DB_NAME=intercept_adsb -INTERCEPT_ADSB_DB_USER=intercept -INTERCEPT_ADSB_DB_PASSWORD=intercept -``` - -### Other ADS-B Settings - -Set these as environment variables for either local installs or Docker: - -| Variable | Default | Description | -|----------|---------|-------------| -| `INTERCEPT_ADSB_AUTO_START` | `false` | Auto-start ADS-B tracking when the dashboard loads | -| `INTERCEPT_SHARED_OBSERVER_LOCATION` | `true` | Share observer location across ADS-B/AIS/SSTV/Satellite modules | - -**Local install example** - -```bash -INTERCEPT_ADSB_AUTO_START=true \ -INTERCEPT_SHARED_OBSERVER_LOCATION=false \ -python app.py -``` - -**Docker example (.env)** - -```bash -INTERCEPT_ADSB_AUTO_START=true -INTERCEPT_SHARED_OBSERVER_LOCATION=false -``` - -To store Postgres data on external storage, set `PGDATA_PATH` (defaults to `./pgdata`): - -```bash -PGDATA_PATH=/mnt/usbpi1/intercept/pgdata -``` - -Then open **/adsb/history** for the reporting dashboard. +> **Note:** Docker requires privileged mode for USB SDR access. See `docker-compose.yml` for configuration options. + +### ADS-B History (Optional) + +The ADS-B history feature persists aircraft messages to Postgres for long-term analysis. + +```bash +# Start with ADS-B history and Postgres +docker compose --profile history up -d +``` + +Set the following environment variables (for example in a `.env` file): + +```bash +INTERCEPT_ADSB_HISTORY_ENABLED=true +INTERCEPT_ADSB_DB_HOST=adsb_db +INTERCEPT_ADSB_DB_PORT=5432 +INTERCEPT_ADSB_DB_NAME=intercept_adsb +INTERCEPT_ADSB_DB_USER=intercept +INTERCEPT_ADSB_DB_PASSWORD=intercept +``` + +### Other ADS-B Settings + +Set these as environment variables for either local installs or Docker: + +| Variable | Default | Description | +|----------|---------|-------------| +| `INTERCEPT_ADSB_AUTO_START` | `false` | Auto-start ADS-B tracking when the dashboard loads | +| `INTERCEPT_SHARED_OBSERVER_LOCATION` | `true` | Share observer location across ADS-B/AIS/SSTV/Satellite modules | + +**Local install example** + +```bash +INTERCEPT_ADSB_AUTO_START=true \ +INTERCEPT_SHARED_OBSERVER_LOCATION=false \ +python app.py +``` + +**Docker example (.env)** + +```bash +INTERCEPT_ADSB_AUTO_START=true +INTERCEPT_SHARED_OBSERVER_LOCATION=false +``` + +To store Postgres data on external storage, set `PGDATA_PATH` (defaults to `./pgdata`): + +```bash +PGDATA_PATH=/mnt/usbpi1/intercept/pgdata +``` + +Then open **/adsb/history** for the reporting dashboard. ### Open the Interface diff --git a/config.py b/config.py index 029ef2c..e312af3 100644 --- a/config.py +++ b/config.py @@ -7,10 +7,23 @@ import os import sys # Application version -VERSION = "2.13.1" +VERSION = "2.14.0" # Changelog - latest release notes (shown on welcome screen) CHANGELOG = [ + { + "version": "2.14.0", + "date": "February 2026", + "highlights": [ + "DMR/P25/NXDN/D-STAR digital voice decoder with dsd-fme", + "DMR visual synthesizer with event-driven spring-physics bars", + "HF SSTV general mode with predefined shortwave frequencies", + "WebSDR integration for remote HF/shortwave listening", + "Listening Post signal scanner and audio pipeline improvements", + "TSCM sweep resilience, WiFi detection, and correlation fixes", + "APRS rtl_fm startup and SDR device conflict fixes", + ] + }, { "version": "2.13.1", "date": "February 2026", diff --git a/pyproject.toml b/pyproject.toml index c5dc2ff..c00f283 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "intercept" -version = "2.13.1" +version = "2.14.0" description = "Signal Intelligence Platform - Pager/433MHz/ADS-B/Satellite/WiFi/Bluetooth" readme = "README.md" requires-python = ">=3.9"