Commit Graph

1438 Commits

Author SHA1 Message Date
James Smith 15632db5ad fix(satellite): show 'NO UPCOMING PASSES' when all passes are in the past
updateCountdown fell back to passes[0] even when it was in the past,
showing 00:00:00:00 with a stale satellite name indefinitely. Now
displays a clear 'NO UPCOMING PASSES' state with '--' for all fields
when no future pass exists in the current prediction window.
2026-03-19 21:55:25 +00:00
James Smith fb4c5238f3 perf(satellite): compute ground tracks in thread pool, not inline
Ground track computation (90 Skyfield points per satellite) was blocking
the 1Hz tracker loop on every cache miss. On cold start with multiple
tracked satellites this could stall the SSE stream for several seconds.

Tracks are now computed in a 2-worker ThreadPoolExecutor. The tracker
loop emits position without groundTrack on cache miss; clients retain
the previous track via SSE merge until the new one is ready.
2026-03-19 21:55:00 +00:00
James Smith c9a3bea40d refactor(satellite): simplify telemetry abort controller management
Consolidated to a single active-request guard with cleanup in finally.
The previous pattern had redundant null-checks across try and catch, and
an always-false check on a controller that was already null. Cancel-on-
new-request is now explicit before creating the new controller.
2026-03-19 21:49:45 +00:00
James Smith f5dbba7b69 fix(satellite): add METEOR-M2 to weather satellite handoff keys
METEOR-M2 (NORAD 40069) is a weather satellite with LRPT downlink but
was missing from WEATHER_SAT_KEYS, so no capture button appeared in
the pass list. Adds it alongside M2-3 and M2-4.
2026-03-19 21:49:09 +00:00
James Smith dd3f334f92 fix(satellite): use wgs84 subpoint elevation for altitude in /position
Replace geocentric.distance().km - 6371 (fixed spherical radius) with
wgs84.subpoint(geocentric).elevation.km in the /position endpoint.
The SSE tracker was already fixed in the Task 1 commit.
2026-03-19 21:48:55 +00:00
James Smith b530769016 fix(satellite): populate currentPos with full telemetry in pass predictions
Previously currentPos only had lat/lon, so the updateTelemetry fallback
(used before first live position arrives) always showed '---' for
altitude/elevation/azimuth/distance. currentPos now includes all fields
computed from the request observer location. updateTelemetry simplified
to delegate to applyTelemetryPosition.
2026-03-19 21:48:33 +00:00
James Smith fb4c2832df feat(satellite): add 24-hour periodic TLE auto-refresh
TLE data was only refreshed once at startup. After each refresh, a new
24-hour timer is now scheduled in a finally block so it fires even on
refresh failure. threading moved to module-level import.
2026-03-19 21:47:38 +00:00
James Smith a72da6d2e0 fix(satellite): SSE path only updates orbit position, not observer data
Adds a 'source' param to handleLivePositions. The SSE path ('sse') only
applies lat/lon/altitude/groundTrack since the server-side tracker has
no per-client location. The HTTP poll path ('poll') owns all observer-
relative data and the visible-count badge.
2026-03-19 21:46:36 +00:00
James Smith d4753ad0c8 fix(satellite): strip observer-relative fields from SSE tracker
SSE runs server-wide with DEFAULT_LAT/LON defaults of 0,0. Emitting
elevation/azimuth/distance/visible from the tracker produced wrong
values (always visible:False) that overwrote correct data from the
per-client HTTP poll every second.

The HTTP poll (/satellite/position) owns all observer-relative data.
SSE now only emits lat/lon/altitude/groundTrack. Also removes the
unused DEFAULT_LATITUDE/DEFAULT_LONGITUDE import.
2026-03-19 21:45:48 +00:00
James Smith 7395e4e083 Stabilize satellite live telemetry state 2026-03-19 21:09:03 +00:00
James Smith 6a72ba9d1b Tear down satellite dashboard cleanly 2026-03-19 20:34:32 +00:00
James Smith 124886e157 Preserve satellite panes during refresh 2026-03-19 20:30:52 +00:00
James Smith 97f97bc9e1 Guard satellite target refreshes 2026-03-19 19:12:51 +00:00
James Smith 181df8a7bf Stabilize satellite target switching 2026-03-19 17:44:02 +00:00
James Smith 2dcad79333 Speed up satellite live telemetry updates 2026-03-19 17:18:39 +00:00
James Smith 2afab565a1 Batch satellite pass predictions 2026-03-19 17:07:23 +00:00
James Smith b23f63cb89 Stabilize satellite pass target switching 2026-03-19 16:41:55 +00:00
James Smith afc8c2e84f Wire satellite capture handoff 2026-03-19 15:59:58 +00:00
James Smith 30960e6d6f Harden satellite target switching 2026-03-19 15:33:20 +00:00
James Smith 572d6e3215 Fix satellite target switching regression 2026-03-19 14:55:48 +00:00
James Smith 17e2ca0c6a Stabilize satellite dashboard refreshes 2026-03-19 14:26:08 +00:00
James Smith ebf916d186 Tighten satellite polar plot sizing 2026-03-19 14:16:44 +00:00
James Smith 8191966e8e Fix satellite dashboard startup helpers 2026-03-19 13:49:20 +00:00
James Smith 19c9b4eaf3 Stabilize satellite dashboard startup 2026-03-19 13:23:52 +00:00
James Smith 4268732d58 Restore satellite mission controls 2026-03-19 13:06:26 +00:00
James Smith b746f9689c Move satellite packets into map console 2026-03-19 12:17:28 +00:00
James Smith 0f56fa1a13 Rework satellite dashboard mission layout 2026-03-19 12:01:59 +00:00
James Smith cde5bed49b Fix satellite pass prediction route 2026-03-19 11:39:22 +00:00
James Smith 089687ca31 Cache satellite pass predictions 2026-03-19 11:27:38 +00:00
James Smith ced65042b1 Vendor flask-socketio fallback for radiosonde 2026-03-19 11:16:42 +00:00
James Smith f1345b91c4 Vendor semver fallback for radiosonde 2026-03-19 11:09:54 +00:00
James Smith 953a6be3f1 Probe more radiosonde Python environments 2026-03-19 11:02:42 +00:00
James Smith c789646f24 Fix dashboard startup regressions and mode utilities 2026-03-19 10:37:21 +00:00
James Smith 4fc35c094c Delay welcome page GPS and voice streams 2026-03-19 09:34:33 +00:00
James Smith 94e9d65fad Defer hidden dashboard startup work 2026-03-19 09:19:36 +00:00
James Smith 7587c1d009 Lazy-load satellite iframe on main dashboard 2026-03-19 09:05:48 +00:00
James Smith b8b661b3be Revert "Retry ADS-B map bootstrap safely"
This reverts commit 2c66a2fe4a.
2026-03-19 08:54:59 +00:00
James Smith 2c66a2fe4a Retry ADS-B map bootstrap safely 2026-03-19 08:52:08 +00:00
James Smith 665067e399 Retry slow SDR detection in ADS-B 2026-03-19 08:43:20 +00:00
James Smith 0ea03c8f93 Harden ADS-B dashboard bootstrap 2026-03-19 08:35:43 +00:00
James Smith 0f161f96d3 Revert "Keep ADS-B on local startup tiles"
This reverts commit 2ceeb520e9.
2026-03-19 08:32:10 +00:00
James Smith 2ceeb520e9 Keep ADS-B on local startup tiles 2026-03-19 08:28:13 +00:00
James Smith 274824fe68 Keep ADS-B fallback grid until tiles load 2026-03-19 08:18:00 +00:00
James Smith b78a261a0b Shorten agent health checks on load 2026-03-19 08:09:07 +00:00
James Smith 09e0ddef79 Ignore aborted satellite pass requests 2026-03-19 08:04:36 +00:00
James Smith 5486656782 Defer noncritical ADS-B startup work 2026-03-19 08:01:33 +00:00
James Smith be4c9a87ad Reduce repeated ADS-B device probes 2026-03-19 07:55:19 +00:00
James Smith 1be531a263 Skip pre-stop on dashboard navigation 2026-03-19 07:47:46 +00:00
James Smith b00638f794 Stop clearing browser caches on load 2026-03-19 07:43:32 +00:00
James Smith 7c9df8beb3 Revert "Reduce ADS-B map layout shift"
This reverts commit af475ad6ea.
2026-03-19 00:17:22 +00:00