Changelog
Version history and release notes for SeaLink.cloud.
Enhancements
v0.17.3
Overfall
- Honest tides when you swing over uneven bottom. At anchor over a lumpy seabed, a wide swing makes your depth sounder read the bottom contour as much as the tide — which can skew the predicted highs and lows. SeaLink now spots when it can’t yet tell the seabed apart from the tide and falls back to the trusted reference-station tide for your area, switching back to your boat’s own reading once it can separate the two cleanly.
v0.17.2
Grapnel
- Seabed depths now build from boats running the SignalK plugin. Soundings from plugin-equipped boats weren’t being matched to the boat’s position, so they never made it onto the shared Seabed Depth layer. Now every plugin boat’s depth readings carry their location, so anchorages will start filling in — and sharpening — as boats visit and log the bottom.
- Nowcast reaches further and reads the water better. Live sea-state nowcasts now cover the Gulf of Mexico (Florida’s Gulf coast and the Panhandle), and inlet coverage along the US East Coast Intracoastal extends down through Georgia and the Carolinas. On the Intracoastal itself the nowcast now tells protected inside water apart from the open Atlantic you’d reach out the nearest inlet, and slack-water timing around the turn of the tide is more accurate.
- Cleaner map layers. Switching on Weather Radar now tucks the Seabed Depth layer out of the way and unticks its box — you can’t read individual depths at that zoom anyway — and the seabed colour key sits neatly under the zoom buttons in the bottom-left corner.
- Steadier under the hood. The tide engine and the worldwide tide pages are hardened against odd sensor readings and heavy traffic, so one bad value can’t wedge a boat’s tide history and the public tide pages stay quick under load. Data your boat logs while offline keeps its real timestamps when the connection returns.
v0.17.1
Soundings
- See the seabed at your anchorage. A new Seabed Depth map layer turns every visiting boat’s depth sounder into a shared bottom map: each patch is coloured from red (shallow) to blue (deep) and labelled with the depth at lowest tide, so you can scout how much water you’ll have before you drop the hook. It’s crowd-measured and approximate — a planning aid for picking your spot, never a substitute for your charts or your own sounder. The more boats visit an anchorage the sharper it gets; a patch only one boat has logged is marked unverified.
- Tide readings now tell you where they came from. When you’re away from your own logged anchorage and we borrow the tide from a nearby reference station, the tide panel now shows which station it is, how far off it sits, and a reminder that those heights are measured from that station’s chart datum — not the depth under your keel. We also tightened how far we’ll reach for a borrowed station, so the reading stays relevant to your waters.
v0.17.0
Almanac
- Free worldwide tide tables. We’ve published live tide predictions for more than 5,000 tide stations around the world — browse them by country at sealink.cloud/tides (also linked in the footer). Each station has a live 48-hour tide curve, the next high and low, and a 7-day high/low table. At the NOAA and UHSLC stations we’ve spot-checked, the predicted high/low times line up with the official tables to within a few minutes.
v0.16.9
Waypoint
- The menu greets you on day one. On your first visit the side menu opens automatically so you can find your way around; after that it stays tucked away to give the chart maximum room, with a gentle pulse on the menu button (☰) so you always know it’s there. The pulse stops the moment you open it.
v0.16.8
Ephemeris
- Sharper tide predictions. Tide times across the app now line up with the official NOAA tide tables to within a couple of minutes — previously they ran a touch late. Compare a predicted high-tide time against the published tables and they’ll now agree.
- Corrected tide heights on the Pacific coast. At hundreds of big-range stations — Seattle, Tacoma, Anchorage, San Francisco and more — predicted low tides were reading too shallow. Heights now reference the chart datum correctly, so a forecast “minus tide” shows the real low.
v0.16.7
Squall
- Weather radar, right on your chart. A new Weather Radar layer drops live precipitation straight onto the map — switch it on from the layers menu at the top-right of the map, then use the play/pause timeline to watch rain and squalls roll across your area over the last couple of hours. Global coverage, so it follows you wherever you’re cruising.
- SMS alerts now reach international crew. We’ve opened up our text-message sending limits so anchor-drag and custom-rule alerts can go to phone numbers outside North America — if your mobile is an international number, your SMS alerts will now arrive where they were previously blocked.
v0.16.4
Transom
- Lighter on mobile data, faster on every connection. Pages and live data are now compressed before they’re sent, cutting the download size of the dashboard, the public boat pages, and the embeddable widget by roughly 75%. Noticeably quicker over cellular and offshore links, and easier on your data plan.
- The shared boat widget sips data instead of gulping it. The little embeddable map widget used to re-download your whole month’s track every minute; now it only fetches what actually changed, dropping each refresh from ~17 KB to well under 1 KB. Lighter for you and for anyone who embeds your boat on their site.
- Smoother dashboard while underway. Trimmed redundant work that ran on every position update, so the live ribbon and map stay responsive with less battery and CPU on phones and tablets at the helm.
v0.16.3
Sheave
- Anchor-drag alert email now reads cleanly. The warning email sent when your boat drags now shows its ⚠ warning symbol properly instead of a stray bit of code — a small fix to the most important message we send.
- Tide readings are more dependable in flat water. Fixed a case where the tide pill and chart could quietly stop working at a calm slip or in a very low-range anchorage; they now keep showing your tide picture everywhere.
- Captain’s Log totals are more accurate. Engine hours now add up correctly on twin-engine boats, and the “highest gust” line now appears in your weekly and monthly logs.
- Cleaner ICW bridge & guide pages. Polished the embedded vessel widget and a handful of under-the-hood reliability and security fixes across the site.
v0.16.2
Parrel
- Join the SeaNode waitlist (or the FLEET list) right on the page — no email app required. The “Join waitlist” and “Get notified” buttons now pop up a quick form: drop in your email, hit the button, done. You’ll see an instant “you’re on the list” confirmation instead of being bounced out to your mail client and left wondering whether it sent.
- We actually catch your interest now. Previously those buttons just opened a blank email — easy to abandon halfway. Now your spot is saved the moment you submit, and we’re notified right away so we can follow up when SeaNode hardware or the FLEET plan is ready for you.
v0.16.1
Orlop
- Tell the helm view your cruising speed, and it times the bridges for you. Set your usual cruising speed in Setup → Boat and the full-screen bridge view now tells you the exact speed to hold to roll up to the next drawbridge just as it opens — no circling, no waiting on the wrong side. And it’s smart about it: if the very next opening would mean gunning it, it quietly aims for the next one you can make at an easy pace instead of asking for a sprint.
- It’s a speed-over-the-ground target, so the current takes care of itself. The number is shown as SOG — just nudge the throttle until your speed-over-ground matches, and whether you’ve got a fair tide or a foul one you’ll arrive right as the span lifts. Your current SOG and the distance to the next bridge are right there on screen.
- The list of other nearby bridges now shows which way each one lies — north (up the waterway, toward Norfolk) or south (down toward Miami), ordered along the channel, so a glance tells you what’s behind you and what’s ahead.
v0.16.0
Oarlock
- A full-screen bridge view built for your phone at the helm. Tap the new expand button in the top corner of the Nearby Bridges card and the whole screen becomes one big, easy-to-read bridge readout — the next drawbridge ahead, a large countdown to its next opening, whether your rig clears it, your ETA and the speed to make the opening, and the VHF channel to hail — with the bridges coming up after it listed below. It’s dark and high-contrast so it reads easily in the cockpit, and everything fits on one screen without scrolling. Made for running the ICW: a glance tells you what’s next and whether to ease off or push to catch the opening.
v0.15.0
Leeboard
- A full ICW bridge guide you can look up from anywhere. Every drawbridge on the Intracoastal Waterway from Norfolk to Miami now has its own page at sealink.cloud/icw/bridges — the opening schedule in plain English, which VHF channel to hail, the closed clearance, the milepost, a map, and a live “next opening” countdown that ticks on the current 33 CFR §117.261 schedule. Browse by state or search the whole list. Handy from the dock when you’re planning tomorrow’s run, not just on the water.
- See the whole route on one chart. A new visual bridge chart lays out every span from Norfolk to Miami in milepost order, colour-coded by how it opens — and an air-draft slider flags the fixed bridges your rig can’t clear (no opening, so the tide is all you get) plus the longest open-water stretches where there’s nothing to time. The bridge dataset as a route planner, not just a list.
- A new ICW cruising guide. A plain-spoken guide to running the Ditch at sealink.cloud/icw — the snowbird migration, how bridge schedules and VHF channels actually work (the “need not open” vs “need only open” business), and a crowd-sourced anchorage map built by the fleet.
- A tidier footer. The site footer is now organized into clear columns — Product, ICW Guides, Company, Legal — so the bridge guide, anchorage map, tides and the rest are easy to reach from any page.
v0.14.1
Spreader
- No more opening to a blank map that needs a reload. Every so often — usually right after the app signed you back in automatically — the dashboard came up showing “no location available” and looked offline, even though your boat was reporting normally, and only a manual refresh set it right. Fixed: on a fast-loading start the map, your live position, and the real-time connection now wait the moment they need to finish loading instead of giving up early and showing the empty state — so the console comes up correctly the first time.
- Smoother tide data, fewer stalls. A behind-the-scenes lookup the tide system runs across every boat had started bogging down and occasionally timing out as the data grew. It now goes straight to what it needs, so tide information keeps updating without the periodic hiccups.
v0.14.0
Jackline
- No plugin yet? Use your phone as a stand-in GPS. If your boat isn’t sending data to SeaLink yet, you can now switch on Browser GPS (Setup → Device & API) and the dashboard will use the location of the phone or tablet in your hand — so the map, your position, tides, weather and Nearby Bridges all work with something instead of a blank screen.
- It tells you, loudly, that it’s only a fallback. While it’s on you’ll see a striped amber banner across the top and a pulsing “PHONE GPS” badge on the map, plus a circle showing how rough the fix is. Tap either for a plain-English rundown of why phone GPS can’t replace your boat’s instruments: it’s only right if the device is aboard, it sleeps when your screen does (so it’s no overnight anchor watch), the position wanders, and there’s no depth, wind or battery data.
- Position only, and only on this device. Browser GPS shows your live position; it doesn’t save a track or sound an anchor alarm, and you turn it on per-device — your phone aboard won’t flip it on for the laptop back home.
- The Nearby Bridges map follows you again. A browser permission had been quietly blocking location on the live bridge map and the “find me” button. Both now track your real position when you allow it.
v0.13.0
Telltale
- The next drawbridge, answered before you ask. A new Nearby Bridges card sits on the CONSOLE tab and answers the four questions you’d ask the chart-plotter every time you pass under a bascule: which span is next, when does it open (live countdown on the current 33 CFR §117.261 schedule, rush-hour-aware), how far it is along the channel and your ETA at current SOG, and whether it needs to open for your air draft at all. Tap any bridge for the full schedule prose, VHF channel, restricted windows, and a suggested speed to catch the next opening when you’re inside the catch window. The next drawbridge ahead also gets a permanent “Opens: 2:15 PM (in 10 min)” callout right on the Leaflet map — you see it on the chart, not just in a sidebar.
- 130 ICW drawbridges, on the current schedule. Every mileposted bascule, swing, lift, and lock on the Atlantic Intracoastal Waterway from Norfolk to Miami is now in Sealink, each carrying its current §117.261 opening rule (DST-correct, restricted-window aware), the charted closed clearance + datum, and the VHF channel. Where the regulation is too irregular to safely count down (the “skip 8 a.m., noon, 5 p.m.” kind), Sealink shows the regulation prose verbatim rather than ship a wrong time.
- A real ICW centerline you can trust. Your boat’s position projects onto a milepost-calibrated channel centerline blended from OpenStreetMap plus first-party Sealink fleet cruise tracks — the OSM relation has coverage gaps, and captain-driven GPX from a Norfolk-to-Miami passage fills them, especially the dense Ft. Lauderdale bascules and the curve around Cape Fear, NC. 5,308 calibrated points end-to-end, sub-mile spacing through the entire FL east coast. Distance and ETA to the next bridge are real along-channel miles, not as-the-crow-flies.
- Bridges everywhere else, too. About 14,700 bridge POIs worldwide (NOAA ENC + OpenStreetMap, with clearances where charted) ride the map regardless of region. Outside the curated US ICW corridor — Dutch canals, the UK, the Caribbean, the Greek islands — the widget falls back to nearest bridge: name, distance, direction, clearance, without a countdown until we curate the regional schedule corpus (the Netherlands, the UK’s Caledonian Canal, Sweden, the French canals are on the list).
- A new marketing page at sealink.cloud/features/nearby-bridges.html with an interactive Leaflet hero — the full ICW route, every drawbridge, and a moving boat (yours, if you’re on the ICW with location enabled; a Ft. Lauderdale demo otherwise, cruising past six bascules with realistic wait-at-bridge timing). Linked from the main nav and footer.
v0.12.12
Felucca
- Tides admin says when a contributor just needs to sit still. A boat can send plenty of depth data and still not form a tide station because it’s been under way the whole time — the tide engine only anchors a station once a boat has stayed put in one spot for a while. The contributor list now spells that out (“under way — hasn’t settled long enough,” with a count of recent settled readings) instead of the vague “engine hasn’t evaluated yet,” so it’s clear the data’s fine and the boat simply needs to come to rest.
v0.12.11
Zephyr
- Crowd-tide fits follow your boat as you move. If your boat feeds the tide network, your tide curve is now worked out at your current position and re-scopes when you shift to a new anchorage — so it keeps going as you cruise instead of staying pinned to where you first dropped the hook. (Your plugin needs to be reporting position for this; older versions just keep the previous behaviour.)
- Tides admin shows where each contributor is, and what’s holding it back. The contributor list now surfaces each boat’s last reported position and its age, plus a plain-English reason when a contributor hasn’t yet graduated to a full tide station.
- Daily passage recap counts real time under way. Your Co-Captain passage summary now reports the hours you were actually making way rather than total time since departure — so a day with a long lunch stop or an overnight at anchor reads honestly.
v0.12.10
Voyage
- Overnight and multi-day passages count as one trip again. Recent Trips used to split any passage that ran past midnight (UTC) into two rows — so a 25-hour run showed up as two separate trips. Now trips are grouped by when you were actually under way, not by the calendar day, so a passage stays a single row no matter how many nights it takes — with a date range, the full distance, and total hours. Click it and the whole route highlights on the map; replay and the GPX download now cover the entire passage in one go.
- Trip replay — on screen and in saved videos — is simpler and smoother. The whole route now stays in view at one steady zoom instead of zooming right in at the start (which made the boat look like it was racing) and back out through the middle, so the speed reads honestly the whole way. Long passages also play a little longer so the boat isn’t a blur, the opening no longer jitters, and the boat icon turns smoothly along its heading even at 4× / 8×. Saved videos now finish with a slow zoom in on your destination, so you can see exactly where she ended up.
v0.12.9
Wake
- SeaNode is back on the menu. Our plug-and-play marine appliance — the one that wires onto your boat’s NMEA bus and streams data straight to SeaLink without a Pi or SignalK install — reappears on the homepage with a waitlist signup, and pricing now clearly explains that subscriptions are software-only and you need either the free SignalK plugin or a SeaNode to feed them.
- Fleet admin shows what your boats are actually doing. If you’re an admin on the Fleet tab, every boat card now surfaces position, nearest city, speed, heading, depth, plugin version (with an amber tag when an update is available), and the size of the last ingest batch — no more clicking into each boat to see whether it’s healthy.
- Tides admin: tells you why a contributor hasn’t graduated yet. The OpenTide contributors table now shows each contributor’s station, current confidence tier, last fit’s RMS and duration, and an inline blocker reason (“only 4.3 h coverage in 7 d”, “RMS 0.45 m too noisy”, etc.) so you can see what’s holding back graduation to a real station. A banner at the top says how many of N contributors have graduated.
- Coverage map now lives inside the dashboard. Instead of a separate page that sometimes wouldn’t reload, the Coastline coverage map opens inline on the Tides admin tab with a Show/Hide toggle, provenance filter, and an in-memory cache so switching between tabs and coming back is instant.
- Marketing page leads with what we’ve been doing. The hero now shows the running total of data points streamed across the network (millions and counting), and the boats-streaming-now count finally matches what the admin Fleet tab shows — was undercounting because it required a position update specifically rather than any data ingest.
v0.12.8
Tender
- Quieter, more resilient under the hood. A deep bug-scan pass tightened up a dozen background quirks — rate-limit guards on signup and forgot-password, a hardened conversation list and dashboard position view, tighter Co-Captain double-tap protection, and steadier weekly/monthly Captain’s Log scheduling. None of these change how the dashboard looks, but the app should feel faster and complain less in the console.
- Carryover fit no longer flickers when you swing on the hook. The display-side radius for “is this fit still about HERE?” was tighter than a typical anchor swing on 100 m of rode, so the carryover would briefly disappear into the reference station and reappear on the swing back. Widened to 0.3 nm so normal swinging stays inside the same fit.
v0.12.7
Quay
- New: Captain’s Log emails. Opt in under Setup → Account for a weekly or monthly email recap of your boat’s activity — miles travelled, anchorages, engine hours, solar, upcoming maintenance, and notable events. A “Send me a sample” button lets you preview one with your own data first.
v0.12.6
Yardarm
- Cleaner tide map when you leave anchor. Phantom stations no longer get planted along your departure track when you slowly sail away or drift on a long rode. The dashboard’s tide curve also stays anchored to where you actually earned the fit, not wherever you happen to be on the swing.
v0.12.5
Dinghy
- Sidebar menu slides out of the way. The left navigation now hides on demand so the dashboard gets the full screen. Tap the hamburger to bring it back; Esc closes.
- Admin fleet overview opens fast even on busy boats. The SUPER fleet map used to hang on vessels with years of history. Now it opens cleanly regardless of how much data is behind the boat.
- Custom boat icons show in the public widget. If you uploaded your own vessel icon under Setup, the embedded widget now displays it properly instead of a broken image.
- Tide curve follows you to the next anchorage. Move to a new spot within 50 nm of a previous good fit and your dashboard keeps showing your tide curve instead of falling back to a reference station far away.
- Quieter, more reliable background services. A pass through a day’s server logs cleaned up a handful of recurring failures in tide updates, network health uploads, and the embedded widget. Nothing was visibly broken before; everything just works more quietly now.
v0.12.4
Cuddy
- Maintenance page loads faster on long-running boats. The lookup behind every page open used to scan your full history; it now uses the index directly. Most noticeable on boats with deep historical data.
- Tide tooltip tells you what’s holding a fit back. When time and quality both look fine but the tier hasn’t graduated, the tooltip now surfaces the actual numbers behind the holdup. No more guessing.
- Map tile cache no longer grows without bound. Mobile devices on long passages were silently accumulating hundreds of megabytes of cached tiles and occasionally tripping storage-quota errors. Now capped at 500 tiles, oldest first.
- Maintenance + equipment + predictive insights are free for BETA users. The pricing page now clearly marks the PRO suite as available to current BETA accounts until launch. No more “Coming soon” labels on features that ship today.
- Under the hood: faster nightly cleanup, slimmer tide responses, smoother rendering after a brief connection drop, and a few memory tweaks that matter at fleet scale.
v0.12.3
Cathead
- Tide times match across the dashboard. The pill, mini-overlay, calendar, and depth chart now show the same high/low times you see when you click the reference-station marker on the map. The numbers used to drift by a few minutes because two paths were doing the same math separately.
v0.12.2
Jollyboat
- Tide tooltip shows fit quality. Hover the pill on a reference-station prediction and you’ll see the latest fit attempt’s quality, its tier, and whether the holdup is more time or better data. Clear diagnosis instead of a mystery.
- Honest tooltip wording on long stays. When a fit hasn’t converged after the threshold, the tooltip now says so clearly instead of running a misleading “Building…” counter past the line.
- “Due in Xh” reads from the right counter. Tasks linked to a specific engine or generator now use THAT unit’s hours, not a boat-wide value. Twin-engine and engine+generator boats finally get sensible numbers.
v0.12.1
Gybe
- Tide pill tooltip shows progress to a confirmed fit. Hover the pill and see how far along you are on time and quality vs. the next tier. The same applies to carryover and preliminary fits.
- Morning briefing now flags maintenance. The Co-Captain card you read with your coffee lists overdue and due-soon tasks alongside the rest of the day.
v0.12.0
Bobstay
- Per-unit engine, generator, and outboard hours. Each piece of equipment tracks its own running hours — live from SignalK or manual entry. “Due in 53h” counts down against THAT unit’s counter, so twin-engine boats finally work right.
- Outboard is a first-class equipment type now. No more filing the tender’s Yamaha under “Engine.”
- Service history with real search and filters. Search by title or vendor, filter by task or equipment, narrow to a date range, sort, paginate. Filters survive between visits.
- Bulk delete on every maintenance list. Tick rows, remove them in one click. Tasks and equipment soft-delete so the history stays intact.
- Calendar view for upcoming maintenance. Toggle the Scheduled Maintenance panel to a month grid. Tasks land on their due dates and overdue items pin to today.
- Engine hours from SignalK reach the cloud now. The ingest pipeline was rejecting SignalK’s runtime values as too large — turns out they’re just in seconds. Fixed end-to-end on both the server and the plugin.
- Polish: spinners on Save, both clocks shown on dual-interval tasks, soft-deleted equipment stops leaking its name onto task rows, plus a handful of other rough edges smoothed.
v0.11.5
Larboard
- Engine hours from SignalK finally flow through, end-to-end. A second guard was still blocking runtime values even after last release’s fix. Confirmed on a real boat now — a 2,672-hour engine reading lands cleanly on the maintenance page.
- SignalK plugin v0.11.2 — engine hours from older boards. Some engine boards (older Yanmars among them) publish their runtime through the SignalK API rather than as live updates. The plugin now polls those paths so the hours come through regardless.
- Bulk delete on equipment, tasks, and service history. Tick the rows you want to remove and clear them in one click. Tasks and equipment soft-delete so your service history stays intact.
v0.11.4
Kedge
- Engine hours actually flow through now. The ingest pipeline was rejecting SignalK’s runtime values as “absurdly large” — they’re not, they’re just reported in seconds (5.4 million for a 1,500-hour engine). Fixed.
- Running-hours fields only appear where they apply. The Running hours section in the equipment editor now hides on items that don’t have hours — sails, anchors, EPIRBs, electronics — and clears stale values if you change the equipment type.
- New Generator equipment type. First-class alongside Engine, with its own filter and its own hours source independent of the main engine.
- Engine-hours panel explains itself when empty. If runtime isn’t flowing but other propulsion data is, the panel now lists what it CAN see — so you know if the gap is in your plugin’s configuration or in the bus itself.
v0.11.3
Pintle
- Each engine and generator gets its own hours source. Pick a live SignalK key or enter manual hours per piece of equipment. The row shows live hours with a green dot when streaming, or a neutral chip when manual; live always wins when both are set.
- Engine-hours panel always visible, even when the bus is quiet. The chip used to vanish entirely until data arrived. It now shows a clear “waiting for runtime” placeholder so you can tell at a glance whether the wire is live.
- Engine hours read the highest value, not the latest. Some SignalK feeds emit a zero on engine shutdown; that was getting picked up as “current hours” on boats with thousands of real hours. Fixed — the meter only goes up.
- Service history with real filters. Search by title or vendor, filter by task or equipment, narrow to a date range, sort, paginate. Filter state survives between visits.
- No more false wind-shift alert while you’re dropping anchor. The Co-Captain’s wind-shift detector now waits until you’ve actually settled before flagging a shift, so the boat’s natural swing during the anchor set doesn’t fire a bogus alert.
- Co-Captain card and tide pill agree on the same station. They used to pick different fallback reference stations and show conflicting high/low times. They share a single resolver now.
- Data Snapshot annotation no longer renders blank. If the plugin happened to be offline when you tagged a moment, the saved card now says so clearly instead of showing an empty header.
- Excel maintenance imports survive timezones. Spreadsheet dates are now anchored so they don’t shift by a day in the Americas. A few other import edge cases are also handled more gracefully.
- Manual hours stay fresh only when you change them. Saving equipment without touching the manual-hours field no longer fakes a “just updated” timestamp.
v0.11.2
Skiff
- Confirmed tide stations stay on the map forever. Once you earn a confirmed fit at an anchorage, the station stays on the world map indefinitely. It used to quietly disappear after a week even though your depth was still flowing in.
- No more phantom tide stations along your transit route. The engine now waits until you’ve actually settled for ~20 minutes before claiming a new station, so brief pauses while sailing between anchorages don’t become permanent fixtures on the map.
- Tide chart and Co-Captain card now agree on tide times. The card and the chart used to pick different fallback stations and disagree by an hour or more. They share the same source now.
- Tide chart curve no longer looks broken mid-arc. When the prediction fell back to a reference station, the curve and its high/low markers were drawing from different baselines. Same baseline now.
- Depth chart trims to your current anchorage. Samples from your previous anchorage were bleeding into the depth axis and squashing the current spot’s range. The chart now starts at the moment you arrived.
- Anchor alarm: fewer arm/disarm/acknowledge surprises. Two near-simultaneous actions can’t race each other any more, the Test Alarm uses the same radius as the real one, and dismissing the dashboard banner now sticks even if your phone’s clock is slightly off.
- Maintenance: clearing a date actually clears it. Blanking a Purchase date or Last serviced field used to snap back to whatever was there. Empty saves as empty now.
- Maintenance: due-soon badge counts everything. The nav badge now includes hours-based tasks in the warning band, matching what you see when you click through to the tab.
- Maintenance: switching interval type clears the unused field. Flip a task from “every 12 months” to “every 200 hours” and the months value clears, so the math doesn’t inherit stale calendar data.
- Maintenance: equipment names with quotes or special characters are safe now. Naming your tender “Captain’s Best Boat” no longer confuses the row menu.
- Survey upload preview matches what actually commits. The pre-commit summary now reflects exactly what will land, instead of including items that get filtered out as duplicates.
- Password reset doesn’t reactivate disabled accounts. If an admin disabled an account, a password reset no longer silently re-enables it. First-time setup still works as before.
- Crew and viewer accounts no longer see boat secrets. The boat’s long-lived device secret is now only returned to the boat’s owner.
- Forgot-password and invite match emails case-insensitively. Type your email with a capital where you didn’t before and the system finds you, the way it should have always done.
- Under the hood: a sweep of reliability and security tightening — tougher device-auth, UTC timestamps everywhere so dashboards parse correctly in every timezone, broader timezone-safety scan in the build, and cleaner retry behaviour on transient database hiccups. Nothing you’ll see from the deck unless they break.
v0.11.1
Painter
- New Maintenance tab — with its own home in the top nav. Maintenance used to live three clicks deep inside Setup. Now it’s a top-level tab where it belongs — equipment, scheduled service, and completed jobs in one place, one screen.
- Track every piece of equipment on board. Sails, liferafts, EPIRBs, anchors, dinghies, batteries, electronics, plumbing — whatever lives on your boat. Each item gets a name, model, serial, condition, photos, purchase date and cost; a built-in catalog of common marine gear auto-fills typical service intervals as you type.
- Pre-fill the whole equipment list from your survey PDF. Upload a marine survey and Sealink reads it — engine, genset, windlass, watermaker, electronics, liferaft, anchors and ground tackle — and proposes equipment cards for what it found. You verify each one before anything commits. Saves an hour of typing on day one.
- Engine and generator hours, automatically. If your boat is publishing SignalK, Sealink reads runtime straight off the bus and uses it as the live hours reading on every hours-based task. No manual updates needed.
- Schedules that match how marine engines are actually serviced. Pick “Both — due whichever first” and Sealink tracks calendar months and engine hours together, surfacing whichever is more urgent.
- Yellow before red. Each task has its own warning lead time — days for calendar tasks, hours for hours-based ones. Items light up amber while you still have time to schedule the work, then turn red when they go past due.
- Snooze a noisy alert. If parts are on order and the boat’s on the hard, you don’t need to be shouted at. New Snooze button suppresses an elevated task for as many days or hours as you pick.
- Bring your maintenance spreadsheet over. Already tracking everything in Excel? Import from Excel reads a maintenance spreadsheet (sections in column A, items in column B, intervals and last-serviced dates in the usual columns) and creates the tasks plus the full service history in one go.
- Service log lives forever. Every job you’ve done — date, hours, parts cost, labor, vendor, notes — goes into a permanent boat-wide log. Filter by task or equipment to see “everything ever done to the engine.”
- One year of sensor history kept by default. Paid accounts now retain a full year of data. Older history is archived automatically rather than piling up forever.
- Tide pill stops showing the previous anchorage’s reading after you’ve moved. When you sail somewhere else, the pill, mini-overlay, calendar, and depth chart now all switch to the nearest reference station until the engine builds a fresh fit at the new spot. Anchor back at the old place and your previous “Confirmed” reading returns automatically.
- OpenTide contributor status page shows a fallback prediction during the build-up window. If you’ve just dropped a contributor at a new pier or moved to a new anchorage, the page now embeds the nearest crowd or reference station so it can render a usable curve while your own fit gathers data.
- Under the hood: subscription tier scaffolding (Explorer / PRO / FLEET) is wired up. Existing BETA accounts are grandfathered — you keep what you have. Paid tiers switch on in a later release.
v0.11.0
Marlinspike
- Replay any trip on the map. Click a day in your Recent Trips card and hit the new ▶ Replay button to re-sail the route. The map follows the boat — fast through open water, slow through the tricky bits — with pause, restart, and 1×/2×/4×/8× speed. Anchored time at the start and end is trimmed automatically.
- Save your trip as a shareable video. Two formats next to the replay controls — ▯ Vertical for Reels, TikTok, or Shorts; ▭ Widescreen for YouTube and group chats. Sealink fills in the From and To anchorage names automatically, adds distance and speed stats, and closes the clip with a Sealink card and QR code. One click per format.
-
A real export, in both formats:
Vertical · for Reels / TikTok Widescreen · for YouTube / desktop - Crowd tide stations now show where they are. The popup title used to just read “Crowdsourced Tide Station”; now it shows the actual coordinates of the anchorage cluster so you can reference it in a conversation or screenshot.
- Under the hood: the daily admin email now reports OpenTide partner activity, the build pipeline is faster, and there’s a new Tides ops dashboard in the sidebar for SUPER admins to see the full network at a glance.
v0.10.38
Galleon
- Tide predictions now reach almost every coastline on Earth. The reference network grew from ~5,400 to 6,715 stations worldwide, covering regions that previously had nothing within 200 nm — Madagascar, East Africa, Indonesia, the Philippines, the Russian Arctic, Greenland, the entire Caribbean basin, both coasts of South America, Pacific island nations, the Australian and New Zealand coasts, and the polar margins. Anchor anywhere on those coasts and you now have a tide curve.
- Two kinds of reference station, marked differently on the map. About 5,000 are real public tide-gauge observations (NOAA, Kartverket, UHSLC, SMHI, DMI, DHN); the other ~1,700 are model-derived fillers where no real gauge exists nearby. Real stations show as filled amber triangles, model fillers as hollow triangles, and the popup tells you which is which — including that the model fill may be off by 10–30 cm because of local coastal effects.
- Real beats model, automatically. When a Sealink boat earns a confirmed crowdsourced fit in a model-filled region, the nearby model station is suppressed so your real-world data wins. The system stays honest about what it actually knows.
- The Explorer legend separates them. The legend on /explorer.html shows two reference rows so you can toggle real-only or model-only as you like.
- Why this matters at the anchor. A boat anchoring in (say) Madagascar previously got either no tide curve or one stretched from hundreds of miles away. Now you get a prediction typically accurate to ±10–30 cm, on the same datum as the nearest real station.
v0.10.37
Bilgepump
- Lifetime totals on Console no longer read short. The miles / days / best-day bar at the top of Recent Trips could read low on a fresh server or after a restore. It now reconciles with the tracks drawn on the map and picks the larger total.
- Embedded widget shows your full track history again. Two bugs were hiding everything — the widget was being built twice on the same page, and the track feed was capped too low. Both fixed; the full year’s line and tide stations render properly on third-party sites.
- Imported tracks no longer draw a phantom line back to the start of the month. Importing a one-day GPX in February and then sailing somewhere in March used to bridge the two trips with a straight line. Disjoint trips stay disjoint now.
- Map polish on the embedded widget. Satellite imagery is the default base layer with OpenSeaMap on top, track lines are thicker, this year always sits above older years, and annotations are colour-coded so a busy harbour stays scannable at low zoom.
- GPX import history is friendlier on the Setup tab. Always shows a collapsed “Past imports” row (with “No imports yet” for new captains) and pre-loads in the background so it’s ready when you click in.
- Admin tools for repopulating a fresh server. SUPER admins get bulk-GPX import and a position-table restore button, handy when migrating between environments.
v0.10.36
Forepeak
- The embeddable widget works on third-party sites again. Two issues were silently breaking it on blogs and club pages; both are fixed. Drop the one-line embed anywhere and you’ll see your live position, recent track, and tide stations.
- Setup wizard fires for new captains again. A login-loop bug was bouncing brand-new signups between the dashboard and the wizard. New captains now land on onboarding as intended.
- Clicking a Recent Trip scrolls the map into view. The trip card was highlighting the route, but the map could be off-screen on long Console pages. It now scrolls into view automatically.
v0.10.35
Companionway
- Your boat’s own tide fit wins over everything else. When you’re anchored somewhere your boat already learned, today’s tide curve uses YOUR data first — then crowd consensus, then a single-boat crowd fit, then a reference station as a safety net. The morning briefing tells you which source it came from.
- Wind-shift card at anchor. When you’re anchored and the true wind sweeps 30° or more over about half an hour, you get a heads-up: “wind shifted 47° (NE → E) over the last 30 min — boat will swing on rode.” Smaller moves stay silent.
- Anchor-drag alarm no longer cries wolf during a wind shift. When the boat swings on its rode, the GPS distance from the anchor looks like it’s growing. The drag predictor now recognises a swing-on-rode and stays quiet; the wind-shift card surfaces instead.
- Daily admin email no longer logs “20 errors” from a 2-second WiFi blip. Brief plugin disconnects are normal and now stay silent in the morning digest. Real server bugs still surface.
- Honest “moored” vs “anchored” everywhere. A boat at rest in a marina slip or on a mooring isn’t anchored. The vessel-status pill now reads “MOORED” unless the anchor alarm is actually armed.
- Morning briefing uses correct local times. Recap timestamps (peak gust, anchor-armed, max distance) were off by several hours in non-UTC timezones. Fixed.
- Background schedulers survive overnight laptop sleep. The daily admin digest, monthly voyage-log build, and weekly tide refresh used to occasionally miss a fire when the server slept across the deadline. They now check in every minute, so a missed schedule gets noticed within a minute of wake-up.
- Bug-scan sweep: ten small fixes around alerts, image panels, push subscriptions, logout, and bad-depth handling. Nothing user-visible alone; each one closes a small gap.
v0.10.32
Stowage
- Admin: preview the daily digest without sending it. The SUPER admin’s “send daily digest now” tool used to email every time. Default is now a true preview; you opt in to actually send.
- Rate limits actually enforced. A wiring bug had silently bypassed every rate-limit policy — login, public API, support endpoints, guest chat. Fixed; login is genuinely capped at 10/min now, support at 30/min, admin tools at 5/min.
- Landing-page hero counters quieter for screen readers. The “Xs ago” ticker was being re-announced every 5 seconds. Now silent unless the actual content updates.
- Trip-detail panel always escapes annotation text. A defensive fix to a code path that hadn’t been needed in practice; closes a theoretical XSS hole.
- Daily-digest recipient list is case-insensitive. Same address with different capitalisation no longer counts as two mailboxes.
v0.10.31
Reefer
- SUPER admins get a daily fleet recap by email. Once a day at 08:00 UTC, every active SUPER user gets a tight summary of the previous 24 hours — boats reporting, data points ingested, new signups, alarms fired, plus a “needs attention” band only when there’s something to act on. Quiet days skip the email entirely.
- Digest history remembered. Each day’s recap is recorded so a service restart can’t double-send, and the numbers are kept around to support a future “vs 7-day average” arrow on each tile.
- SUPER admins can preview the email on demand. Re-renders today’s digest in the browser without firing the email so you can see what the morning would look like before the schedule fires.
v0.10.30
Pulpit
- Crowdsourced Tides feature page rewritten in the captain voice. Same shape as the new home page but tightened, with the special-character mojibake fixed. Kept: the Elizabeth Harbour example, the three pillars, the confidence-tier ladder, the privacy bullets, and an optional math expandable for the curious.
v0.10.29
Boom
- New marketing landing page. The home page is rewritten around three captain promises — see everything from anywhere, a co-captain who never sleeps, and an alarm that wakes you. A second band leans into what makes Sealink different (tides learned from your own anchorage, polars built from real sailing, snapshot voyage notes, offline-tolerant install). Much shorter than the old one.
- Live network stats in the hero. The little green dot under the hero buttons now shows real numbers — how many boats are streaming, how long since the latest position, tide-station and POI totals. Tide and POI counts deep-link to the Explorer map.
- Sister-page nav cleanup. Old links to sections that no longer exist on the home page are gone — nothing dead-ends.
v0.10.28
Lazarette
- Tap an annotation in a trip card to open its detail panel. Tapping a voyage note inside an expanded trip used to collapse the trip instead. Each annotation row is now its own clickable target; the trip stays expanded and the side panel slides open with the note’s full detail.
v0.10.27
Vang
- “Built within the OpenSeas Tech Collective” in the footer. A small attribution line with a link to openseas.tech appears on every public Sealink page and inside the dashboard.
v0.10.26
Yawl
- Recent Trips loads on first visit again. A regression had left the trip list stuck on “Loading…” for captains landing directly on the dashboard. Loads on first paint every time now.
v0.10.25
Ketch
- Morning briefing is actually useful now. Today’s outlook adds sunrise/sunset (in your timezone and 12/24h preference), the next two tide events with heights, and a tight weather summary — wind range and gust plus a flag if a thunderstorm or heavy rain is coming in the next 3 hours.
- One briefing per day, never a backlog. The card expires at your local midnight, so a captain who hasn’t logged in for a few days sees only today’s briefing — not a stack of stale ones.
- No spam for dormant boats. The briefing only fires when there’s something to look back on. A boat sitting offline for a week generates no briefing at all.
v0.10.24
Bowline
- Tap a trip card to expand it inline. The same click that highlights the day’s route on the map now also slides open a panel inside the row showing every voyage note pinned that day — time, type, title, description, and a thumbnail that opens full-size in a new tab. Tap the row again to collapse.
- Download GPX for just that trip. A small GPX button on the expanded panel pulls that single day’s track — useful for archiving a passage, sharing a route with crew, or feeding it into a chartplotter.
v0.10.23
Lantern
- Highlighting a trip isolates that route on the map. Click a row in Recent Trips and every other layer hides — live tracks, past years, the anchor circle, voyage pins — so only the highlighted day’s amber line is drawn over the chart. Click again and everything comes back.
v0.10.22
Latitude
- Lifetime running totals at the top of Recent Trips. A new stats bar pins the captain’s career numbers — total miles, trip days, best day, max SOG ever, max gust ever — using the same filter rules as the list below.
v0.10.21
Pinnace
- Click a trip card to highlight its route on the map. The dashboard draws that day’s track in amber with a white halo, drops green Start and red End markers, and zooms to fit. If you’re on another tab the dashboard hops back to Console for you.
- Active row gets a tinted background so it’s obvious which day is being shown on the map.
v0.10.20
Tiller
- Drift-only days no longer appear in Recent Trips. Days where the boat translated slowly but never crossed sailing speed (1.5 kt) aren’t trips — they’re anchorage activity. The filter now requires real sailing-speed motion before counting a day as a trip.
v0.10.19
Helm
- Better trip detection. The filter now keeps a day if the boat covered more than a nautical mile AND ended up somewhere meaningfully different from where it started — so slow overnight drift counts, but anchor swing doesn’t.
- Drift-only days get a “drift” tag. Instead of misleadingly showing “0 m underway, avg 0.0 kts”, the trip line now says it was a drift with the actual max speed.
- Engine run-time per day on each trip card. Engine hours accumulated that day appear next to the RPM stats.
- Voyage-notes line clearer. Now reads “✍ 2 voyage notes on this day” with a hover tooltip explaining what voyage notes are.
v0.10.18
Topgallant
- Hours-underway on trip cards fixed. Was counting the entire wall-clock day; now only the time you were actually moving above sailing speed. Anchored days read as quick manoeuvres; sailing days read as real hours under sail or motor.
- Trip cards show real per-day metrics. Three lines per row — motion (hours, avg SOG, max SOG), engine (avg + max RPM when it ran), and weather (wind, peak gust, sea state). Notes count appears on its own line if you’ve pinned any.
- Average SOG is now realistic. Calculated only over the time you were actually moving, matching how the sail felt.
v0.10.17
Logbook
- New Recent Trips card on Console. A captain-readable log of each day the boat moved more than a nautical mile — date, distance, hours underway, average SOG, peak gust, notes count.
- Pairs with the existing trip surfaces. Daily Passage Summary for today, Drag History for overnight anchor events, and now Recent Trips for the multi-day retrospective.
v0.10.16
Landlubber
- Setup tab opens to Boat by default. The Boat button used to be highlighted but the Mapping panel was actually showing — the visible panel now matches the active button on first paint.
- Hash-restore to an Advanced setup panel auto-expands the Advanced row, so the active tab is never hidden from view.
v0.10.15
Blackflag
- Dismissed Co-Captain cards stay dismissed. The engine was re-creating dismissed cards every 5 minutes, so your X click felt like it didn’t take. Now dismiss sticks until the card naturally expires.
- Anchor-night summary is per-anchorage now. Dismissing last night’s recap no longer hides tonight’s when you re-anchor somewhere new.
- Anchor-night card uses hours, not days. “Last 24 hours at anchor” instead of the awkward “Last 1d at anchor” — hours are how captains think about anchor stays.
- Setup → Mapping shows clean field names. Each pill-mapping row sticks to a tidy label (Volts, RPM, Tank 1 Level, etc.) instead of whatever the underlying data-point happened to be called.
v0.10.14
Scallywag
- Wind Rose now shows true wind, not apparent. The chart used to bin boat-relative wind, so a 5-kt easterly while sailing north looked like a southerly. Now corrected for boat motion when SOG and heading are available; the title tells you which mode rendered.
- Mapping rows relabelled. Wind Angle / Wind Direction were ambiguous — the system wants the boat-relative apparent wind. Renamed to Apparent Wind Angle and Apparent Wind Speed so it’s clear what you’re mapping.
- Setup → Advanced grouping redesigned. Advanced tabs now drop in as a clearly separate row below Quick when expanded, instead of being mixed in. Tinted background, dashed left border, smooth animation.
v0.10.13
Portside
- Setup tab gets a Quick / Advanced split. Five everyday tabs are visible by default (Boat, Ribbon, Charts, Account, Theme); the rest hide behind an “Advanced” toggle. Less wall-of-options for new captains.
- Advanced choice persists per device. Once you expand Advanced on a browser, it stays expanded. Deep-links to an Advanced tab also auto-expand the row.
- Default Setup tab is Boat. Matches the onboarding wizard’s opening step so the orientation stays consistent.
v0.10.12
Poopdeck
- Daily morning briefing. Once per day in your local morning, the Co-Captain posts a card with yesterday’s recap (distance, peak gust, alarms) and today’s outlook (sunset, forecast, tide range). Stays visible all day so a mid-afternoon visitor doesn’t miss it.
- Push notification on first sight. The briefing fires a push the first time it’s posted each day. The card may update in place afterwards, but you only get one push.
- Built on existing recaps. The briefing reuses the daily-passage and anchor-night data the Co-Captain has been tracking already — no new sensors needed.
v0.10.11
Stern
- Anchor-night summary card. The morning after any stay where the anchor alarm was armed for at least 4 hours, you get a recap — how far the boat swung, how much of the perimeter it used, peak gust, and any alarm fires. Answers “how did we hold last night?” at a glance.
- Severity follows what actually happened. A quiet night reads as a calm info card; if the alarm fired or the boat got close to the perimeter, the card escalates to a watch level.
v0.10.10
Starboard
- Curated default chart set for new users. New captains land on six broadly useful charts (Wind, Weather, Navigation, Depth, Tide & Depth, Battery State) rather than every chart at once.
- Data-aware charts auto-appear. A second tier — Engine, Solar, Sail Performance, Wind Rose, Anchor Drift, Gust Analysis — stays hidden until the relevant signal lands. The Charts tab fills itself in as your boat starts talking.
- Specialty charts opt-in. Barograph, Battery Health Trend, Moon Calendar — off until you enable them in Setup. Less noise on day one.
- Power users untouched. The moment you toggle a chart in Setup, the system stops second-guessing — tier defaults are first-paint guidance only.
v0.10.9
Shroud
- No more spurious error messages on dashboard load. The startup health check used to look like a failed request in DevTools. Loads silently now.
- Wizard handles unauthed landings cleanly. Direct-linking to onboarding without being signed in now goes straight to login.
- Ribbon collapse arrow is more discoverable. The chevron under the ribbon that toggles between pills and ticker is now bigger, brighter, and gently animated so first-time captains notice it.
v0.10.8
Ghostship
- Moon and Celestial pills compute everything locally. Moon phase, illumination, age, next-full/next-new are pure astronomy — no boat sensor required. The dashboard no longer needs a plugin mapping for these.
- Setup → Mapping is cleaner. Moon and Celestial no longer clutter the pill-mapping list since they compute everything locally. The on/off toggles for both pills are unchanged.
v0.10.7
Figurehead
- Curated default ribbon pills for new users. New captains land on six broadly useful pills (Navigation Combo, Wind, 24h Forecast, Tide Prediction, Anchor Alarm, Celestial) rather than a wall of empty placeholders.
- Data-aware pills appear as the boat starts talking. Depth, Battery, Engine, Weather, Solar stay hidden until the relevant signal lands. The moment your plugin reports battery voltage, the battery pill appears.
- Specialty pills opt-in via Setup. Compass, Moon, Wind Rose, Fuel, Water/Waste stay off until you enable them. Less noise on day one; one toggle to add any of them.
- Power users untouched. The moment you toggle a pill in Setup, the system reverts to showing everything — tier defaults are first-paint guidance only.
v0.10.6
Jib
- First-run onboarding wizard. A five-step setup flow runs automatically on a new account: identity, make & model (auto-fills dimensions), boat details (draft hard-gated for the grounding alert), display preferences (units, timezone), and the plugin secret with a live “waiting for first data” indicator. Each step is short and skippable.
- Skippable, with Back, resume, and re-run. Each step has a Back link, the wizard remembers where you left off, and you can re-run the whole flow any time from the Setup tab.
v0.10.5
Groggy
- Daily passage summary. Once you’re anchored for the night, a digest card lands — distance covered, average SOG, peak gust (with the time it happened), engine hours, anchor-drag events. Sticks around for 24 hours so the morning-after reader doesn’t miss it.
- Severity tracks alarms. Clean days read as a calm info card; if the alarm fired at all, it escalates to a watch and points at the Drag History panel.
- Co-Captain feature set rounded out. Six cards now ship across v0.10.x — sunset deadline, tide context, grounding-margin countdown, anchor-drag prediction, squall risk, daily passage summary.
v0.10.4
Noreaster
- Squall risk card. Co-Captain reads pressure trend, forecast gust, live wind, and weather code together to flag squall risk over the next ~3 hours — one “you should know” sentence with a severity tier.
- How it grades risk. Thunderstorm in the next 3 hours = alert. Forecast gust above 30 kt with pressure dropping fast = alert; lighter combos step down through watch and info. Onboard pressure dropping faster than the forecast says posts a low-confidence heads-up — the weather may be turning before the model catches up.
- Live wind ground-truth escalation. If the forecast says “gust to 27 kt” and your sensors are already seeing 22 kt, the card promotes from watch to alert — the wind has started.
- Tuned conservative on purpose. Thresholds lean toward fewer false alarms; the body always names what triggered the card so you can sanity-check the call.
v0.10.3
Phantom
- Anchor-drag prediction. A new Co-Captain card watches your distance-from-anchor trajectory and tells you when the boat will hit the perimeter if the current drift rate holds. Three tiers — info for hours out, watch under 90 minutes, alert under 30.
- How it stays honest. Needs five clean position samples and sustained outward drift faster than natural anchor swing. A one-off GPS jump or weathercocking on the rode won’t fire it.
- Pairs with the anchor alarm. The alarm fires when you’ve already crossed the perimeter; this card is the heads-up before that, so you can re-set or stand a watch.
v0.10.2
Privateer
- Grounding-margin countdown. A new Co-Captain card watches your live depth-below-keel against the upcoming tide low and projects how much margin will be left at low water. Three tiers — info under 1 m, watch under 0.5 m, alert if the projection puts the keel on the bottom.
- What it reads. Live depth-below-keel from your sensor (or below-surface minus your boat’s configured draft), and the tide drop from the prediction engine. Stale depth readings suppress the card.
- Fires at anchor or underway. Grounding is most often a tidal-anchorage problem, so this card surfaces whether the anchor alarm is armed or not.
v0.10.1
Sloop
- Co-Captain reads the tide. A new tide-context card surfaces whenever you’re underway — phase (rising / falling / slack), next high and next low with heights, and the next 12-hour range. Spring tides above 2.5 m escalate to a watch with a scope-and-depth reminder.
- Cards hide themselves at anchor. The sunset and tide cards fall silent once the anchor alarm is armed — the Co-Captain helps with planning and transit, then gets out of the way once you’ve set the hook.
- Times follow your display preferences. Co-Captain card clocks now use your chosen timezone and 12/24h format like the rest of the dashboard.
v0.10.0
Forecastle
- Co-Captain insights. A new panel above the data ribbon on Console surfaces contextual cards from a deterministic rule engine — think of it as a watchstander reading the instruments and the forecast and saying “here’s what you should know.”
- Sunset & anchoring deadline. The first rule. Within 3 hours of local sunset, a quiet card shows the sunset time and recommended “anchor by” deadline. Inside 90 minutes it escalates to a watch; under 30 minutes it’s an alert — set the hook while there’s still light.
- Card actions. Each card has Dismiss (×) and Snooze (⏰) buttons. Dismiss is permanent for that event; snooze defaults to an hour. Fresh card next time the conditions reappear.
v0.9.24
Seadog
- Anchor Drag History. The Alarms tab now lists every drag-out event in the past 30 days — when it triggered, how far the boat actually got at peak, the alarm radius at the time, how many notifications fired, and how long it took before you acknowledged. Answers the “what actually happened last night?” question.
v0.9.23
Windlass
- Power charts consolidated 7 to 3. The Charts tab used to ship seven overlapping power charts. Now: Battery State (a new combined chart with bank voltages on one axis, SOC% on the other), Solar Production, and Battery Health Trend.
- What went away. Five charts removed (Battery SOC, Battery Current, Power, Energy Balance, Daily Energy Summary). Battery current is still on the ribbon pill, and the new Battery State chart’s SOC slope shows charge or drain direction at a glance.
v0.9.22
Thwart
- Sea State and Precipitation charts retired. The 24h Forecast pill already shows wave height, swell, and rain probability across its timeline. Both charts are gone; Gust Analysis stays because gust factor genuinely adds something beyond the wind ribbon.
- SailPrint Compare dropdown removed. The overlay-vs-model-polar feature was a race-boat tool that cruisers never used. Your own SailPrint diagram is unchanged.
v0.9.21
Archipelago
- Forecast confidence now grades each axis separately. The percentage circle in the 24h Forecast header used to be all-or-nothing — one model disagreement on wind dragged temp and pressure down with it. Hover now shows three rows (Temp / Wind / Pressure) so you see partial credit and can tell which axis the models are arguing about.
- Tide confidence chip explains itself. The Consensus / Confirmed / Early / Carryover / Approx label next to the Tide Prediction header now hovers to show the underlying sample count, RMS error, and window length — so a strong “Confirmed” reads differently from a borderline one.
v0.9.20
Outrigger
- Engine pill auto-detects single- or twin-engine setups. No more separate Engine (Single) and Engine (Dual) pills. The Engine pill shows one big tachometer when only the port engine reports, and switches to side-by-side the moment starboard turns up. One Setup toggle.
- Fuel pill does the same. One big gauge for a single tank, side-by-side with total for two.
- Existing mappings carry over automatically. Any custom engine-pill keys you set transfer to the new combined pill on next load — no re-mapping needed.
v0.9.19
Mainsail
- Water and Waste pills auto-detect a one- or two-tank setup. Single-tank boats get one reading; second-tank data turning up adds the sub-row automatically. One Setup toggle each instead of two; existing settings migrate cleanly.
v0.9.18
Longitude
- One wind pill instead of three. The dashboard used to ship three different apparent-wind pills. The wind rose — the most informative of them — is now the only one; users on the older variants get auto-flipped over so the reading doesn’t vanish. The separate True Wind pill is unchanged.
v0.9.17
Lanyard
- The “Latest” topbar pill gets out of the way when everything is fine. Now hidden while data is fresh; appears once the dashboard hasn’t received an update for more than two minutes — the moment it matters.
- Tide prediction wears its confidence on its sleeve. A small chip beside the Tide Prediction header shows the tier — Consensus / Confirmed / Early / Carryover / Approx — so you know how much weight to put on the arc.
- Charts remember the time range you picked. Choose 24 h or 48 h once and it sticks across reloads.
v0.9.16
Knot
- Data ribbon slides like a real carousel. The neighbour page follows your finger as you drag, with a rubber-band if you let go before the threshold.
- Pinch-to-zoom never starts a page change. A second finger mid-swipe aborts the slide and hands off to the browser’s zoom.
- Sidebar logo is 40% smaller on phones and tablets. Leaves more room in the drawer for the boat selector and nav links.
v0.9.15
Jetsam
- Hamburger menu stays put when you scroll. Floats at the top on phones and tablets so a long Console scroll never strands the nav off-screen.
- Swiping the data ribbon between pages feels like a carousel. Pages glide horizontally as you drag; soft rubber-band at the ends. Vertical scrolling is detected first so up/down still scrolls the page.
v0.9.14
Hawser
- The Sealink mark stays visible on phone screens. The mobile topbar now reads icon — Boat Console — hamburger, with the brand at the far left and the menu at the far right. The slide-in nav drawer enters from the right to match.
v0.9.13
Hardalee
- Internal release. Tightened a couple of build-time safety nets so future timezone bugs and version-string typos can’t reach you. No user-visible changes.
v0.9.12
Harpoon
- The dashboard reconnects more politely after a server restart. Clients now stagger their reconnect attempts instead of all hammering the server at once. Invisible on a single boat, helpful when many are reconnecting together.
- An invalid timezone preference now warns instead of failing silently. If your configured timezone is a typo or unknown identifier, the dashboard surfaces the problem so you can fix it instead of wondering why dates look off.
v0.9.11
Gangway
- Crowd-sourced tide stations no longer get stuck on a stale “consensus” label. If the boats supporting a consensus fit drift apart or the fit stops measuring up, the station now demotes back to “good” on its next cycle — so the data shown always matches what’s currently in evidence.
- Reference tide stations flag unknown harmonic terms. If a future seed source ships a non-standard constituent name, the server now logs it instead of silently passing it through. Keeps tide predictions honest as we add more reference data.
v0.9.10
Galley
- Onboard plugins survive a small clock drift before their API key revokes. If your Pi or onboard computer’s clock is running a few seconds slow, ingestion will no longer cut out unexpectedly right around an expiry boundary.
- Server startup names any missing email/SMS/push credentials up front. One clear line on boot, instead of finding out days later that a notification quietly failed.
v0.9.9
Frigate
- Times no longer drift by your timezone offset on any pill or chart. A long-standing class of bug: server-emitted timestamps were being parsed as local time in some browsers, shifting times by hours and occasionally onto the wrong calendar day. Fixed at the source so every pill, chart axis, and log line agrees from now on.
v0.9.8
Genoa
- Boat position time now respects your timezone preference. The dashboard’s “boat time” line was the lone holdout still rendering in browser-local time. It now follows your Setup → Display timezone like everything else on the page.
v0.9.7
Fairlead
- Moving across a mooring field to deeper water now creates a fresh tide station. If your recent depths jump by more than 1.5 m from the existing station’s historical median, the engine starts a new station instead of folding both spots into one wonky fit. Calm-water and Mediterranean anchorages benefit most.
- Eased an over-aggressive quality gate on low-tide-range anchorages. Stations that briefly dropped to “early” in v0.9.6 should return to “good” on their next cycle if the underlying data is clean.
v0.9.6
Sheepshank
- Crowdsourced tide stations are much harder to poison. Sonar burps from a school of fish or a soft bottom used to be enough to skew a station’s tide fit. Several new sanity checks now reject those bad readings, and tightened the cluster radius so two close anchorages stay separate stations instead of merging.
v0.9.5
Gimbals
- Tide stations no longer disappear when you zoom out. The Explorer page used to silently drop reference and crowdsourced stations at wider zooms. Every station in view is always shown now — clustering just groups them as you zoom out.
- Map markers stack in a sensible order everywhere. Across the Explorer, embed widget, and dashboard, crowdsourced tide stations always sit on top, reference stations in the middle, community POIs underneath — so a tide station can’t end up hidden under a POI cluster.
- Your own tide station hides itself under your boat icon. When the tide pill on your dashboard is already showing the reading, the matching marker right under your vessel is suppressed. Sail more than 250 m away and it returns.
v0.9.4
Dunnage
- The live dashboard stays connected on flaky mobile Wi-Fi. Real-time updates now tolerate longer silence before reconnecting — better for cell-tower handoffs and marina Wi-Fi dead spots.
- Anchor-alarm Test button checks both Twilio credentials before sending. Previously it only verified one of the two, which could allow a half-configured setup to look like it worked.
- Quieter startup log. The first-boot admin-seeded line no longer includes an email address.
v0.9.3
Ballast
- Logout actually logs you out. Tokens used to remain valid for up to 5 extra minutes past their expiry; that window is now 1 minute, closing the small gap where a revoked session could still slip through.
- Offline assets fail gracefully instead of hanging the page. If the service worker can’t fetch a script and doesn’t have it cached (fresh install on bad Wi-Fi), the browser no longer stalls — the page recovers as soon as the connection comes back.
- Database gains a few safety rails. Added integrity constraints across community POIs, ratings, tide observations, and boat preferences, plus a uniqueness guarantee on the public-tracking-link token. Stops orphaned rows from ever existing.
- Hardened a couple of small XSS surfaces. Boat make/model dropdowns now escape every dynamic field they render, so a future admin-set value with HTML characters can’t inject markup.
v0.9.2
Masthead
- Anchor-drag push notifications now actually reach your phone. Push delivery was being fired off without waiting for the result, so failures (expired subscription, network blip) went unlogged while SMS and email masked the issue. Fixed.
- Custom alert rules no longer go quiet after a single dispatch hiccup. If your alarm provider had a brief blip the moment your rule fired, the cooldown timer used to start anyway — silencing the rule for its full cooldown while the underlying condition was still happening. Cooldown now only starts after notifications actually go out.
- Weather forecast refresh is fully isolated per boat. Each boat now gets its own database connection during the refresh cycle, so a stalled fetch on one boat can’t affect the next.
v0.9.1
Dory
- New public Explorer map at
/explorer.html. Anonymous world view of every crowdsourced tide station, every NOAA + TICON reference station, and community POIs — no account needed. Layer toggles in the corner, clustering as you zoom out, same rich popup on every marker. Linked from the main nav and the Crowdsourced Tides feature page. - Crowdsourced tide station popups now match the reference ones. Click any teal circle and you get the same 24-hour arc, live Rising / Falling / Slack header, and chronologically-sorted Previous / Next high and low rows. Only the colour differs — teal for crowdsourced, amber for reference.
- Once a fit is “good,” it stops expiring. Previously any crowdsourced station’s tide fit was hidden once it was 7 days old. Good and confirmed fits now stay published until a better one converges. Early and carryover fits still age out at 7 days so low-quality first guesses don’t linger.
- NOWCAST now reads the same tide prediction as everywhere else. The nowcast tide-state line and its next-slack timing occasionally quoted different minutes than the Tide Prediction pill right next to it — nowcast was still reading from the v1 prediction object while every other surface had been switched to v2. Fixed.
- Reference-station popup no longer gets stuck on “Loading prediction…” Clicking back and forth between stations now reliably refreshes the prediction every time.
- Depth-pill no longer flips to “Slack” mid-cycle. The Rising/Falling indicator is now read from the current moment, not from a stale left edge of the chart.
- Explorer nav matches the marketing site — big SeaLink.cloud logo with its BETA hat, orange-red “Sign Up FREE” button with the shimmering label, legible outlined “Log In” button.
- Accurate moonrise and moonset on the Celestial pill. The old estimate could miss by 1–2 hours at first-quarter moon — sometimes claiming the moon was set while it was clearly overhead. Replaced with a proper lunar ephemeris, accurate to roughly 2 minutes at any latitude and phase. Look outside and the pill now agrees.
- Explorer legend shows live counts, and clusters tint by type. The Layers box reads “Reference tide stations (5,371) / Crowdsourced tide stations (1 so far!) / Community POIs (176)” with the numbers pulled live from the database at page load. Cluster markers are now coloured by what they contain: amber circles for reference-station groups, teal for crowdsourced, purple for POIs — instead of the default green/yellow/orange count-based palette, which told you nothing about what the cluster represented.
- “Updated X ago” on the crowdsourced station popup reflects the boat’s heartbeat, not engine churn. Once a harmonic fit stabilised, the old timestamp stopped advancing even though the boat kept streaming depth every minute — so you’d see “Updated 5h ago” on a station that was reporting right now. The popup now reads the latest sample’s timestamp directly: silent boats show hours, live boats show minutes.
- Carryover fits only borrow within 50 nm. When you arrive at a fresh anchorage, Sealink bootstraps tide predictions from your most recent good fit nearby — but a fit from a different coastline could be badly wrong. Carryover now refuses anything more than 50 nm away.
- Explorer hero CTA on the landing page. The Tide Intelligence section now has an “Explore the live map” button so visitors can see the stations on a real world map before reading the deep dive.
- Crowdsourced Tides feature-page copy updated to match the live system. A few claims had drifted out of sync as the engine matured. All rewritten.
v0.9.0
Bowsprit
- Predicted tide curve now lines up with your depth reading. The half-metre gap between the tide arc and the depth trace — visible most clearly on the Tide & Depth chart — is gone. The engine now auto-detects when you’ve moved to a new anchorage and scopes the harmonic fit to that spot only, so your current water depth and the prediction share a single baseline instead of averaging old and new anchorages together. Confidence reaches “good” in about 73 hours of clean data at a fresh anchorage.
- ~6,000 world reference tide stations click through to a full forecast. The amber triangles now open a 24-hour arc centred on “now” — with a dot showing where you are in the cycle, a dashed vertical rule, and Previous/Next high/low sorted chronologically instead of blindly typed. A live “↑ Rising” / “↓ Falling” / “↔ Slack” header shows the current state at that station.
- Depth pill reads its tide state from the prediction, not a data map. The Depth (advanced) pill’s ↑ / ↓ / slack indicator is now computed directly from your harmonic fit — one less mapping to configure in Setup, no chance of it ever drifting out of sync with the predicted high/low times.
- Map clusters instead of carpet-bombs pins. Reference tide stations, crowdsourced tide stations, voyage annotations, and community POIs now collapse into numbered chips at lower zoom levels and expand as you zoom in. A zoomed-out world view actually shows the shape of the coastlines again.
- Dashboard map no longer freezes on “No location data yet.” If your AIS beacon has been quiet for a while but the SignalK plugin is still reporting, the map now centres on whichever source reported most recently instead of stubbornly picking the stale one.
- “Slack” in the middle of a falling tide is gone. The Tide Prediction pill now correctly shows Rising or Falling mid-cycle, and only flips to Slack within 45 minutes of the next extreme.
- Tide backfill now catches almost every historical sample, up from a much smaller fraction. Stations with longer ingest histories will see noticeably faster confidence promotion as the next engine cycle works through the catch-up.
v0.8.3
Horizon
- ~6,000 world reference tide stations on the map. Zoom to any coastline and you’ll see amber triangles for official reference stations — NOAA covers the US and TICON covers the rest of the world. Click one to see its name, country, and next 24-hour tide curve. Instant tide context at any anchorage, even ones where no Sealink boat has ever been. Toggle with the new ▲ button in the map overlay controls.
- Useful tide predictions on day one at a new anchorage. Previously, arriving somewhere new meant waiting a day or two for enough depth data before your tide pill, mini-tide overlay, Tide & Depth chart, and Moon & Tides calendar had anything to show. Now they all automatically pull from the nearest reference station within 60 nm — marked with a small amber 📍 chip naming the station and its distance. Your boat’s own fit takes over automatically once enough local data accumulates, and the badge flips to green.
- v2 tide predictions are now the default for everyone. The harmonic-fit tide engine introduced in Swell no longer needs
?v2=1in the URL. Combined with the reference-station fallback above, a brand-new boat sees useful predictions immediately instead of a “gathering…” placeholder. If you want the old v1 back for comparison,?v2=0opts out. - Attribution stays compliant on non-public-domain stations. International stations (UK, Canada, Australia, and a few others) require upstream attribution under their data licenses. Hovering the amber chip or the map triangle surfaces the full attribution string. Stations with non-commercial-only licenses stay internal and aren’t served via the API — about 600 stations, mostly edge-case coastlines.
- Reference dataset refreshes on a schedule. A weekly background service checks the upstream reference dataset (openwatersio/tide-database) for updates. New stations and corrections flow in without a deploy.
- Reference tide times line up closely with NOAA. At the US stations we’ve checked, predicted high/low times are within a minute or two of the official tables. Three soak-test bugs fixed: timing math now correctly factors in the astronomical correction (was off by hours otherwise), chart-datum offsets are now applied so heights match other tide apps, and a quality-gate dead-zone that was keeping some boats stuck on reference data is gone. Your own fit now takes over on day two at any new anchorage.
v0.8.2
Anchor
- Tide carryover restored on first day at a new anchorage. When you arrive somewhere new, the tide engine now bootstraps a low-confidence prediction from your most recent good fit while local data builds. Auto-expires after 14 days and won’t borrow from more than 50 nm away.
- Tide v2 fits now usable on day one for any boat with depth history. Previously the new engine had to wait days for fresh data after deploy. Now it seeds itself from your last 7 days of recorded depth on the very first cycle.
v0.8.1
Leeway
- Tide v2 predictions show up faster at a new anchorage. A new preliminary tier (24–48 h) publishes a partial fit with an amber “V2 *” tag, then upgrades to the full green V2 badge as more data comes in.
- Tide v2 carries over from your previous anchorage. Until the local fit converges, the badge shows “V2 ⇢” in amber to indicate the prediction is borrowing from your most recent good fit.
- Clearer signaling while tide v2 is still gathering data. Instead of showing a confusing v1 fallback alongside the new badge, the Tide pills and charts now show a single clean “v2 collecting” placeholder with progress (e.g. “12 h / 48 h, predictions ready in ~36 h”).
- Only fully-converged fits get published to the crowd map. Carryover and preliminary fits stay private to your boat — the public map only shows fits that have passed the full quality threshold, keeping the consensus clean.
- Tide engine is resilient to single-boat hiccups. A bad data point on one boat no longer aborts the whole fleet’s fitting cycle.
v0.8.0
Swell
- Tide predictions now keep learning when you’re not on the dashboard. The new server-side tide engine runs 24/7 in the background, fitting a proper four-component harmonic model (M2 + S2 + K1 + O1) to your boat’s depth+SOG stream as it arrives from the SignalK plugin. No more “wait until I open the dashboard for it to refit” — the prediction is always current when you check in.
- Diurnal inequality is now modelled correctly. Two daily highs of different sizes (very common in mixed tidal regimes — Pacific coasts, tropical waters, parts of the Caribbean) are now predicted accurately. The previous single-sinusoid model used the average and silently lost the lopsided pattern; v0.8.0 captures it properly via the K1 + O1 diurnal constituents.
- Spring and neap variation is now real, not approximated. The tidal range now flexes correctly between spring (M2 + S2 in phase) and neap (M2 + S2 opposed) cycles based on the actual M2/S2 beat from your data — not a moon-phase fudge factor. After the engine has a few days of data, your predicted range will be noticeably closer to what you actually see overhead.
- Crowdsourced Tides on the map. Once your fit reaches confirmed status (about 5 days of clean data at one anchorage), your boat appears as a tide station marker on the dashboard map — and so does every other Sealink boat’s. New arrivals at a popular anchorage can see neighboring stations immediately. The public widget map shows them too.
- Multi-boat consensus fits. When two or more confirmed boats are at the same anchorage, the server periodically pools their data and computes a higher-quality consensus prediction. Boat-by-boat sensor offsets are normalized out, so a transducer mounted higher on one boat won’t bias the result.
- Opt-in for the new UI during soak. Add
?v2=1to the dashboard URL to switch the Tide pills and charts to the new engine’s numbers (with a small “V2” badge). Without the flag, the original prediction renders unchanged.
v0.7.12
Gaff
- Moon phase is now calculated locally. The spring/neap adjustment was getting no signal from the sensor feed at neap, leaving the tidal range over-estimated by up to 40%. Now computed directly from the date, fully offline.
v0.7.11
Clipper
- Quieter dashboard on first load. Stopped a flurry of harmless errors that could fire when the anchor-alarm check ran before the map finished loading. No functional change — just a cleaner console.
v0.7.10
Cleat
- Carried-over tide curve actually draws. When “from history · refining” was showing on the pill, the dashed predicted curve was sometimes invisible. The curve now appears immediately at the correct depth.
v0.7.9
Catamaran
- Anchorage-move detection lands on the right transition time. The step detector was sometimes flagging a normal tide peak as a move and mixing pre-move and post-move readings into the same fit. Fixed — the “just moved · learning” and “from history · refining” indicators now fire when they should.
v0.7.8
Buoy
- Follow-up fixes to the new tide-step detection. The pill now shows “Just moved · learning” right after a move (instead of a stale “Loading...”), and the carried-over prediction kicks in immediately even before any new highs/lows have accumulated.
v0.7.7
Ebbtide
- No more bogus tide predictions after a move. If you relocate to a materially different water depth, the tide panel now detects the step and doesn’t draw a predicted curve from a half-old-anchorage, half-new-anchorage mix. The tide pill, 48h chart, and 7-day strip all show “just moved · learning” while fresh highs and lows at the new spot come in — much better than a confident-looking number that’s flatly wrong.
- Automatic carry-over when a stash is available. If you’ve built up a good prediction at a previous anchorage within the last 7 days (or a nearby boat has shared one), it kicks in automatically as soon as the step is detected — no manual trigger needed. The predicted curve centers on your current water depth with the carried amplitude and phase, and the “from history · refining” label appears on all three widgets.
- Clean handoff when local data catches up. Once the new anchorage has produced five confirmed highs/lows of its own (usually 20–30 hours), the carried values step aside and the prediction goes fully local. The labels disappear on their own — no toggle to flip.
v0.7.6
Astrolabe
- Tide predictions carry across anchorage moves. Before this release, weighing anchor reset the tide prediction and the new spot had to re-learn the whole rhythm from scratch — and if the new anchorage was in deeper water, the predicted curve would sit two meters below the real depth until it caught up. Now the tidal swing (amplitude) stays locked from your recent stay, and only the water-depth baseline rebaselines to the new spot. The next high and low appear at the right height from the first tick after you settle.
- Community predictions rebaseline too. When a nearby boat’s tide observation seeds your prediction on arrival, the swing comes from them but the baseline depth is now taken from your current sensor — so a shared prediction from a boat in 6m of water doesn’t park your curve at the wrong height if you’re anchored in 4m.
- “From history · refining” badge on the tide pill. When your prediction is running on a carried-over amplitude, a small note appears so you know the curve shape is from your recent history. Once five local highs/lows confirm, the badge clears.
v0.7.5
Binnacle
- Curated navigation waypoints on the chart. The passages and cuts that power NOWCAST — Bimini, Rudder Cut, NE Providence Channel and the rest — now appear as cyan flag pins on the Leaflet map alongside your own POIs. Tap one to see orientation, depth, tidal current with slack window, connecting regions, and any danger notes for that cut.
- “Mark” replaces “Waypoint” for your own POIs. The POI type dropdown now defaults to Mark, and the word Waypoint is reserved for the curated nav cuts (admin-maintained). Any marks you created before this release keep their titles and details — only the type label changed. User marks are still fully crowd-sourced; curated waypoints can only be edited by admins so the nav dataset stays consistent.
- Nearby Waypoints on NOWCAST stays fresh automatically. Used to be that updating a passage required a new app release so the embedded data file would refresh. Now passages are maintained centrally — as new cuts are added or notes updated, your dashboard picks them up on the next load without waiting for an update.
- Edit passage details. Admins can click a curated waypoint and edit its orientation, depth, tidal current + slack offset, connecting regions, and danger conditions right from the POI side panel. Changes show up immediately in the NOWCAST passage panel for everyone on that region.
v0.7.4
Ensign
- POI edit history keeps your contact details in sync. When a POI is reverted to an earlier revision, its website / Instagram / phone / email now revert along with the title and description instead of leaving stale contact info behind. Rating sliders are also locked between 0 and 5 so a broken client can’t slip in a bogus value.
- Clearer read-only fields. Disabled dropdowns in the voyage annotation editor now appear visibly greyed out so you’re not tapping a menu that won’t open.
- More resilient gauges on bad sensor readings. Battery and tide graphics no longer blank out on a malformed value — they show a sensible fallback instead.
v0.7.3
Keelhaul
- Safer photo uploads. Photos attached to voyage logs and POIs are now checked that they’re really photos — a malicious file renamed to .jpg gets rejected before it can be stored. Individual photos are also capped at 10 MB so a runaway upload can’t hog your storage.
- Snappier save on slow connections. Saving a voyage annotation no longer stalls for 30+ seconds on flaky satellite internet when the tide graph can’t be fetched. The tide tile is decorative — losing it beats a hung save button.
- Cleaner revision history. POI edit history rows with missing timestamps no longer render as “undefined”.
- Sturdier barometer and depth gauges. They handle a flat-range barometer or a negative depth reading gracefully instead of glitching out.
v0.7.2
Dogwatch
- POI type switch warns before data loss. If you change a POI from Marina to Restaurant, or from Anchorage to anything else, you’ll get a prompt first — those type-specific fields (rate, amenities, VHF, wind rose, holding, depth, etc.) don’t carry over, and previously they were quietly discarded on save. Now you can cancel the switch.
- Cleaner gauges on bad data. The tide graph and wind rose on voyage-annotation cards no longer blank out when a sensor reading is malformed — they fall back to a sensible default state instead.
- Long dashboard sessions stay snappy. Memory cleanup when deleting voyage annotations means the dashboard doesn’t accumulate bloat over a long session with lots of edits.
v0.7.1
Reefknot
- Timestamps show correctly in every timezone. Voyage log times, POI edit dates, and public-widget annotations were shifting by your UTC offset — sometimes by hours. Fixed.
- Safer links on POIs and annotations. Website links and photo thumbnails now block any URL that tries to inject script — important since the public widget embeds on third-party sites.
- POI ratings stay consistent. Two simultaneous ratings could previously cause the displayed count or average to drift. Locked in.
v0.7.0
Logbook
- Voyage annotations — keep a real logbook on the chart. Click anywhere on a voyage-log track to drop a note at that exact moment of your passage. Five types: Photo (pinned as a thumbnail right on the track), Note, Data Snapshot (freezes your sensor readings at that instant), Conditions Log (weather + tide + wind at that instant), and a generic marker. Everything shows up on the public widget too, so visitors watching your passage see the logbook as it grew.
- Point-in-time condition cards. Open an annotation from a week ago and the tide state, depth + tide pill, wind compass, barometer, battery state, and tank levels all reflect what things were like at that track point — not what they are now. Historical weather is pulled from the archive when needed and frozen into the annotation so it never drifts.
- Photo thumbnails right on the track. Photo annotations render inline as framed thumbnails with a pointer to the exact GPS fix, not a generic camera pin — so you can scan a passage at a glance and see where each shot was taken.
- Community POIs. Drop shared points of interest on the chart — marinas, anchorages, restaurants, groceries, chandleries, mechanics, plus fuel, water, dinghy landings, and more. Each type has its own relevant fields (rate / VHF / max draft for marinas; holding / bottom / swing for anchorages) and a quick-pick badge list (~56 badges) for amenities like diesel, WiFi, pumpout, ice, or cuisine type. Full edit history on every POI, per-user star ratings, and public attribution for who last updated each entry.
- Better marina icon. Swapped the dark sailboat pin (easy to confuse with your own boat on a satellite view) for a brighter motor-boat glyph on marina blue — reads clearly as “a dockside” at every zoom level.
- Year-badge fix for new boats. A boat with no logs in prior months no longer loses its current-month log in the voyage-log year selector.
- Correct layering on the chart. Boat icon sits above the anchor alarm circle, which sits above voyage annotations, which sit above community POIs, which sit above the voyage track — both on the dashboard and the embed widget.
v0.6.2
Tradewind
- Community Tide Network. Crowd-sourced tide observations — boats anchored 48h+ with stabilized depth-based predictions automatically share their tide data. New arrivals at the same anchorage get immediate tide predictions instead of waiting 24-48h for their own sensor to stabilize. Observations expire after 5 days and upsert within 0.5nm. Tide pill shows “Community · 12h old · 0.8nm” when using shared data.
- Spring/Neap Tidal Adjustment. Moon phase data (already collected) now drives a spring/neap correction factor on all tide predictions. At new/full moon (springs) tidal range is amplified ~30%; at quarter moons (neaps) it’s reduced ~30%. The tide pill shows the current spring/neap state and factor. Community tide observations are adjusted by the current moon phase, extending their useful life well beyond the 5-day expiry.
- Anchor alarm redesign. Single teal dotted circle replaces the previous 3-ring design. The anchor marker is now draggable — drag to adjust the drop point and the fence circle follows in real-time; new position saves automatically.
- Celestial moon arc fix. If the moon was overhead but the arc showed no dot, that’s no longer possible — the timeline now scans back further to find the visible pass.
- Nowcast confidence ring fix. Was capped at ~75% due to a rendering bug. 100% confidence now fills the full ring.
v0.6.1
Azimuth
- Nowcast Widget. New passage-planning nowcast on the Console page. Five-dimension hazard scoring (wind, sea state, visibility, pressure trend, model confidence) fused with live sensor data for a go/no-go verdict. Separate protected vs. open water assessments, 24-hour timeline, weather window detection, and configurable vessel profile thresholds (Light Sail, Cruising Sail, Heavy Displacement, Trawler).
- Maritime Context Engine. Location-aware wave reduction physics — fetch-limited and depth-limited wave models adjust open-water forecasts for the boat’s actual position. Lazy-loaded regional databases for the Bahamas (7 regions, 73 chart-verified waypoints), Caribbean (18 regions, 33 cuts), US/Canada East & West Coasts, and Mediterranean. Wind-current interaction modeling for Gulf Stream crossings.
- Passage Intelligence. Nearby waypoints section shows the two closest cuts with conditions at the cut, on the other side, tidal flow assessment (wind with/against tide), and slack window estimates with per-cut empirical offsets. Clickable cut names pin the location on the Leaflet map. SUPER users can drag waypoint pins to correct positions.
- Tidal Intelligence. Wind-vs-tide assessment at each cut considers actual tidal flow direction. Near-slack detection suppresses false “ROUGH” warnings when current is minimal. Slack offset support (
slackOffsetHrs) for cuts where slack doesn’t align with high/low water. Uncertainty indicator (±1-2h) shown when no empirical offset is available. - Tide Prediction Movement State Machine. Three-state system (ANCHORED/UNDERWAY/SETTLING) prevents stale tide data from a previous anchorage contaminating predictions at a new location. Clears prediction on departure (SOG > 1.5kt or RPM > 1000 + moved > 5nm), waits for stability before rebuilding (SOG < 0.5kt, RPM = 0, within 0.5nm for 30+ minutes).
- Sensor-First Scoring. Hour 0 of the nowcast uses live sensor readings (wind, pressure) instead of forecast values for the current-hour verdict. Confidence rating now matches the forecast pill methodology (9 sensor-vs-forecast checks).
- Setup → Calibrate. Nowcast threshold configuration with vessel profile presets. Show/hide toggle for the nowcast widget. All threshold values (caution/no-go wind, gust, wave for both protected and open water) individually adjustable and persisted as user preferences.
- Chart Loading Indicators. Teal spinner in empty chart containers while data loads, replaced by the chart once rendered.
- UI Polish. Rounded corner fix on console container (.inner overflow). Tooltips on all nowcast elements matching the forecast pill pattern. Collapsible sections for Nearby Waypoints and Nowcast Details.
v0.6.0
Beacon
- Web Push Notifications. Sealink can now wake your phone, tablet, or laptop with an instant push notification when an anchor drag is detected or a custom data alert fires — even with the browser closed. Supplements the existing SMS and email channels: at-sea users on cellular still get SMS, at-marina users on WiFi also get push. Notifications include “Open Dashboard” and “Dismiss” buttons.
- Setup → Account. Push subscription toggle with live status and an iOS-specific install prompt, alongside the existing phone and password fields. Account owners can also change their email address directly from here.
- Push channel on alert rules. Each alert rule now has a “Push” checkbox alongside SMS, Email, and Dashboard, so any rule can independently opt in or out of push delivery.
v0.5.42
Compass
- New step-by-step plugin install guide. A dedicated Install Guide page now walks new users through the two supported hardware paths — Victron Cerbo GX (with the VE.Can → NMEA 2000 cable) and Raspberry Pi 5 + Actisense NGT-1 USB — from physical wiring through SignalK setup, plugin installation from the SignalK Appstore, pasting your Device Key, and verifying data is flowing. A click-to-reveal hardware switcher keeps both paths side-by-side as equal peers, a third “Coming Soon” SeaNode card points at the upcoming hardware, an inline SVG wiring diagram covers the Cerbo VE.Can / NMEA 2000 connection with a 120Ω terminator callout, and six troubleshooting
<details>entries cover the stuck-points that come up most (plugin stuck on “Connecting…”, no data received yet, Appstore missing plugin, Venus OS SignalK option hidden behind the Large image, Actisense/dev/ttyUSB0not appearing, plugin update flow). - Getting to the guide from where you already are. Added a “Need a hand with step 1?” teaser card on the landing page's How It Works section, an Install Guide link in the main footer, and a link in the “What hardware do I need?” FAQ answer (mirrored in the FAQPage structured-data block so search engines pick it up). On the dashboard, the Setup → Device & API panel's red “No data received yet” alert now includes an inline “See the installation guide” link, the plugin-update banner at the top of the dashboard gets a secondary “New here? See the install guide” link for anyone seeing the banner before they've ever installed the plugin, and the setup panel gets a persistent install-guide link under the credential-copy paragraph so returning users can always find the walkthrough.
- Sitemap + canonical metadata.
/install.htmlis registered insitemap.xmlat priority 0.8, carries its own canonical URL, Open Graph and Twitter card metadata, and uses the same design tokens and slim-nav pattern as the existingprivacy.html/changelog.htmlsibling pages — consistent visual language, zero new dependencies, no framework.
v0.5.41
Rigging
- Every boat icon on the console now points the same way. The boat on the Leaflet map, the boat on the Anchor Alarm widget, and the compass marker inside the Navigation pill were being drawn from subtly different heading values — the map and anchor alarm converted magnetic to true, the nav pill rotated by raw magnetic, and the COG needle on the same nav pill compass was already true. For a boat anywhere with non-zero magnetic variation, that meant the HDG marker drifted several degrees away from its own COG needle and from the anchor alarm boat even when SOG was high and the numbers matched. Now all four — map boat, anchor alarm boat, nav pill HDG marker, and nav pill COG needle — share one reference frame (true north), so the on-screen boat orientation agrees across every widget.
- Heading (Magnetic) mapping is locked and visible everywhere it’s used. The Navigation pill, Wind Compass, 24h Location Forecast, Anchor Alarm, and Navigation chart each now expose a read-only “Heading (Magnetic)” row in Setup → Mapping — greyed out the same way Latitude and Longitude already were, and locked to
navigation.hdgmag, the canonical key the SeaLink SignalK plugin normalizes every heading variant (NMEA2000, NMEA0183, fluxgate, GPS compass) into. This removes a whole category of footgun where picking a true-heading source by mistake would silently corrupt wind direction calculations across multiple pills and charts. - Every pill mapping dropdown now has its own data label. In Setup → Mapping, each pill section’s primary dropdown used to sit anonymously next to the section header — so “24h Location Forecast” was followed by an unlabeled dropdown that happened to be for Air Temp, with nothing on screen to indicate that. Now the section name sits on its own row and every dropdown below it gets its own data label (looked up from the server-side DataPoint definitions), so you can see at a glance that the first 24h Forecast row is Air Temp, the first Navigation row is SOG, and so on. Labels update in place when you pick a different mapping.
- Shorter map card and a quieter boat tooltip. The Leaflet map card is 77px shorter than the previous perfect square, giving the console more vertical room for everything below it. Hovering the boat icon on the map now shows a plain “Your vessel” tooltip instead of a multi-line technical block listing source key, magnetic variation, raw sensor value, and computed true heading.
- Mini Wind Compass in the top-left corner of the Leaflet map. Replaces the old boat-icon button with a live mini compass — N/S/E/W cardinals, wind direction arrow, and wind speed in the centre, colour-coded at 12 / 22 / 34 kts. Tapping it opens a popup with speed, gust (if mapped), and a “Center on boat” button.
- Live data feels live again on the console. A silent regression was freezing static pills and the “Last Update: Xm ago” timestamp every time the boat sent a position update. The whole console now ticks live as expected.
v0.5.40
Celestial
- One source of truth for sunrise and sunset. The celestial ribbon pill and the Moon & Tides chart now share a single sun-position calculator that runs client-side against your live boat GPS. Previously the pill computed locally from your current position while the chart read pre-cached values from Open-Meteo anchored to wherever the backend last fetched a forecast — meaning the two could disagree after a long passage, and the chart lagged your actual location. Now both always agree, both always track the boat, and the 7-day strip keeps working offline even without a cached weather forecast. The server-side Open-Meteo astro values remain in place as a cold-start fallback for the moment before a GPS fix arrives.
v0.5.39
Catspaw
- Timestamps across the app now respect your time zone. A long-standing bug was causing every server timestamp — data-point ages on Setup → Data, device last-seen on Network, dynamic pill “updated” labels, admin activity logs, API-key expiry, support-chat message times, polar-engine history dates, boat position age, and several others — to display in the wrong zone by your UTC offset. For North American users that meant hourly ages off by 6–8 hours and in some cases the wrong day. Fixed site-wide in a single defensive helper, plus a server-side weather-forecast serialization fix so hourly forecast entries now carry an explicit UTC marker. A new build-time lint pass guards against this category of bug coming back.
- “Remember me” now actually remembers itself. The login checkbox defaults to checked for first-time visitors, and your last choice is preserved between visits — uncheck it once and it stays unchecked, re-check it and it stays checked. Previously it always loaded unchecked regardless of what you'd picked last time.
- Skip the login page when you're already signed in. Visiting
/beta/with an unexpired session now auto-redirects straight to the dashboard instead of showing the login form. Runs before any UI paint, so there's no flash of the login screen on the way through. - Remember-me restored to a full 24 hours. Last release shortened the remember-me token from 24h to 4h. Reverted — the on-screen label promised 24h, and re-logging in every four hours is more friction than the marginal hardening was worth. New logins again get the full 24-hour ceiling.
- Nav cleanup: consistent one-word labels. The old “NMEA” menu item is now “Network”, and “Performance” is now “SailPrint” — matching the rest of the nav (Console, Charts, Alarms, Setup, Fleet, Support). The panel inside “Network” is now titled “Network Health”. Old bookmarks like
#performancetransparently redirect to the new names. - Network tab shows a spinner while loading. Opening Network no longer shows a blank card while the first snapshot is fetched — there's now a clear loading indicator that swaps out as the data arrives.
- Setup → Mapping sub-tabs are visually distinct. Ribbon Pills / Charts were styled identically to the Setup main tab row right above them, which made the hierarchy hard to read. Replaced with an iOS-style segmented control so the two levels of navigation are unmistakable.
v0.5.38
Topsail
- Network Health page finally tells the truth. The device summary (Online/Stale/Offline), the device list below it, and the data paths table now stay in sync with every snapshot — previously the widget could show “0 online” while the list below showed active devices, and the data paths table never refreshed at all between page reloads. Hovering a Stale badge on a path now also explains exactly why it was flagged (expected rate, last seen, threshold).
- Remember where you were in Setup. Setup sub-tabs (Mapping, Ribbon, Charts, Data, Calibrate, Device & API, etc.) now update the browser URL so a refresh or a shared link lands on the same sub-panel instead of jumping back to the first one.
- Setup → Data is readable on a phone. The data point editor is now a single horizontally-scrolling table at every viewport size instead of collapsing into stacked cards that hid half the controls on mobile.
- Cleaner ribbon and charts on touch devices. Removed the old “experimental” and “new” hats from ribbon pills and charts, and disabled drag-to-reorder for charts on phones and tablets so scrolling through charts no longer accidentally picks them up.
- Activity Logs folded into Setup. The standalone Logs menu item has been moved to the end of the Setup tab as a Logs sub-tab, shrinking the top navigation from nine entries to eight. Old #logs bookmarks still work — they automatically redirect to Setup → Logs.
- Anchor drag alerts no longer doubled up. Two near-simultaneous position ingests could fire two SMS + email alerts for the same drag event; the alarm evaluator now serializes per boat so each breach triggers exactly one notification.
- Sensor sanity checks closed a back door. Physical-limit guards (depth ≤ 500 m, wind ≤ 150 kn, etc.) now apply on every code path, not just the happy one.
- Faster dashboard polls. Removed a duplicate database lookup that was firing on every status call for boats with anchor alarms armed.
- Fleet overview no longer hits the database per boat. A 50-boat fleet now loads in 6 queries instead of ~250 — noticeable on the SUPER view.
- Public widget responses are dramatically smaller. The month-of-track payload for an active boat dropped from ~2 MB to ~20 KB.
- Time-series charts feel fresher. Minute-bucketing now keeps the most recent sample in each bucket instead of the oldest, so live charts no longer look stale by 30–50 seconds.
- Per-boat IoT rate limit. Ingest endpoints now rate-limit per boat secret instead of as one global bucket — a leaked secret can no longer starve other boats’ quotas.
- Remember-me shortened from 24 h to 4 h. Tighter window if a token is ever leaked. (Restored to 24 h in v0.5.39 after we re-balanced friction vs. risk.)
v0.5.37
Monkeyfist
- GPX export/import fixed. Export and Import GPX buttons on the Console tab now work immediately without needing to visit another tab first
- Support unread badge. The unread message count on the Support menu now shows the correct number on first login instead of counting all messages as unread
- Chart delta refresh. Fixed a 400 error on periodic chart updates caused by fractional hours in the TimeSeries API
- NMEA device timestamps. Device “last seen” times on the Network tab now display correctly across all timezones instead of showing “0s ago” for stale devices
- Seamark tile noise. Suppressed 404 console errors from missing OpenSeaMap overlay tiles
v0.5.36
Davit
- Bus health monitoring. The Network tab now shows your NMEA 2000 bus load with an arc gauge, plus device counts, path stats, and plugin uptime at a glance
- Smoother timeline. The 24-hour device history chart is now a clean line graph with a gradient fill instead of a dense bar chart
- Device names everywhere. The data paths table now shows actual device names in the Sources column instead of raw identifiers like “n2k:35”
v0.5.35
Current
- NMEA Network Health. New “Network” tab in your dashboard shows every device on your boat’s NMEA bus — which ones are online, which stopped talking, how many messages they’re sending, and what data they provide
- Device details. For NMEA 2000 devices, see the manufacturer, model name, firmware version, and serial number pulled straight from the bus
- Stale data alerts. Data paths that stop updating are flagged so you can spot a failing sensor before it becomes a problem
- Lighter on memory. The plugin now uses 91% less memory for wind gust tracking — better for boats running on a Raspberry Pi
v0.5.34
Crowsnest
- The view from above. Those with the golden badge can now see the entire fleet at a glance — every vessel, every heading, every gust of wind
- Wind barbs. Meteorological wind barbs with color-coded strength indicators, rendered in the user’s preferred speed units
- True wind calculation. Apparent wind angle + heading → true wind direction, with automatic fallback to direct true-wind sensor data when available
- Zoom to anchorage. One click to fly down to marina level, with automatic back-off when tile data runs out
v0.5.33
Bollard
- Bootstrap CSS removed. Dashboard no longer loads Bootstrap (160 KB saved). All used classes (spinner, badge, visually-hidden) replaced with lightweight custom CSS
- Lazy-loaded tab modules. Admin, Support, Tickets, and Help JS modules now load on-demand when their tab is first opened — saving ~100 KB on initial page load
- CSS preload. Dashboard stylesheet uses
<link rel="preload">for faster first paint - GetHistory() optimized. Chart data endpoint now groups by key server-side instead of materializing 10K rows into memory first
- PointsToday cached. The “Points Today” counter in Setup → Device now reads from a cached column on the Boat entity (incremented by Ingest, auto-resets daily) instead of scanning the full DataPoints table every 30 seconds
- Async startup migration. Database migrations and seeding now run asynchronously on startup, reducing time-to-first-request
- Data tab: Last Value column. Setup → Data now shows each data point’s last received value with staleness timestamp in tooltip. Fixed-width columns with overflow ellipsis for cleaner layout
- Performance tab loading indicator. SailPrint polar diagram now shows a spinner overlay while data loads
- Boat switcher fix. renderBoatSwitcher moved to core auth module so SUPER users’ boat dropdown works immediately on page load (was broken by lazy-load of admin module)
- Deprecated logo removed. Deleted unused 1.2 MB sealink_LOGO.png (v2 is the active logo)
- Voyage log Douglas-Peucker simplification. Track files are now simplified at generation time using the Douglas-Peucker algorithm (10m tolerance). Reduces ~36K GPS points per busy month to ~1-3K while preserving track shape. Expected 80-90% file size reduction (67 MB → ~5-10 MB total)
- Voyage logs switched to JSON. Generated files now use compact JSON arrays instead of JavaScript .push() statements. Loaded via
fetch()+JSON.parse()(5-10x faster than script tag injection). No global variable pollution - Parallel voyage log loading. All years’ track files now fetch in parallel instead of sequentially. Polylines are added to the map in chronological order (oldest underneath, newest on top, last 48h always topmost) for correct z-index layering
- Voyage log cache guard. Loaded polylines are cached in memory — switching tabs and returning to Console no longer re-fetches all track files
- Widget voyage log update. Embeddable widget now uses the same JSON fetch pattern for track loading
- Rebuild endpoint. New
/Export/RebuildAllVoyageLogsSUPER endpoint to regenerate all voyage log files with simplification
v0.5.32
Loosecannon
- Configurable unit preferences. New Calibrate settings for Temperature (°C / °F), Speed (knots / km/h / mph), Depth (meters / feet / fathoms), and Pressure (hPa / mbar / inHg / mmHg). All dashboard pills, charts, tooltips, forecast data, anchor alarm displays, SailPrint polar diagram, and ticker text update live when units change — with a blur transition for visual feedback. Raw data stays in SI/metric; conversion is display-time only
- Dynamic data pills now respect unit preferences. Ribbon “Data” pills auto-detect unit type (speed, temp, depth, pressure) from the data point definition and convert values accordingly. Also fixed: dynamic pills now participate in ribbon pagination
- Anchor alarm unit-aware. Radius input, console map status, alarms page, drag notifications, and all tooltips display in the user’s preferred depth unit. Radius value converts back to meters for API storage
- Precipitation chart units. Switches between mm and inches based on depth unit preference (metric vs imperial)
- Boat setup: MMSI editing. Boat owners can now edit their MMSI from Setup → Boat (previously admin-only)
- Boat setup: make/model fix. Fixed race condition where Make and Model dropdowns would not populate if the boat specs API response arrived before the makes list loaded
- Remember me. Login now offers a “Remember me for 24 hours” checkbox. When checked, the session JWT expires after 24 hours instead of 60 minutes — reducing re-login friction for daily users
- Performance: JS minification. All 28 sealink JS files are now auto-minified on every build via terser (828 KB → 436 KB, 47% reduction). Script tags use versioned cache-busting query strings (?v=X.Y.Z) that auto-update on each release
- Performance: deferred CDN scripts. Leaflet, Chart.js, and SignalR now load with
defer— no longer blocking first paint - Performance: N+1 query fix. GetLatest and PillBundle endpoints reduced from 20+ sequential database queries to a single SQL statement each
- Performance: AsNoTracking. Read-only database queries across Boat, User, and BoatMetadata controllers now skip EF Core change tracking
- Performance: chart delta-load. The 5-minute chart auto-refresh now fetches only the last 10 minutes of data instead of the full 6-hour window, skipping fixed-timeframe charts entirely
v0.5.31
Beaufort
- Engine, True Wind, and Bilge Pump ribbon pills. Single and dual engine pills with tachometer arc gauges showing RPM, coolant, oil pressure, exhaust temp, and hours. True Wind pill with compass rose showing TWS, TWA, TWD and point-of-sail indicator. Bilge Pump pill with animated pump icon, cycle count, and last run time — pulses red when active
- Ribbon pagination. Pill ribbon now pages at 12 slots (3 rows × 4 columns on desktop). Dot indicators in the toggle bar for switching pages. Swipe left/right on mobile. Responsive — adapts slot count at tablet and phone breakpoints. Newly enabled pills appear at the end (last page)
- Email delivery fixed. Switched from Mailgun REST API to SMTP delivery to resolve TLS handshake failures on Windows Server 2012 R2. Welcome emails, registration alerts, and all other notifications now send reliably. Startup test email option added for deployment verification
- IFluentEmailFactory refactor. EmailService now uses IFluentEmailFactory instead of IFluentEmail, ensuring each email gets a clean instance — prevents stale recipient/subject state when multiple emails fire in one request
- “API secret” renamed to “Device Key” across all user-facing surfaces: welcome email, privacy policy, terms of service, marketing site FAQ, and API responses
v0.5.30
Plankwalker
- 10 new charts added. Weather Forecast Overlay on Wind, Weather & Barograph charts (dashed lines showing forecast vs sensor data). Daily Energy Summary bar chart (7-day solar yield vs consumption). Engine RPM & Hours with cumulative engine time calculation. Pressure Barograph with rate-of-change segment coloring. Wind Rose polar chart. Battery Health Trend (daily min voltage + avg SOC). Sailing Performance (actual SOG vs polar target with performance %). Sea State & Waves (wave height, swell, period from forecast). Precipitation Timeline (rain amount + probability). Gust Analysis (5 gust windows: 1min to 24hr). Moon & Tides Calendar (7-day strip with SVG moon phases, sunrise/sunset, tide predictions). Anchor Drift Plot (distance histogram while at anchor)
- Enhanced existing charts. Wind chart now shows wind direction overlay. Navigation chart shows COG alongside HDG (reveals leeway and current). Barograph title shows forecast model confidence spread
- Chart group navigation. Charts tab now has sub-tabs: Wind & Sailing, Weather, Power & Engine, Navigation, and All. Clicking a group shows only that category. Saved preference persists across sessions. Mobile-friendly dropdown fallback
- Forecast data retention. Weather forecast background service now fetches 7 days forward + 2 days back with proper data retention (7-day prune instead of full wipe). Forecast overlay shows historical forecast data alongside sensor readings for comparison. Per-day sunrise/sunset from Open-Meteo for accurate 7-day calendar
- Chart infrastructure improvements. Hover wobble fix on all charts. Loading opacity indicator when switching time ranges. Fixed-timeframe charts skip re-fetch on range change. Standard batch auto-splits into 20-key chunks to avoid API limit. All charts respect user date/time/timezone preferences (12h/24h, timezone display). Data mappings added for all new charts in Setup → Mapping
v0.5.29
Flemish
- Tank level ribbon pills. Five new data pills for monitoring fuel, fresh water, and waste water tanks. The dual fuel pill shows port and starboard levels with per-engine and combined burn rates. Dual water and waste pills display two tanks side by side with selectable labels (Tank 1/2, Port/Stbd, or Fwd/Aft). All tank pills feature animated wave-fill SVG gauges, color-coded levels, sparkline history backgrounds, and warning badges (LOW for fuel/water below 15%, FULL for waste above 85%). Waste pills use inverted color logic — green when empty, red when full. Pre-mapped to standard SignalK/NMEA tank paths out of the box, with full data mapping support for custom setups
v0.5.28
Scupper
- Charts load much faster. All ten charts now share a single batched API call instead of each one fetching independently — that’s 10 network requests down to 2 (one for standard charts, one for the 48-hour tide window). The depth filter context, standard data, and tide data all load in parallel instead of waiting on each other
- Chart data mappings. You can now assign data point keys to each chart independently of the ribbon pills. Open Setup → Mapping and switch to the new “Charts” sub-tab. Leave a field empty and it inherits from the corresponding pill mapping automatically
- Every Setup tab now has a description. Ribbon, Charts, Calibrate, Account, and Theme tabs all have a short hint at the top explaining what the tab controls
v0.5.27
Schooner
- Dashboard loads noticeably faster. Ribbon pills now appear in under half a second instead of nearly two — data fetching starts in parallel with the map instead of waiting for it, the reveal animation is snappier, and a new combined API endpoint cuts an extra network round-trip. Backend queries are leaner too: read-only endpoints skip change tracking, the “latest values” query targets exact index hits instead of scanning 24 hours of history, and chart time-series fetches batch all keys into a single database call
- Pill data mappings now show position sources. Any ribbon pill that uses your boat’s latitude or longitude (Navigation, Celestial, Forecast, Moon, Anchor Alarm) now lists those fields in Setup → Mapping as read-only entries so you can see exactly where the data comes from. On the Data tab,
navigation.latandnavigation.lngare locked to sync-on — you can’t accidentally disable them - Setup tabs reordered. The Setup sub-tabs now follow a more logical order: Mapping, Ribbon, Charts, Data, Calibrate, Account, Device & API, Widget, Theme, Boat. The Map tab (which only had “Default Zoom”) has been folded into Calibrate
v0.5.26
Rudder
- Chart deduplication. All chart endpoints now keep only one data point per series per minute. Duplicate timestamps (caused by sub-second
datetime2precision or overlapping ingest batches) are collapsed server-side, reducing data transfer and eliminating visual artifacts on charts
v0.5.25
Polaris
- Offline queue now preserves original measurement timestamps. Previously, when the SignalK plugin queued data during a connectivity outage and flushed it later, every data point was stamped with the server's clock at the moment it arrived — so hours of historical data all appeared to have been recorded at flush time. The API now accepts an optional client-provided timestamp on both the data ingest and location endpoints, with validation bounds (max 5 min in the future, max 48 hours in the past) and silent fallback to server time for old plugin versions
- Position is now a first-class time-series data point. The plugin sends
navigation.latandnavigation.lngas regular data points alongside the existing Location endpoint call. This means the dashboard map marker updates every ~30 seconds via the same SignalR channel as all other sensor data, instead of relying on the 5-minute dedup'd Location table for freshness on page load - Location dedup now compares against the client-provided timestamp instead of server time, so queued positions from hours ago don't all pass the 5-minute window simultaneously when flushed
- SignalK plugin v0.8.0: captures
update.timestampfrom SignalK deltas (GPS/NMEA time), threads it through the batcher, disk queue, and HTTP sender. Gust and moon calculators also emit computation-time timestamps. Dev plugin synced
v0.5.24
Mooring
- Anchor alarm now actually works end-to-end. Previously the anchor alarm would only check for a drag when you manually clicked "Test Alarm" — meaning a real drag in the middle of the night would go completely unnoticed: no SMS, no email, no dashboard flash. The alarm now evaluates every single position your plugin sends, and the moment you drift outside the perimeter it fires all three channels simultaneously: SMS to your phone, email to your inbox, and a big red banner across the top of the dashboard. A browser notification pops up too (if you've granted permission)
- The Alarms tab now has a dedicated Anchor Alarm row pinned at the top with live status — grey "Disarmed", green "Armed", or pulsing red "DRAGGING" with your exact distance from anchor. The ribbon anchor pill also flashes and glows red during a breach
- The Alarms card on the Console tab (and the matching card on the Alarms tab) now turns into a full red pulsing warning when your boat is outside the perimeter — bold "Your boat is 52m from the anchor point" headline instead of a tiny line of text you might miss. Much harder to overlook when you glance at the dashboard
- Escalation: if you don't acknowledge an anchor drag within 2 minutes, the system re-fires SMS, email, and the dashboard banner automatically — and keeps re-firing every 2 minutes until you acknowledge or disarm. So if you slept through the first ping, you get another one. The escalation interval is configurable per alarm (default 2 minutes)
- The map itself now decorates the anchor circles in red with a pulsing 2x-radius halo and a "DRAGGING — 52m" label floating over your boat icon when the alarm is active. Visible from across the room, even with the dashboard zoomed out
- The red top banner is now sticky: once a drag is detected it stays on screen (instead of flickering off whenever your boat momentarily swings back inside the fence) until you click its X button. The dismiss button also calls a new "Acknowledge" endpoint that stops the escalation loop server-side, so dismissing on one device clears the banner on all your other tabs and devices in real time
- You can now set the alert cooldown yourself — the minutes between repeat SMS/email notifications during a sustained drag. Default is 10 minutes so a boat swinging right at the edge of the fence won't spam you, but you can set it anywhere from 1 minute (aggressive) to 24 hours. The new input is in the Anchor Alarm modal next to the radius
- Fixed: the Navigation pill's latitude/longitude and the "vessel status" indicator could show information from days ago — the dashboard was still reading an older data source that your plugin stopped writing to. The dashboard now uses your live position and rejects anything older than 30 minutes from that fallback source
- Behind the scenes: 12 new unit tests covering every decision branch of the anchor evaluator (first trigger, cooldown window, re-trigger after cooldown, silent mode, disarmed, configurable cooldown values, perimeter edge cases) so a future regression in the drag-detection math gets caught immediately
v0.5.23
Mizzen
- When Sealink Support starts a new conversation with you, you'll now get an email letting you know — so you don't miss it if your dashboard isn't open
- Tidied up our notification emails so the action button ("View Ticket", "Open Support", etc.) is properly centered instead of stuck to the left
- Fixed: the "Last Data" time shown in Setup → Device & API was displaying the UTC time instead of your local time, so it looked hours off from the header's last-sync indicator. It now also shows a live "(5m ago)" counter right next to it
- Setup → Device & API now refreshes itself automatically: Last Data, Points Today, Total Ingested, and Last Batch all update on their own as new data arrives — no need to close and reopen the panel
- Fixed: the Depth & Water Temp chart was silently hiding depth data in a lot of cases (basically any time the boat wasn't actively anchored with the anchor alarm on, or if the speed sensor dropped out briefly). The chart now shows your depth data properly, and falls back to the raw readings if the stationary filter has nothing to show
- Fixed: toggling a chart on under Setup → Charts didn't actually make it appear — you had to reload the page. Enable/disable now works immediately
- Chart titles in the Charts tab now match the labels in Setup → Charts, so "Navigation (SOG + HDG)", "Power (Voltage + Solar)", "Depth & Water Temp" and friends line up consistently
- Rewrote the last several releases of this changelog in plain English. Previous entries had drifted into engineer-speak; they now describe what changed for you, the boat owner
- Fixed: the installed web app was quietly serving you cached files from an older release, so the last couple of updates weren't reaching returning users until they closed every SeaLink tab. You'll now pick up new versions on your next visit as intended
v0.5.22
Meridian
- New Date & Time settings in Setup → Calibrate: pick your preferred date format, 12-hour or 24-hour clock, and your time zone. The whole dashboard — pills, charts, tide times, ticket lists — follows your choice right away, no reload needed
- If you're watching your boat from a different time zone than it's in, "today" is now calculated correctly in the zone you chose
- Fixed: the Activity Logs tab sometimes got stuck on "Loading…" unless you visited the Admin tab first
- Fixed: changing a setting didn't always update the screen until you reloaded — your changes now take effect immediately
v0.5.21
Quartermaster
- Sealink Support staff can now start a new support conversation directly with a specific boat owner — the customer sees it arrive in their dashboard instantly
v0.5.20
Doldrums
- Fixed a rare glitch where the live connection to your boat could briefly drop and reconnect multiple times when your internet came back
- The dashboard now picks up new versions automatically — no more having to close and reopen all your tabs to get the latest update. A small "Update available — Refresh" banner lets you know when it's ready
- Password managers now autofill the login, signup, and change-password forms properly
- Installed-to-homescreen icon works correctly on both iPhone and Android
v0.5.19
Tiller
- The dashboard now handles running low on browser storage gracefully — old cached data is cleaned up automatically instead of the page breaking
- If cached data ever gets corrupted, the dashboard recovers on its own instead of getting stuck
- Extra safety so the map can't accidentally be drawn twice on top of itself
v0.5.18
Cutlass
- Tightened the Developer API so each key's rate limit is fully its own — two keys can never accidentally share a bucket
- "Forgot password?" now behaves identically whether the email exists or not, so an attacker can't tell which addresses have an account
- Fixed: Device & API, Widget, and Developer API panels could get stuck on "Loading…" unless you first clicked the Fleet tab
v0.5.17
Nautilus
- Weather forecasts are more robust — if one weather provider has a hiccup, the rest still come through cleanly
- Public embed widgets and shared boat pages load noticeably faster
v0.5.16
Chronometer
- Fixed: the Sun & Moon pill (and other optional pills) sometimes vanished after a hard refresh — your chosen pills now stick reliably
- Dashboard loads noticeably quicker — your saved preferences are fetched in parallel with everything else instead of waiting
- The Fleet tab no longer runs a bunch of background requests when you haven't even opened it, which keeps the dashboard snappier
v0.5.13
Lighthouse
- Behind-the-scenes failures (like a dropped notification email or SMS) are now logged properly so support can spot and fix them faster
v0.5.12
Bosun
- Security: live connections are now rejected immediately if someone tries to subscribe to a boat they don't have access to
- Fixed: deleting an alert rule now actually works — previously every delete attempt silently failed
v0.5.11
Bilge
- Security: boat icon uploads now inspect the actual file contents, not just the filename, to block disguised or malicious files
v0.5.10
Mariner
- Fixed: disabling a triggered alarm now clears the red pulsing state right away instead of staying stuck until you reload the page
v0.5.9
Navigator
- Fixed: refreshing the page while on the Alarms tab no longer leaves it stuck on "Loading alerts…"
- Fixed: changing the data source on an alert rule now actually saves
v0.5.8
Leviathan
- Security: extra hardening on the Boat Icon picker, Data Alerts list, and Help pages
- GPX import now shows the full reason for a rejected file right on the page (in red), instead of just a quick pop-up toast you might miss
v0.5.7
Kraken
- Security: extra hardening on the admin console so boat, file, and API key names with unusual characters can't cause problems
v0.5.6
Luff
- Depth charts are smarter about only showing readings when you're actually at rest — so underway noise doesn't pollute your anchorage depth history
- Fixed: when viewing several data streams at once, one stream could cut off early — each one now has its own budget
- Fixed: the "plugin upgrade available" banner now shows up for very old plugins too
v0.5.5
Albatross
- Fix: opening a ticket now clears the "NEW" hat and updates the Support unread badge in real-time
- Fix: ticket list refreshes automatically when a customer reply changes ticket status (e.g. waiting_on_customer → open)
- Fix: conversation MarkRead now correctly triggers badge refresh
v0.5.4
Fluke
- SUPER accounts get a sparkly gold/purple badge on the sidebar logo instead of the BETA tag
v0.5.3
Harbour
- Guest chat: floating "Chat with us" widget on the marketing landing page
- Guest chat: visitors provide their name & email, then get a live chat with staff
- Guest chat: guest sessions are scoped to a single conversation and expire after 4 hours
- Guest chat: session persistence via sessionStorage survives page refreshes
- Guest chat: inline image & file attachment display for staff-sent files
- Guest chat: real-time message deletion and editing from staff side
- Guest chat: "Start New Chat" button after conversation is closed
- Guest chat: stale session auto-recovery (validates token on page load)
- Guest chat: business hours notice (Mon–Fri 8am–6pm ET) with offline message support
- Staff UI: amber "Guest" badge on guest conversations in support tab
- Staff UI: guest name & email displayed in chat header
- Staff UI: "Send transcript to guest" checkbox when closing guest conversations
- Email: branded chat transcript sent to guest email on conversation close
- SMS alerts: staff get a text after 2 minutes if a customer message goes unanswered
- SMS alerts: covers guest chat, support chat, and ticket comments
- SMS alerts: only fires during business hours, one SMS per unanswered message
- Rate limiting: guest chat endpoints capped at 5 requests/minute/IP
- When staff closes a guest conversation, the guest sees it happen in real time
v0.5.2
Latitude
- Support chat: file & image attachments in messages and ticket comments (10MB max, inline preview)
- Support chat: message deletion (15-min window for users, unlimited for staff)
- Support chat: conversation deletion removes entire thread (owner or staff)
- Support chat: inline message editing with 15-min window and "(edited)" indicator
- Support chat: unread conversation indicators (bold, teal dot, teal border)
- Support chat: read status is remembered per browser, and the nav badge updates as soon as you open a conversation
- Support chat: conversation toggle (click again to close)
- Support chat: display names — boat name for customers, "Sealink Support" for staff
- Tickets: "NEW" hat badge on tickets with recent activity from other party
- Tickets: filter count hats on Open, In Progress, Waiting, Resolved, All buttons
- Tickets: Waiting on Customer filter button added
- Tickets: auto-reopen to Open when customer replies on waiting_on_customer ticket
- Tickets: combined status + comment via Comment button when status dropdown changed
- Tickets: staff controls (status, assign, internal notes) only rendered for SUPER users
- Tickets: chat history copied to ticket comments on escalation, conversation auto-closed
- Tickets: stats available to all users (scoped to own tickets for non-staff)
- Map: your most recent 48 hours of track always draws on top of older tracks so it's easy to see
- Charts: depth chart hides readings taken while you're moving
- Anchor alarm: remembers the last radius you used and shows a loading indicator when arming
- Stability: small fixes to cached responses and missing element handling
- Image previews in support chat now load correctly
Support & Ticketing
v0.5.1
Helm
- Support chat: live messaging between boat owners and Sealink Support
- Messages typed while offline are queued and sent when you're back online — with no duplicates
- Support conversations can be turned into tickets, with the full chat history carried over
- Tickets move through Open → In Progress → Waiting on Customer → Resolved → Closed
- Both customers and staff can add comments to tickets; staff can also leave internal-only notes
- Staff can assign tickets to specific team members
- Email notifications for new tickets, status changes, and new comments
- Edit or delete your own messages within 15 minutes of sending
- Delete a whole conversation — only your own messages are removed
- Unread badge on the Support tab shows conversations awaiting a reply
- "NEW" badges on tickets with recent activity from the other side
- Count badges on the Open / In Progress / Resolved / All filter buttons
- Ticket stats summary visible to everyone (scoped to your own tickets)
- New Support tab on the dashboard with a split-pane chat and ticket view
Developer API
v0.5.0
Sextant
- New public Developer API — third parties can pull your boat's data with an API key you control
- Create, list, and revoke your own API keys from Setup → Device & API (keys are shown once at creation, then stored securely)
- Eight read-only endpoints: boat info, location, position history, sensor data, time-series, alerts, anchor alarm, and weather
- Each key has its own rate limit so one integration can't starve another
- New developer portal at /developers/ with a full auth guide, endpoint reference, and code examples in curl, C#, Python, JavaScript, Go, and Rust
- Interactive API explorer at /developers/api lets you try endpoints right in the browser
- "Developer API" link added to the site footer
- Dashboard: shortened Setup tab labels and renamed "connection info" to "Device Endpoint" / "Device Key" for clarity
Progressive Web App & Offline
v0.4.44
Foulanchor
- PWA: installable web app — add to home screen on iOS, Android, and desktop (no app store)
- PWA: web app manifest with standalone display, theme color, and maskable icons
- PWA: Apple meta tags (apple-mobile-web-app-capable, touch icon, status bar style)
- Service worker: app shell precache — dashboard + login HTML, CSS, JS, and CDN deps cached on first visit
- Service worker: network-first API caching — serves last-known data when offline with X-Sealink-Cached header
- Service worker: cache-first for static assets, tile cache preserved across versions
- Offline banner: yellow "OFFLINE — showing last known data (X min ago)" when serving cached responses
- Offline: network-dependent features (admin, alerts) dimmed with .requires-network class
- Offline: localStorage fallback for last position data when both network and SW cache miss
- Update toast: "Update available — Refresh" notification when new service worker activates
- Server tweaks so the installable web app and its updates are delivered correctly
- Landing page: updated "Bandwidth-aware" card to "Works offline, installs like an app"
- Console splash: styled version/codename/build date badge on page load
- Tide: fix spurious low tide marker — increased prominence threshold, added Pass 5 re-alternation
v0.4.43
Bitterend
- Admin: email SUPER users when a new user registers
- Admin: toggle to enable/disable new-user registration notifications
Sailing Analytics & Performance
v0.4.42
Threesheets
- Map: replace Google Maps with Leaflet — removes API key dependency and cost
- Map: OpenStreetMap streets + Esri satellite with layer toggle (saved to preferences)
- Map: OpenSeaMap nautical chart overlay (buoys, lighthouses, port marks)
- Map: service worker for offline tile caching — tiles cached as you browse, served offline
- Map: boat icon with heading rotation and real-world LOA/Beam scaling on Leaflet
- Map: anchor alarm 3-ring geofence + anchor marker ported to Leaflet
- Map: Haversine distance calculation replaces Google geometry library
- Widget: service worker tile caching shared with dashboard
- CSP: removed Google Maps domains, added OpenSeaMap tile server
v0.4.41
Rumrunner
- Voyage logs: auto-generated per-boat monthly static JS files from database
- Voyage logs: background service builds previous month's files on the 1st of each month
- Voyage logs: one-time migration endpoint to split legacy yearly files into monthly format
- Voyage logs: dynamic dashboard loading — discovers available years automatically
- Voyage logs: sequential rendering — oldest years draw first, newest on top
- Voyage logs: clickable color picker on year badges — customize track colors per year
- Voyage logs: map loading overlay with progress text while polylines render
- GPX import: upload GPX files to populate historical voyage data with auto voyage log rebuild
- Dashboard: current month loads from API, completed months from cached static files
- Landing page: outcome-driven rewrite with proof strip and collapsible feature detail
v0.4.40
Coxswain
- Polar: export as Expedition .pol, CSV, JSON, and PNG image
- Polar: interactive table view — toggle between diagram and grid with confidence color-coding
- Polar: comparison overlay — compare current polar vs historical versions or fleet polar (dashed curves)
- Polar: version history — browse and load previous polar snapshots
- Polar: table view shows speed deltas when comparison is active
v0.4.39
Corsair
- Tide: pre-fill data gaps with sine interpolation before prediction pipeline
- Tide: predicted sine curve as full 48h underlay — shows through gaps naturally
- Tide: gap-aware extreme detection — no more false markers at gap boundaries
- Tide: fixed state stuck on 'rising' after passing high tide (slack override)
- Tide: observed trend only overrides prediction when >2h from nearest extreme
- Polar: raised minimum SOG threshold from 0.5 to 1.0 kt
- Dashboard screenshot updated to v5
- SQL seed scripts for polar + performance test data (Scripts/)
v0.4.38
Pinnace
- Marketing: dedicated SailPrint Polar showcase section with branded terminology
- Dashboard: ported SailPrint, Adaptive Polar Engine, VMG Optimizer, Motor Guard branding to UI
- Setup: pill mapping, charts, and calibration items sorted alphabetically
- Celestial: fixed sun icon clipping at peak of arc (overflow:visible on SVG)
v0.4.37
Brig
- Boat Polar: full rewrite — standard orientation (0° head-to-wind at top, 180° downwind at bottom)
- Boat Polar: full-circle speed rings, mirrored port/starboard grid lines
- Boat Polar: no-go zone shading (0-42° TWA) with dashed boundary and labels
- Boat Polar: confidence heatmap — green/yellow/grey background per TWA bin
- Boat Polar: VMG laylines — dashed radial lines at optimal upwind/downwind angles
- Boat Polar: peak speed pill with orange marker at fastest TWA/TWS combo
- Boat Polar: optimal VMG pills (teal upwind, orange downwind) with boat speed and VMG
- Boat Polar: clickable legend — toggle TWS bands on/off with dimmed strikethrough
- Boat Polar: live position dot — boat icon at current TWA/SOG with % of polar target
- Boat Polar: live dot auto-hides when motoring (RPM > 200) or data goes stale (30s)
- Boat Polar: pill tooltips — click/tap to pin, works on desktop and mobile
- Polar engine: RPM-based motoring filter — rejects data when engine running (> 200 RPM)
- Polar data map: added Engine RPM key mapping for motoring detection
- Polar API: admin SeedTest endpoint for realistic test data generation
- Polar API: fixed camelCase property names in frontend (Curves → curves, etc.)
- Performance vs Polar: seeded 24h test data across 4 sailing segments
v0.4.36
Ironbottom
- Tide chart: reverted marker experiments, clean solid/hollow/predicted approach
- Tide chart: drop false first extreme at start of data
- Tide prediction: slack window widened to 45 min for timing variance
- Tide prediction: don't override slack states with observed trend
- Tide prediction pill: standalone depth fetch on first login (no chart dependency)
- Forecast: fetchedAt timezone fix (UTC kind for correct age calculation)
- Calibration: eager load from prefs on page load, placeholder defaults
- SyncEnabled migration: defaultValue was false — run SQL to fix existing rows
v0.4.35
Scuttlebutt
- Renamed forecast pill to 24H LOCATION FORECAST
- Forecast: 9-factor confidence scoring (added multi-model agreement, humidity, gusts, pressure trend, forecast age)
- Forecast: multi-model comparison (ECMWF, GFS, ICON, GEM) with spread in tooltip
- Forecast: wind barbs in timeline replacing arrows
- Forecast: TWD computed from AWA + HDG with mag→true correction everywhere
- Forecast: sensor values shown for wind speed, direction, pressure (forecast as delta)
- Forecast: 6h past data included for accuracy context
- Forecast: 6h/24h trend indicators (improving/stable/worsening) in tooltips
- Celestial pill: sun/moon rise/set split layout with arc visualization
- Celestial pill: moon arc with phase emoji, waxing/waning icons
- Celestial pill: animated sun rays + moonlight glow on arc
- Celestial pill: moonrise/moonset from moon age (client-side, instant)
- Celestial pill: ✨ NEW hat with cosmic shimmer animation
- Wind Compass: renamed from Wind Rose, TWD + compass rose display
- Calibration: humidity + pressure offsets, decimal support, eager load from prefs
- Weather chart: calibration offsets applied to plotted data
- Map heading: magnetic→true correction using variation
- All experimental hats unified, prototype hats replaced
- 6 new WeatherForecastController tests (631 total)
- Multiple timezone fixes across forecast, celestial, and calibration
v0.4.34
Deadreckoning
- 24h Weather Forecast pill: hybrid Open-Meteo + onboard sensor blending
- Forecast: confidence scoring (8 factors) with detailed comparison tooltips
- Forecast: hourly timeline with weather icons, wind barbs, and color-coded speeds
- Forecast: TWD computed from AWA + HDG with magnetic→true correction
- Celestial pill: sunrise/sunset, nautical twilight, daylight duration, sun arc
- Celestial pill: moon phase, illumination %, next full/new moon dates
- Wind Compass pill: replaces Wind Rose with TWD + compass rose display
- Map boat icon: magnetic→true heading correction using variation
- Barometric pressure gauge: semicircle dial replaces old rotating arrow
- Calibration: humidity and pressure offsets + decimal support for all offsets
- Weather chart: calibration offsets applied to plotted data
- Compact timestamp format: time only if today, date for other days
- Version strings link to changelog with typewriter animation
- Pill drag-and-drop fixed for 2-column pills
- Pills re-render immediately when toggled on
v0.4.33
Kraken
- Boat icon selector: 12 isometric 3D SVG silhouettes + custom upload
- Map marker: dynamic icon from boat settings with heading rotation
- Map marker: real-world LOA/Beam scaling at high zoom levels (3× for visibility)
- Fleet page: boat cards show selected icon
- Anchor alarm: 3D metallic anchor icon, proportional to boat size
- Anchor alarm radius: triple concentric rings (blue/white/blue)
- Default new boats to sloop icon, frontend fallback to sloop.svg
- 26 new nautical codenames (salty edition)
v0.4.32
Gunwale
- Tide prediction: fix slack detection for predicted extremes that just passed
- Tide prediction: override predicted state with observed data trend when they disagree
- Tide prediction pill: relative time for predicted highs/lows (e.g. "in 1h 38m")
- Compact timestamp format across dashboard — time only if today, date added for other days
- Version strings link to changelog with typewriter animation on all pages
- Changelog codenames displayed uppercase
- Dashboard version rainbow animation
v0.4.31
Capstan
- Data Pills: sync toggle to disable DB storage for unused data points
- Data Pills: sync protected for keys used by pill mappings, polar calcs, and alert rules
- Data Pills: ribbon toggle disabled when sync is off
- Data Pills: staleness indicator dot (green/orange/red) with local-time tooltip
- Data Pills: sortable columns (Key, Label) with label-first default sort
- Pill mapping, polar, and alert dropdowns: sync-off items disabled and sorted by label
- Batch stats: split into received vs saved counts
v0.4.30
Taffrail
- Fix duplicate tide markers: unconfirmed trailing extremes no longer rendered as actual highs/lows
- Fix tide prediction timing and depth using confirmed extremes as anchor
- Data Pills: mobile-friendly card layout replaces table on small screens
- Data Pills: editable friendly labels for data point keys
- Setup tabs: native dropdown selector on mobile for easier navigation
v0.4.26
Bosun
- Auto-refresh charts every 5 minutes
- Add pressure sparkline to weather pill
- Round all corners and add top border when ribbon is collapsed
- Add comprehensive activity logging across all controllers
v0.4.25
Pelorus
- Refined tide prediction: alternate highs/lows from last observed extreme
- Fix polar data map clearing and performance tab reload
- Improved slack state detection for tide phase accuracy
- Rename tide slack labels to "Slack High" / "Slack Low"
- Use recent extremes for tide prediction amplitude and offset
v0.4.24
Drogue
- Tide prediction engine with sinusoidal fitting and semi-diurnal harmonics
- Boat polar engine: 504-cell TWS/TWA grid with VMG optimization
- Boat metadata and classification system (make, model, dimensions)
- Performance tab with actual vs. predicted speed comparison
- Live alert status indicators with pulse animation
- Alert status display in Alarms tab
- Tide prediction chart on dashboard
Alerts & Monitoring
v0.4.21
Keel
- Custom alert rule system with configurable thresholds on any sensor
- Multi-channel alert notifications: SMS, email, and dashboard
- Alert smoothing and cooldown to prevent false alarms
v0.4.20
Fathom
- Alert rule evaluation background service
- Alert trigger logging and audit trail
v0.4.19
Barnacle
- SMS alerts via Twilio integration
- Multi-crew stats added to social proof section
Dashboard Experience
v0.4.18
Spinnaker
- Multi-language API code tabs on landing page (cURL, Python, JS, C#)
- Mobile hamburger menu for landing page navigation
- FAQ section on landing page
- Social proof section with trust badges and statistics
- OG image, Twitter card, and canonical URL meta tags
v0.4.17
Navigator
- Collapsible data pill ribbon with slide animation
- Ticker ribbon with pipe separators when pills are collapsed
- Bottom handle toggle bar for ribbon control
- Ticker built from actual rendered DOM pills
v0.4.16
Halyard
- Tide pill text size improvements
- Tide state detection rewrite with clean separation of display vs. timing
- Fix chart overflow on small screens
v0.4.15
Trident
- Fix Tide & Depth chart: flood/ebb annotations now display correctly
- Fix CSP blocking Chart.js, SignalR CDN, and Google Maps API
- Fix SignalR status indicator stuck on "connecting"
v0.4.14
Topgallant
- Plugin status indicator improvements
- Fix remaining M1-M18 and L1-L6 bugs from deep scan
- 18 new tests added (510 total)
- Fix medium-severity bugs M2-M17
Foundation
v0.4.13
Deckhand
- Security and bug fixes with 62 new tests from v0.3.0 scan
- Fix boat switcher: proper JWT-based boatId reading
- Boat-scoped UI preferences (pill mappings, ribbon visibility, chart toggles)
- SUPER users see all boats in sidebar switcher
- Fix new account first-login errors with graceful no-data handling
v0.4.12
—
- Soft-delete boats with cascading user disablement
- Delete users (SUPER admin only)
- Multi-boat and crew role system
- GPX track export with flexible date ranges
- SignalK auto-discovery plugin integration