James Smith
2eeea3b74d
Harden satellite target switching
2026-03-19 15:33:20 +00:00
James Smith
f05a5197cd
Fix satellite target switching regression
2026-03-19 14:55:48 +00:00
James Smith
016d05f082
Stabilize satellite dashboard refreshes
2026-03-19 14:26:08 +00:00
James Smith
81c05859fc
Fix satellite dashboard startup helpers
2026-03-19 13:49:20 +00:00
James Smith
f1881fdf52
Stabilize satellite dashboard startup
2026-03-19 13:23:52 +00:00
James Smith
d0731120f9
Restore satellite mission controls
2026-03-19 13:06:26 +00:00
James Smith
7677b12f74
Move satellite packets into map console
2026-03-19 12:17:28 +00:00
James Smith
ddaf5aa64e
Rework satellite dashboard mission layout
2026-03-19 12:01:59 +00:00
James Smith
0916b62bfe
Cache satellite pass predictions
2026-03-19 11:27:38 +00:00
James Smith
18b442eb21
Fix dashboard startup regressions and mode utilities
2026-03-19 10:37:21 +00:00
James Smith
5f34d20287
Delay welcome page GPS and voice streams
2026-03-19 09:34:33 +00:00
James Smith
5905aa6415
Defer hidden dashboard startup work
2026-03-19 09:19:36 +00:00
James Smith
aaed831420
Lazy-load satellite iframe on main dashboard
2026-03-19 09:05:48 +00:00
James Smith
007a8d50c6
Revert "Retry ADS-B map bootstrap safely"
...
This reverts commit 02ce4d5bb6 .
2026-03-19 08:54:59 +00:00
James Smith
02ce4d5bb6
Retry ADS-B map bootstrap safely
2026-03-19 08:52:08 +00:00
James Smith
613258c3a2
Retry slow SDR detection in ADS-B
2026-03-19 08:43:20 +00:00
James Smith
4410aa2433
Harden ADS-B dashboard bootstrap
2026-03-19 08:35:43 +00:00
James Smith
54ad3b9362
Revert "Keep ADS-B on local startup tiles"
...
This reverts commit 2cf2c6af2a .
2026-03-19 08:32:10 +00:00
James Smith
2cf2c6af2a
Keep ADS-B on local startup tiles
2026-03-19 08:28:13 +00:00
James Smith
f5f3e766ad
Keep ADS-B fallback grid until tiles load
2026-03-19 08:18:00 +00:00
James Smith
db0a26cd64
Ignore aborted satellite pass requests
2026-03-19 08:04:36 +00:00
James Smith
8b1ca5ab96
Defer noncritical ADS-B startup work
2026-03-19 08:01:33 +00:00
James Smith
cb0fb4f3be
Reduce repeated ADS-B device probes
2026-03-19 07:55:19 +00:00
James Smith
334146b799
Skip pre-stop on dashboard navigation
2026-03-19 07:47:46 +00:00
James Smith
63237b9534
Stop clearing browser caches on load
2026-03-19 07:43:32 +00:00
James Smith
595a2003d5
Revert "Reduce ADS-B map layout shift"
...
This reverts commit 3afaa6e1ee .
2026-03-19 00:17:22 +00:00
James Smith
3afaa6e1ee
Reduce ADS-B map layout shift
2026-03-19 00:11:29 +00:00
James Smith
5731631ebc
Harden APRS mode teardown and map fallback
2026-03-19 00:06:47 +00:00
James Smith
ac445184b6
Disable stale dashboard service worker cache
2026-03-19 00:01:47 +00:00
James Smith
981b103b90
Revert "Stage dashboard startup requests"
...
This reverts commit af7b29b6b0 .
2026-03-18 23:57:37 +00:00
James Smith
af7b29b6b0
Stage dashboard startup requests
2026-03-18 23:53:54 +00:00
James Smith
0ff0df632b
Open satellite dashboard in new tab
2026-03-18 23:41:29 +00:00
James Smith
73e17e8509
Use direct satellite dashboard links
2026-03-18 23:35:24 +00:00
James Smith
dd37a0b5a7
Unify satellite navigation to dashboard
2026-03-18 23:29:09 +00:00
James Smith
96146a2e2c
Stabilize satellite dashboard sidebar panels
2026-03-18 23:17:02 +00:00
James Smith
e32942fb35
Refresh embedded satellite dashboard state
2026-03-18 23:09:07 +00:00
James Smith
a61d4331f0
Harden embedded satellite dashboard loading
2026-03-18 23:00:21 +00:00
James Smith
62ee2252a3
Fix satellite dashboard refresh flows
2026-03-18 22:53:36 +00:00
James Smith
6fd5098b89
Clear stale telemetry and add transmitter fallbacks
2026-03-18 22:43:40 +00:00
James Smith
985c8a155a
Harden satellite dashboard telemetry loading
2026-03-18 22:35:31 +00:00
James Smith
6dc0936d6d
Align Meteor tracking defaults
2026-03-18 22:28:04 +00:00
James Smith
38a10cb0de
Improve persisted Meteor status in dashboard
2026-03-18 22:25:20 +00:00
James Smith
4cf394f92e
Persist Meteor decode job state
2026-03-18 22:20:24 +00:00
James Smith
e388baa464
Add Meteor LRPT ground station pipeline
2026-03-18 22:01:52 +00:00
James Smith
5cae753e0d
Harden dashboard loading against network stalls
2026-03-18 21:33:32 +00:00
James Smith
86625cf3ec
Fix mode switch re-entry regressions
2026-03-18 21:26:01 +00:00
James Smith
8d8ee57cec
Add observation profile management UI to Ground Station panel
...
- OBSERVATION PROFILES section with list of configured satellites
- + ADD button opens inline form pre-filled from currently selected satellite
and SatNOGS transmitter data (frequency, decoder type auto-detected)
- EDIT / ✕ buttons per profile row
- Form fields: frequency, decoder (FM/AFSK/GMSK/BPSK/IQ-only), min elevation,
gain, record IQ checkbox
- UPCOMING PASSES section below profiles with friendlier empty-state message
- gsOnSatelliteChange hook updates form when satellite dropdown changes
- CSS for .gs-form-row, .gs-profile-item, .gs-form-label
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-18 17:52:25 +00:00
James Smith
4607c358ed
Add ground station automation with 6-phase implementation
...
Phase 1 - Automated observation engine:
- utils/ground_station/scheduler.py: GroundStationScheduler fires at AOS/LOS,
claims SDR, manages IQBus lifecycle, emits SSE events
- utils/ground_station/observation_profile.py: ObservationProfile dataclass + DB CRUD
- routes/ground_station.py: REST API for profiles, scheduler, observations, recordings,
rotator; SSE stream; /ws/satellite_waterfall WebSocket
- DB tables: observation_profiles, ground_station_observations, ground_station_events,
sigmf_recordings (added to utils/database.py init_db)
- app.py: ground_station_queue, WebSocket init, scheduler startup in _deferred_init
- routes/__init__.py: register ground_station_bp
Phase 2 - Doppler correction:
- utils/doppler.py: generalized DopplerTracker extracted from sstv_decoder.py;
accepts satellite name or raw TLE tuple; thread-safe; update_tle() method
- utils/sstv/sstv_decoder.py: replace inline DopplerTracker with import from utils.doppler
- Scheduler runs 5s retune loop; calls rotator.point_to() if enabled
Phase 3 - IQ recording (SigMF):
- utils/sigmf.py: SigMFWriter writes .sigmf-data + .sigmf-meta; disk-free guard (500MB)
- utils/ground_station/consumers/sigmf_writer.py: SigMFConsumer wraps SigMFWriter
Phase 4 - Multi-decoder IQ broadcast pipeline:
- utils/ground_station/iq_bus.py: IQBus single-producer fan-out; IQConsumer Protocol
- utils/ground_station/consumers/waterfall.py: CU8→FFT→binary frames
- utils/ground_station/consumers/fm_demod.py: CU8→FM demod (numpy)→decoder subprocess
- utils/ground_station/consumers/gr_satellites.py: CU8→cf32→gr_satellites (optional)
Phase 5 - Live spectrum waterfall:
- static/js/modes/ground_station_waterfall.js: /ws/satellite_waterfall canvas renderer
- Waterfall panel in satellite dashboard sidebar, auto-shown on iq_bus_started SSE event
Phase 6 - Antenna rotator control (optional):
- utils/rotator.py: RotatorController TCP client for rotctld (Hamlib line protocol)
- Rotator panel in satellite dashboard; silently disabled if rotctld unreachable
Also fixes pre-existing test_weather_sat_predict.py breakage:
- utils/weather_sat_predict.py: rewritten with self-contained skyfield implementation
using find_discrete (matching what committed tests expected); adds _format_utc_iso
- tests/test_weather_sat_predict.py: add _MOCK_WEATHER_SATS and @patch decorators
for tests that assumed NOAA-18 active (decommissioned Jun 2025, now active=False)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-18 17:36:55 +00:00
James Smith
9e7dfbda5a
Fix satellite dashboard TARGET dropdown not reflecting enabled satellites
...
Add auto-refresh on window focus so the dropdown updates automatically when
switching back from the sidebar, plus a manual ↺ refresh button next to the
dropdown. Also preserves the current selection across refreshes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-18 14:05:22 +00:00
James Smith
dc84e933c1
Fix setup.sh hanging on Python 3.14/macOS and add satellite enhancements
...
- Add --no-cache-dir and --timeout 120 to all pip calls to prevent hanging
on corrupt/stale pip HTTP cache (cachecontrol .pyc issue)
- Replace silent python -c import verification with pip show to avoid
import-time side effects hanging the installer
- Switch optional packages to --only-binary :all: to skip source compilation
on Python versions without pre-built wheels (prevents gevent/numpy hangs)
- Warn early when Python 3.13+ is detected that some packages may be skipped
- Add ground track caching with 30-minute TTL to satellite route
- Add live satellite position tracker background thread via SSE fanout
- Add satellite_predict, satellite_telemetry, and satnogs utilities
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-03-18 11:09:00 +00:00