Skip to content

Releases: sailingnaturali/signalk-currents

v0.12.0 — national gates + alias-resolved station ids

Choose a tag to compare

@clarkbw clarkbw released this 16 Aug 03:21

Takes the plugin national with station-corrections 2.9.0: Nakwakto Rapids, Quatsino Narrows, Masset Sound and Great Bras d'Or now load from the registry alongside the Salish Sea gates.

Two of them needed a fix to arrive. CHS publishes a station under its own name, which is not always the registry's name — the current file says "Masset Channel" for Masset Sound and "Big Bras D'Or" for Great Bras d'Or. Live-id resolution folded the label only, so both resolved nothing and served no predictions, while the two gates CHS agrees with came up fine. The registry has carried the provider's name as an alias all along; resolution now tries the label first, then the aliases, so an alias can never shadow a gate that matched on its own name.

Requires @sailingnaturali/station-corrections ^2.9.0.

v0.11.2

Choose a tag to compare

@clarkbw clarkbw released this 10 Aug 11:37

Adopts currentGates from station-corrections 2.7.1 in place of the hand-rolled gate filter, so the gate/tide/derived distinction lives in the package that owns the registry rather than being re-derived per consumer. No behaviour change from 0.11.1.

v0.11.1

Choose a tag to compare

@clarkbw clarkbw released this 10 Aug 11:08

Stop treating the shared registry's tide reference ports as current gates. station-corrections 2.3.0 added ten CHS tide ports (kind: 'tide') so a gate can name its companion port; the gate filter predated that field and swept them in, so each threw no live id for <port> on every poll cycle. No served data changes.

v0.11.0

Choose a tag to compare

@clarkbw clarkbw released this 10 Aug 10:57

Fixed

  • Every CHS gate was served twice. effectiveStations deduped on stationId alone, so a
    config written before station-corrections 2.0.0 — which names gates by their provider-minted
    CHS id — never collided with the registry's slug. The same gate appeared as two stations, and
    the stale id resolved no live id either. Such an entry is now re-keyed onto the registry slug,
    landing as the override it was always meant to be, carrying the operator's set directions,
    estimate flags and bins across. Seen live as 39 stations covering 20 gates.

  • NOAA stations fetched every day twice. fetchNoaaEvents passed its exclusive end instant
    straight to a CO-OPS client that formats begin_date/end_date as bare YMD, which the API
    reads inclusively — so each day request pulled that day and its successor, and consecutive
    windows overlapped. Callers concatenating a horizon got duplicate events: Boundary Pass served
    48 events over a 3-day horizon, 16 of them duplicates, surfacing downstream as the same slack
    time listed twice.

Both were invisible from outside the plugin: consumers that key on station label silently
discarded one of each duplicated pair rather than reporting a conflict.

Added

  • App icon (current-flow streamlines) and a simplified web-app card description.

v0.10.0 — serve derived-gate slack timing (Malibu Rapids)

Choose a tag to compare

@clarkbw clarkbw released this 23 Jul 16:38
  • Serve derived gates (Malibu Rapids) to /resources/currents: predict the reference tide port's HW/LW, shift by the lags, publish slack timing with derived: true.
  • Never publishes environment.current for a derived gate (no speed vector); derived gates stay out of the nearest-station path.
  • adaptChsBundle now sorts three record types (currents / tide-harmonic references / derived-slack gates) instead of rejecting the new ones.
  • Requires @sailingnaturali/chs-constituents 0.2.0.

v0.9.3 — plain-language build page

Choose a tag to compare

@clarkbw clarkbw released this 23 Jul 05:18

Clearer offline-build page

Rewrote the offline-build webapp for someone who just installed the plugin: it now leads with what will happen in plain words, keeps the jargon (CHS, licensing) below the fold, and gives a realistic 2–3 hour estimate instead of ~30 minutes (the old number was for a small station set, not the full fetch).

v0.9.2 — fix Currents webapp loading

Choose a tag to compare

@clarkbw clarkbw released this 23 Jul 03:41

Fix: Currents webapp fails to load in the admin UI

The offline-CHS-build page is a standalone static webapp, but was tagged signalk-embeddable-webapp, so the admin UI tried to load it via webpack module federation and errored with "Module _sailingnaturali_signalk_currents is not available." Corrected to the signalk-webapp keyword.

v0.9.1 — harden CHS bundle I/O

Choose a tag to compare

@clarkbw clarkbw released this 23 Jul 01:04

Hardening for the offline CHS build path (0.9.0):

  • Atomic bundle write — the local build now writes to a temp file and renames it into place, so a crash mid-write can't leave a half-written chs-constituents.json.
  • Bundle validation — a malformed built bundle is rejected with a clear error instead of a bare TypeError.
  • Corrupt builds are surfaced — a present-but-unreadable CHS bundle now degrades to NOAA-only and reports the error in the plugin status, instead of silently serving NOAA-only as if nothing were wrong. A genuinely-missing bundle stays a quiet, valid state.

No config or API changes.

v0.9.0 — offline CHS models, no committed CHS data

Choose a tag to compare

@clarkbw clarkbw released this 23 Jul 00:43

Offline Canadian (CHS) current prediction — built locally

The plugin now ships with no Canadian station data. CHS current gates load automatically from the shared @sailingnaturali/station-corrections registry by name, and each gate's live station id is resolved from the CHS IWLS index at runtime — so nothing CHS-copyrighted is bundled with the plugin.

New: build offline CHS models

A "Build offline CHS models" webapp (SignalK → Webapps → Currents) fits harmonic constituents for every CHS current station on your own machine, under your own CHS licence, giving offline Canadian current prediction where CHS gates were previously online-only. Built models stay on your server — Crown copyright, not redistributable, not for navigation.

US (NOAA) offline fallback is unchanged: public-domain constituents remain bundled.

Safety

Constricted gates (rapids, narrows, passes) are tagged unreliableForTransit whenever served from an offline harmonic model — don't time a rapids transit on a harmonic-only reading. Only open straits (Juan de Fuca East, Johnstone Strait Central) are exempt.

New config

  • chsGates (default on) — turn off to skip the CHS registry gates and the IWLS lookup entirely if you cruise outside BC.

Notes

  • CHS live-id resolution needs a network connection on start; offline, CHS gates serve the locally-built harmonic model if you've built one.
  • No breaking config changes — an existing stations list still works and overrides registry gates by id.

v0.8.0

Choose a tag to compare

@clarkbw clarkbw released this 20 Jul 16:41

Added

Four stations join DEFAULT_STATIONS, syncing the plugin to the currents-vault
passage list (the canonical station set, which currents-mcp loads):

  • Johnstone Strait - Central — the WEAK_AND_VARIABLE fix in 0.7.2 was for exactly this station
  • Blackney Passage
  • Weynton Passage
  • First Narrows — replaces Calamity Point: same physical gate (Lions Gate), better-placed CHS station

Vault-only gates previously resolved station ids the /currents payload never
served, so MCP slack windows for them came back empty. With the sync, every gate
the passage database knows resolves out of the box.

Fixed

The requiresLive doc comment claimed the flag was seeded from the currents-mcp
passage list; it is a per-station judgment maintained in defaults.ts.