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
Smittix
e9fdadbbd8
Fix APRS observer location not updating after settings change
...
Dispatch observer-location-changed event from settings manager and
listen for it in APRS mode so manual location saves propagate to
the map and distance calculations. Also refresh ObserverLocation in
initAprsMap() to catch changes between page load and first map use.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 15:00:35 +00:00