Skip to content

v0.89.0

Pre-release
Pre-release

Choose a tag to compare

@cameronzucker cameronzucker released this 12 Jul 23:46
2454d7e

0.89.0 (2026-07-12)

Features

  • catalog: aim hero — magnetic/true bearing + offline declination (283ba2f)
  • catalog: BandMatrix — per-band rows (openness dot + VOACAP bar + dial chips) (b87d2c7)
  • catalog: live-openness dots on HF band chips (289d95c)
  • catalog: StationRail Station|Live decodes tabs + LiveDecodesTab (5b52268)
  • config: additive WwvOffairConfig (948fe7f)
  • finder: peers as map diamonds that PREFILL the modem — never dial from the finder (efed5eb)
  • finder: wire internet SFI refresh + mount WWV control in Station Intelligence (d7ca0fa)
  • ft8: DeviceReservation — listener-priority acquire over in-flight meter reads (80aa809)
  • ft8: emit listening:change on set_device + hoi1 two-face guards on all ft8 writers (6b56f18)
  • ft8: ft8_cat_probe read-only dial probe (refuses during modem sessions) (7b2c3c7)
  • ft8: ft8_device_meter + ft8_list_devices commands (20b86b3)
  • ft8: ft8_set_sweep_bands command (validated, RMW, emits change) + Ft8CmdError (33d0cc3)
  • ft8ui: BandSubsetPopover — sweep band selection gated on CAT (89a6fa2)
  • ft8ui: close the six gaps a full-feature reachability audit found (53683c7)
  • ft8ui: DecodeFeed (capped) + map layer-control housing (Gateways only) (2548117)
  • ft8ui: deriveBandActivity + stripStats (evidence-only, provenance-gated) (5b26665)
  • ft8ui: deriveUiState total mapping over ServiceAxis (9-member union) (782d18a)
  • ft8ui: Ft8SetupSurface device-picker + live meter + meter/start handover (0283a8d)
  • ft8ui: Ft8SetupSurface Step 2 — rig control + Test CAT + CTA (2ff260c)
  • ft8ui: LiveBandStrip — collapsible strip composing waterfall/decodes/popover (1ee37e5)
  • ft8ui: Phase D1 — mount the FT-8 surfaces the panel never got (8f6b0b3)
  • ft8ui: useFt8Listener hook + ft8Types.ts (race-safe hydration, generation-gated) (ab77bf1)
  • ft8ui: Waterfall.tsx — Canvas2D FFT renderer with gap markers (0ac7114)
  • ft8ui: wire useFt8Listener to the real deriveUiState + deriveBandActivity (36e1015)
  • ft8: waterfall FFT consumer thread + token-counted subscriptions (3765bf3)
  • geomag: offline magnetic_declination command (WMM2025, NOAA-vector tested) (694d752)
  • shell: FT-8 ambient badge in DashboardRibbon + Ft8ListenerProvider mount (6e71a92)
  • stt: 16kHz mono f32 WAV loader (56ec2a6)
  • stt: noise-rejection confidence gate (d00d777)
  • stt: scaffold tuxlink-stt crate — DecodeMode, SttResult, SttError (8a3a3c9)
  • stt: WhisperStt model wrapper + transcribe with vocabulary biasing (35f9115)
  • wwv: backend for low-SNR clip playback, manual entry, manual-tune fallback (62d90b1)
  • wwv: capture_cycle rig orchestration with serial-sequencing branch (218b4f8)
  • wwv: CaptureSource trait + arecord capture (20e6105)
  • wwv: frontend invoke bindings + useWwvOffair hook (5447a95)
  • wwv: low-SNR clip player + manual entry + manual-tune prompt + styling (e0220dc)
  • wwv: nearest-window scheduler (WWV :18 / WWVH :45) (afd54dd)
  • wwv: off-air refresh + snapshot Tauri commands, model resolution, ingest (b6b98b0)
  • wwv: Refresh off-air control mounted in station-finder actions row (0d50369)
  • wwv: register wwv_offair_refresh + wwv_offair_snapshot_read commands (0cac962)
  • wwv: setup-time STT model fetch script + off-air space-weather guide page (2830d35)
  • wwv: spoken-number normalizer for STT output (f1577f2)
  • wwv: time-of-day WWV frequency selection (97bc28d)
  • wwv: window scheduling (:18/:45) + arm/cancel + no-copy retry-once (0ba2428)

Bug Fixes

  • config: add wwv_offair: None to all full Config literals (E0063) (264f8c0)
  • config: borrow instead of move in wwv_offair round-trip test (E0382) (c76875a)
  • contacts: make suggestion rows clickable — clicking a correspondent opened nothing (tuxlink-wxtas) (d3fd434)
  • ft8: clear two CI clippy/compile errors from Phase A (unused import, E0716) (07b6f07)
  • ft8: map ft8_set_sweep_bands infra failures to internal-error, not invalid-band (a09b783)
  • ft8: meter preempts on listener priority so the listener always wins cleanly (754e12e)
  • ft8: normalize waterfall FFT magnitude so strong signals don't saturate to 255 (de97e4b)
  • ft8ui: correct waterfall gap-marker slack to a genuine 2x cadence margin (ed1213d)
  • ft8ui: enforce the 10-min openness window so stale bands revert to no-data (63cb0ae)
  • ft8ui: interpolate active modem mode into BandSubsetPopover modem-busy copy (59b3e5b)
  • mcp: bundle tuxlink-mcp shim in release + ECT packages (b781af4)
  • wwv: adversarial-review correctness wave (rig restore, default device, timing, silence) (7296197)
  • wwv: Codex adversarial findings on the completion (clip security + validation) (d33e104)
  • wwv: guard useWwvOffair setState against unmount during in-flight capture (17ab76d)
  • wwv: snake_case test name (clippy non_snake_case) (a145cf2)

Refactors

  • catalog: rename Find-a-Station -> Station Intelligence (user strings) (c34990f)
  • ft8: nearest_band delegates to bands::band_for_dial (single tolerance source) (b443adb)
  • propagation: add apply_rf_solar_indices(source) seam for off-air WWV (c775855)
  • wwv: remove dead backend scheduler; guard normalizer shorthand (628774d)