signalk-race-control 0.6.0 → 0.8.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/README.md CHANGED
@@ -87,7 +87,10 @@ and a live projected finishing order — during and after the race.
87
87
  ended up as the name.
88
88
  - **Editable finish times** — click **Now** to record a finish as it happens, type a
89
89
  specific `HH:MM:SS` into the finish-time field to correct a mistimed click, or
90
- **Clear** to undo. Handles races that cross midnight.
90
+ **Clear** to undo. Handles races that cross midnight. **DNS** marks a boat as never
91
+ having started at all, distinct from **DNF** (started but didn't finish) — both show
92
+ up as their own status in the Excel export and rank last, and either one can be
93
+ undone the same way. Recording a real finish time clears either.
91
94
  - **Start timer** — once a start line is set and a start is scheduled, an expandable
92
95
  **Start timer** panel shows a countdown to the gun alongside three live numbers for
93
96
  this vessel specifically (from its own SignalK GPS/speed, not any other tracked
@@ -99,9 +102,15 @@ and a live projected finishing order — during and after the race.
99
102
  - **Course & chart** — enter lat/lon for the start line, an ordered list of rounding
100
103
  marks, and the finish line (or click **Use my position** if you're sitting at that
101
104
  spot, or type a name to autocomplete against existing SignalK waypoints — e.g. ones
102
- already placed from a chart plotter — and pick one to fill in its position). The
103
- webapp draws them on a built-in chart, overlaid with each AIS-tracked boat's
104
- recorded track for the current race — drag the **replay** slider to step back
105
+ already placed from a chart plotter — and pick one to fill in its position; typing
106
+ lat/lon directly works just as well). Every other known waypoint (not part of this
107
+ race's own course) shows on the chart too, as a small dim pin with its name, so it's
108
+ there to reference — or type into a mark's name field — even before it's used.
109
+ The chart itself is a real background map, like freeboard-sk's: it uses whatever
110
+ tile-based chart resource this SignalK server has registered, or falls back to public
111
+ OpenStreetMap + OpenSeaMap tiles when none is configured (same fallback freeboard-sk
112
+ itself uses). Overlaid on it is each AIS-tracked boat's recorded track for the current
113
+ race — drag the **replay** slider to step back
105
114
  through it, or leave it on **Live**. Click **Play** to have it step through on its own
106
115
  instead, at whatever speed the adjoining slider is set to (1x-60x); it starts over
107
116
  from the earliest recorded position when played from Live (there's nothing to play
@@ -115,7 +124,10 @@ and a live projected finishing order — during and after the race.
115
124
  back to just the last real position (no ring) instead of interpolating across a gap
116
125
  longer than 5 minutes — AIS dropping out, or a mark rounding recorded far from any
117
126
  real fix — since a straight line across a gap that long would be a guess, not an
118
- estimate. The course is also published as SignalK
127
+ estimate. A notable pickup in speed between two consecutive samples (a gust, better
128
+ trim, planing) is marked right on the track as a ring in that boat's own colour, sized
129
+ a bit larger for a bigger jump — hover it for the exact speed reached. The course is
130
+ also published as SignalK
119
131
  waypoint/route resources for any chart plotter (e.g. freeboard-sk) that reads the
120
132
  standard resources API — both directions (reading existing waypoints for the
121
133
  autocomplete, and publishing the saved course) only do anything if your server has a
@@ -140,13 +152,17 @@ and a live projected finishing order — during and after the race.
140
152
  rounding.
141
153
  - **Stop / call off the race** — freezes elapsed/corrected time for everyone without
142
154
  touching boats, finish times, or the course (unlike Reset, which clears the race
143
- back to not-started), and marks every boat that hadn't finished as **DNF**,
144
- capturing its last known AIS position if one's available. You can also schedule a
145
- call-off for a future time (mirrors Schedule Start), and mark or un-mark an
146
- individual boat DNF by hand at any point, independent of the whole race. There's no
155
+ back to not-started), and marks every boat that hadn't finished or already been
156
+ marked DNS as **DNF**, capturing its last known AIS position if one's available. You
157
+ can also schedule a call-off for a future time (mirrors Schedule Start), and mark or
158
+ un-mark an individual boat DNF or DNS by hand at any point, independent of the whole
159
+ race. There's no
147
160
  true pause: **Resume** discards the stop, un-DNFs everyone it DNF'd, and the clock
148
161
  jumps straight back to real elapsed time — the time spent stopped isn't excluded
149
162
  from anyone's result. Recording a real finish time on a DNF'd boat clears its DNF.
163
+ Also happens automatically the moment every boat has either finished or been marked
164
+ DNF — nothing left to time, so the race calls itself off rather than sitting there
165
+ with an idle clock until someone remembers to click Stop.
150
166
  - **Compare to a "self" boat** — click the star next to a boat's name to mark it as
151
167
  self. Every other boat then shows, in the **vs Self** column: a live-ticking
152
168
  countdown to the moment self would tie them on corrected time if that boat has
@@ -155,10 +171,15 @@ and a live projected finishing order — during and after the race.
155
171
  both have finished. With no boat marked self, the column instead compares everyone
156
172
  against the current **leader** (tagged accordingly), so it's never just blank.
157
173
  - **Export to Excel** — a genuine `.xlsx` snapshot of the current standings (same
158
- ranking, same rows as the on-screen table: rank, boat, sail number, MMSI, TCF,
159
- start time, elapsed, corrected, finish time, status), with the time columns
160
- rendered in your browser's own timezone rather than the server's (and with the
161
- date included, for a multi-day race).
174
+ ranking, same rows as the on-screen table: rank, boat, sail number, MMSI, TCF, start
175
+ time, finish time, elapsed, corrected, status), with the time columns rendered in
176
+ your browser's own timezone rather than the server's (and with the date included,
177
+ for a multi-day race). Start/finish are real date-time cells, and Elapsed/Corrected
178
+ are live formulas from them (elapsed × TCF), not numbers baked in at export time —
179
+ correct a start or finish time directly in the spreadsheet afterward and the rest
180
+ recalculates. Left blank for a boat with no finish time (DNF, DNS, or still racing)
181
+ rather than a snapshot of elapsed-so-far that would go stale the moment the file is
182
+ reopened later.
162
183
  - **Download Offline Timer** — a single self-contained `.html` file, seeded with the
163
184
  current race's boats, TCF, and multi-day setting, that runs the core of race timing
164
185
  (start/stop/resume/reset, add/remove boats, edit TCF, individual start times,