Commit Graph

90 Commits

Author SHA1 Message Date
James Smith
ddeff002c9 Refactor into modular structure with improvements
- Split monolithic intercept.py (15k lines) into modular structure:
  - routes/ - Flask blueprints for each feature
  - templates/ - Jinja2 HTML templates
  - data/ - OUI database, satellite TLEs, detection patterns
  - utils/ - dependencies, process management, logging
  - config.py - centralized configuration with env var support

- Add type hints to function signatures
- Replace bare except clauses with specific exceptions
- Add proper logging module (replaces print statements)
- Add environment variable support (INTERCEPT_* prefix)
- Add test suite with pytest
- Add Dockerfile for containerized deployment
- Add pyproject.toml with ruff/black/mypy config
- Add requirements-dev.txt for development dependencies

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-23 16:28:48 +00:00
Smittix
b0bc7e6e91 Update README.md 2025-12-22 18:09:57 +00:00
James Smith
6b915ed86e Remove accidental file 2025-12-22 18:00:44 +00:00
James Smith
583288fafc Fix polar plot trajectory to only show during active passes
The trajectory line now only appears when the satellite is currently
making the selected pass, fixing the confusing mismatch between the
predicted path and real-time position.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 18:00:20 +00:00
James Smith
d7db623fc4 Fix satellite orbit track crossing antimeridian
Split orbit track into segments when longitude jumps > 180° to prevent
Leaflet from drawing lines across the entire map at the antimeridian.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:33:33 +00:00
James Smith
959a1d9f6e Fix satellite dashboard map - remove old track lines properly
- Clear trackLine, satMarker, and orbitTrack before adding new ones
- Remove duplicate cleanup code
- Clear pass track when showing live orbit to avoid confusion

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:26:44 +00:00
James Smith
1d699bf3c8 Fix ADS-B field name: use 'alt' instead of 'altitude'
Dashboard expects 'alt' but backend was sending 'altitude'.
Fixed in MSG,3 and MSG,5 parsing.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:13:06 +00:00
James Smith
77479c0d5c Fix ADS-B start endpoint and add debugging
- Return 'success' status instead of 'started'
- Return 'already_running' status instead of 'error' when already running
- Add console logging in dashboard for debugging
- Add backend print statements for debugging
- Better error message display in alerts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:10:21 +00:00
James Smith
a01fd7415f Fix aircraft dashboard start tracking status check
- Accept 'started' status in addition to 'success' and 'already_running'
- Show actual status in error message for debugging

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:08:47 +00:00
James Smith
1312ed5e2f Add hi-tech ADS-B aircraft radar dashboard
- New route at /adsb/dashboard for standalone aircraft tracking
- Green-themed radar display with animated grid background
- Live map with aircraft markers colored by altitude
- Aircraft list sorted by altitude with callsign, speed, heading
- Selected aircraft detail panel with full telemetry
- Statistics panel (total, with position, max/avg altitude)
- Start/Stop tracking button
- Auto-cleanup of stale aircraft after 60 seconds
- Responsive layout for different screen sizes
- Uses existing /adsb/stream SSE endpoint for real-time data

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 17:02:26 +00:00
James Smith
d9226d7a40 Fix JSON serialization errors - convert numpy types to native Python
- Convert all skyfield/numpy values to float() in /satellite/position
- Convert all skyfield/numpy values to float() in /satellite/predict
- Use bool() for visible flag
- Use int() for duration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 16:54:43 +00:00
James Smith
9575805122 Fix field name mismatches between backend and frontend
- Backend: trajectory uses 'el'/'az' instead of 'elevation'/'azimuth'
- Backend: added 'norad' and 'startTimeISO' fields to pass data
- Backend: added colors for NOAA-20 and METEOR-M2-3
- Frontend: fixed renderPassList to use 'satellite' and 'startTime'
- Frontend: fixed updateCountdown to use 'startTimeISO' and 'satellite'
- Frontend: fixed updateStats to count satellites object keys

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 16:52:52 +00:00
James Smith
9384729c3c Fix live telemetry and sky view updates on satellite change
- Real-time position updates now use selectedSatellite directly
- Added drawPolarPlotWithPosition() for live satellite position display
- Fixed /satellite/position endpoint to accept NORAD IDs
- Fixed parameter names (latitude/longitude) consistency
- Fixed response field name (track instead of orbitTrack)
- Shows satellite name and elevation on polar plot
- Glowing marker effect on current position
- Shows "BELOW HORIZON" indicator when satellite not visible

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 16:02:17 +00:00
James Smith
6bc75b005d Add satellite selector to dashboard header
- Added dropdown in header to select target satellite
- Styled hi-tech selector with cyan glow effects
- Updates tracking status indicator on satellite change
- Added NOAA-20 and METEOR-M2-3 satellites
- Dashboard now calculates passes for selected satellite only
- Extended prediction window to 48 hours

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:56:00 +00:00
James Smith
fb7309c094 Fix satellite dashboard layout - proper 3-column grid
- Simplified grid to single row layout
- Fixed sidebar to not span multiple rows
- Lowered responsive breakpoint to 1200px
- Fixed panel flex-shrink behavior
- Better mobile breakpoint at 800px

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:52:11 +00:00
James Smith
78de7cdb11 Fix satellite dashboard API and layout issues
- Fix parameter mismatch: accept both latitude/longitude and lat/lon
- Add NORAD ID to satellite name mapping for dashboard compatibility
- Widen sidebar from 350px to 420px for better readability
- Make sidebar scrollable to access all panels
- Add responsive breakpoints for different screen sizes
- Prevent telemetry values from wrapping

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:50:25 +00:00
James Smith
5c313304b5 Add hi-tech satellite command dashboard
Features:
- Animated grid background with scan line effect
- Real-time polar plot with satellite trajectory
- Ground track map with Leaflet
- Countdown timer to next pass
- Live telemetry display
- Upcoming passes list with quality badges
- Observer location with GPS support
- Auto-updates every 5 seconds
- Responsive layout for different screens

Access via /satellite/dashboard

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:37:08 +00:00
Smittix
f8490c68cc Update README.md 2025-12-22 15:35:24 +00:00
Smittix
257ea9d979 Add files via upload 2025-12-22 15:35:03 +00:00
Smittix
2ec14750f8 Delete screenshot2.png 2025-12-22 15:34:48 +00:00
Smittix
e9b5a5b89e Add files via upload 2025-12-22 15:33:38 +00:00
Smittix
a8ff965db6 Delete screenshot2.png 2025-12-22 15:33:23 +00:00
James Smith
dea170bcae Throttle SBS updates to prevent frontend overload
- Batch updates every 1 second instead of every message
- Remove verbose MSG,3 debug output
- Reduces frontend updates from hundreds/sec to ~1/sec

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:11:11 +00:00
James Smith
4f930f0705 Start dump1090 with --net flag and connect to SBS port
- App starts dump1090-mutability with network mode enabled
- Waits 3 seconds for initialization
- Connects to SBS port 30003 for position data
- No longer relies on system service being configured

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 15:09:57 +00:00
James Smith
27ea326568 Simplify ADS-B to always use SBS service
Skip the port check and always connect to localhost:30003.
The SBS parser will handle connection errors and retry.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:28:42 +00:00
James Smith
48c6847e9b Add debug output for request data
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:25:03 +00:00
James Smith
a295ef80bd Add forceService option to bypass service check
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:15:17 +00:00
James Smith
2bd659c6a6 Don't kill dump1090 on startup - may be a system service
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:07:52 +00:00
James Smith
71f2709df5 Add debug output to service check
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:05:53 +00:00
James Smith
8b4b7c1fec Add verbose debug output for MSG,3 parsing
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:04:14 +00:00
James Smith
d62f4153bf Improve SBS parser with better error handling and debug output
- Add try/except for value conversion
- Add position debug output
- Fix MSG,5 to extract callsign and altitude

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 13:02:21 +00:00
James Smith
249efbb41e Switch to SBS format parsing for dump1090 service
- Check for SBS port 30003 instead of JSON endpoint
- Parse SBS BaseStation format for aircraft data
- Supports MSG types 1,3,4,5,6 for callsign, position, velocity, squawk
- Auto-reconnect on connection loss

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:57:17 +00:00
James Smith
0716999ac5 Add support for using existing dump1090-mutability service
- Check for existing JSON endpoint before starting dump1090
- Use existing service if available (port 30005 or 8080)
- Add poll_adsb_json_only function for service mode
- Don't kill system service on stop, just stop polling

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:41:46 +00:00
James Smith
7ad7ea3bdf Add debug output for ADS-B JSON polling thread
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:37:03 +00:00
James Smith
45798de3ec Add port 30005 to dump1090 JSON endpoint list
dump1090-mutability uses port 30005 for JSON data by default.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:33:50 +00:00
James Smith
11d43a08c2 Add startup cleanup for stale RTL-SDR processes
Kills any orphaned dump1090, rtl_adsb, rtl_433, multimon-ng, rtl_fm
processes on app startup to prevent "device busy" errors.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:21:08 +00:00
James Smith
e2f8361974 Fix ADS-B process reference bug and add debug output
- Fix poll_dump1090_json using wrong process reference
- Add debug output for ADS-B decoder selection
- Add debug output for JSON and raw aircraft detection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:17:48 +00:00
James Smith
62fc3a8f2c Fix user site-packages not loading when running as root/sudo
Explicitly adds user site-packages to sys.path when ENABLE_USER_SITE
is disabled, allowing pip-installed packages like skyfield to be found.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:14:10 +00:00
James Smith
e073d8ba47 Add missing time import
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:08:21 +00:00
James Smith
e3ce4525b2 Fix ADS-B aircraft map plotting and improve dependency detection
- Fix calls to non-existent drawAircraftRadar(), now calls updateAircraftMarkers()
- Fix null check for lat/lon coordinates (use == null instead of === undefined)
- Add polling of dump1090 JSON endpoint for decoded aircraft positions
- Add debug logging for Python module import failures
- Add startup diagnostics for troubleshooting skyfield detection

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:05:43 +00:00
James Smith
6f3243ada2 Add satellite orbit tracking, UI improvements, and startup dependency check
- Fix ground track to show full orbit (±45 min) with past/future segments
- Redesign satellite section as 2x2 grid layout for better visibility
- Add startup dependency notification in top-left corner
- Make tool status mode-specific (pager/433MHz/aircraft show relevant tools)
- Add skyfield library for accurate orbital calculations
2025-12-22 10:02:49 +00:00
Smittix
bf142b7e93 Update README.md 2025-12-22 08:24:59 +00:00
Smittix
9f2fa1b489 Add files via upload 2025-12-22 08:24:40 +00:00
Smittix
cfec3d2889 Delete screenshot1.png 2025-12-22 08:24:25 +00:00
Smittix
e526401b39 Update README.md 2025-12-21 23:57:21 +00:00
Smittix
f8eedee7fd Add files via upload 2025-12-21 23:57:08 +00:00
James Smith
4560c00248 Center Bluetooth proximity radar in its section
Make the radar panel span both grid columns to eliminate empty space on the right and center the visualization.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 23:55:06 +00:00
James Smith
e622834ca5 Update acknowledgments with new dependencies
Add dump1090, Leaflet.js, OpenStreetMap, and Celestrak

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 23:44:28 +00:00
James Smith
933871beb9 Add satellite countdown, Leaflet map, theme toggle, and UI improvements
- Replace canvas aircraft map with Leaflet.js + OpenStreetMap
- Add dark/light theme toggle with localStorage persistence
- Add satellite pass countdown with live timer
- Add countdown to satellite popout with selectable passes
- Add client probe analysis for WiFi privacy leak detection
- Hide waterfall and output console in satellite mode
- Fix satellite countdown to update when selecting different passes
- Update documentation with new features

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 23:42:42 +00:00
James Smith
fd9399d838 Add clickable drone details and improve UI cleanliness
- Make drone counter clickable with detailed popup showing brand, SSID,
  BSSID, channel, signal, distance estimate, and detection time
- Replace stats bar text labels with emoji icons and tooltips
- Add collapsible sections (click header to toggle)
- Slim down mode tabs with icons (📟 📡 📶 🔵)
- Tighten spacing throughout (smaller padding, margins)
- Add border-radius to buttons and tabs for softer look
- Improve hover states and visual feedback

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 18:26:06 +00:00