UNPKG

signalk-to-stalk

Version:

Signal K server plugin and read-only WebApp converting navigation data to SeaTalk1 with coherent settings, waypoint, units, lights, diagnostics, and calibration advice

178 lines (128 loc) 9.13 kB
# Changelog ## Unreleased ## 2.0.7 - 2026-08-03 ### Fixed - Keep the active waypoint announcement alive by periodically refreshing command `0x82`. - Refresh established passive navigation as a coherent `0x85` followed by `0x82`, preserving waypoint, bearing, cross-track error, distance, and highway pages on SeaTalk instruments. - Retain the last complete navigation calculation while its target remains active so Signal K streams that suppress unchanged values do not cause SeaTalk displays to time out. - Stop retained guidance immediately when Signal K clears or replaces the destination. ## 2.0.6 - 2026-08-03 ### Fixed - Fall back to a correctly flagged true waypoint bearing when magnetic variation is unavailable, restoring waypoint, bearing, XTE, and highway data on affected installations. - Rate-limit `0x85` calculation updates and suppress out-of-range guidance to avoid SeaTalk bus bursts and alarm-like corrupted instrument indications. ## 2.0.5 - 2026-08-02 ### Fixed - Corrected SeaTalk1 `0x85` framing by emitting its required complement byte and complete passive mode-5 navigation data. - Send navigation data before the `0x82` waypoint announcement on target changes, as required by SeaTalk1 receivers. - Suppress malformed partial and clear-state `0x85` frames that could cause random alarms, no-data indications, or corrupted instrument values. - Added a regression vector from real Freeboard Signal K course data. ### Added - Added a read-only ST60 heading-alignment advisor using circular statistics, variation-corrected GPS course, minimum-speed filtering, sample thresholds, and stability reporting. - Added heading-calibration settings, telemetry, WebApp presentation, documentation, and regression coverage. ## 2.0.4 ### Fixed - Announce SeaTalk1 `0x82` immediately when a Signal K destination is selected, without waiting for Course API bearing, distance, or cross-track calculations. - Decouple `0x82` target announcements from `0x85` calculation availability and freshness. - Improve duplicate suppression, waypoint transitions, name upgrades, diagnostics, and regression coverage. ## 2.0.3 - Prevented duplicate waypoint announcements when identical navigation updates arrive from multiple subscriptions. - Corrected the read-only monitor telemetry API paths. ## 2.0.2 - Added complete live indicator coverage for every implemented SeaTalk datagram. - Added latest sentence, bytes, timestamp, and process-count telemetry for each command. - Added a new accessible and maskable Signal K to SeaTalk WebApp icon. - Expanded WebApp and telemetry regression coverage while preserving read-only operation. ## 2.0.1 - Maintenance release aligning Signal K host-contract coverage and package metadata. ## 2.0.0 - Promoted the aligned feature set to the 2.0.0 release target. - Hardened the read-only WebApp against malformed stream events and failed API responses. - Improved monitor accessibility, focus states, mobile wrapping, and compact dashboard spacing. - Closed telemetry stream clients on plugin stop so monitor sessions reconnect cleanly after restarts. - Kept plugin identity, output events, passive waypoint behavior, and strict configuration validation stable. ## 0.8.0 - Aligned settings terminology with the WebApp feature names. - Clarified units and applicability for intervals, data age, calibration thresholds, and managed sources. - Added deterministic settings ordering hints. - Separated WebApp connection state from plugin runtime state. - Reworked the dashboard into configured-feature, runtime-state, calibration, counters, and activity sections. - Added complete calibration configuration and quality context. - Added local event filtering and pause/resume controls without introducing write operations. - Improved responsive layout, accessibility labels, and status wording. ## 0.7.0 - Add read-only calibration advisor and ST60 speed factor suggestion. - Add rolling robust statistics, stability indication, and calibration warnings. - Add WebApp calibration panel and settings schema. ## 0.6.0 ### Breaking configuration cleanup - Removed compatibility with all obsolete saved configuration fields and aliases. - Unknown root and managed-feature properties now fail fast at plugin start. - Removed the obsolete `instrumentUnits.mode` option permanently. - Removed fixed-unit aliases such as `knots`, `mph`, and `kmh`; fixed units accept only `nautical`, `statute`, or `metric`. - Removed `auto` from fixed speed/distance unit selection. Signal K preference discovery is selected exclusively with `source: signalKPreferences`. - A fixed unit source now requires an explicit `speedAndDistance` value. ### WebApp consistency - Added enabled/disabled state for every direct and managed conversion. - Added suppression counts, per-datagram counters, output event, runtime status, history usage, and start time. - Added waypoint bearing reference, refresh interval, maximum input age, and active/waiting/disabled states. - Added unit source, current resolved system, and last transmission time. - Added illumination source/path or fixed level and last transmission time. - Added navigation lifecycle, suppression, and lifecycle records to the live activity table. - Expanded responsive layouts for mobile and chart-table displays. ## 0.5.1 - Reworked the Signal K plugin settings schema so every visible control maps to implemented behavior. - Added clear descriptions, units, ranges, defaults, and human-readable enum labels throughout the settings UI. - Clarified that waypoint output is passive guidance and does not control or engage the autopilot. - Removed non-functional wind, depth, temperature, experimental-mode, and duplicate off controls from the generated UI. - Kept backward compatibility with previously saved unit settings. - Fixed fixed-source unit selection so it no longer consults Signal K preferences. - Added settings-schema and fixed-source regression tests. ## 0.5.0 - 2026-07-19 - Added managed SeaTalk `0x30` display-lamp intensity output for levels L0 through L3. - Added automatic synchronization from a configurable Signal K numeric path. - Added ratio, percentage, direct-level, and automatic brightness formats. - Added fixed configuration source, optional inversion, startup transmission, change detection, duplicate suppression, and rate limiting. - Added display-light state and events to the read-only WebApp and telemetry API. - Added encoder, mapping, manager, schema, and lifecycle tests. ## 0.3.0 - Added managed SeaTalk `0x24` speed-and-distance unit datagram. - Added best-effort synchronization from Signal K active unit preferences and path `displayUnits` metadata. - Added explicit nautical, statute, and metric overrides. - Added startup, change-detection, duplicate suppression, and optional periodic refresh controls. - Added protection against mixed speed/distance preferences that SeaTalk cannot represent coherently. - Added reserved wind, depth, and temperature configuration fields without emitting fabricated measurements. - Added unit encoder, resolver, manager, lifecycle, and schema tests. ## 0.2.0 - 2026-07-19 ### Added - SeaTalk `0x82` target waypoint identifier encoding using the verified Thomas Knauf bit-field layout. - SeaTalk `0x85` navigation-to-waypoint encoding for cross-track error, bearing, distance, direction-to-steer, reference and validity flags. - Target selection, change, route-advance and clear lifecycle management. - Canonical Signal K Course API paths with great-circle and rhumb-line fallbacks. - Configurable true, magnetic or automatic bearing selection. - Magnetic-bearing derivation from true bearing and magnetic variation. - Periodic navigation refresh, stale-data suppression, resource/name fallback and optional clear behavior. - Protocol and lifecycle tests for waypoint guidance. ### Safety - Waypoint guidance remains passive. No autopilot key commands, mode changes or steering engagement are transmitted. ## 0.1.0 - 2026-07-19 ### Fixed - Emit the documented `stalkout` event instead of `seatalkOut`. - Correct command `0x53` angle normalization and bit packing. - Remove accidental global variables and dead imports. - Clear subscriptions safely during stop and restart. - Validate null, non-finite, out-of-range, and unrepresentable values. - Carry rounded `60.00` coordinate minutes into the degree field. - Use the exact metres-per-second to knots conversion. - Add CR/LF sentence termination. ### Added - Per-datagram events named `stalkout:50` through `stalkout:56`. - Signal K plugin status and error reporting. - Unit, protocol-vector, and lifecycle tests. - GitHub Actions testing on supported Node.js versions. ## 0.4.0 - Added a bundled read-only Signal K WebApp for live monitoring. - Added status, recent-event, and Server-Sent Events APIs. - Added bounded telemetry history and per-datagram counters. - Added graphical waypoint, bearing, distance, XTE, and unit-state views. - Added structured emission reasons and source values for managed datagrams. - Added responsive light/dark UI with no autopilot control surface.