Commit Graph

8 Commits

Author SHA1 Message Date
James Smith
ebe0bf9431 Fix orbit track to use selected pass's satellite, not dropdown
Bug: Both files were fetching orbit data for the dropdown-selected
satellite instead of the satellite from the selected pass.

Fixes:
- satellite_dashboard.html: updateRealTimePositions() now uses
  passes[selectedPass].satellite instead of selectedSatellite
- index.html: updateRealTimePosition() now ensures the selected
  pass's satellite is included in the position request, and added
  includeTrack: true to get orbit data

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 15:26:23 +00:00
James Smith
0f6f642fd9 Fix satellite dashboard to fetch full orbit immediately on pass select
Added updateRealTimePositions() call to selectPass() so the full orbit
track is fetched immediately when a pass is selected, not just on the
5-second interval.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 15:22:22 +00:00
James Smith
f1e55fc44c Fix trackLine.getBounds error in satellite dashboard
LayerGroup doesn't have getBounds() like polyline does. Collect all
coordinates and create bounds manually using L.latLngBounds().

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 15:18:10 +00:00
James Smith
22791b6c3b Fix satellite ground track to show full orbit
- Fix property name mismatch: backend returns 'track' but index.html
  expected 'orbitTrack'
- Start position updates when a pass is selected (was never called)
- Fetch position immediately on pass selection for instant orbit display
- Dashboard: always show full orbit track, not just when no pass selected

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-30 15:16:36 +00:00
James Smith
ec988dd35b Fix ground track line crossing antimeridian
Split pass ground track at 180° longitude crossings to prevent
lines being drawn across the entire map.
2025-12-29 22:09:59 +00:00
James Smith
3e09140b0a Fix satellite pass track being overwritten and improve pass list
- Preserve selected pass ground track when updateRealTimePositions runs
- Only show real-time orbit track when no pass is selected
- Draw pass trajectory on polar plot with current position overlay
- Add drawCurrentPositionOnPolar helper for position marker
- Increase pass list height (250px → 400px max) to show more passes
- Add pass count to header (e.g., "UPCOMING PASSES (7)")
- Make pass items slightly more compact
2025-12-29 22:06:02 +00:00
James Smith
f7a08f890d Fix browser freeze in WiFi/Bluetooth modes and add dashboard links
- Add requestAnimationFrame batching to WiFi SSE handler to prevent
  freeze with many access points
- Add requestAnimationFrame batching to Bluetooth SSE handler to
  prevent freeze with many devices
- Move channel graph updates to batched frame instead of per-network
- Throttle probe analysis updates to every 2 seconds
- Optimize aircraft tracking in main page with marker state caching,
  150 marker limit, and throttled auto-fit bounds
- Add "Full Screen Dashboard" links to aircraft and satellite modes
- Add "Main Dashboard" links to ADSB and satellite dashboards

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 21:55:48 +00:00
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