James Smith
17e2ca0c6a
Stabilize satellite dashboard refreshes
2026-03-19 14:26:08 +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
089687ca31
Cache satellite pass predictions
2026-03-19 11:27:38 +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
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
James Smith
af475ad6ea
Reduce ADS-B map layout shift
2026-03-19 00:11:29 +00:00
James Smith
853f1da581
Harden APRS mode teardown and map fallback
2026-03-19 00:06:47 +00:00
James Smith
412bdde2d9
Disable stale dashboard service worker cache
2026-03-19 00:01:47 +00:00
James Smith
42d2371ba6
Revert "Stage dashboard startup requests"
...
This reverts commit ab3c581ab0 .
2026-03-18 23:57:37 +00:00
James Smith
ab3c581ab0
Stage dashboard startup requests
2026-03-18 23:53:54 +00:00
James Smith
03a0f13772
Open satellite dashboard in new tab
2026-03-18 23:41:29 +00:00
James Smith
8927f50696
Use direct satellite dashboard links
2026-03-18 23:35:24 +00:00
James Smith
a8001604d7
Unify satellite navigation to dashboard
2026-03-18 23:29:09 +00:00
James Smith
4dc1cd43e4
Stabilize satellite dashboard sidebar panels
2026-03-18 23:17:02 +00:00
James Smith
01ed00805e
Refresh embedded satellite dashboard state
2026-03-18 23:09:07 +00:00
James Smith
a9eef9f949
Harden embedded satellite dashboard loading
2026-03-18 23:00:21 +00:00
James Smith
77cfed11d5
Fix satellite dashboard refresh flows
2026-03-18 22:53:36 +00:00
James Smith
694e16da59
Clear stale telemetry and add transmitter fallbacks
2026-03-18 22:43:40 +00:00
James Smith
75137646fc
Harden satellite dashboard telemetry loading
2026-03-18 22:35:31 +00:00
James Smith
c1f4c2310e
Align Meteor tracking defaults
2026-03-18 22:28:04 +00:00
James Smith
4deb9603db
Improve persisted Meteor status in dashboard
2026-03-18 22:25:20 +00:00
James Smith
4df59d0fad
Persist Meteor decode job state
2026-03-18 22:20:24 +00:00
James Smith
f5a2383c04
Add Meteor LRPT ground station pipeline
2026-03-18 22:01:52 +00:00
James Smith
bf2f0b4a7f
Harden dashboard loading against network stalls
2026-03-18 21:33:32 +00:00
James Smith
963fdaf013
Fix mode switch re-entry regressions
2026-03-18 21:26:01 +00:00
James Smith
c4b3fcbd51
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
a45a4d8ad5
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
db349c8d6e
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
90ff5c8e17
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
32d598335a
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
Smittix
7c6ca91666
Change default ADS-B range rings from 200nm to 50nm
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-16 12:06:29 +00:00