What's New
Bug Fixes
- Two-window hang — Opening the app in two browser tabs/windows caused it to become completely unresponsive. Root cause: HTTP/1.1 limits browsers to 6 connections per origin (shared across all tabs). VoiceAlerts was automatically opening 3 SSE streams per window on page load, so two windows produced 8 persistent connections and permanently blocked all regular HTTP requests. VoiceAlerts streams are now opt-in (disabled by default); existing preferences saved in browser storage are preserved.
- Alert messages split between windows — The alerts SSE stream read from a single queue, so two windows would each receive only half the alerts. Now uses fanout so every window gets every alert.
- Bluetooth v2 stream split between windows — Same single-queue issue in the Bluetooth SSE endpoint. Fixed with per-client subscriber queues, preserving named SSE events.
- ICAO lookup cache unbounded growth — Capped at 50 000 entries with LRU eviction to prevent memory growth under sustained ADS-B load.
- Bluetooth tracker fingerprint stability — Tracker signature scan was incorrectly resetting stability counters on unchanged payloads.
New Features
- UI Tier system — Three display modes selectable from the nav bar: Lean (minimal, no decorative elements), Standard (default), and Enhanced (full animations and ambient effects). Replaces the old animations toggle.
- Display mode in first-run setup — The first-run modal now includes a display mode selection step.
Performance
- ADS-B SSE snapshot priming moved inside the response generator (avoids blocking before headers are sent).
- WiFi network filter combined into a single list pass.
- Bluetooth tracker signature scan skips processing when the BLE payload fingerprint is unchanged.
DataStorecleanup minimises lock hold time.
Installation
git clone https://github.com/smittix/intercept.git
cd intercept
./setup.sh
sudo ./start.shOr with Docker:
docker compose --profile basic up -dSee the documentation for full setup instructions.