v0.89.0
Pre-release
Pre-release
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)