signalk-chiplog 2.8.0 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,65 @@ All notable changes to Chiplog are documented here. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.10.0] - 2026-10-20
10
+
11
+ ### Added
12
+
13
+ - **The online backup card points at the service's own site.** Under its opening lines, a link to
14
+ [tibord.com](https://tibord.com) for what the backups are for and what sharing your passages and voyages from them
15
+ looks like — worth knowing before deciding to pair.
16
+
17
+ ## [2.9.0] - 2026-10-20
18
+
19
+ ### Added
20
+
21
+ - **Online backup.** Turn **Back the logbook up online** on, paste the service address and the device token it gave your
22
+ boat, and Chiplog sends each passage — track, events, handwriting, readings, crew and forecasts — to the Ti Bord
23
+ service whenever there is a connection: every 15 minutes, at each departure and arrival, newest passage first. Only
24
+ what changed goes out, compressed, and a track that grew only sends its new points. Passages deleted or merged on
25
+ board are removed from the service too, and the places go with their position and country, which is how the service
26
+ tells the countries visited. Each run also says how many passages are on board, so that the service can show how far a
27
+ first backup is. Off by default; nothing leaves the boat while it is.
28
+ - **Costly link.** A tick box for satellite or roaming: the online backup then sends only a summary of each passage and
29
+ a thinned-out track, a few kilobytes, at departures and arrivals and every six hours. Full tracks, readings, forecasts
30
+ and places wait until it is unticked, or until **Back up now** is chosen.
31
+ - **A QR code beside the pairing code.** Scan it with a phone and the service opens with the code already filled in:
32
+ nothing to type from the chart table's screen.
33
+ - **Restoring the logbook from the online service.** After a lost SD card or on a new computer, pair the new
34
+ installation with the same boat and the Export page offers the logbook the service kept: one button brings every
35
+ passage back — track, events, handwriting, readings, crew, forecasts and places — and the backup carries on where it
36
+ stopped, without sending anything again. Only an empty logbook can take one back; a restore cut short picks up by
37
+ itself.
38
+ - **Pairing with the online service by a short code.** On the Export page, ask the service for a code, enter it on the
39
+ service signed in to your account, and the backup turns on by itself: no token to copy. The same card shows the last
40
+ backup and a **Back up now** button.
41
+ - **A summary of each passage, by email.** Turn it on, give it your SMTP relay and a few addresses, and Chiplog mails
42
+ the day's run once the passage is over for good — once it has stayed closed past the delay within which leaving again
43
+ would have carried it on, so a lock or a lunch anchorage never sets one off. The mail opens on the map of the track,
44
+ drawn on the server over OpenStreetMap tiles (or your own tile server, or a plain background) and carried inside the
45
+ message rather than attached, and goes on with the departure and arrival places and times, the distance, the duration,
46
+ the time under way, under engine and under sail, the average and maximum speed and the maximum wind, in the logbook's
47
+ language and the ship's time zone. At sea the relay is usually out of reach: a passage stays on the list and is tried
48
+ again, less and less often, then the backlog goes out oldest first on the next connection, with anything older than a
49
+ week dropped. Switching the option on sends nothing retroactively, and `POST /entries/:id/summary-mail` sends one
50
+ passage's summary straight away to try the settings out.
51
+
52
+ ### Changed
53
+
54
+ - **A new app icon:** a chartplotter at the chart table, its screen showing a route plotted across a chart, in place of
55
+ the open book. It is what the Signal K admin shows and what the tablet app installs on a home screen. The browser tab
56
+ and the logbook's own header get a simplified version of it — the chart, a stretch of coast and the route — because at
57
+ that size the plotter's case, grid and compass turn to mush. The tablet app's colour in the phone's task switcher
58
+ follows the icon's case rather than the old blue.
59
+ - **Coming back from a passage lands where you left the logbook.** Going back — with the browser's back button, with
60
+ "Back to the logbook" or from the nav bar — reopened the logbook at the top of the page, with only the first page of
61
+ passages: whatever had been loaded with "Load older passages" was gone, and so was the place you had scrolled to. The
62
+ logbook is now put back as it was, the older pages included, and rendered from what it was showing rather than from an
63
+ empty page, so it comes back at its old height and the scroll goes straight back where it was instead of jumping once
64
+ the passages arrive. Every other page still opens at the top.
65
+ - **A button takes you back to the top of the logbook.** Once you have scrolled a way down — further still with the
66
+ older pages loaded — a round button in the corner brings you back up, rather than scrolling back through a season.
67
+
9
68
  ## [2.8.0] - 2026-10-01
10
69
 
11
70
  ### Added
@@ -403,7 +462,9 @@ First release.
403
462
  - REST API under `/plugins/signalk-chiplog/api`, documented in [docs/API.md](docs/API.md).
404
463
  - Single SQLite database through Node's built-in `node:sqlite`: no native module to build.
405
464
 
406
- [Unreleased]: https://github.com/ricard33/signalk-chiplog/compare/v2.8.0...HEAD
465
+ [Unreleased]: https://github.com/ricard33/signalk-chiplog/compare/v2.10.0...HEAD
466
+ [2.10.0]: https://github.com/ricard33/signalk-chiplog/compare/v2.9.0...v2.10.0
467
+ [2.9.0]: https://github.com/ricard33/signalk-chiplog/compare/v2.8.0...v2.9.0
407
468
  [2.8.0]: https://github.com/ricard33/signalk-chiplog/compare/v2.7.0...v2.8.0
408
469
  [2.7.0]: https://github.com/ricard33/signalk-chiplog/compare/v2.6.0...v2.7.0
409
470
  [2.6.0]: https://github.com/ricard33/signalk-chiplog/compare/v2.5.1...v2.6.0
package/README.md CHANGED
@@ -29,6 +29,8 @@ English and French, chosen from the browser's language.
29
29
  - [Configuration](#configuration-)
30
30
  - [Signal K data used](#signal-k-data-used-)
31
31
  - [Backups and abandon ship](#backups-and-abandon-ship-)
32
+ - [Online backup](#online-backup-)
33
+ - [Passage summary emails](#passage-summary-emails-)
32
34
  - [Retrospective analysis](#retrospective-analysis-)
33
35
  - [Importing from PostgSail](#importing-from-postgsail-)
34
36
  - [Privacy and online services](#privacy-and-online-services-)
@@ -428,43 +430,51 @@ a regular Signal K user account.
428
430
 
429
431
  In the Signal K admin, **Apps & Plugins → Configuration → Chiplog**.
430
432
 
431
- | Setting | Default | What it does |
432
- | ---------------------------------------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
433
- | Stop duration within which a new departure continues the passage | 30 min | A passage closes when the boat stops; leaving again sooner reopens it, the stop kept as a stopover. |
434
- | Under-way speed without navigation.state | 1 kn | Used only without signalk-autostate: under way above it, stopped below half of it. |
435
- | Propulsion assumed without engine data | sail | When nothing says whether the engine is running. Set to engine on a motorboat. |
436
- | Instrument snapshot interval | 60 min | Readings on this clock boundary during a passage. |
437
- | Track point interval | 15 s | A track point at least this often while moving. |
438
- | Place matching radius | 200 m | A departure or arrival this close to a known place takes its name. |
439
- | Name departures and arrivals with online geocoding | on | Turn off to never send positions online; places are then named after their coordinates until corrected. |
440
- | Geocoding service | `https://nominatim.openstreetmap.org` | Any Nominatim-compatible service, e.g. a self-hosted one. |
441
- | Read each journal line against the nearest landmark | on | Fetches the landmarks of the areas sailed through from OpenStreetMap, so each position is also given as a bearing and distance from one. Turn off to keep the coordinates alone. |
442
- | Landmark service (Overpass API) | `https://overpass-api.de/api/interpreter` | Any Overpass-compatible service, e.g. a self-hosted one. |
443
- | Fetch the tide forecast at departure | on | Turn off to never send the departure position online; the passage page then shows no tide. |
444
- | Marine service | `https://marine-api.open-meteo.com/v1/marine` | Any Open-Meteo Marine-compatible service, e.g. a self-hosted one. Serves the tide, and the sea state and current of the weather forecast. |
445
- | Fetch the marine weather forecast at departure | on | Turn off to never send the departure position to the weather services; the passage page and the PDF then show no forecast. |
446
- | Weather service | `https://api.open-meteo.com/v1/forecast` | Any Open-Meteo-compatible forecast service, e.g. a self-hosted one. |
447
- | USB export directory | — | Where the abandon-ship copy is written, e.g. `/media/usb`. Empty turns the USB copy off. |
448
- | Automatic USB copy interval | 15 min | How often the USB copy is brought up to date. 0 turns the periodic copy off. |
449
- | Copy to the USB drive at each arrival | on | Brings the USB copy up to date as soon as a passage ends. |
450
- | Logbook language (PDF) | en | Language of the PDF logbooks on the USB drive (English or French). |
451
- | Ship's time zone (PDF) | the server's | Time zone of the PDF logbooks on the USB drive, e.g. `Europe/Paris`. |
452
- | Wind speed thresholds | 20, 30 kn | Logged when the 2-minute average true wind crosses them. |
453
- | Barometric drop warning | 4 hPa / 3 h | 0 turns it off. |
454
- | Log heading changes | on | Turn off to leave heading changes out of the log. |
455
- | Heading change threshold | 30° | A change must be at least this large to be logged. |
456
- | Heading change tolerance | 10° | How much the new heading may wander while holding and still count as steady. |
457
- | Heading change hold time | 60 s | How long the new heading must hold before it is logged. |
458
- | Heading change minimum speed | 2 kn | Below this speed over ground, the course is too noisy to log a change. |
459
- | Heading change cooldown | 5 min | A new change is logged only once the last one is at least this old. |
460
- | History source (retrospective analysis) | InfluxDB 1.x | Select Signal K History API to read the server's own history provider, such as signalk-to-influxdb2 — no database connection needed. InfluxDB 1.x stays the default so existing installations are untouched. |
461
- | InfluxDB host (retrospective analysis) | — | Shown only for the InfluxDB 1.x legacy source. Local or remote host of the database signalk-to-influxdb writes to. Empty turns the retrospective analysis page off. |
462
- | InfluxDB port | 8086 | |
463
- | InfluxDB database | — | |
464
- | InfluxDB username / password | — | Leave empty if the database needs none. |
465
- | InfluxDB protocol | http | `http` or `https`. |
466
- | Retrospective query timeout | 30 s | Each retrospective query gives up and reports an error past this, instead of hanging against an unreachable or overloaded history. Applies to either source. |
467
- | Vessel context (retrospective analysis) | this server's own | Only needed running the replay from a different Signal K server than the one that wrote the history, e.g. development pointed at a production database. Applies to either source. |
433
+ | Setting | Default | What it does |
434
+ | ---------------------------------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
435
+ | Stop duration within which a new departure continues the passage | 30 min | A passage closes when the boat stops; leaving again sooner reopens it, the stop kept as a stopover. |
436
+ | Under-way speed without navigation.state | 1 kn | Used only without signalk-autostate: under way above it, stopped below half of it. |
437
+ | Propulsion assumed without engine data | sail | When nothing says whether the engine is running. Set to engine on a motorboat. |
438
+ | Instrument snapshot interval | 60 min | Readings on this clock boundary during a passage. |
439
+ | Track point interval | 15 s | A track point at least this often while moving. |
440
+ | Place matching radius | 200 m | A departure or arrival this close to a known place takes its name. |
441
+ | Name departures and arrivals with online geocoding | on | Turn off to never send positions online; places are then named after their coordinates until corrected. |
442
+ | Geocoding service | `https://nominatim.openstreetmap.org` | Any Nominatim-compatible service, e.g. a self-hosted one. |
443
+ | Read each journal line against the nearest landmark | on | Fetches the landmarks of the areas sailed through from OpenStreetMap, so each position is also given as a bearing and distance from one. Turn off to keep the coordinates alone. |
444
+ | Landmark service (Overpass API) | `https://overpass-api.de/api/interpreter` | Any Overpass-compatible service, e.g. a self-hosted one. |
445
+ | Fetch the tide forecast at departure | on | Turn off to never send the departure position online; the passage page then shows no tide. |
446
+ | Marine service | `https://marine-api.open-meteo.com/v1/marine` | Any Open-Meteo Marine-compatible service, e.g. a self-hosted one. Serves the tide, and the sea state and current of the weather forecast. |
447
+ | Fetch the marine weather forecast at departure | on | Turn off to never send the departure position to the weather services; the passage page and the PDF then show no forecast. |
448
+ | Weather service | `https://api.open-meteo.com/v1/forecast` | Any Open-Meteo-compatible forecast service, e.g. a self-hosted one. |
449
+ | USB export directory | — | Where the abandon-ship copy is written, e.g. `/media/usb`. Empty turns the USB copy off. |
450
+ | Automatic USB copy interval | 15 min | How often the USB copy is brought up to date. 0 turns the periodic copy off. |
451
+ | Copy to the USB drive at each arrival | on | Brings the USB copy up to date as soon as a passage ends. |
452
+ | Email a summary of each passage | off | Mails the map and figures of each passage once it is definitively closed. |
453
+ | Summary recipients | — | One or more email addresses, separated by commas. |
454
+ | Summary sender | — | The address the summaries come from. Most relays insist it be one they are allowed to send for. |
455
+ | SMTP server | — | The mail relay the summaries are handed to. Empty turns the summaries off. |
456
+ | SMTP port | 587 | 587 for submission with STARTTLS, 465 for implicit TLS, 25 for a local relay. |
457
+ | SMTP security | STARTTLS | STARTTLS, TLS, or none for a relay on the boat itself. |
458
+ | SMTP user name / password | — | Leave empty if the relay needs no authentication. |
459
+ | Map tiles for the summary | `https://tile.openstreetmap.org/{z}/{x}/{y}.png` | The tiles the summary map is drawn over, e.g. a self-hosted server. Empty draws the track on a plain background. |
460
+ | Logbook language (PDF and summary emails) | en | Language of the PDF logbooks on the USB drive and of the summary emails (English or French). |
461
+ | Ship's time zone (PDF and summary emails) | the server's | Time zone of the PDF logbooks on the USB drive and of the summary emails, e.g. `Europe/Paris`. |
462
+ | Wind speed thresholds | 20, 30 kn | Logged when the 2-minute average true wind crosses them. |
463
+ | Barometric drop warning | 4 hPa / 3 h | 0 turns it off. |
464
+ | Log heading changes | on | Turn off to leave heading changes out of the log. |
465
+ | Heading change threshold | 30° | A change must be at least this large to be logged. |
466
+ | Heading change tolerance | 10° | How much the new heading may wander while holding and still count as steady. |
467
+ | Heading change hold time | 60 s | How long the new heading must hold before it is logged. |
468
+ | Heading change minimum speed | 2 kn | Below this speed over ground, the course is too noisy to log a change. |
469
+ | Heading change cooldown | 5 min | A new change is logged only once the last one is at least this old. |
470
+ | History source (retrospective analysis) | InfluxDB 1.x | Select Signal K History API to read the server's own history provider, such as signalk-to-influxdb2 — no database connection needed. InfluxDB 1.x stays the default so existing installations are untouched. |
471
+ | InfluxDB host (retrospective analysis) | — | Shown only for the InfluxDB 1.x legacy source. Local or remote host of the database signalk-to-influxdb writes to. Empty turns the retrospective analysis page off. |
472
+ | InfluxDB port | 8086 | |
473
+ | InfluxDB database | — | |
474
+ | InfluxDB username / password | — | Leave empty if the database needs none. |
475
+ | InfluxDB protocol | http | `http` or `https`. |
476
+ | Retrospective query timeout | 30 s | Each retrospective query gives up and reports an error past this, instead of hanging against an unreachable or overloaded history. Applies to either source. |
477
+ | Vessel context (retrospective analysis) | this server's own | Only needed running the replay from a different Signal K server than the one that wrote the history, e.g. development pointed at a production database. Applies to either source. |
468
478
 
469
479
  ## Signal K data used 🔌
470
480
 
@@ -494,6 +504,91 @@ None of these is required except position and speed over ground; each feature us
494
504
  - Each file is flushed to the drive before it appears, so pulling the drive out never leaves a half-written file.
495
505
  - The Export page shows the schedule, the last copy, the next one, and the last failure if any.
496
506
  - **The database** — `chiplog.sqlite` in the plugin's data folder can be copied while the plugin is stopped.
507
+ - **Online** — see [Online backup](#online-backup-) below.
508
+
509
+ ## Online backup 🌐
510
+
511
+ Keep a copy of the logbook off the boat, on the Ti Bord online service. What it does with the logbook once it is there,
512
+ and how you can share your passages and voyages from it, is at [tibord.com](https://tibord.com), which the **Online
513
+ backup** card links to as well.
514
+
515
+ 1. On the **Export** page, under **Online backup**, enter the service address and choose **Get a pairing code**.
516
+ 2. On the service, signed in to your account, enter the code shown (e.g. `K7QF-3MXB`) and choose your boat — or scan the
517
+ QR code beside it with your phone, which opens the service with the code filled in. The code is valid for 15 minutes.
518
+ 3. The page soon says the boat is paired: Chiplog has saved the service address and its own token in the plugin
519
+ configuration and turned the backup on.
520
+
521
+ You can also paste a token by hand: turn **Back the logbook up online** on in the plugin configuration, fill in the
522
+ **Online service address** and the **Device token**.
523
+
524
+ From then on, whenever the boat has a connection, Chiplog sends:
525
+
526
+ - every passage with its track, events, handwritten notes, instrument readings, crew and forecasts — the newest first,
527
+ so the latest passages are safe first after a long time offline;
528
+ - only what changed since the service last heard of it, compressed: a passage under way sends the points added since,
529
+ not its whole track again;
530
+ - the removal of passages deleted or merged on board;
531
+ - the places — names, positions and countries — whenever one is added, renamed or gets its country.
532
+
533
+ It checks every 15 minutes (**Online backup interval**), straight away at each departure and arrival, and when you
534
+ choose **Back up now** on the Export page, which also shows the last backup and the last failure. Out of reach of a
535
+ network, it simply tries again later. The logbook on board stays the record: nothing ever comes back from the service to
536
+ change it.
537
+
538
+ ### On a satellite link
539
+
540
+ Tick **Costly link** on the Export page (or in the plugin configuration) when every kilobyte is paid for. Chiplog then
541
+ sends only a summary of each passage and a thinned-out track — a few kilobytes — at departures and arrivals and every
542
+ six hours: enough for the service to know where you went, and for those ashore to follow. Full tracks, instrument
543
+ readings, forecasts and places wait on board. Untick it back in harbour and everything follows; or choose **Back up
544
+ now** to send it all at once anyway.
545
+
546
+ ### Getting the logbook back
547
+
548
+ Lost the SD card, or moved to a new computer? Install Chiplog, pair it with the same boat on the service, and the
549
+ **Export** page offers the logbook the service kept: choose **Restore this logbook**. Every passage comes back with its
550
+ track, events, notes, readings, crew and forecasts, and the backup carries on where it had stopped. A restore cut short
551
+ by a lost connection picks up by itself. Restore **before** sailing with the new installation: only an empty logbook can
552
+ take one back.
553
+
554
+ ## Passage summary emails 📧
555
+
556
+ Get the day's run in your inbox — and let whoever follows the boat from ashore get it too — without opening the webapp.
557
+ Turn **Email a summary of each passage** on, fill in the recipients, the sender and your SMTP relay, and Chiplog mails a
558
+ summary of every passage once it is over for good.
559
+
560
+ - **When.** A passage closes the moment the boat stops, but leaving again within the stop tolerance (30 min by default)
561
+ carries it on. The summary waits out that window, so it arrives once the arrival is final — not at every lock or lunch
562
+ anchorage. One mail per passage, never two.
563
+ - **What it says.** The map of the track first, then the departure and the arrival with their place and local time, the
564
+ distance, the duration, the time under way, the time under engine and under sail, the average and maximum speed, and
565
+ the maximum wind — the same figures and wording as the passage page, in the **logbook language** and **ship's time
566
+ zone** set below.
567
+ - **The map** is drawn on the server and travels inside the message, so it shows up in the mail rather than as an
568
+ attachment to open. Tiles come from OpenStreetMap by default; set your own tile server, or clear the setting to get
569
+ the track drawn on a plain background and send nothing to a tile server.
570
+ - **Offline is fine.** At sea the relay is usually out of reach: Chiplog keeps the passage on its list and tries again,
571
+ less and less often, then sends the backlog oldest first as soon as there is a connection. A passage closed more than
572
+ a week ago is dropped — a summary that late is no longer news.
573
+ - **Nothing retroactive.** Turning the option on does not mail your existing logbook; only passages ending afterwards
574
+ are summarised.
575
+ - **Trying your settings.** The relay only gets used at the next arrival, so to check the configuration straight away,
576
+ ask for one passage's summary to be sent now:
577
+
578
+ ```bash
579
+ TOKEN=$(curl -s -X POST http://localhost:3000/signalk/v1/auth/login \
580
+ -H 'content-type: application/json' \
581
+ -d '{"username":"admin","password":"…"}' | sed 's/.*"token":"\([^"]*\)".*/\1/')
582
+ curl -X POST -H "Authorization: Bearer $TOKEN" \
583
+ http://localhost:3000/plugins/signalk-chiplog/api/entries/1/summary-mail
584
+ ```
585
+
586
+ With Signal K security switched off, the `Authorization` header is not needed. The passage does not have to be the last
587
+ one, and a summary already sent is sent again — this works whether or not the option itself is on, so the relay can be
588
+ tried before turning the automatic summaries on.
589
+
590
+ A refusal the relay would only repeat — a recipient it will not take, a password it will not accept — is written to the
591
+ Signal K log and that passage is not retried; fix the settings and resend it with the command above.
497
592
 
498
593
  ## Retrospective analysis 🕓
499
594
 
@@ -563,11 +658,17 @@ node scripts/import-postgsail.js PostgSail_Trip.geojson --url http://boat.local:
563
658
  Open-Meteo by default — once, at departure. Nothing at all when it is off.
564
659
  - **Weather forecast.** With it on, the departure position of each passage is sent to the weather service and to the
565
660
  marine service — both the public Open-Meteo by default — once, at departure. Nothing at all when it is off.
661
+ - **Passage summaries.** With them on, each summary is sent to the SMTP relay you configure — yours, not a service of
662
+ ours — and the map it carries is drawn from tiles fetched from the tile server you configure, OpenStreetMap's public
663
+ one by default. Nothing at all when they are off, and nothing goes to a tile server when the tile setting is empty.
566
664
  - **Maps.** The logbook webapp loads map tiles from OpenStreetMap and OpenSeaMap while the device viewing it is online.
567
665
  Offline, the track is still drawn, on a blank background.
568
666
  - **Retrospective analysis.** Running one queries the InfluxDB database set in the plugin configuration — the boat's
569
667
  own, local or remote, never a third party — for the Signal K history in the requested range.
570
- - **Nothing else** leaves the boat. There is no account, analytics or cloud service.
668
+ - **Online backup.** With it on, every passage — track, events, handwritten notes, readings, crew and forecasts — and
669
+ every place, with its name, position and country, is sent to the online service at the address you configure, with the
670
+ device token it gave your boat. Nothing at all when it is off.
671
+ - **Nothing else** leaves the boat. There is no analytics, and no account unless you choose the online backup.
571
672
 
572
673
  Map data and place names © OpenStreetMap contributors (ODbL); seamarks © OpenSeaMap; tide and weather data ©
573
674
  [Open-Meteo.com](https://open-meteo.com/) (CC BY 4.0).
Binary file