Skip to content

Releases: openwatersio/slackwater

@slackwater/engine@1.0.0-beta.7

Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Oct 15:38
27d66ed

Minor Changes

  • #435 212f15e Thanks @clarkbw! - Add chsCurrentFit and projectChsCurrent, the recipe every Slackwater client uses to fit a Canadian Hydrographic Service current gate: IWLS wcsp1 speed and wcdp1 direction projected onto the gate's flood axis, fitted with fit(samples, chsCurrentFit.basis) over one of chsCurrentFit.days. SlackwaterKit and the Kotlin engine export the same as ChsCurrentFit, and the Kotlin engine adds HarmonicSample.

  • #429 4a061eb Thanks @clarkbw! - Add chsTideFit, the recipe every Slackwater client uses to fit a Canadian Hydrographic Service tide port: fit(samples, chsTideFit.basis) over chsTideFit.days of IWLS wlp predictions on a chsTideFit.sampleMinutes grid. SlackwaterKit and the Kotlin engine export the same values as ChsTideFit.

  • #448 9a1c16b Thanks @clarkbw! - A harmonic station's tide extremes and current maxima no longer depend on the window asked for: once windows are widened to whole 10-minute steps, the extremes of any window are exactly the extremes of a longer window that fall inside it. Each UTC day is searched from its own midnight, and each extreme is kept by its persistence, judged from the turning points around it (up to 32 days away at micro-tidal stations) rather than from the window's edges. Highs and lows now alternate at every station in the database over 2025–2026. A threshold of zero returns every turning point, unfiltered. Turning points move by up to about half a second, and 84 of 6,135 stations report a few more or fewer extremes in a year. The Swift and Kotlin engines change the same way.

    Node corrections now follow a timeline whose steps are longer than a day. They had fallen one day further behind with each such step, so a year of two-day steps ended with node factors about six months old. TypeScript and Swift now match Kotlin here.

  • #448 246cf14 Thanks @clarkbw! - Eight constituents with no numerical Doodson number in the IHO list (3(SM)N2, (SK)K5, 5MSN10, 4M2SN10, 3N2MS12, MA12, 4ML12 and 5MSN12) now take their equilibrium argument from IHO's alphabetical code, except that 3N2MS12 follows its listed speed where its code disagrees. Their phases had advanced at a different rate from their listed speeds, so a prediction using them depended on when it started. fit now accepts 3(SM)N2, (SK)K5, 4ML12 and 5MSN12, which it rejected as rankDeficient for want of an equilibrium argument. No station in the database uses any of the eight.

Patch Changes

  • #449 6ee44d4 Thanks @clarkbw! - A tide turn that falls on 00:00 UTC is no longer lost. Each UTC day's search used its own parameters at midnight, so a turn that the two days' parameters placed a second apart on either side of midnight changed sign in neither day; the filter then dropped the opposite turn next to it as well, and a real high and low disappeared together. Each day's first bracket now opens on the previous day's slope at midnight, so the turn is found once. The Swift and Kotlin engines change the same way.

@slackwater/cli@1.0.0-beta.4

Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Oct 15:38
27d66ed

Minor Changes

  • #391 2b1711b Thanks @bkeepers! - Add tidal currents with slackwater currents. currents (or currents events) shows slack water, max flood, and max ebb with speed in knots and direction in degrees true; currents timeline shows speed over time; currents slack --threshold <knots> shows the windows around each turn when the current runs below that speed; and currents stations searches current stations by name or location. Pick a station with --station, --near, or --ip. A bare station ID is the primary depth bin and @N selects bin N (noaa/EPT0003@11); an unknown bin lists the bins that exist. Canadian Hydrographic Service stations, whose terms don't allow redistributing their predictions, and stations with no model fail with the reason. --format json for currents events and currents timeline returns the same shape as the matching @slackwater/api endpoints.

    stations --all now lists every match with --near or a query, instead of stopping at 10 or 20, and stations <query> --near ranks every station matching the query by distance instead of only the top 20 text matches. --limit must be a positive whole number.

slackwater@1.0.0-beta.3

Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Oct 19:51
18c0a7b

Minor Changes

  • #347 d5f2c5e Thanks @bkeepers! - Add tidal current prediction: harmonic current stations (createCurrentPredictor, useCurrentStation), NOAA subordinate reductions (createSubordinateCurrentPredictor), slack/max flood/max ebb events, signed speed timelines in knots, and the slackWindows helper. The slackwater package gains getCurrentEventsPrediction, getCurrentTimelinePrediction, nearestCurrentStation, currentStationsNear, findCurrentStation, currentStationUnavailable, and parseCurrentBin. Location lookups skip secondary depth bins and stations that can't be predicted, such as Canadian Hydrographic Service stations. Flood and ebb directions are optional, and events leave out a direction the station doesn't publish.

Patch Changes

@slackwater/react@1.0.0-beta.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Oct 19:51
18c0a7b

Patch Changes

@slackwater/engine@1.0.0-beta.6

Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Oct 19:51
18c0a7b

Minor Changes

  • #347 d5f2c5e Thanks @bkeepers! - Add tidal current prediction: harmonic current stations (createCurrentPredictor, useCurrentStation), NOAA subordinate reductions (createSubordinateCurrentPredictor), slack/max flood/max ebb events, signed speed timelines in knots, and the slackWindows helper. The slackwater package gains getCurrentEventsPrediction, getCurrentTimelinePrediction, nearestCurrentStation, currentStationsNear, findCurrentStation, currentStationUnavailable, and parseCurrentBin. Location lookups skip secondary depth bins and stations that can't be predicted, such as Canadian Hydrographic Service stations. Flood and ebb directions are optional, and events leave out a direction the station doesn't publish.

Patch Changes

@slackwater/cli@1.0.0-beta.3

Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Oct 19:51
18c0a7b

Patch Changes

@slackwater/cli@1.0.0-beta.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Oct 16:23
7014c86

Patch Changes

  • #384 683a3e6 Thanks @bkeepers! - The standalone slackwater binaries start up again. They crashed on launch with TypeError: Invalid URL because the station database could not be found inside the binary.

@slackwater/api@1.0.0-beta.3

Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Oct 19:51
18c0a7b

Minor Changes

  • #386 20a2a34 Thanks @bkeepers! - Serve tidal current predictions as a sibling route group at /currents (set with createApp({ currentsPrefix }), or mount createCurrentRoutes() yourself): events and timeline near a location, stations search, and per-station events and timeline, with their own OpenAPI document. createRoutes() still returns only the tide routes, at the same paths. Speeds are signed knots along the flood axis, and events are slack, maxFlood, or maxEbb with flood and ebb directions. A station ID with no bin is the primary bin and @N selects bin N (noaa/EPT0003@11). Listings show each station once with its bins. Canadian Hydrographic Service stations are listed but flagged, because CHS terms don't allow its predictions to be redistributed, and their prediction endpoints return 451. The location endpoints refuse the same way when the nearest station is a CHS station, instead of answering for a station farther away. createApp throws if currentsPrefix equals or contains prefix. Prediction spans are limited to 366 days.

    Station search by query now honors maxResults above 20, and a repeated query parameter returns 400, on both /stations and /currents/stations. /extremes and /timeline skip tide stations with no harmonic constituents or offsets (the CHS ports), which returned no extremes and a flat zero timeline.

Patch Changes

@slackwater/engine@1.0.0-beta.5

Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Oct 22:44
18c6f46

Patch Changes

  • #374 ac0f9e0 Thanks @clarkbw! - Locate each extreme with Illinois regula falsi instead of bisection. It needs about 4 evaluations per extreme instead of 12, which makes long extremes searches about 20% faster, and it places extremes closer to the true turn.

@slackwater/engine@1.0.0-beta.4

Pre-release

Choose a tag to compare

@github-actions github-actions released this 07 Oct 17:04
2bc70d0

Patch Changes

  • #373 b70f1c6 Thanks @clarkbw! - Filter spurious extremes with a heap instead of rescanning the list after every removal, so a multi-year search over a station with many small turns no longer slows quadratically.

  • #373 8faa6a8 Thanks @clarkbw! - Find extremes without building the prediction timeline, so a 19-year extremes search no longer allocates a million unused timestamps.