github sgoudelis/ground-station v0.8.25

53 minutes ago

Docker Image

Version: 0.8.25
Environment: production
Git Commit: 8438e30
Build Date: 20261111

📖 View Project Documentation

Commits in this release:

  • 8438e30 chore(version): bump to v0.8.25
  • db2dfb4 test: reflect legacy UUID schema for inserts
  • f362b1c feat(earthview): add recent group visibility settings
  • 85c69d3 test: update scheduler transmitter option queries
  • e607ce7 feat(filebrowser): show APRS station paths and packet history
  • 06f2952 feat(scheduler): group transmitter search results by band
  • dd6d33a fix(horizons): request CSV vector table with state columns
  • ec4e8bf feat(packetmap): lift aircraft markers by altitude
  • 2386980 fix(satellites): keep catalog controls disabled while loading
  • dc32441 test: stabilize frontend component queries
  • 20a363a fix(packetmap): apply transmitter type filters to map markers
  • a91ea96 feat(packetmap): add APRS station info panel
  • bd611d3 fix(navigation): show continuous observation count badge in scheduler nav
  • a1609a0 fix(navigation): show only latest observation failure in scheduler nav
  • 61bb14a feat(navigation): show scheduled and continuous observation status in scheduler nav
  • 690db5c temp: add 2026-11 README screenshot captures for manual review
  • 0981b76 test: stabilize UUID storage and continuous observation tests
  • fdd7e8d fix(hardware): keep control header status badges compact
  • 1a1e985 fix(target): remove raw orbit data from info island
  • 1f4c14d fix(hardware): wait for rotator to settle before cleanup disconnect
  • 5580719 feat(waterfall): create continuous observations from live sessions
  • 80e1667 test(waterfall): cover continuous observation markers and SDR locks
  • 601dbf4 fix(waterfall): lock receiver controls for continuous observation viewers
  • f15a156 feat(continuous): add LoRa profile selection to observation forms
  • 77ed3cc fix(continuous): remove redundant observations header icon
  • d6247dc feat(dashboard): show relative next observation start times
  • c6fae5d fix(hardware): retain manual rotator control after stop
  • 0f4d1cb fix(common): keep entity header actions beside names
  • e7e6f72 fix(waterfall): isolate SDR parameters when switching devices
  • 1e1b7bf feat(continuous): add persistent observation management
  • a0c0f82 fix(grid): keep compact table footers visible
  • 11cbc7d fix(packetmap): show transmitter copy actions directly in context menu
  • efc0318 fix(hardware): reconnect rotators to confirm stationarity before handoff
  • cdfa07a fix(waterfall): add dividers to Bias-T warning dialog
  • bee74fe fix(waterfall): require voltage warning confirmation before enabling Bias-T
  • fc6565b fix(packetmap): stop toasting automatic playback jumps
  • d3f6af4 fix(packetmap): reveal selected historical transmitters at recorded positions
  • 0602070 feat(packetmap): add transmitter context actions menu
  • 424dee9 test(uhd): deliver config updates after hardware ack
  • 5f613db fix(scheduler): use full-screen dialogs on mobile
  • 21a4909 fix(waterfall): ignore stale SDR tuning updates and wait for hardware ack
  • 84b9d3a feat(dashboard): add floating draggable manual rotator controls
  • e485efb fix(waterfall): support native UHD bandwidth ranges and receiver readback
  • fa17eea fix(satdump): route manual observation processing through bundles
  • 2fe3535 feat(filebrowser): add download confirmation and recording processing action
  • a56ed29 fix(satdump): keep automated products in observation bundles
  • 854bca4 fix(hardware): remove configured SDRs table header
  • 809f965 fix(celestial): avoid forcing NORAD prefix in entity headers
  • 1db191f fix(celestial): hide unknown health badges
  • 0e7871d feat(celestial): add unified entity info header
  • 93b1c6e fix(icons): replace misapplied GPS constellation icons on UFO sats
  • eff75e2 fix(satdump): block unsafe pipelines and output paths
  • 2661a34 chore(hardware): remove sigmf probe test marker
  • da7b53d chore(hardware): add sigmf probe test marker
  • 004cfb7 feat(celestial): add target crosshairs and tooltips in solar canvas
  • fe4305d fix(rotator): clear Stop warning when tracking resumes
  • 8013bc6 feat(scheduler): add shared SDR parameter controls
  • 73de64a fix(packetmap): compact transmitter type filter
  • bb27e05 fix(hardware): compact activity indicator in header
  • 4fd91de fix(observations): disconnect cleanup without Stop
  • 864fa65 feat(icons): rebuild 32 GPS family icons from real per-block renders
  • 24bcb88 feat(icons): rebuild 32 GPS family icons from real per-block renders
  • fba5d62 fix(targets): highlight running observations with tab striping
  • a488ede feat(hardware): unify operational status indicators
  • b840739 feat(icons): replace Es'hail 2 (43700) icon with full-spacecraft render
  • 3819af0 fix(packetmap): reduce radiosonde marker sizes
  • 79b23f7 fix(hardware): make SoapySDR discovery manual-only
  • 943cb0b feat(icons): add 78 missing satellite icons from production 404 backlog
  • c41c1d7 fix(observations): wait for unsupported Stop rotator handoff
  • 6dbeab1 feat(hardware): add device Pause separate from Stop
  • 9e371c7 fix(hardware): dedupe device error feedback
  • 279ac37 fix(hardware): keep dismissed device alerts closed
  • 320abad fix(db): store UUIDs as text on SQLite
  • 2169ccc feat(hardware): add quick edit from hardware popover
  • 04a2093 feat(hardware): allow tracker connect manual rotator handoff
  • 071054a fix(deploy): colorize nginx access logs like backend
  • 8bed9aa fix(observations): keep running observation ownership on OBS tab
  • c2b69b4 fix(hardware): quietly detach released control owners
  • 6b843dc fix(hardware): renew tracker liveness on acquire
  • d76d896 fix(deploy): align nginx access log format with app logs
  • fa4fd6c fix(hardware): allow rotator acquire during unconfirmed motion
  • 6a3a168 fix(observations): disconnect rotator cleanup without stop
  • 6db7e01 fix(demodulators): preserve BPSK FLL tracking gain
  • 57b564d fix(observations): show inline validation and starting soon status
  • eca0754 feat(hardware): allow operator disconnect override
  • a622e64 feat(dashboard): replace hardware popover with device control panel
  • 75c0153 fix(observations): prevent released hardware from being reclaimed
  • 07b8158 feat(hardware): add rotator Stop capability setting
  • e31972f feat(hardware): add manual device control panel
  • d9760fc feat(dashboard): add unified observations popover
  • 0193dfe feat(dashboard): replace VFO audio popover with VFO status control
  • e6b01a7 feat(filebrowser): add responsive source and summary table view
  • 035b9b5 fix(filebrowser): remove satellite emoji from table header
  • c600bf0 fix(observations): preserve running stop jobs during sync
  • d686489 feat(packetmap): add squawk code explanations to flight instruments
  • b2d8281 feat(packetmap): add aircraft capture folder access from transmitter info
  • 307efde feat(packetmap): unify pan and zoom handling for manual navigation
  • 52ee927 feat(packetmap): auto-adjust playback for hidden aircraft in history
  • 0742ce5 feat(branding): replace green-blue logo with Meridian logo across app
  • e40b673 feat(branding): add Meridian logo roundel alongside current brand assets
  • f5dd86b feat(filebrowser): add item-type-based purging with i18n and UI enhancements
  • 4781c9f feat(search): add comprehensive indexing for aircraft, nodes, and radiosondes
  • 0c9952c refactor(dashboard): improve layout scrolling and icon responsiveness
  • 5709d45 test(packetmap): ensure uninterrupted mouse pan during live fixes
  • 08f8219 feat(packetmap): unify aircraft color palette with theme-based accent
  • 16914e2 feat(packetmap): migrate to MapLibre for map rendering and marker logic
  • 9bbdf85 feat(packetmap): add aircraft reception states and signal aging
  • b8bd2ea feat(packetmap): update three-window layout for better desktop and mobile responsiveness
  • 05b57d5 feat(filebrowser): add flight path map with interactive filtering, segmenting, and i18n
  • 93ff169 feat(waterfall): add LoRa profile selection with grouped presets and regional support
  • 2d3cb47 feat(filebrowser): add detailed aircraft history display with i18n and metadata support
  • 3401022 refactor(satconfig): remove user override support and simplify config priority
  • 8e11e62 feat(ui): replace SensorsIcon with DynamicFeedOutlinedIcon in background observations popover
  • 9b971e4 feat(filebrowser): add Meshtastic node filtering with i18n support
  • cf5d069 feat(filebrowser): add formatted capture run labels with localized timestamps
  • e7dafe4 feat(waterfall): add SDR detachment support with local VFO deactivation
  • 7097559 feat(waterfall): support independent receiving sessions and enhance stream detachment
  • f11269c feat(waterfall): support background streaming on stop and update UI messaging
  • 67fdba0 feat(session): add background session support for SDR observations
  • 5028d27 feat(filebrowser): add "Last Activity" sorting and update default chronology
  • 491570e feat(flow-layout): refine decoder-to-browser routing and add connection tests
  • d0aac82 test(waterfall): add ADS-B tab interaction and socket connection tests
  • 8e6fe39 fix(packetmap): simplify row border color logic in transmitter list
  • 42da109 feat(filebrowser): add APRS station captures and dialog functionality
  • 465649b feat(packetmap): add Meshtastic map marker and renderer for node display
  • 6ab67b6 feat(packetmap): remove transmitter table and integrate Meshtastic info panel
  • 6ce9901 feat(filebrowser): add bundle type badges and icons for capture folders
  • 2a2f86a feat(parser): add Meshtastic packet decoding and telemetry support
  • ee02d3a feat(lora): add Meshtastic sync word support with signed hardware offsets
  • 8c2ad53 feat(waterfall): add Meshtastic regional tuning ranges
  • 07baaad feat(server): add Uvicorn fork cleanup to prevent socket retention in workers
  • a81b49d feat(packetmap): implement bounded live window with aircraft expiry logic
  • d008bca feat(packetmap): optimize aircraft marker updates and transmitter table behavior
  • 28e342c feat(packetmap): synchronize telemetry playback across table and map
  • 815bddf feat(packetmap): add toggleable live updates with playback freeze support
  • 3cdbd76 feat(packetmap): add toggleable live updates with playback freeze support
  • c9dd9af feat(packetmap): add flight instruments with telemetry and playback support
  • 9cba762 fix(packetmap): improve camera locking and view persistence during navigation
  • c19e525 test(packetmap): enhance transmitter table column visibility tests
  • 3281f38 feat(packetmap): add aircraft selection crosshair and refine stale marker display
  • aa58807 feat(packetmap): add ground distance column in transmitter table
  • 63a10e7 feat(hardware): add Soapy servers panel with remote SDR management
  • 5973075 feat(hardware): add SoapySDR manual probe controls with backend and frontend tests
  • 0078876 feat(waterfall): add IF filter bandwidth tests and backend handler
  • 9e510d2 feat(waterfall): add IF filter bandwidth management and driver integration
  • 78ab5ac chore(docker): update SoapySDRPlay3 to commit 48bd8b4
  • 47479d2 feat(packetmap): add transmitter column management with reset and toggle all
  • 562aec0 feat(packetmap): add emergency squawk handling and priority indicators
  • 20b8c08 feat(packetmap): display aircraft symbols in transmitter info panel
  • 6864ea6 feat(packetmap): add detailed aircraft icons with multiple models
  • ca2e9c7 feat(packetmap): add dynamic aircraft shadows and improved marker styling
  • e0248e1 refactor(packetmap): remove transmitter legend and radio visibility lists
  • c0d1f4d feat(packetmap): add persistent camera handling and transmitter-centered views
  • 195afe0 refactor(aircraft): remove outdated classification and operator info notes
  • cbd1ce9 feat(aircraft): replace "military status" with broader "classification" field
  • 11eb6be feat(aircraft): integrate Mictronics aircraft enrichment and metadata handling
  • 75a3a1c feat(filebrowser): add independent filters for weather balloons and aircraft
  • 2731633 feat(waterfall): centralize table and tab styles for consistency
  • 16fdc04 feat(waterfall): enhance decoded packets view with footer and table consistency
  • d0b71dc feat(adsb): implement ADS-B decoding, indexing, and live tracking modules
  • c4c8b21 feat(packetmap): add stale marker handling and improve icon scaling
  • 8638a9a feat(filebrowser): refactor dialog components with reusable styles and details layout
  • 8d6328d feat(soapysdr): ensure probe reaping and graceful handling of timeouts/cancellations
  • 304eb16 feat(packetmap): update default tile layer to Esri Dark Canvas
  • 6a24b00 fix(fft): remove accidental debug comment in averager
  • 2004050 fix(events): prevent HTTP connection inheritance in pass worker pool
  • 2713b14 feat(packetmap): add APRS symbol rendering and playback support
  • e72a873 feat(packetmap): add labeled visibility circles and radiosonde marker names
  • 025bcd7 feat(filebrowser): optimize library refresh with coalescing and visibility-based queries
  • 77ea368 feat(radiosonde): add flexible RS41 block parsing with checksum validation
  • 7fd0dfd feat(hardware): add manual rotator control with enhanced UI and backend integration
  • cb65c5e feat(filebrowser): add radiosonde folder grouping, migration tools, and UI enhancements
  • 521c359 feat(packetmap): add radiosonde visibility radii and enhanced marker icons
  • 1e8a890 refactor(earthview): consolidate table settings dialogs into reusable grid toolbar
  • b58862b feat(packetmap): add LIVE mode for real-time packet tracking
  • 6789402 feat(packetmap): remove transmitter type component and add date range selector
  • af6524f feat(background-tasks): enhance worker lifecycle management and shutdown reliability
  • 7c7665f feat(packetmap): add flexible packet map layout and date range controls
  • ffa86c2 feat(decoded-packets): display radiosonde serials as sender identifier
  • a59efb9 feat(radiosonde): add altitude-aware receiver distance metrics and map fitting
  • 730202f feat(filebrowser): add reusable position map component for telemetry packets
  • f517756 test(performance-monitor): add decoder input capability tests and refine IQ decoder logic
  • 8c9e1c1 feat(radiosonde): implement radiosonde decoding with multi-frame support and validation
  • c36827a test(satellite-info): refine test assertions for dialog title and future passes table
  • c19ff63 test(theming): wrap test components with ThemeProvider for MUI compatibility
  • 41db353 refactor(satellite-info): simplify grid sizing logic for consistent layouts
  • 37b0f94 style(tables): align satellite passes table cells for improved readability
  • bd58dcb feat(dialogs): standardize dialog layouts and improve mobile responsiveness
  • fe013e7 feat(common): add GroundStationLogoGreenBlue as importable data URL
  • 11a012c feat(frontend/backend): batch tracker telemetry and optimize dialog rendering
  • c4d28be refactor(audio): remove Web Worker pipeline and simplify VFO audio scheduling
  • 5ff713a refactor(filebrowser): remove 'unsupported' telemetry type and associated badge
  • ae6b962 style(scheduler): update timeline header typography for improved hierarchy and emphasis
  • 231d80c feat(filebrowser): add telemetry status detection and badges for observation files
  • 5f53d7e refactor(settings): simplify location form banner styling with theme utility
  • 2aa95d7 feat(scheduler): display observation status banner above table in observations tab - Added ObservationStatusBanner to display upcoming observation status in the observations tab. - Updated scheduler test to validate presence and visibility of the status banner.
  • ef5488f feat(scheduler): refactor layout with tabbed views and improved data loading - Replaced grid layout with PageTabsLayout for tabbed navigation between monitored satellites and scheduled observations. - Added automatic data loading for observations in the background before opening relevant tabs. - Refactored main-layout and removed redundant useEffect calls from observations-table. - Updated styles and localized strings to improve consistency and readability. - Added tests to validate tab behavior, data rendering, and interactions.
  • eea1e98 feat(frontend): introduce PageTabsLayout for sticky multi-row tab support and consistent layout handling

Pull the Docker image:

For AMD64 systems:

docker pull --platform linux/amd64 ghcr.io/sgoudelis/ground-station:0.8.25

For ARM64 systems (Raspberry Pi, etc):

docker pull --platform linux/arm64 ghcr.io/sgoudelis/ground-station:0.8.25

Or pull architecture-specific tags directly:

# AMD64
docker pull ghcr.io/sgoudelis/ground-station:0.8.25-amd64

# ARM64
docker pull ghcr.io/sgoudelis/ground-station:0.8.25-arm64

Run the container:

Option 1: With SoapySDR Remote Server Discovery (Recommended)

Uses host networking to enable mDNS discovery of SoapySDR remote servers:

# AMD64
docker run -d \
  --platform linux/amd64 \
  --network host \
  -e GS_HTTP_PORT=7000 \
  --name ground-station \
  --restart unless-stopped \
  --device=/dev/bus/usb \
  --privileged \
  -v /path/to/data:/app/backend/data \
  ghcr.io/sgoudelis/ground-station:0.8.25
# ARM64 (Raspberry Pi, etc)
docker run -d \
  --platform linux/arm64 \
  --network host \
  -e GS_HTTP_PORT=7000 \
  --name ground-station \
  --restart unless-stopped \
  -v /dev:/dev \
  --privileged \
  -v /path/to/data:/app/backend/data \
  ghcr.io/sgoudelis/ground-station:0.8.25

Option 2: Standard Bridge Mode (No SoapySDR Remote Discovery)

Uses standard bridge networking with port mapping:

# AMD64
docker run -d \
  --platform linux/amd64 \
  -p 7000:7000 \
  --name ground-station \
  --restart unless-stopped \
  --device=/dev/bus/usb \
  --privileged \
  -v /path/to/data:/app/backend/data \
  ghcr.io/sgoudelis/ground-station:0.8.25
# ARM64 (Raspberry Pi, etc)
docker run -d \
  --platform linux/arm64 \
  -p 7000:7000 \
  --name ground-station \
  --restart unless-stopped \
  -v /dev:/dev \
  --privileged \
  -v /path/to/data:/app/backend/data \
  ghcr.io/sgoudelis/ground-station:0.8.25

Port selection: In host-network mode, change GS_HTTP_PORT=7000 to your desired HTTP port, such as GS_HTTP_PORT=8080. Docker ignores -p in this mode. In bridge mode, change the host side of -p 7000:7000, such as -p 8080:7000; keep the container side at 7000. The backend remains on 127.0.0.1:7001 inside the container.

Note: Replace /path/to/data with your desired data directory path. For ARM64, using -v /dev:/dev ensures all USB devices are accessible.

After starting the container, access the web interface at http://<YOUR_HOST>:<HTTP_PORT> (7000 by default).

First startup note: On first run, it can take up to ~30 seconds after container startup for the frontend to become available.

You can watch startup progress with:

docker logs -f --tail=100 ground-station

Upgrading an existing container:

# Stop and remove the existing container
docker stop ground-station
docker rm ground-station

# Pull the new version
docker pull ghcr.io/sgoudelis/ground-station:0.8.25

# Run the container again (use the appropriate command above for your architecture and retain your HTTP port choice)

Multi-arch support:

This image supports linux/amd64 and linux/arm64 platforms. Docker will automatically pull the correct architecture for your system.

Full Changelog: v0.8.24...v0.8.25

Don't miss a new ground-station release

NewReleases is sending notifications on new releases.