signalk-pypilot-newui 3.5.0 → 3.7.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 +119 -0
- package/README.md +227 -434
- package/dist/alarms.js +34 -6
- package/dist/autopilot-provider.js +280 -61
- package/dist/autowind.js +80 -0
- package/dist/black-box.js +230 -0
- package/dist/config-backup.js +33 -4
- package/dist/display-presets.js +142 -0
- package/dist/doctor.js +65 -23
- package/dist/episodes.js +17 -1
- package/dist/index.js +803 -91
- package/dist/kpis.js +17 -2
- package/dist/maneuver-trace.js +2 -0
- package/dist/route-nav.js +110 -0
- package/dist/sensor-quality.js +16 -2
- package/dist/servo-error-log.js +6 -10
- package/dist/servo-health.js +8 -1
- package/dist/session-recorder.js +11 -4
- package/dist/steer-watch.js +2 -1
- package/dist/trip-recorder.js +17 -3
- package/dist/virtual-tack.js +8 -1
- package/dist/visor-prefs.js +17 -2
- package/package.json +20 -12
- package/public/app.js +1155 -60
- package/public/icon-256.png +0 -0
- package/public/index.html +115 -35
- package/public/keepawake.mp4 +0 -0
- package/public/keepawake.webm +0 -0
- package/public/screenshots/05-modes-autowind.jpg +0 -0
- package/public/style.css +49 -19
- package/public/screenshots/05-modes-head-to-wind-downwind.jpg +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,124 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.7.0 — 2026-10-26 — Route following (NAV), black box, external review fixes
|
|
4
|
+
|
|
5
|
+
Rolls up Rev521 → Rev551 on top of 3.6.0. Minor bump: new NAV route
|
|
6
|
+
following and black box. No breaking changes. The steering fixes come
|
|
7
|
+
from a full code review by two external LLMs plus four self-audits; not
|
|
8
|
+
yet tested at sea (see `docs/QA_Rev526-540.md`, rollback tag
|
|
9
|
+
`pre-audit-rev530`).
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- **Follow Freeboard routes with pypilot's NAV mode, no extra plugins**:
|
|
13
|
+
the plugin reads the active route from Signal K's Course API, computes
|
|
14
|
+
leg bearing, cross-track error and arrival itself and sends an APB
|
|
15
|
+
sentence every second on Signal K's NMEA output, which pypilot already
|
|
16
|
+
reads - NAV then appears in pypilot. Cross-track error capped both
|
|
17
|
+
ways (pypilot caps it only on one side). Waypoints advance on their
|
|
18
|
+
own (arrival circle or perpendicular passed) with a spoken message:
|
|
19
|
+
"Waypoint X reached. Next, Y. New course N degrees. D miles." At the
|
|
20
|
+
destination, or if the route or the GPS position is lost for 5 s, the
|
|
21
|
+
pilot goes to compass on the current heading and says so (also with
|
|
22
|
+
the AP disengaged, where pypilot would otherwise pick GPS). Engage
|
|
23
|
+
from Freeboard / KIP with a route goes straight to NAV; in the visor
|
|
24
|
+
NAV is chosen in the mode list ("NAV (ROUTE)"), with a confirmation
|
|
25
|
+
when it would turn more than 60°. ±1 / ±10 in NAV take over in
|
|
26
|
+
compass with the new heading; tacking in NAV is refused. "Next
|
|
27
|
+
waypoint" in the mode list and through the Autopilot API. Mode button
|
|
28
|
+
shows "NAV · waypoint · nm". Status on `steering.autopilot.route`.
|
|
29
|
+
- **Black box** - chart with every recorded field (one band each, touch
|
|
30
|
+
cursor with all values), View / Download of each incident, Setup tile
|
|
31
|
+
amber until the incident has been opened, and a **note** per incident
|
|
32
|
+
dictated with the phone keyboard (Mark asks for it right away; a
|
|
33
|
+
second Mark in the same incident adds to it).
|
|
34
|
+
- **Black box** (Setup card): keeps the last minute of autopilot data
|
|
35
|
+
and saves one minute before and one after when something happens - AP
|
|
36
|
+
taken off from outside the app, stuck pilot or recovery cycle, servo
|
|
37
|
+
overcurrent fault, a tack slower than usual (40 s, gybe 75 s) or that
|
|
38
|
+
failed, an alarm with the AP engaged - or when you press Mark (also a
|
|
39
|
+
long-press on the helm button of the rose). Each incident shows heading
|
|
40
|
+
error, apparent wind and servo current with the fault marked, its
|
|
41
|
+
events, and can be downloaded. The newest 50 are kept.
|
|
42
|
+
- **Saved displays**: name the rose layout (corners, arrows, overlays,
|
|
43
|
+
bottom bar) and keep it on this device or on the server for every
|
|
44
|
+
device; apply it in one tap from the rose configuration window.
|
|
45
|
+
- **Tap sound** (rose configuration, off by default): a short, bright
|
|
46
|
+
sound on every button tap so you know it registered in wind and noise.
|
|
47
|
+
Five lower sounds to choose from (wood, drop, soft thud, low bell, low
|
|
48
|
+
click) with a test button; soft thud by default.
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
- Rose ring, ticks and the heading / wind box frames in grey (#8e9bab);
|
|
52
|
+
degree labels and card / corner titles in white.
|
|
53
|
+
- Gust strategy **"freeze target" removed**: it rewrote the target every
|
|
54
|
+
second for 12 s, undoing the sailor's nudges, tacks and mode changes.
|
|
55
|
+
Saved configs with it behave as "warn".
|
|
56
|
+
- App Store: recommended companion plugins, PNG app icon, reorganised
|
|
57
|
+
README and screenshots.
|
|
58
|
+
- An ACK on an alarm banner also closes it.
|
|
59
|
+
- **More contrast for sunlight**: white text, brighter secondary text,
|
|
60
|
+
borders and separators.
|
|
61
|
+
- **AUTO WIND** also switches with the AP disengaged (engaging lands in
|
|
62
|
+
the right mode), but only with at least 3 kn of true wind - in port
|
|
63
|
+
the true wind angle is noise.
|
|
64
|
+
- English label of the downwind pseudo-mode: **DEAD DOWNWIND** (was
|
|
65
|
+
"head downwind").
|
|
66
|
+
|
|
67
|
+
### Fixed
|
|
68
|
+
- **Pilot core** (external review): targets kept in the mode's own
|
|
69
|
+
range; a target retry is dropped on a mode change; mode change then
|
|
70
|
+
target in sequence, waiting for pypilot's echo (reverts if refused);
|
|
71
|
+
late echoes of a burst of nudges no longer pull the target back, and
|
|
72
|
+
the target is reconciled to pypilot's last command; handover to a wind
|
|
73
|
+
mode waits and verifies; API tacks go through the virtual tack, API
|
|
74
|
+
nudges re-aim a running tack, KIP cancel stops it; a small overshoot is
|
|
75
|
+
arrival, not a 360.
|
|
76
|
+
- **Alarms**: a muted alarm still clears; ACK, mute and severity are
|
|
77
|
+
republished; "AP dropped" uses STW without GPS; unable-to-steer
|
|
78
|
+
ignores missing RMS; the black box opens an alarm incident only when
|
|
79
|
+
the alarm fires.
|
|
80
|
+
- **Doctor**: clamps to pypilot's gain range, waits for its forked
|
|
81
|
+
profile, one change per session, apply-all locks only after success.
|
|
82
|
+
- **Recording / storage**: trip ids validated before building paths;
|
|
83
|
+
atomic writes (display presets, black-box incidents); recorders keep
|
|
84
|
+
lines on a failed write; the active session cannot be deleted; KPI
|
|
85
|
+
integration on real time steps; restore never sends orders.
|
|
86
|
+
- Head-to-wind / downwind: the manoeuvre flag expires (180 s), a failed
|
|
87
|
+
mode change ends it, cancelled manoeuvres write nothing.
|
|
88
|
+
- App dialogs above popups (the black-box Delete confirm was hidden).
|
|
89
|
+
- Tack buttons: the arrow is centred when there is no number under it
|
|
90
|
+
(wind modes).
|
|
91
|
+
- **Screen kept on over plain http** (tablet at http://<ip>:3000): the
|
|
92
|
+
Wake Lock API only exists on https / localhost; a tiny silent looping
|
|
93
|
+
video now keeps the screen on there, and the lock is re-taken after
|
|
94
|
+
the browser releases it.
|
|
95
|
+
- **"AP disengaged from outside the app" fired in port** on every
|
|
96
|
+
Signal K restart (the first ap.enabled=false is the initial sync) and
|
|
97
|
+
with no GPS (unknown speed counted as underway).
|
|
98
|
+
|
|
99
|
+
## 3.6.0 — 2026-10-19 — AUTO WIND and a logbook button on the rose
|
|
100
|
+
|
|
101
|
+
Rolls up Rev517 → Rev520 on top of 3.5.0. Minor bump: new AUTO WIND
|
|
102
|
+
pseudo-mode. No breaking changes; AUTO WIND is off until chosen.
|
|
103
|
+
|
|
104
|
+
### Added
|
|
105
|
+
- **AUTO WIND pseudo-mode**: apparent wind below 120° TWA, true wind
|
|
106
|
+
above (hysteresis ±5°, 10 s sustained, at most one switch per 30 s;
|
|
107
|
+
never during a tack, head-to-wind, head-downwind or with the AP off).
|
|
108
|
+
Each side has its own pypilot profile, chosen in the mode window, so
|
|
109
|
+
the true-wind side can be the more reactive one. Runs in the backend
|
|
110
|
+
(works with the visor closed); picking any other mode, or compass from
|
|
111
|
+
the remote, turns it off. Mode button shows "AUTO · REAL / APPARENT".
|
|
112
|
+
Without GPS pypilot offers no true wind: the entry is shown greyed out
|
|
113
|
+
("needs GPS for true wind"), and pypilot's own drop to compass on a
|
|
114
|
+
GPS loss does not turn AUTO WIND off.
|
|
115
|
+
Listed right below compass / GPS in the mode window.
|
|
116
|
+
- **Logbook button**: while a trip is being recorded it opens that trip;
|
|
117
|
+
in port it opens the logbook list.
|
|
118
|
+
- **Logbook button on the rose**: a helm icon on the left, mirroring the
|
|
119
|
+
tide button on the right, opens the Logbook full screen; its x goes
|
|
120
|
+
back to the rose.
|
|
121
|
+
|
|
3
122
|
## 3.5.0 — 2026-10-19 — Fixes from two sea trials, logbook while sailing
|
|
4
123
|
|
|
5
124
|
Rolls up Rev509 → Rev516 on top of 3.4.0. Minor bump: live logbook,
|