Skip to content

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 20:26
032ce54

Release Notes

Changes since v0.1.5.

Added

  • Supervise live RTL-SDR, Airspy, HackRF and Soapy IQ sources: reconnect after failures with a five-second retry delay, stopping and joining the previous reader first.
  • Report source connection, reconnection, failure, completion and shutdown states. Register every configured source before rendering, including quiet MQTT receivers.
  • Add Jet1090-style TUI source indicators (● ○ ↻ ✕), a source-details panel (S), centered contextual controls and top-of-list navigation.
  • Add a warnings/errors window (E), unread-error badge, bounded diagnostic history and grouping of repeated events. Retained diagnostics are printed to stderr after restoring the terminal on quit.
  • Configure fixed-delay reconnect policies for TCP and WebSocket sources through TOML retry settings.
  • Track MQTT connection and reconnection callbacks independently of incoming AIS messages.
  • Add CI checks for isolated feature configurations and regressions covering source shutdown, finite-file CLI behavior, MQTT lifecycle, AIS validation and TUI rendering/navigation.

Fixed

  • Reject zero and out-of-range sender MMSIs in CRC-valid IQ frames. Check numeric bounds before MMSI metadata lookup without filtering on country tables or coordinates.
  • Decode valid AIS messages shorter than 14 bytes, including type-20 coast-station reports with leading-zero identities.
  • Read optional type-20 slot-reservation fields in big-endian order.
  • Stop and join IQ demodulators on shutdown, including idle readers and headless SIGINT/SIGTERM/SIGHUP handling.
  • Propagate IQ read errors, terminate after all finite sources finish, and return failure for missing or truncated recordings.
  • Observe source-task failures and abort timed-out tasks instead of silently detaching them.
  • Reject invalid IQ sample rates and Airspy serials before starting readers.
  • Restore the terminal on finite-source completion and UI failure; allow quit to interrupt Redis retry waits.
  • Keep diagnostics separate from JSON output and TUI stdout. Reject conflicting interactive/verbose/stdout-log combinations and report config/log-file failures with context.
  • Ignore the expected vessels-v2/status MQTT service topic without suppressing malformed AIS payloads or unknown-topic errors.
  • Fix HackRF-only builds and skip RTL-SDR examples when that feature is disabled.
  • Replace the SSH recursion macro with an explicitly boxed recursive call, avoiding Clippy 1.99's generated double_must_use error.

Changed

  • Upgrade Desperado and its RTL-SDR/Airspy/HackRF drivers from the 0.4 series to 0.5.1.
  • Use protocol-specific source configuration types, clearer parsing errors and explicit disabled-feature diagnostics. Unknown TOML source fields are rejected rather than silently ignored.
  • Render TUI snapshots without holding the shared state lock during terminal I/O.
  • Refresh dependencies, including dirs 7, tokio-tungstenite 0.30, ratatui, Redis, Tokio, Clap, serde and thiserror; update GitHub Actions dependencies.
  • Update the transitive spin dependency to 0.9.9, replacing the yanked 0.9.8 package.

Compatibility and known limitations

  • --interactive and --verbose cannot be combined. --log-file - cannot be combined with either mode because stdout belongs to the TUI or JSON stream.
  • Source TOML is validated more strictly. Use retry = { strategy = "fixed", delay_seconds = 5 } for configurable TCP/WebSocket retry delays.
  • IQ file input remains raw CU8 at 288 kHz. Configurable capture metadata/format and WAV-IQ integration are separate follow-ups.
  • MQTT remains Digitraffic-specific: the legacy mqtt string is passed as a client ID, not used to select a custom broker/topic (#65). MQTT still requires a source build with --features mqtt; prebuilt binaries do not include it.
  • Some SDR URI selectors/query settings remain incomplete; prefer explicit TOML device/settings configuration until the shared-source migration.
  • Builds and file/mock-based tests cover the supported targets, but physical USB unplug/replug and hardware current-draw checks were not performed for these changes.

Install ship162 0.2.0

Install prebuilt binaries via shell script

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/xoolive/ship162/releases/download/v0.2.0/ship162-installer.sh | sh

Install prebuilt binaries via powershell script

powershell -ExecutionPolicy Bypass -c "irm https://github.com/xoolive/ship162/releases/download/v0.2.0/ship162-installer.ps1 | iex"

Install prebuilt binaries via Homebrew

brew install xoolive/homebrew/ship162

Download ship162 0.2.0

File Platform Checksum
ship162-aarch64-apple-darwin.tar.xz Apple Silicon macOS checksum
ship162-x86_64-apple-darwin.tar.xz Intel macOS checksum
ship162-x86_64-pc-windows-msvc.zip x64 Windows checksum
ship162-aarch64-unknown-linux-gnu.tar.xz ARM64 Linux checksum
ship162-x86_64-unknown-linux-gnu.tar.xz x64 Linux checksum