signalk-pypilot-newui 2.2.0 → 2.2.1
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 +11 -0
- package/README.md +97 -5
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/public/index.html +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.2.1 — 2026-08-31 — Rev128
|
|
4
|
+
|
|
5
|
+
Docs-only patch release.
|
|
6
|
+
|
|
7
|
+
- **README** — embedded the four App Store screenshots as absolute
|
|
8
|
+
`raw.githubusercontent.com` URLs so they render both on the NPM
|
|
9
|
+
website (which only surfaces the README, not `signalk.screenshots[]`)
|
|
10
|
+
and inside any other viewer that follows the README markdown. The
|
|
11
|
+
registry serves the README frozen at publish time, so this bump is
|
|
12
|
+
the only way to get the updated README to `npmjs.com/package/signalk-pypilot-newui`.
|
|
13
|
+
|
|
3
14
|
## 2.2.0 — 2026-08-31 — Rev88..Rev127
|
|
4
15
|
|
|
5
16
|
Forty in-session Revs of navigation-oriented features on top of the
|
package/README.md
CHANGED
|
@@ -9,6 +9,78 @@ and switches out of the box.
|
|
|
9
9
|
Runs alongside [`pypilot-autopilot-provider`](https://www.npmjs.com/package/pypilot-autopilot-provider)
|
|
10
10
|
by Panaaj — see [Working alongside pypilot-autopilot-provider](#working-alongside-pypilot-autopilot-provider).
|
|
11
11
|
|
|
12
|
+
## Screenshots
|
|
13
|
+
|
|
14
|
+
| Control | Tune |
|
|
15
|
+
|---|---|
|
|
16
|
+
|  |  |
|
|
17
|
+
|
|
18
|
+
| Info | Setup |
|
|
19
|
+
|---|---|
|
|
20
|
+
|  |  |
|
|
21
|
+
|
|
22
|
+
## What's new in 2.2.0
|
|
23
|
+
|
|
24
|
+
2.2.0 turns the plugin into an **intelligence layer over pypilot**. Forty
|
|
25
|
+
in-session Revs on top of the 2.1.0 visual foundation. Highlights:
|
|
26
|
+
|
|
27
|
+
- **Aproado pseudo-mode** — a new "raise the sails" AP mode not in
|
|
28
|
+
pypilot upstream. Pick BY BOW / BY STERN via a 5 s modal, the
|
|
29
|
+
plugin switches pypilot to wind mode with target 0° (head to
|
|
30
|
+
wind), and a floating HUD over the boat shows elapsed time,
|
|
31
|
+
straight-line distance from the start and the compass heading
|
|
32
|
+
captured at activation. SALIR restores the previous mode + target
|
|
33
|
+
+ engaged state. BY STERN forces a stern-through swing by walking
|
|
34
|
+
a chain of intermediate targets 60° apart so pypilot cannot
|
|
35
|
+
shortcut through the bow.
|
|
36
|
+
- **Telemetry historian + Chart tab** — RAM ring buffer at 1 Hz for
|
|
37
|
+
the last 30 min (backend, Pi 5 friendly). Nine Trip Stats cards
|
|
38
|
+
(AP engaged time, distance, energy, mean / RMS / p95 heading
|
|
39
|
+
error, servo runtime, tacks / gybes, peak servo A) fed live via
|
|
40
|
+
SK paths, plus a canvas with 30 s / 2 min / 10 min windows.
|
|
41
|
+
- **Sensor Quality + Servo Health + Alarm engine + Pre-departure
|
|
42
|
+
check** — new backend modules that grade every SK path the AP
|
|
43
|
+
depends on, learn a baseline servo current and flag anomalies,
|
|
44
|
+
evaluate seven alarm rules that publish canonical
|
|
45
|
+
`notifications.autopilot.*`, and roll everything into a single
|
|
46
|
+
READY / READY-WITH-CAVEATS / DO-NOT-ENGAGE verdict.
|
|
47
|
+
- **Pypilot Doctor** — press DIAGNOSE, the plugin records 2-3 min
|
|
48
|
+
with the AP engaged, runs heuristic rules on the heading error
|
|
49
|
+
stream (bias / oscillation / low authority) and proposes P / I /
|
|
50
|
+
D adjustments with a plain explanation. Nothing is applied
|
|
51
|
+
automatically. The first Apply of a session **forks the current
|
|
52
|
+
pypilot profile** into a new `doctor-YYYYMMDD-HHMM` profile so
|
|
53
|
+
the previous gains stay one profile-select away.
|
|
54
|
+
- **Setup as a launcher grid** — every setup block is now a square
|
|
55
|
+
tile in a 2 / 3 / 4-column grid. Tap opens fullscreen with a
|
|
56
|
+
small X to close and ESC support. Live summary pill on every
|
|
57
|
+
tile. Connection consolidated (status + LAN scan + manual host +
|
|
58
|
+
Autopilot Provider in one card). "Emergency" renamed to "Remote
|
|
59
|
+
Control Console".
|
|
60
|
+
- **Interactive SSH console** — free-form command input with
|
|
61
|
+
on-screen arrow buttons for mobile history navigation,
|
|
62
|
+
accumulative output textarea, clipboard fallback for HTTP LAN,
|
|
63
|
+
and 14 preset buttons with plain human labels (Memory / IP
|
|
64
|
+
table / WiFi / Temperature / Who is connected / ...). BusyBox /
|
|
65
|
+
piCore-safe fallbacks for every command.
|
|
66
|
+
- **Full RangeSetting sliders in Calibration** — every pypilot
|
|
67
|
+
`RangeSetting` grouped by category (rudder / servo / imu / ap /
|
|
68
|
+
other) with the same look as the Tune tab, a lock checkbox with
|
|
69
|
+
the padlock emoji, a frozen "before:" baseline that never moves
|
|
70
|
+
as you drag, and a per-slider ↺ restore button.
|
|
71
|
+
- **Gota Chain shape swap** — after iterations with skippers using
|
|
72
|
+
the plugin: the AMBER "A" arrow (apparent wind) is now the LARGE
|
|
73
|
+
piece and the TEAL "T" arrow (true wind) the SMALL outer one.
|
|
74
|
+
Colors and letters kept their canonical meaning; only the SVG
|
|
75
|
+
paths moved so the amber piece is visually the dominant one.
|
|
76
|
+
- **Full i18n audit** across EN / ES / FR / DE — every hard-coded
|
|
77
|
+
English string in the non-EN bundles purged, alarm messages and
|
|
78
|
+
Doctor suggestion reason / effect exposed as i18n keys + args so
|
|
79
|
+
the frontend renders in the user's language.
|
|
80
|
+
|
|
81
|
+
See [`CHANGELOG.md`](./CHANGELOG.md) for the full detailed list in
|
|
82
|
+
four languages.
|
|
83
|
+
|
|
12
84
|
## Upgrading from 1.0.0 to 2.0.0
|
|
13
85
|
|
|
14
86
|
2.0.0 is a **breaking release** addressing feedback from Sean D'Epagnier
|
|
@@ -162,15 +234,35 @@ that isolated TinyPilot.
|
|
|
162
234
|
|
|
163
235
|
| Method | Path | Purpose |
|
|
164
236
|
|---|---|---|
|
|
165
|
-
| `GET` | `/plugins/signalk-pypilot-newui/status` | Connection + last-seen catalog summary + Rev + version |
|
|
237
|
+
| `GET` | `/plugins/signalk-pypilot-newui/status` | Connection + last-seen catalog summary + Rev + version + historian header + KPI computedTs |
|
|
166
238
|
| `GET` | `/plugins/signalk-pypilot-newui/scan` | Scan LAN for `pypilot_web` hosts |
|
|
167
239
|
| `GET` | `/plugins/signalk-pypilot-newui/paths` | Live list of published SK paths with GET / PUT URLs and units |
|
|
168
240
|
| `GET` | `/plugins/signalk-pypilot-newui/catalog` | Raw pypilot catalog (all values + metadata) |
|
|
241
|
+
| `GET` | `/plugins/signalk-pypilot-newui/values` | Current pypilot value cache |
|
|
169
242
|
| `PUT` | `/plugins/signalk-pypilot-newui/raw` | Send raw `name=value` to pypilot (protected by `allowWrites`) |
|
|
170
|
-
| `
|
|
171
|
-
| `
|
|
172
|
-
| `POST` | `/plugins/signalk-pypilot-newui/
|
|
173
|
-
| `
|
|
243
|
+
| `GET` | `/plugins/signalk-pypilot-newui/history` | Historian slice. Query `?window=30s\|2m\|10m` and `?paths=headingCmd,rudder,...`. RAM ring buffer at 1 Hz. |
|
|
244
|
+
| `GET` | `/plugins/signalk-pypilot-newui/stats` | KPI snapshot: session (engaged time, distance, energy, tacks, gybes, max servo A) + window1m (mean / RMS / p95 heading error, servo duty). |
|
|
245
|
+
| `POST` | `/plugins/signalk-pypilot-newui/session/reset` | Reset the KPI session counters. History buffer is kept. |
|
|
246
|
+
| `GET` | `/plugins/signalk-pypilot-newui/quality` | Sensor Quality snapshot: age / observed Hz / jitter / source / status per watched SK path. |
|
|
247
|
+
| `GET` | `/plugins/signalk-pypilot-newui/servo-health` | Servo Health snapshot: learned baseline current, deviation ratio, peak A, samples in the learn window. |
|
|
248
|
+
| `GET` | `/plugins/signalk-pypilot-newui/alarms/state` | Active alarms + short resolved history. |
|
|
249
|
+
| `GET` | `/plugins/signalk-pypilot-newui/alarms/rules` | Rule metadata (id / label / severity / enabled / muted / active). |
|
|
250
|
+
| `POST` | `/plugins/signalk-pypilot-newui/alarms/ack/:id` | Acknowledge one active alarm (silences the sound, banner stays visible). |
|
|
251
|
+
| `POST` | `/plugins/signalk-pypilot-newui/alarms/mute/:id` | Mute the RULE for N minutes (query `?min=15`). |
|
|
252
|
+
| `POST` | `/plugins/signalk-pypilot-newui/alarms/enable/:id` | Enable / disable a rule (query `?on=1\|0`). |
|
|
253
|
+
| `GET` | `/plugins/signalk-pypilot-newui/prechecks` | Pre-departure autopilot check verdict: `ready` / `ready-with-caveats` / `do-not-engage` + per-item detail. |
|
|
254
|
+
| `POST` | `/plugins/signalk-pypilot-newui/doctor/start` | Start a diagnostic session (query `?duration=180`). Requires AP engaged. |
|
|
255
|
+
| `POST` | `/plugins/signalk-pypilot-newui/doctor/cancel` | Cancel the current session. |
|
|
256
|
+
| `GET` | `/plugins/signalk-pypilot-newui/doctor/status` | Session state + progress + result (when completed). |
|
|
257
|
+
| `POST` | `/plugins/signalk-pypilot-newui/doctor/apply/:id` | Apply one gain suggestion. The FIRST apply of the session forks the profile into `doctor-YYYYMMDD-HHMM`. |
|
|
258
|
+
| `POST` | `/plugins/signalk-pypilot-newui/doctor/apply-all` | Apply every non-dismissed suggestion (all land in the same forked profile). |
|
|
259
|
+
| `POST` | `/plugins/signalk-pypilot-newui/doctor/dismiss/:id` | Mark a suggestion as dismissed (user rejects it). |
|
|
260
|
+
| `POST` | `/plugins/signalk-pypilot-newui/doctor/reset` | Clear result, back to idle. |
|
|
261
|
+
| `POST` | `/plugins/signalk-pypilot-newui/restart-pypilot` | SSH `sv restart` of pypilot core+web on the TinyPilot. |
|
|
262
|
+
| `POST` | `/plugins/signalk-pypilot-newui/debug-cmd` | Run one of a closed whitelist of preset diagnostic / restart commands over SSH. Body: `{ "preset": "<name>" }`. |
|
|
263
|
+
| `POST` | `/plugins/signalk-pypilot-newui/ssh-exec` | Free-form SSH command (Remote Control Console). Body: `{ "cmd": "<any shell>" }`. Requires `allowWrites`. |
|
|
264
|
+
| `POST` | `/plugins/signalk-pypilot-newui/pause` | Disconnect local socket (for scripts). |
|
|
265
|
+
| `POST` | `/plugins/signalk-pypilot-newui/resume` | Reconnect local socket (for scripts). |
|
|
174
266
|
|
|
175
267
|
## Safety
|
|
176
268
|
|
package/dist/index.js
CHANGED
|
@@ -13,7 +13,7 @@ const prechecks_1 = require("./prechecks");
|
|
|
13
13
|
const doctor_1 = require("./doctor");
|
|
14
14
|
// Rev counter bumped on every build so the user can distinguish deploys
|
|
15
15
|
// from the webapp header (feedback_revision_bump_each_build).
|
|
16
|
-
const PLUGIN_REVISION = "
|
|
16
|
+
const PLUGIN_REVISION = "Rev128";
|
|
17
17
|
// Rev59: read package.json once at load time so /status can report the
|
|
18
18
|
// npm package version alongside the internal Rev counter.
|
|
19
19
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "signalk-pypilot-newui",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.1",
|
|
4
4
|
"description": "Signal K friendly UI for the pypilot autopilot, with the capability to spread its functions and buttons to other programs like KIP, WilhelmSK and freeboard. Touch-first mobile visor + full pypilot data (servo, gains, calibration, tack, warnings) as first-class Signal K paths and Simple Switches. Coexists with pypilot-autopilot-provider.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"scripts": {
|
package/public/index.html
CHANGED