signalk-pypilot-newui 3.2.0 → 3.4.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 (45) hide show
  1. package/CHANGELOG.md +113 -0
  2. package/README.md +224 -167
  3. package/dist/alarms.js +47 -5
  4. package/dist/autopilot-provider.js +160 -27
  5. package/dist/firefox-fix.js +137 -0
  6. package/dist/index.js +224 -17
  7. package/dist/session-recorder.js +38 -0
  8. package/dist/steer-watch.js +147 -0
  9. package/dist/virtual-tack.js +24 -1
  10. package/dist/visor-prefs.js +225 -0
  11. package/package.json +28 -22
  12. package/public/app.js +887 -222
  13. package/public/index.html +102 -16
  14. package/public/screenshots/01-control-rose.jpg +0 -0
  15. package/public/screenshots/02-chartplotter-embedded.jpg +0 -0
  16. package/public/screenshots/03-anchorwatch-in-rose.jpg +0 -0
  17. package/public/screenshots/04-tide-popup.jpg +0 -0
  18. package/public/screenshots/05-modes-head-to-wind-downwind.jpg +0 -0
  19. package/public/screenshots/06-tune-sliders.jpg +0 -0
  20. package/public/screenshots/07-logbook-trip-detail.jpg +0 -0
  21. package/public/screenshots/08-tack-history.jpg +0 -0
  22. package/public/style.css +79 -22
  23. package/dist/test/alarms-attitude.test.js +0 -110
  24. package/dist/test/alarms-trim.test.js +0 -177
  25. package/dist/test/config-backup.test.js +0 -137
  26. package/dist/test/episodes.test.js +0 -241
  27. package/dist/test/failsafe-bsp.test.js +0 -56
  28. package/dist/test/leeway.test.js +0 -91
  29. package/dist/test/mode-reanchor.test.js +0 -149
  30. package/dist/test/nav-bearing.test.js +0 -108
  31. package/dist/test/plugin.test.js +0 -70
  32. package/dist/test/profile-advisor.test.js +0 -190
  33. package/dist/test/profile-change-log.test.js +0 -147
  34. package/dist/test/profile-metadata.test.js +0 -130
  35. package/dist/test/roll-ff.test.js +0 -105
  36. package/dist/test/servo-error-log.test.js +0 -162
  37. package/dist/test/tack-catchup.test.js +0 -90
  38. package/dist/test/tuning-knobs.test.js +0 -205
  39. package/dist/test/virtual-tack.test.js +0 -436
  40. package/public/screenshots/01-control-rose.png +0 -0
  41. package/public/screenshots/02-chartplotter-embedded.png +0 -0
  42. package/public/screenshots/03-logbook-trip-detail.png +0 -0
  43. package/public/screenshots/04-tune-sliders.png +0 -0
  44. package/public/screenshots/05-race-timer.jpg +0 -0
  45. package/public/screenshots/06-info.jpg +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,118 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.4.0 — 2026-10-18 — The sailor always wins, and the pilot gets unstuck
4
+
5
+ Rolls up Rev506 → Rev508 on top of 3.3.0, from the strong-wind sea
6
+ trial of 2026-10-18 (26 kn TWS, 48° heel). Minor bump: new opt-in
7
+ recovery and alarms. No breaking changes; everything new is off until
8
+ enabled.
9
+
10
+ ### Added
11
+ - **Stuck pilot recovery** (Smart Pilot card, opt-in). With no rudder
12
+ sensor, pypilot treats an overcurrent as the end of rudder travel and
13
+ stops driving that way. If the AP is engaged, the heading error is
14
+ over 25° and growing and the servo is not pushing for 4 s, the plugin
15
+ turns the AP off and on (0.7 s, same mode and target), which clears
16
+ that fault in pypilot. At most 3 tries per minute. An order from the
17
+ sailor during the cycle wins, and a running virtual tack is kept.
18
+ - **New alarms** (opt-in, Setup > Alarms): `steer-stuck`,
19
+ `steer-gave-up` ("steer by hand") and `steer-dropped` (AP disengaged
20
+ from the remote or the TinyPilot keys while underway).
21
+ - **+-1 / +-10 during a virtual tack** move the tack's final heading
22
+ instead of being rejected.
23
+ - `servo.flags` is watched and saved in every session sample.
24
+
25
+ ### Fixed
26
+ - **Taking the AP off now cancels a virtual tack**, whatever the source
27
+ (visor, KIP, remote, TinyPilot). Before, the tack kept running and
28
+ rejected the sailor's own headings until it finished. After a cancel
29
+ the boat holds its current wind angle.
30
+ - Repeated taps on the tack button within 1.5 s no longer chain
31
+ start / cancel / start (wind modes).
32
+ - `unable-to-steer` can fire again: it required servo duty, which the
33
+ TinyPilot never reports. It now also fires on a large error while the
34
+ servo is stopped by an overcurrent fault.
35
+ - Settings tab: unlocking a group no longer asks about the profile; the
36
+ question appears only for PROFILE settings. Open or unlocked groups
37
+ are no longer folded, relocked and reset to old values by the 10 s
38
+ background refresh.
39
+
40
+ ## 3.3.0 — 2026-10-19 — Light on the Pi, AIS on the ring, settings shared by every device
41
+
42
+ Rolls up Rev483 → Rev505 on top of 3.2.0. Minor bump: new shared
43
+ visor settings in the backend, Raspberry Pi performance work, AIS rose
44
+ fixes from port and sea QA in Moaña, tide popup polish. No breaking
45
+ changes; the first visor that connects uploads its old per-device
46
+ settings, so nothing is lost.
47
+
48
+ ### Added
49
+
50
+ - **Settings shared by every device.** AIS mode (harbour / at anchor /
51
+ sailing), AIS voice, harbour auto-silencer, gust ghost and the list
52
+ of silenced AIS targets now live in the plugin (`/visor-prefs`), not
53
+ in each browser. Silencing a target on the tablet silences it on the
54
+ phone and the laptop too; the harbour auto-silencer is decided once,
55
+ from the boat's SOG, instead of separately by each screen. (Rev498,
56
+ Rev499)
57
+ - **Light mode on the Raspberry Pi's own screen.** The visor detects
58
+ the Pi's browser and drops animations, blur and glow, and only
59
+ touches the page when a value really changes (291 → ~9 DOM writes
60
+ per second). Pi GPU with the visor open: Chromium 15 % → 3 %.
61
+ (Rev490 → Rev492)
62
+ - **Firefox on the Pi: one-tap fix.** Firefox's GPU renderer overloads
63
+ the Pi's graphics chip (GPU ~90 %, 64 % of video frames dropped). The
64
+ Info tab explains it and an **Apply now** button writes
65
+ `gfx.webrender.software` into that Firefox's profiles; a one-time
66
+ notice points there. Also in the README (Troubleshooting).
67
+ (Rev500 → Rev502)
68
+ - **Interactive tide curve** in the tide popup: hover / drag cursor
69
+ with time, height and trend, big trend arrow, collision-free labels;
70
+ tide button always shown, with an install prompt and App Store link
71
+ when AnchorWatch Pro is missing. (Rev483 → Rev489)
72
+ - **Info tab: companion plugins** with live installed / missing status
73
+ and App Store links. (Rev485)
74
+
75
+ ### Fixed — AIS
76
+
77
+ - **Targets sit on the compass ring** at their real bearing, with a
78
+ distance label, instead of being parked on top of our own hull in a
79
+ marina (the log distance scale put every target under 50 m there).
80
+ (Rev494)
81
+ - **Moored boats no longer "move".** Class B boats report 0.3-1.6 kn of
82
+ GPS noise when tied up; a target counts as stopped when its AIS nav
83
+ status says moored / anchored / aground, or when two minutes of its
84
+ positions stay inside 30 m. No course line, no "moving" alarms.
85
+ (Rev503)
86
+ - **"Closing" speed in the infobox** was distance / TCPA (a moored boat
87
+ at 48 m showed 37 kn); now the real range rate. (Rev495)
88
+ - **Autopilot alarm banner always visible.** It was drawn below the
89
+ maximised chart, popups, the regatta HUD and the network banners:
90
+ the alarm beeped and spoke but could not be seen. (Rev497)
91
+
92
+ ### Fixed — other
93
+
94
+ - **Recorded sessions / session tags / received advice dialogs could
95
+ trap you.** The only way out was the Close button at the end of the
96
+ content; with many sessions (224 on the test boat) it was pushed
97
+ off-screen. Now an X is always visible, the list scrolls inside the
98
+ dialog with title and Close fixed, and tapping outside or Escape
99
+ closes it. (Rev504)
100
+ - **Recorded sessions capped at the newest 50** (one is recorded per
101
+ engage; 224 had piled up). On top of the existing 200 MB budget.
102
+ (Rev505)
103
+
104
+ ### Docs / package
105
+
106
+ - README rewritten against the code: license (AGPL-3.0-or-later), the
107
+ free-form SSH console described honestly, 14 alarm rules, polar
108
+ plugins named, Head-to-wind **and** Downwind pseudo-modes, every
109
+ integration (AnchorWatch Pro, chartplotter, AIS, polars) in the intro,
110
+ no invented plugins or path counts.
111
+ - New App Store / README screenshots (8): rose with AIS, embedded chart,
112
+ AnchorWatch Pro inside the rose, tide popup, head to wind / downwind
113
+ modes, tune, logbook trip, tack history. JPEG under 500 KB each; test
114
+ files no longer shipped (package 3.4 MB → 1.4 MB).
115
+
3
116
  ## 3.2.0 — 2026-10-15 — AIS rose rebuilt on real positions, tide popup, chart kept warm
4
117
 
5
118
  Rolls up Rev470 → Rev482 on top of 3.1.4. Minor bump: new UI (tide