signalk-pypilot-newui 3.1.4 → 3.3.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.
Files changed (41) hide show
  1. package/CHANGELOG.md +130 -0
  2. package/README.md +230 -165
  3. package/dist/firefox-fix.js +137 -0
  4. package/dist/index.js +139 -54
  5. package/dist/session-recorder.js +38 -0
  6. package/dist/visor-prefs.js +225 -0
  7. package/package.json +28 -22
  8. package/public/app.js +1002 -188
  9. package/public/index.html +147 -8
  10. package/public/screenshots/01-control-rose.jpg +0 -0
  11. package/public/screenshots/02-chartplotter-embedded.jpg +0 -0
  12. package/public/screenshots/03-anchorwatch-in-rose.jpg +0 -0
  13. package/public/screenshots/04-tide-popup.jpg +0 -0
  14. package/public/screenshots/05-modes-head-to-wind-downwind.jpg +0 -0
  15. package/public/screenshots/06-tune-sliders.jpg +0 -0
  16. package/public/screenshots/07-logbook-trip-detail.jpg +0 -0
  17. package/public/screenshots/08-tack-history.jpg +0 -0
  18. package/public/style.css +114 -6
  19. package/dist/test/alarms-attitude.test.js +0 -110
  20. package/dist/test/alarms-trim.test.js +0 -177
  21. package/dist/test/config-backup.test.js +0 -137
  22. package/dist/test/episodes.test.js +0 -241
  23. package/dist/test/failsafe-bsp.test.js +0 -56
  24. package/dist/test/leeway.test.js +0 -91
  25. package/dist/test/mode-reanchor.test.js +0 -149
  26. package/dist/test/nav-bearing.test.js +0 -108
  27. package/dist/test/plugin.test.js +0 -70
  28. package/dist/test/profile-advisor.test.js +0 -190
  29. package/dist/test/profile-change-log.test.js +0 -147
  30. package/dist/test/profile-metadata.test.js +0 -130
  31. package/dist/test/roll-ff.test.js +0 -105
  32. package/dist/test/servo-error-log.test.js +0 -162
  33. package/dist/test/tack-catchup.test.js +0 -90
  34. package/dist/test/tuning-knobs.test.js +0 -205
  35. package/dist/test/virtual-tack.test.js +0 -436
  36. package/public/screenshots/01-control-rose.png +0 -0
  37. package/public/screenshots/02-chartplotter-embedded.png +0 -0
  38. package/public/screenshots/03-logbook-trip-detail.png +0 -0
  39. package/public/screenshots/04-tune-sliders.png +0 -0
  40. package/public/screenshots/05-race-timer.jpg +0 -0
  41. package/public/screenshots/06-info.jpg +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,135 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.3.0 — 2026-10-19 — Light on the Pi, AIS on the ring, settings shared by every device
4
+
5
+ Rolls up Rev483 → Rev505 on top of 3.2.0. Minor bump: new shared
6
+ visor settings in the backend, Raspberry Pi performance work, AIS rose
7
+ fixes from port and sea QA in Moaña, tide popup polish. No breaking
8
+ changes; the first visor that connects uploads its old per-device
9
+ settings, so nothing is lost.
10
+
11
+ ### Added
12
+
13
+ - **Settings shared by every device.** AIS mode (harbour / at anchor /
14
+ sailing), AIS voice, harbour auto-silencer, gust ghost and the list
15
+ of silenced AIS targets now live in the plugin (`/visor-prefs`), not
16
+ in each browser. Silencing a target on the tablet silences it on the
17
+ phone and the laptop too; the harbour auto-silencer is decided once,
18
+ from the boat's SOG, instead of separately by each screen. (Rev498,
19
+ Rev499)
20
+ - **Light mode on the Raspberry Pi's own screen.** The visor detects
21
+ the Pi's browser and drops animations, blur and glow, and only
22
+ touches the page when a value really changes (291 → ~9 DOM writes
23
+ per second). Pi GPU with the visor open: Chromium 15 % → 3 %.
24
+ (Rev490 → Rev492)
25
+ - **Firefox on the Pi: one-tap fix.** Firefox's GPU renderer overloads
26
+ the Pi's graphics chip (GPU ~90 %, 64 % of video frames dropped). The
27
+ Info tab explains it and an **Apply now** button writes
28
+ `gfx.webrender.software` into that Firefox's profiles; a one-time
29
+ notice points there. Also in the README (Troubleshooting).
30
+ (Rev500 → Rev502)
31
+ - **Interactive tide curve** in the tide popup: hover / drag cursor
32
+ with time, height and trend, big trend arrow, collision-free labels;
33
+ tide button always shown, with an install prompt and App Store link
34
+ when AnchorWatch Pro is missing. (Rev483 → Rev489)
35
+ - **Info tab: companion plugins** with live installed / missing status
36
+ and App Store links. (Rev485)
37
+
38
+ ### Fixed — AIS
39
+
40
+ - **Targets sit on the compass ring** at their real bearing, with a
41
+ distance label, instead of being parked on top of our own hull in a
42
+ marina (the log distance scale put every target under 50 m there).
43
+ (Rev494)
44
+ - **Moored boats no longer "move".** Class B boats report 0.3-1.6 kn of
45
+ GPS noise when tied up; a target counts as stopped when its AIS nav
46
+ status says moored / anchored / aground, or when two minutes of its
47
+ positions stay inside 30 m. No course line, no "moving" alarms.
48
+ (Rev503)
49
+ - **"Closing" speed in the infobox** was distance / TCPA (a moored boat
50
+ at 48 m showed 37 kn); now the real range rate. (Rev495)
51
+ - **Autopilot alarm banner always visible.** It was drawn below the
52
+ maximised chart, popups, the regatta HUD and the network banners:
53
+ the alarm beeped and spoke but could not be seen. (Rev497)
54
+
55
+ ### Fixed — other
56
+
57
+ - **Recorded sessions / session tags / received advice dialogs could
58
+ trap you.** The only way out was the Close button at the end of the
59
+ content; with many sessions (224 on the test boat) it was pushed
60
+ off-screen. Now an X is always visible, the list scrolls inside the
61
+ dialog with title and Close fixed, and tapping outside or Escape
62
+ closes it. (Rev504)
63
+ - **Recorded sessions capped at the newest 50** (one is recorded per
64
+ engage; 224 had piled up). On top of the existing 200 MB budget.
65
+ (Rev505)
66
+
67
+ ### Docs / package
68
+
69
+ - README rewritten against the code: license (AGPL-3.0-or-later), the
70
+ free-form SSH console described honestly, 14 alarm rules, polar
71
+ plugins named, Head-to-wind **and** Downwind pseudo-modes, every
72
+ integration (AnchorWatch Pro, chartplotter, AIS, polars) in the intro,
73
+ no invented plugins or path counts.
74
+ - New App Store / README screenshots (8): rose with AIS, embedded chart,
75
+ AnchorWatch Pro inside the rose, tide popup, head to wind / downwind
76
+ modes, tune, logbook trip, tack history. JPEG under 500 KB each; test
77
+ files no longer shipped (package 3.4 MB → 1.4 MB).
78
+
79
+ ## 3.2.0 — 2026-10-15 — AIS rose rebuilt on real positions, tide popup, chart kept warm
80
+
81
+ Rolls up Rev470 → Rev482 on top of 3.1.4. Minor bump: new UI (tide
82
+ button + popup, "Chart in the background" card, anchor-watch visor
83
+ embedded in the rose) plus a set of AIS rose fixes found in port QA in
84
+ Moaña. No breaking changes.
85
+
86
+ ### Fixed — AIS targets on the rose (root cause)
87
+
88
+ - **The target position/SOG/COG cache never filled.** The REST calls
89
+ used `encodeURIComponent` on the vessel URN
90
+ (`urn%3Amrn%3Aimo%3Ammsi%3A…`) and Signal K answers 404 to that; the
91
+ raw URN answers 200. With an empty cache the hull fell back to
92
+ `cpaPositions.target` — the target's FUTURE position at CPA — so a
93
+ boat coming from 7 o'clock was drawn at 11 o'clock and "0 m" away.
94
+ The fallback is removed: no current position → no hull on the rose
95
+ (the infobox still shows the alarm). Cache refresh 30 s → 5 s.
96
+ (Rev474)
97
+ - **Hull and projected track were drawn 180° off.** The sprite has its
98
+ bow at +x, so a direction needs `rotate(angle − 90)`; Rev457 used
99
+ `+ 90`. (Rev470)
100
+ - **Moored boats.** A stopped target's COG is GPS noise: the hull is
101
+ oriented by `headingTrue` when available, by COG only when moving
102
+ (≥ 0.5 kn), otherwise it points at us; the dashed track is drawn only
103
+ for moving targets and always along COG. The "stationary" filter
104
+ (now 0.5 kn) is re-evaluated when the REST cache lands, not only on
105
+ the alarm delta. (Rev470, Rev471)
106
+ - **Targets drawn on top of our own hull.** Radial position is now a
107
+ log scale (50 m → 2 NM) over the free ring between our hull outline
108
+ and the compass ring, with a distance label ("40 m", "0.4 NM") under
109
+ each target. (Rev472)
110
+ - **Target name in the infobox** comes from the Signal K vessel `name`
111
+ first, then from the alarm text; "MMSI 123456789" is no longer shown
112
+ as a name. (Rev481)
113
+ - **AIS card:** the Harbour / At anchor / Sailing selector showed raw
114
+ i18n keys; all texts rewritten in plain language (EN/ES). (Rev473)
115
+ - **Unstyled flash on reload:** critical inline CSS in `<head>` and
116
+ `style.css?v=RevNNN` cache-busting from `deploy.ps1`. (Rev476)
117
+
118
+ ### Added
119
+
120
+ - **Tide button** above the bottom-right corner tile of the rose (shown
121
+ only when `signalk-mareas-ihm` is installed). Opens a popup with the
122
+ station, current height, rising/falling, coefficient, next HW/LW and
123
+ a −6 h → +12 h tide curve. "Open full Tides" opens the
124
+ signalk-mareas-ihm anchor-watch visor inside the rose, same chrome as
125
+ Freeboard (maximize / close). Data from `/signalk-mareas-ihm/api/extremes`
126
+ and `environment.tide.*`, fetched only when the popup opens.
127
+ (Rev478 → Rev480, Rev482)
128
+ - **Freeboard-SK kept loaded in the background** so a double-tap on the
129
+ rose opens it instantly with AIS names already in place. Own card
130
+ "Chart in the background" with a per-device switch and a "?" that
131
+ explains when to turn it off (lag / battery). (Rev475 → Rev477)
132
+
3
133
  ## 3.1.4 — 2026-10-14 — iOS "Add to Home Screen" PWA basics (issue #5)
4
134
 
5
135
  Rev469. Patch bump: no code changes, just the HTML shell. Thanks to