<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Open Waters: Tides &amp; Currents releases</title>
    <link>https://openwaters.io/updates/tides/releases/</link>
    <atom:link href="https://openwaters.io/updates/tides/releases/rss.xml" rel="self" type="application/rss+xml" />
    <description>New releases from Tides &amp; Currents.</description>
    <language>en</language>
    <item>
      <title>Is available on the App Store (Slackwater for iOS 1.14.0)</title>
      <link>https://openwaters.io/updates/slackwater-for-ios-1-14-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-for-ios-1-14-0/</guid>
      <pubDate>Wed, 14 Oct 2026 19:48:18 GMT</pubDate>
      <category>Release</category>
      <description>&lt;p&gt;Welcome to the first release of Slackwater, the tides &amp;amp; currents app that works offline where you need it — on the water, at the beach, in the anchorage. View past, present, and future predictions at thousands of stations worldwide, already on your phone.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tide and current predictions on a timeline you can scrub, with sun, Moon, and eclipse events alongside.&lt;/li&gt;
&lt;li&gt;A station map and search, and nearby tide and current stations on every station page.&lt;/li&gt;
&lt;li&gt;Canadian tides and currents from CHS, downloaded for offline use.&lt;/li&gt;
&lt;li&gt;Home-screen widgets for the next event and today&amp;#39;s tide curve.&lt;/li&gt;
&lt;li&gt;An Apple Watch app with tide and current complications, scrubbed with the Digital Crown.&lt;/li&gt;
&lt;li&gt;Calendar and notification alerts for slack windows, tides, and eclipses.&lt;/li&gt;
&lt;li&gt;Ask Siri for the next high tide, low tide, or slack window.&lt;/li&gt;
&lt;li&gt;Available in 14 languages.&lt;/li&gt;
&lt;li&gt;Slackwater Premium is an optional purchase; the offline core is free and stays free.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://apps.apple.com/app/id6813654837&quot;&gt;Slackwater on the App Store&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Tide widget for chart plotters (Signal K tides plugin 2.2.0)</title>
      <link>https://openwaters.io/updates/signal-k-tides-plugin-2-2-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/signal-k-tides-plugin-2-2-0/</guid>
      <pubDate>Fri, 02 Oct 2026 17:34:17 GMT</pubDate>
      <category>Release</category>
      <description>&lt;h2&gt;New Features&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;feat: offer a tide widget to chart plotters (&lt;a href=&quot;https://github.com/openwatersio/signalk-tides/pull/139&quot;&gt;#139&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Maintenance&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Group vitest and @vitest/* Dependabot updates (&lt;a href=&quot;https://github.com/openwatersio/signalk-tides/pull/137&quot;&gt;#137&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Permanent station slugs, Alaska panhandle gauges, and Dutch tide fits (Slackwater database 0.10.20260924)</title>
      <link>https://openwaters.io/updates/slackwater-database-0-10-20260924/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-10-20260924/</guid>
      <pubDate>Thu, 24 Sep 2026 15:48:44 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Publish the Alaska panhandle&amp;#39;s NOAA gauges in Alaska (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/177&quot;&gt;#177&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Re-import NOAA stations after the state fix (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/178&quot;&gt;#178&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Exit non-zero when the NOAA importer or LAT/HAT scripts crash (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/180&quot;&gt;#180&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fit Rijkswaterstaat tide heights with harmonics (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/182&quot;&gt;#182&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove numeric subdivision codes from station locations (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/183&quot;&gt;#183&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Distinguish nearby stations that share a name (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/186&quot;&gt;#186&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Keep a published slug for good, record every move as a redirect, and merge the ten BC pairs (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/189&quot;&gt;#189&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Keep a published bare slug through a name collision (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/190&quot;&gt;#190&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Publish the database rewrite as 0.10 (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/193&quot;&gt;#193&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Swift package by URL and cleaner station names (Slackwater database 0.9.20260923)</title>
      <link>https://openwaters.io/updates/slackwater-database-0-9-20260923/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-9-20260923/</guid>
      <pubDate>Wed, 23 Sep 2026 05:25:54 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Let Swift apps depend on the tide database by URL (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/162&quot;&gt;#162&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Evaluate Kartverket tide-height coverage for Norway (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/163&quot;&gt;#163&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Refresh UHSLC research-quality datums from live RQD (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/140&quot;&gt;#140&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Stop station name cleanup damaging brackets, possessives and Mc names (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/166&quot;&gt;#166&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Read a subordinate station&amp;#39;s tidal range without resolving its reference yourself (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/169&quot;&gt;#169&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix capitalized station names and repeated state codes (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/171&quot;&gt;#171&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Label cross-border gauges by location instead of publisher (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/173&quot;&gt;#173&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Prototype Rijkswaterstaat tide prediction data (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/172&quot;&gt;#172&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Move NOAA current ingestion into the tide database (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/175&quot;&gt;#175&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>One-file database with a Swift reader and current stations (Slackwater database 0.9.20260921)</title>
      <link>https://openwaters.io/updates/slackwater-database-0-9-20260921/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-9-20260921/</guid>
      <pubDate>Mon, 21 Sep 2026 18:35:48 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Stop loading baltic-sea.geo.json as a phantom station (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/128&quot;&gt;#128&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Package the database as a single FlatBuffers file (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/123&quot;&gt;#123&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix mise npm version for installs (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/137&quot;&gt;#137&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Reorganize the repo into workspace packages (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/130&quot;&gt;#130&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Swift package for reading the database (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/129&quot;&gt;#129&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Unify tide and current station metadata (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/131&quot;&gt;#131&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Include current stations in the XTide tide database (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/143&quot;&gt;#143&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Place stations by the bay or strait they sit in (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/145&quot;&gt;#145&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Credit TICON-4&amp;#39;s authors and state what we change (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/158&quot;&gt;#158&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Document Rijkswaterstaat tide coverage and offline format (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/156&quot;&gt;#156&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Give every station a ready-to-display attribution (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/159&quot;&gt;#159&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Ship a single tide file instead of separate metric and imperial ones (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/147&quot;&gt;#147&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Nearby stations on every station page, and how the Moon shapes tides (Slackwater for iOS 1.13.0)</title>
      <link>https://openwaters.io/updates/slackwater-for-ios-1-13-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-for-ios-1-13-0/</guid>
      <pubDate>Mon, 14 Sep 2026 04:06:28 GMT</pubDate>
      <category>Release</category>
      <description>&lt;p&gt;Find nearby places from any detail page, and see how the Moon can shape the tides.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Each station page now lists nearby tide and current stations with a map, so you can move between places without returning to search.&lt;/li&gt;
&lt;li&gt;The Moon sheet explains spring and neap tides and how the Moon&amp;#39;s distance can affect tidal range. Phase shortcuts take you to the relevant night sky.&lt;/li&gt;
&lt;li&gt;Search shows where same-name stations are and remembers the place you selected. Results use more space on iPad.&lt;/li&gt;
&lt;li&gt;First launch offers ready Chesapeake Bay stations and a clearer location choice.&lt;/li&gt;
&lt;li&gt;Canadian tide and current downloads recover better from slow or interrupted connections, and downloaded currents appear in widgets.&lt;/li&gt;
&lt;li&gt;The Now button returns the schedule to the current week. Current pages show station details consistently.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Nearest tide and current stations, an endless timeline, and sharing (Slackwater for iOS 1.12.0)</title>
      <link>https://openwaters.io/updates/slackwater-for-ios-1-12-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-for-ios-1-12-0/</guid>
      <pubDate>Sat, 12 Sep 2026 04:11:00 GMT</pubDate>
      <category>Release</category>
      <description>&lt;p&gt;Finding the right station, a timeline that doesn&amp;#39;t end, and sharing the moment you&amp;#39;re looking at.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;My Location shows two cards — the nearest tide station and the nearest current station — and Near Me and search share All/Tides/Currents filter chips. Every tide detail links to the nearest current station and back again, with the distance in the label.&lt;/li&gt;
&lt;li&gt;The detail timeline scrolls without end in both directions. Tapping anywhere on it brings that moment to the centerline; a sunrise or sunset scrubs to itself, and the date opens the week picker.&lt;/li&gt;
&lt;li&gt;A share button sits beside the star on every detail page. It sends a slackwater.xyz link, carrying the instant you scrubbed to rather than making the receiver find it again.&lt;/li&gt;
&lt;li&gt;The commentary pill names sunrise or sunset whenever it comes before the next high, low or slack — and taps through to it like any other stop.&lt;/li&gt;
&lt;li&gt;The Moon sheet is drawn instead of tabulated: rise and set on a horizon, next full and next new as the discs they name, the orbit under the distance readout, and each eclipse row drawing its own eclipse.&lt;/li&gt;
&lt;li&gt;Shape-only gates such as Malibu Rapids now use the same curve language as measured currents without implying a speed, slack windows read cleanly against the curve, and the card and widget direction arrows match the detail page.&lt;/li&gt;
&lt;li&gt;The schedule collapses to one day at a time, Recents use the same cards as the rest of the list, day labels sit at the middle of daylight rather than clock noon, and the lead readout carries the date while you scrub through the night.&lt;/li&gt;
&lt;li&gt;The station list renders before the catalogs finish decoding, so the first frame arrives sooner.&lt;/li&gt;
&lt;li&gt;Fixes: a My Location card opens the station you tapped, not its neighbour; the location refreshes when the app comes back from the background instead of only on a cold launch.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>LAT and HAT for NOAA stations that don't publish them (Slackwater database 0.9.20260907)</title>
      <link>https://openwaters.io/updates/slackwater-database-0-9-20260907/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-9-20260907/</guid>
      <pubDate>Mon, 07 Sep 2026 23:07:51 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Synthesize LAT and HAT where NOAA publishes neither (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/126&quot;&gt;#126&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>CHS constituents 0.3.1</title>
      <link>https://openwaters.io/updates/chs-constituents-0-3-1/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/chs-constituents-0-3-1/</guid>
      <pubDate>Sun, 06 Sep 2026 15:03:41 GMT</pubDate>
      <category>Release</category>
      <description>&lt;p&gt;No behavior change.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;0.3.0&lt;/code&gt; was published by hand to bootstrap &lt;code&gt;@openwaters/chs-constituents&lt;/code&gt;, since npm cannot configure a trusted publisher for a package that does not exist yet. This release is the first to go out through &lt;code&gt;publish.yml&lt;/code&gt; over OIDC, with provenance attached.&lt;/p&gt;
&lt;p&gt;The package moved from &lt;code&gt;@sailingnaturali/chs-constituents&lt;/code&gt; in #13, along with its shared registry dependency, now &lt;code&gt;@openwaters/station-metadata&lt;/code&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.9.20260901</title>
      <link>https://openwaters.io/updates/slackwater-database-0-9-20260901/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-9-20260901/</guid>
      <pubDate>Tue, 01 Sep 2026 11:22:06 GMT</pubDate>
      <category>Release</category>
      <description>&lt;p&gt;Chores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ci: cache GeoNames data to avoid re-downloading in tests (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/117&quot;&gt;#117&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>CHS constituents 0.2.2</title>
      <link>https://openwaters.io/updates/chs-constituents-0-2-2/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/chs-constituents-0-2-2/</guid>
      <pubDate>Sat, 29 Aug 2026 03:26:58 GMT</pubDate>
      <category>Release</category>
      <description>&lt;p&gt;Move repository ownership to Open Waters while retaining the &lt;code&gt;@sailingnaturali/chs-constituents&lt;/code&gt; package identity. Add automated checks that keep CHS-derived output and provider station IDs out of Git and npm packages.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>CHS constituents 0.2.1</title>
      <link>https://openwaters.io/updates/chs-constituents-0-2-1/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/chs-constituents-0-2-1/</guid>
      <pubDate>Mon, 10 Aug 2026 11:36:34 GMT</pubDate>
      <category>Release</category>
      <description>&lt;p&gt;Stops warning that the derived Malibu gate drifted from a live IWLS station it can never have — CHS publishes none, which is why it is derived. Adopts &lt;code&gt;currentGates&lt;/code&gt; from station-corrections 2.7.1 instead of re-deriving the gate/tide/derived split locally.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>ESM-only packages, lower memory use, and edge runtime support (Neaps 0.8.0)</title>
      <link>https://openwaters.io/updates/neaps-0-8-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-0-8-0/</guid>
      <pubDate>Tue, 28 Jul 2026 23:45:05 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Drop the CommonJS builds; all neaps packages are now ESM-only. The CJS entries
can&amp;#39;t survive their dependencies going ESM-only, since they load them with
&lt;code&gt;require()&lt;/code&gt;. CommonJS consumers on Node 20.19+ / 22.12+ can still &lt;code&gt;require()&lt;/code&gt;
these packages via Node&amp;#39;s &lt;code&gt;require(esm)&lt;/code&gt; support. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/301&quot;&gt;#301&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update @neaps/tide-database to 0.9. Station prediction data now lives in an
off-heap pack file read per station instead of being parsed into the JS heap
at import, dropping baseline heap usage from ~118 MB to ~36 MB. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/303&quot;&gt;#303&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make the API runnable on edge runtimes (e.g. Cloudflare Workers). (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/293&quot;&gt;#293&lt;/a&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Replace the runtime &lt;code&gt;express-openapi-validator&lt;/code&gt; with lightweight request
validation/coercion in &lt;code&gt;validate.ts&lt;/code&gt;. The validator relies on Ajv codegen
(&lt;code&gt;new Function&lt;/code&gt;), which edge runtimes disallow. It&amp;#39;s now a dev dependency
mounted in the test suite, so requests and responses are still validated
against the OpenAPI spec — keeping the runtime validators in alignment with it.&lt;/li&gt;
&lt;li&gt;Add a &lt;code&gt;compress&lt;/code&gt; option to &lt;code&gt;createApp&lt;/code&gt; (default &lt;code&gt;true&lt;/code&gt;). The &lt;code&gt;compression()&lt;/code&gt;
middleware corrupts responses through the &lt;code&gt;node:http&lt;/code&gt; bridge on Workers, which
compress at the edge anyway — pass &lt;code&gt;createApp({ compress: false })&lt;/code&gt; there.&lt;/li&gt;
&lt;li&gt;Declare &lt;code&gt;@neaps/tide-database&lt;/code&gt; as a direct dependency so it&amp;#39;s externalized
from the build instead of bundled. Shrinks the published &lt;code&gt;dist&lt;/code&gt; from ~30 MB to
~20 KB and avoids the station database being bundled twice by downstream
bundlers.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add &lt;code&gt;s-maxage&lt;/code&gt; to the &lt;code&gt;Cache-Control&lt;/code&gt; header so CDNs and edge caches (e.g. Vercel, Cloudflare) cache responses, not just browsers. Uses the same TTL as &lt;code&gt;max-age&lt;/code&gt; (&lt;code&gt;NEAPS_API_MAX_AGE&lt;/code&gt;, default 3600). (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/292&quot;&gt;#292&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Station data read per record from a pack file (Slackwater database 0.9.20260728)</title>
      <link>https://openwaters.io/updates/slackwater-database-0-9-20260728/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-9-20260728/</guid>
      <pubDate>Tue, 28 Jul 2026 17:35:15 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Require matching offsets to merge subordinate stations (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/114&quot;&gt;#114&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Store prediction data in a pack file read per record; node + browser builds (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/103&quot;&gt;#103&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Reference-tide fits + derived-slack gates (CHS constituents 0.2.0)</title>
      <link>https://openwaters.io/updates/chs-constituents-0-2-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/chs-constituents-0-2-0/</guid>
      <pubDate>Thu, 23 Jul 2026 16:37:17 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;code&gt;fitTideStation&lt;/code&gt;: fetch a reference tide port&amp;#39;s &lt;code&gt;wlp&lt;/code&gt;, decimate to 15 min, fit the standard harmonic basis → a &lt;code&gt;tide-harmonic&lt;/code&gt; record (no flood/ebb axis).&lt;/li&gt;
&lt;li&gt;Emit &lt;code&gt;derived-slack&lt;/code&gt; gate records from the station registry&amp;#39;s &lt;code&gt;derived&lt;/code&gt; block (&lt;code&gt;derivedGates&lt;/code&gt;, &lt;code&gt;derivedSlackRecord&lt;/code&gt;): reference port + HW/LW lags, no constituents. &lt;code&gt;buildBundle&lt;/code&gt; fits each derived gate&amp;#39;s reference port once and appends both records.&lt;/li&gt;
&lt;li&gt;Point Atkinson fits to RMS 0.075 m; HW/LW timing within ~6 min of CHS out-of-sample.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FittedStation.type&lt;/code&gt; widened to &lt;code&gt;&amp;quot;harmonic&amp;quot; | &amp;quot;tide-harmonic&amp;quot;&lt;/code&gt;; &lt;code&gt;floodDirection&lt;/code&gt;/&lt;code&gt;ebbDirection&lt;/code&gt; now optional (absent on a tide fit).&lt;/li&gt;
&lt;li&gt;chs-derived output stays gitignored — not for redistribution.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>CHS constituents 0.1.2</title>
      <link>https://openwaters.io/updates/chs-constituents-0-1-2/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/chs-constituents-0-1-2/</guid>
      <pubDate>Thu, 23 Jul 2026 04:08:31 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Skip station-corrections &lt;code&gt;kind: tide&lt;/code&gt; reference ports in the registry overlay (they have no current series; they read as false name-drift warnings)&lt;/li&gt;
&lt;li&gt;Record dropped stations in a &lt;code&gt;skipped[]&lt;/code&gt; array in the bundle (label, key, reason) so coverage is auditable from the output alone&lt;/li&gt;
&lt;li&gt;New &lt;code&gt;--user-agent&lt;/code&gt; CLI flag; the default UA stays an honest &lt;code&gt;chs-constituents/1.0&lt;/code&gt; (see README)&lt;/li&gt;
&lt;li&gt;station-corrections dependency raised to ^2.2.0&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Build progress station counter (CHS constituents 0.1.1)</title>
      <link>https://openwaters.io/updates/chs-constituents-0-1-1/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/chs-constituents-0-1-1/</guid>
      <pubDate>Thu, 23 Jul 2026 03:52:13 GMT</pubDate>
      <category>Release</category>
      <description>&lt;p&gt;&lt;strong&gt;Build progress now shows a station counter&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The offline-build webapp displayed only the current station name, so a long-running build looked like it might be stuck. Progress lines are now prefixed &lt;code&gt;[12/240]&lt;/code&gt;.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Chart datums by country, and the Baltic split by region (Slackwater database 0.8.20260722)</title>
      <link>https://openwaters.io/updates/slackwater-database-0-8-20260722/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-8-20260722/</guid>
      <pubDate>Wed, 22 Jul 2026 14:03:37 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Per-country chart datums (LLWLT/NLLW/ALLW/TLT/MLWS) + Baltic split (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/110&quot;&gt;#110&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Dedup same-gauge records and gate Null Island coordinates (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/113&quot;&gt;#113&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Dutch tide phases corrected for daylight saving time (Slackwater database 0.8.20260719)</title>
      <link>https://openwaters.io/updates/slackwater-database-0-8-20260719/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-8-20260719/</guid>
      <pubDate>Sun, 19 Jul 2026 19:50:59 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Re-reference RWS harmonic phases to UTC (DST fix) (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/107&quot;&gt;#107&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Re-evaluate quality.json after NOAA station update (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/109&quot;&gt;#109&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add seasonal-contamination QC gate (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/108&quot;&gt;#108&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Signal K tides plugin 2.1.2</title>
      <link>https://openwaters.io/updates/signal-k-tides-plugin-2-1-2/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/signal-k-tides-plugin-2-1-2/</guid>
      <pubDate>Wed, 08 Jul 2026 16:26:20 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Fix station selector on mobile (&lt;a href=&quot;https://github.com/openwatersio/signalk-tides/pull/99&quot;&gt;#99&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Signal K tides plugin 2.1.1</title>
      <link>https://openwaters.io/updates/signal-k-tides-plugin-2-1-1/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/signal-k-tides-plugin-2-1-1/</guid>
      <pubDate>Wed, 08 Jul 2026 12:06:07 GMT</pubDate>
      <category>Release</category>
      <description>&lt;p&gt;No changes, just a fix for a bad v2.1.0 release.&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Signal K tides plugin 2.1.0</title>
      <link>https://openwaters.io/updates/signal-k-tides-plugin-2-1-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/signal-k-tides-plugin-2-1-0/</guid>
      <pubDate>Tue, 07 Jul 2026 16:15:55 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Bump @neaps/react to 0.1.1 for responsive TideStation fixes (&lt;a href=&quot;https://github.com/openwatersio/signalk-tides/pull/92&quot;&gt;#92&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Upgrade to Express 5 (&lt;a href=&quot;https://github.com/openwatersio/signalk-tides/pull/93&quot;&gt;#93&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>@neaps/cli 0.1.3, @neaps/react 0.1.1, @neaps/api 0.6.0</title>
      <link>https://openwaters.io/updates/neaps-cli-0-1-3/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-cli-0-1-3/</guid>
      <pubDate>Tue, 07 Jul 2026 14:54:49 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;TideStation&amp;gt;&lt;/code&gt; no longer collapses into the tabbed layout based on width alone. Narrow content-sized containers (like phones in portrait) now keep the stacked continuous-scroll view; tabs only appear when an ancestor constrains the height below 500px and the stacked content overflows (e.g. a fixed-size dashboard widget). The tab bar collapses into a dropdown based on height (below 260px) instead of width. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/286&quot;&gt;#286&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Update &lt;code&gt;express&lt;/code&gt; to v5. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/285&quot;&gt;#285&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Signal K tides plugin 2.0.0</title>
      <link>https://openwaters.io/updates/signal-k-tides-plugin-2-0-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/signal-k-tides-plugin-2-0-0/</guid>
      <pubDate>Tue, 30 Jun 2026 16:18:28 GMT</pubDate>
      <category>Release</category>
      <description>&lt;p&gt;I&amp;#39;m excited to share a major update to the Signal K Tides plugin, which has been completely rebuilt around &lt;strong&gt;&lt;a href=&quot;https://github.com/openwatersio/neaps&quot;&gt;neaps&lt;/a&gt;&lt;/strong&gt; for fully offline global tide predictions…no network dependency, no API keys.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://openwaters.io/_astro/26f3db93-cfef-4bac-93fa-26eed63856c7_1id1Hc.webp&quot; alt=&quot;Screenshot&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Breaking changes&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Online sources have been removed.&lt;/strong&gt; NOAA, WorldTides, and StormGlass are gone. Neaps is now the exclusive prediction engine and includes 6000+ global tide stations in 124 countries. &lt;a href=&quot;https://github.com/openwatersio/signalk-tides/pull/78&quot;&gt;#78&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;What&amp;#39;s new&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A new responsive web UI.&lt;/strong&gt; A redesigned interface (powered by &lt;a href=&quot;https://github.com/openwatersio/neaps/tree/main/packages/react&quot;&gt;@neaps/react&lt;/a&gt;) that adapts from full-screen dashboards to compact widgets, showing the current tide and a multi-day forecast. &lt;a href=&quot;https://github.com/openwatersio/signalk-tides/pull/56&quot;&gt;#56&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configurable default tide station&lt;/strong&gt; (&lt;a href=&quot;https://github.com/openwatersio/signalk-tides/pull/87&quot;&gt;#87&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Browse tide stations&lt;/strong&gt; - Quickly switch between your default station and any other station (&lt;a href=&quot;https://github.com/openwatersio/signalk-tides/pull/88&quot;&gt;#88&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A new API.&lt;/strong&gt; Predictions are now served through &lt;a href=&quot;https://github.com/openwatersio/neaps/tree/main/packages/api&quot;&gt;@neaps/api&lt;/a&gt; in &lt;a href=&quot;https://github.com/openwatersio/signalk-tides/pull/49&quot;&gt;#49&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tide heights honour your Signal K units.&lt;/strong&gt; Heights now respect your user-configured units instead of assuming a default, thanks to @msallin in &lt;a href=&quot;https://github.com/openwatersio/signalk-tides/pull/69&quot;&gt;#69&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;ul&gt;
&lt;li&gt;Add &lt;code&gt;environment.tide.state&lt;/code&gt; and &lt;code&gt;timeToNextExtreme&lt;/code&gt;, thanks to @clarkbw in &lt;a href=&quot;https://github.com/openwatersio/signalk-tides/pull/77&quot;&gt;#77&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Install&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install signalk-tides@next
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or click the &lt;strong&gt;Versions&lt;/strong&gt; link on signalk-tides in the Signal K appstore and select the &lt;code&gt;2.0.0-beta.1&lt;/code&gt; release.&lt;/p&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;p&gt;Thanks to &lt;strong&gt;@msallin&lt;/strong&gt; and &lt;strong&gt;@clarkbw&lt;/strong&gt; for their contributions!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Full changelog:&lt;/strong&gt; &lt;a href=&quot;https://github.com/openwatersio/signalk-tides/compare/v1.5.0...v2.0.0&quot;&gt;https://github.com/openwatersio/signalk-tides/compare/v1.5.0...v2.0.0&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.8.20260615</title>
      <link>https://openwaters.io/updates/slackwater-database-0-8-20260615/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-8-20260615/</guid>
      <pubDate>Mon, 15 Jun 2026 23:47:17 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Derive TICON datums from GESLA-4 water levels (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/95&quot;&gt;#95&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Re-reference WSV harmonic phases to UTC (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/97&quot;&gt;#97&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Neaps 0.7.0</title>
      <link>https://openwaters.io/updates/neaps-0-7-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-0-7-0/</guid>
      <pubDate>Fri, 12 Jun 2026 16:28:33 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Moved &lt;code&gt;useStation&lt;/code&gt; into @neaps/tide-predictor so it can be used without the heavy dependency of @neaps/tide-database. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/198&quot;&gt;#198&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Subordinate stations now use the &lt;code&gt;datums&lt;/code&gt; and &lt;code&gt;harmonic_constituents&lt;/code&gt; included in @neaps/tide-database 0.8 instead of resolving them from the reference station at prediction time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Initial release of &lt;code&gt;@neaps/react&lt;/code&gt; — React components and hooks for tide predictions powered by &lt;code&gt;@neaps/api&lt;/code&gt;, including &lt;code&gt;&amp;lt;TideStation&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;TideGraph&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;TideTable&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;TideConditions&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;StationSearch&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;NearbyStations&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;StationsMap&amp;gt;&lt;/code&gt;. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/249&quot;&gt;#249&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.8.20260611</title>
      <link>https://openwaters.io/updates/slackwater-database-0-8-20260611/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-8-20260611/</guid>
      <pubDate>Thu, 11 Jun 2026 12:05:35 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Add datums and harmonic constituents to subordinate stations (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/91&quot;&gt;#91&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Neaps 0.6.1</title>
      <link>https://openwaters.io/updates/neaps-0-6-1/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-0-6-1/</guid>
      <pubDate>Sun, 26 Apr 2026 17:19:56 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add &lt;code&gt;bbox&lt;/code&gt; query parameter to &lt;code&gt;GET /stations&lt;/code&gt; for filtering stations by bounding box. Pass a comma-separated string &lt;code&gt;minLon,minLat,maxLon,maxLat&lt;/code&gt; to return only stations within that geographic area.&lt;/p&gt;
&lt;p&gt;  Also allows reserved characters (e.g. commas) in the &lt;code&gt;query&lt;/code&gt; parameter, enabling searches like &lt;code&gt;&amp;quot;San Francisco, CA&amp;quot;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;  Bump &lt;code&gt;@neaps/tide-database&lt;/code&gt; dependency to &lt;code&gt;0.7&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Filter spurious extremes from tide predictions using prominence threshold and minimum temporal gap criteria. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/220&quot;&gt;#220&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Align timeline predictions to clock boundaries based on &lt;code&gt;timeFidelity&lt;/code&gt;. For example, with the default timeFidelity of 600 seconds, predictions now fall on :00, :10, :20, :30, :40, :50 past the hour regardless of the requested start time. The start time will always snap to the previous clock boundary, and the end time will snap to the next clock boundary. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/234&quot;&gt;#234&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix incorrect division for milleseconds in JD function (Thanks @dartheditous) (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/257&quot;&gt;#257&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update T3, R3, 3N2, and 3L2 constituent definitions from TICON manual (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/253&quot;&gt;#253&lt;/a&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.7.20260304</title>
      <link>https://openwaters.io/updates/slackwater-database-0-7-20260304/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-7-20260304/</guid>
      <pubDate>Wed, 04 Mar 2026 11:31:58 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Remove TICON stations that duplicate latest NOAA stations (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/73&quot;&gt;#73&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add bbox search (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/67&quot;&gt;#67&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Improve station filtering with quality evaluation pipeline (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/74&quot;&gt;#74&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Datum improvements for TICON stations (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/75&quot;&gt;#75&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Chrores:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Update noaa update script to include summary (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/72&quot;&gt;#72&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>@neaps/cli 0.1.0</title>
      <link>https://openwaters.io/updates/neaps-cli-0-1-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-cli-0-1-0/</guid>
      <pubDate>Wed, 25 Feb 2026 04:52:14 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Created initial &lt;code&gt;neaps&lt;/code&gt; CLI (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/218&quot;&gt;#218&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Neaps 0.6.0</title>
      <link>https://openwaters.io/updates/neaps-0-6-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-0-6-0/</guid>
      <pubDate>Tue, 24 Feb 2026 19:16:12 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add support for timeline predictions with offsets. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/227&quot;&gt;#227&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;getTimelinePrediction&lt;/code&gt; now accepts an &lt;code&gt;offsets&lt;/code&gt; option for subordinate stations, using proportional domain-mapping to interpolate between reference station extremes with time and height adjustments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add support for subordinate station predictions in the core library. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/227&quot;&gt;#227&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;code&gt;getTimelinePrediction&lt;/code&gt; now supports subordinate stations, producing a continuous timeline by interpolating between offset-adjusted reference station extremes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>@neaps/api 0.4.0</title>
      <link>https://openwaters.io/updates/neaps-api-0-4-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-api-0-4-0/</guid>
      <pubDate>Tue, 24 Feb 2026 18:16:11 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add configurable route prefix support to &lt;code&gt;createApp()&lt;/code&gt;. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/229&quot;&gt;#229&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;  Routes are now defined without a prefix (e.g. &lt;code&gt;/extremes&lt;/code&gt;, &lt;code&gt;/stations&lt;/code&gt;) and mounted at a configurable &lt;code&gt;prefix&lt;/code&gt; option (defaults to &lt;code&gt;/tides&lt;/code&gt; for backward compatibility). Also adds a root &lt;code&gt;/&lt;/code&gt; endpoint returning API info, and the OpenAPI spec now includes a &lt;code&gt;servers&lt;/code&gt; field reflecting the configured prefix.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add support for subordinate station predictions in the API. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/227&quot;&gt;#227&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;  &lt;code&gt;GET /tides/timeline&lt;/code&gt; and &lt;code&gt;GET /tides/waterlevel&lt;/code&gt; now return predictions for subordinate stations instead of a 400 error.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.6.20260220</title>
      <link>https://openwaters.io/updates/slackwater-database-0-6-20260220/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-6-20260220/</guid>
      <pubDate>Fri, 20 Feb 2026 14:09:38 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Remove stations with tidal range &amp;lt; 2cm (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/61&quot;&gt;#61&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove historical Dutch Rijkswaterstaat stations (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/62&quot;&gt;#62&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Always set MSL = 0 for TICON (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/63&quot;&gt;#63&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>@neaps/api 0.3.3</title>
      <link>https://openwaters.io/updates/neaps-api-0-3-3/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-api-0-3-3/</guid>
      <pubDate>Wed, 18 Feb 2026 16:45:56 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Default to station&amp;#39;s chart datum (usually LAT or MLLW) (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/215&quot;&gt;#215&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.6.20260218</title>
      <link>https://openwaters.io/updates/slackwater-database-0-6-20260218/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-6-20260218/</guid>
      <pubDate>Wed, 18 Feb 2026 15:22:35 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Upload build artifacts (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/57&quot;&gt;#57&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix chart datum detection for TICON stations  (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/59&quot;&gt;#59&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove defunct constituent definitions (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/58&quot;&gt;#58&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.5.20260218</title>
      <link>https://openwaters.io/updates/slackwater-database-0-5-20260218/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-5-20260218/</guid>
      <pubDate>Wed, 18 Feb 2026 11:03:47 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;[TICON] Prefer open data, mark non-commercial stations (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/54&quot;&gt;#54&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[tcd] Use preferred chart datum (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/55&quot;&gt;#55&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.4.20260216</title>
      <link>https://openwaters.io/updates/slackwater-database-0-4-20260216/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-4-20260216/</guid>
      <pubDate>Mon, 16 Feb 2026 18:04:29 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Build xtide TCD harmonics file by @bkeepers in &lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/48&quot;&gt;https://github.com/openwatersio/tide-database/pull/48&lt;/a&gt;, &lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/50&quot;&gt;https://github.com/openwatersio/tide-database/pull/50&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Filter out low quality TICON stations (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/49&quot;&gt;#49&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Cleanup TICON station names and NOAA region/country for international stations (&lt;a href=&quot;https://github.com/openwatersio/tide-database/pull/51&quot;&gt;#51&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Neaps 0.5.0</title>
      <link>https://openwaters.io/updates/neaps-0-5-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-0-5-0/</guid>
      <pubDate>Sun, 15 Feb 2026 23:49:14 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Speed up extremes detection by ~100x, deprecate &lt;code&gt;timeFidelity&lt;/code&gt; option on &lt;code&gt;getExtremesPrediction&lt;/code&gt;, which will always be &amp;lt;1s now. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/213&quot;&gt;#213&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Neaps 0.4.0</title>
      <link>https://openwaters.io/updates/neaps-0-4-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-0-4-0/</guid>
      <pubDate>Sat, 14 Feb 2026 14:46:45 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Replace constituent definitions with the &lt;a href=&quot;https://github.com/openwatersio/neaps/blob/main/docs/TWCWG_Constituent_list.md&quot;&gt;IHO TWCWG (International Hydrographic Organization Tidal and Water Level Working Group) constituent list&lt;/a&gt;. (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/208&quot;&gt;#208&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;  There are lot of implementation details that changed, but the highlights are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Switched from ~60 hand-coded constituents to 395 IHO standard constituents (6.6x increase).&lt;/li&gt;
&lt;li&gt;Switched to IHO standard nodal correction formulas described in Annex A, which use simplified Fourier series formulas and are the International standard used by hydrographic offices worldwide.&lt;/li&gt;
&lt;li&gt;Implemented the IHO Annex B rules for resolving compound constituent members. This allows for much more comprehensive tidal predictions that include minor constituents that can have significant local effects.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Benchmark Results&lt;/h2&gt;
&lt;p&gt;  Most importantly, the new implementation delivers significantly improved accuracy when comparing predictions to NOAA, with a 60% reduction in median height error (22.3mm to 8.7mm) and a 60% reduction in timing error (15 min to 6 min) at the 95th percentile.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;th&gt;Improvement&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Median height error (MAE p50)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;22.3 mm&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;8.7 mm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;↓ 60.9%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;95th percentile height error (MAE p95)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;45.4 mm&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;23.9 mm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;↓ 47.4%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;RMSE (median)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;25.4 mm&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;10.3 mm&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;↓ 59.6%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Median timing error (p95)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;15 min&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;6 min&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;↓ 60.0%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Export constituents, deprecate default export (&lt;a href=&quot;https://github.com/openwatersio/neaps/pull/212&quot;&gt;#212&lt;/a&gt;)&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-diff&quot;&gt;-import tidePredictor from &amp;quot;@neaps/tide-predictor&amp;quot;;
+import { createTidePredictor } from &amp;quot;@neaps/tide-predictor&amp;quot;;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.4.20260204</title>
      <link>https://openwaters.io/updates/slackwater-database-0-4-20260204/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-4-20260204/</guid>
      <pubDate>Wed, 04 Feb 2026 15:09:14 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Add text search (&lt;a href=&quot;https://github.com/neaps/tide-database/pull/46&quot;&gt;#46&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Neaps 0.3.0</title>
      <link>https://openwaters.io/updates/neaps-0-3-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-0-3-0/</guid>
      <pubDate>Fri, 30 Jan 2026 18:20:49 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Update tests for tide-database internal id change (&lt;a href=&quot;https://github.com/neaps/neaps/pull/190&quot;&gt;#190&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Use more efficient goespatial search (&lt;a href=&quot;https://github.com/neaps/neaps/pull/191&quot;&gt;#191&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add MP1 constituent (&lt;a href=&quot;https://github.com/neaps/neaps/pull/189&quot;&gt;#189&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.3.20260130</title>
      <link>https://openwaters.io/updates/slackwater-database-0-3-20260130/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-3-20260130/</guid>
      <pubDate>Fri, 30 Jan 2026 16:38:13 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Remove noaa stations from ticon data (&lt;a href=&quot;https://github.com/neaps/tide-database/pull/42&quot;&gt;#42&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.3.20260112</title>
      <link>https://openwaters.io/updates/slackwater-database-0-3-20260112/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-3-20260112/</guid>
      <pubDate>Mon, 12 Jan 2026 20:38:12 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Prettier (&lt;a href=&quot;https://github.com/neaps/tide-database/pull/34&quot;&gt;#34&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Make ID stable (&lt;a href=&quot;https://github.com/neaps/tide-database/pull/37&quot;&gt;#37&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;feat: Add station searching with efficient geospatial index (&lt;a href=&quot;https://github.com/neaps/tide-database/pull/38&quot;&gt;#38&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add TICON-4 data (&lt;a href=&quot;https://github.com/neaps/tide-database/pull/16&quot;&gt;#16&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;TICON-4 Import (&lt;a href=&quot;https://github.com/neaps/tide-database/pull/39&quot;&gt;#39&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>@neaps/tide-predictor 0.4.1</title>
      <link>https://openwaters.io/updates/neaps-tide-predictor-0-4-1/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-tide-predictor-0-4-1/</guid>
      <pubDate>Sat, 10 Jan 2026 13:28:18 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Alias SGM/SIGMA1, refactor aliasing. (&lt;a href=&quot;https://github.com/neaps/neaps/pull/187&quot;&gt;#187&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>@neaps/tide-predictor 0.4.0</title>
      <link>https://openwaters.io/updates/neaps-tide-predictor-0-4-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-tide-predictor-0-4-0/</guid>
      <pubDate>Sat, 10 Jan 2026 13:14:16 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Add constituents to support TICON data (&lt;a href=&quot;https://github.com/neaps/neaps/pull/186&quot;&gt;#186&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Signal K tides plugin 1.5.0</title>
      <link>https://openwaters.io/updates/signal-k-tides-plugin-1-5-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/signal-k-tides-plugin-1-5-0/</guid>
      <pubDate>Thu, 08 Jan 2026 03:22:18 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Add GitHub Action to lint/build (&lt;a href=&quot;https://github.com/bkeepers/signalk-tides/pull/33&quot;&gt;#33&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Switch to ESM (&lt;a href=&quot;https://github.com/bkeepers/signalk-tides/pull/38&quot;&gt;#38&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add Neaps as a provider (&lt;a href=&quot;https://github.com/bkeepers/signalk-tides/pull/37&quot;&gt;#37&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Neaps 0.2.0</title>
      <link>https://openwaters.io/updates/neaps-0-2-0/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/neaps-0-2-0/</guid>
      <pubDate>Wed, 07 Jan 2026 20:00:51 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Benchmark improvements (&lt;a href=&quot;https://github.com/neaps/neaps/pull/178&quot;&gt;#178&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add timeFidelity to getTimelinePrediction() (&lt;a href=&quot;https://github.com/neaps/neaps/pull/179&quot;&gt;#179&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Add a &lt;code&gt;units&lt;/code&gt; option to get predictions in feet (&lt;a href=&quot;https://github.com/neaps/neaps/pull/180&quot;&gt;#180&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fix timezone handling by using UTC internally (&lt;a href=&quot;https://github.com/neaps/neaps/pull/183&quot;&gt;#183&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Remove support for &lt;code&gt;phaseKey&lt;/code&gt; option in harmonic constituents. (&lt;a href=&quot;https://github.com/neaps/neaps/pull/184&quot;&gt;#184&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Revert to prettier defaults (&lt;a href=&quot;https://github.com/neaps/neaps/pull/185&quot;&gt;#185&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.2.20260107</title>
      <link>https://openwaters.io/updates/slackwater-database-0-2-20260107/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-2-20260107/</guid>
      <pubDate>Wed, 07 Jan 2026 19:18:54 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Only use UTC phase, remove local phase (&lt;a href=&quot;https://github.com/neaps/tide-database/pull/33&quot;&gt;#33&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.1.20260107</title>
      <link>https://openwaters.io/updates/slackwater-database-0-1-20260107/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-1-20260107/</guid>
      <pubDate>Wed, 07 Jan 2026 13:18:06 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Migrate to tsdown for bundling (&lt;a href=&quot;https://github.com/neaps/tide-database/pull/32&quot;&gt;#32&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    <item>
      <title>Slackwater database 0.1.20260105</title>
      <link>https://openwaters.io/updates/slackwater-database-0-1-20260105/</link>
      <guid isPermaLink="true">https://openwaters.io/updates/slackwater-database-0-1-20260105/</guid>
      <pubDate>Mon, 05 Jan 2026 13:57:38 GMT</pubDate>
      <category>Release</category>
      <description>&lt;ul&gt;
&lt;li&gt;Convert tools to TypeScript, extract helpers (&lt;a href=&quot;https://github.com/neaps/tide-database/pull/29&quot;&gt;#29&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
  </channel>
</rss>
