Releases: halos-org/skip
Release list
v1.4.1
Skip v1.4.1
An advanced and versatile marine instrumentation package to display Signal K data.
Data Graph settings
- Angle display range now appears only when the selected path is angular. A path the server publishes a non-radian unit for no longer offers a setting that does nothing there. A path with no published unit keeps it, because that is the case where the override is the only way to keep a graph angular while the instrument is idle. (#368)
- The moving-average controls say what they do. Display Moving Average is now Show Smoothed Trend, with a hint stating the real averaging span for the configured window — 2.5 min on a 10-minute graph, 15 s on Last Minute. Track Against Moving Average is now a Main Series choice between Live Value and Smoothed Trend, which is what it actually switches, including the widget's reading. The two cards both titled "Series" merge into one, and Show Average Line becomes Show Window Average Line to separate it from the rolling average. Stored dashboards are unaffected. (#598)
- A stored main-series choice that its own smoothing toggle contradicts is dropped on open, instead of taking effect the moment smoothing is switched back on.
Data Graph display
- The label and the reading no longer draw over each other. They share one row while both fit; past that the reading takes its own row, still right-aligned; a label too long for a row of its own ellipsizes rather than running off the widget. Vertical graphs hit this every time, and a wide graph with a long label hit it too. (#602)
- The graph-window suffix now hides with Show Label, instead of leaving a bare "(30 s)" behind.
Navigation
- Browser Back closes the topmost dialog or bottom sheet instead of changing the page. Backing out of widget settings during a layout edit returns to the edit rather than abandoning it; with nothing open, Back navigates as before. (#393)
Documentation
- README refreshed: current screenshots, plugin dependencies, the demo server and Freeboard-SK integration described accurately.
v1.4.1+3_pre (Pre-release)
Skip v1.4.1+3_pre (Pre-release)
Pre-release build from the main branch. Not published to npm — for testing only.
Build Information:
- Version: 1.4.1
- Commit: ba8080a (
ba8080a499cb0a9a7f24f1de782fd538771df887) - Built: 2026-08-15 18:27:28 UTC
Recent Changes
- fix(nav): keep the dialog defaults whole and stop unwinding into a new route (a02b3d9)
- fix(nav): stop the widget-settings dialog opting back into closeOnNavigation (69f249b)
- chore: return VERSION to 1.4.1 (62953a9)
- fix(nav): close the top overlay on Back instead of navigating (24f7383)
- fix(graph): lay out the label and the reading as one wrapping row (565dacb)
- fix(graph): drop a main-series choice its smoothing toggle contradicts (7e36c03)
- Bump version: 1.4.1 → 1.5.0 (0d0ca59)
- feat(graph): name the moving-average settings for what they do (07e217e)
- feat(graph): describe the moving-average span in words (bb56060)
- fix(graph): read the path unit ahead of the path debounce (65de53a)
- feat(graph): show the angle range only for angular paths (003f3a3)
- docs(readme): name plugin dependencies and the known layout defect (b2aa8d9)
- docs(readme): correct the demo server and Freeboard-SK claims (7b8b7dc)
- docs(readme): stop framing Skip as touch-first (190675c)
- Bump version: 1.4.0 → 1.4.1 (ef5186b)
- docs(readme): replace Kip screenshots and document the UI (46f0eb4)
v1.4.1+2_pre (Pre-release)
Skip v1.4.1+2_pre (Pre-release)
Pre-release build from the main branch. Not published to npm — for testing only.
Build Information:
- Version: 1.4.1
- Commit: 24567a9 (
24567a982e93d80ab1c5c3cfb0dba27f2917333b) - Built: 2026-08-13 20:08:10 UTC
Recent Changes
- fix(graph): read the path unit ahead of the path debounce (65de53a)
- feat(graph): show the angle range only for angular paths (003f3a3)
- docs(readme): name plugin dependencies and the known layout defect (b2aa8d9)
- docs(readme): correct the demo server and Freeboard-SK claims (7b8b7dc)
- docs(readme): stop framing Skip as touch-first (190675c)
- Bump version: 1.4.0 → 1.4.1 (ef5186b)
- docs(readme): replace Kip screenshots and document the UI (46f0eb4)
v1.4.1+1_pre (Pre-release)
Skip v1.4.1+1_pre (Pre-release)
Pre-release build from the main branch. Not published to npm — for testing only.
Build Information:
- Version: 1.4.1
- Commit: a9f5175 (
a9f5175e9f17ed70e6600ea16f0682c85197ba4d) - Built: 2026-08-13 17:08:28 UTC
Recent Changes
- docs(readme): name plugin dependencies and the known layout defect (b2aa8d9)
- docs(readme): correct the demo server and Freeboard-SK claims (7b8b7dc)
- docs(readme): stop framing Skip as touch-first (190675c)
- Bump version: 1.4.0 → 1.4.1 (ef5186b)
- docs(readme): replace Kip screenshots and document the UI (46f0eb4)
v1.4.0+15
Skip v1.4.0
The default configuration
Skip's default configuration is now four pages: Demo, Environment, Motoring and Sailing, carrying 12, 8, 14 and 9 widgets. Every profile created from scratch starts there, and so does any profile that boots with no dashboards. The new default profile can be used as-is in common boating contexts, or used as a starting point for your own customized pages.
Existing profiles are untouched. To get the new pages, press New in the profile list; the name dialog now says what the profile will start from. (#549)
Creating or duplicating a profile switches Skip onto it and reloads.
Units and metadata
Every value appears in the unit your Signal K server's unit preferences name for that path, converted from the SI value on the wire. Set them once in the server admin UI under Server → Configuration → Settings → Unit Preferences, and Skip follows along with every other unit-preferences-aware app. Preferences are stored per user, so they travel with your login. The README's new Display Units section covers the six built-in presets, the categories that carry one preset choice across hundreds of paths, per-path overrides in the Data Browser, and custom presets.
Widgets
Data Graph. Scale ticks are drawn inside the graph area to maximize the use of available space.
Racing and autopilot controls. The buttons in Racer - Start Timer, Racer - Start Line Insight, Countdown Timer and Autopilot Head carry real text labels with accessible names. The Start Timer time setup has also been improved.
Widgets with no data show the instrument. A radial gauge on a path that never reports used to draw nothing at all — a white or black rectangle where an instrument should be. They, as well as many other widgets, now show the widget outline even if the data is not available.
Configuration edits apply immediately. The Steel gauge honours subType, Digital Meter and decimals on save. A Radial, Linear or Compass gauge re-pointed at a path that reports nothing clears its needle and its value, instead of presenting the old path's reading. A freshly built Steel gauge starts from its path's current value rather than 0.00.
Smaller things. The Numeric widget and the Linear gauge put label and unit together on the top row, giving the reading the whole card below. Compact Linear fills its tile rather than a fixed box, and a newly added one opens with its path Filter on All instead of Electrical: Volt. The page transition swipe animation has been updated.
Anonymous read-only access
On a Signal K server that grants anonymous read access, Skip renders a shared dashboard to a visitor with no session instead of sending them to sign-in.
The anonymous session reads its dashboard from the shared global applicationData slot and falls back to the four pages shipped in this release when nothing is published there. It stays read-only.
Other fixes and housekeeping
- A widget config allows saving while one of its configured paths is unpublished.
- The video widget derives the v2 API base URL from the shared server root — thanks to @macjl for the fix. (#529)
- CodeRabbit is configured for this repo's conventions (#587).
CHANGELOG.mdandCONTRIBUTORS.mdare deleted, since release notes come fromgit logandgit shortlog -sneanswers the other (#586), and thedocs/tree is gone (#587).
v1.4.0+9_pre (Pre-release)
Skip v1.4.0+9_pre (Pre-release)
Pre-release build from the main branch. Not published to npm — for testing only.
Build Information:
- Version: 1.4.0
- Commit: 74846bb (
74846bbe923892a53009b6f498e6c8ed9e28957c) - Built: 2026-08-13 08:32:19 UTC
Recent Changes
- fix(gauge-steel): rebuild by default, and re-derive geometry on a type flip (96e97f6)
- test(gauge-steel): pin the one-rebuild claim and the live setters (1600ec4)
- fix(gauge-steel): apply subType, barGauge and decimals changes (80ac62a)
- chore: remove CHANGELOG.md and CONTRIBUTORS.md (dddc763)
- fix(default-config): clear the Volt filter from seeded Compact Linear gauges (49ad05e)
- fix(widget-simple-linear): start Compact Linear unfiltered (df19bf6)
- docs(units): pin why imperial flow differs from the server (9378f0c)
- test(perf-harness): re-send meta when a scenario swaps it (1d43701)
- docs: explain how to set display units on the server (ba1731e)
- fix(units): match a server target in its own group first (334cb27)
- test(perf-harness): stream path meta from the mock server (bafdb37)
- fix(units): map every server preset target unit (ee1b6ab)
- fix(deploy): make the guards this fix added actually fire (b8d0b4e)
- fix(bootstrap): scope an anonymous session's subscription to what it renders (4bde6fe)
- docs(help): correct what an unpublished slot returns (75b740c)
- fix(deploy): verify the device serves the build just synced (af1d09e)
- docs(help): publishing the anonymous default dashboard (5df7214)
- docs(auth): name the param the Signal K server actually reads (b5ea7f1)
- fix(auth): keep a framed sign-in out of embed mode (3247b9f)
- fix(auth): send the login return address as redirect (963aaec)
- fix(video): derive the v2 API base URL from the shared server root (7e8dd94)
- fix(auth): stop a read-only session offering edits it cannot perform (0195dda)
- fix(auth): make a read-only view stay read-only for the whole session (a9a7ecc)
- feat(auth): render a shared, read-only dashboard for an anonymous visitor (b48998d)
- fix(storage): read without a session, refuse writes without write access (d0259c4)
- fix(auth): read anonymously when the server grants readonly access (d4d560e)
- Bump version: 1.3.1 → 1.4.0 (60e7453)
- docs(perf-harness): document the default-seed probe (4f23db2)
- test(perf-harness): shoot the seeded pages with live data (5de4487)
- feat(profiles): say what a new profile starts from (06d7124)
- feat(config): seed profiles from the onboarding pages (f10fee4)
- fix(gauge-steel): do not animate a gauge a rebuild will discard (9f40968)
- fix(gauge-steel): seed a freshly built gauge with its value (f33905e)
- fix(dashboard): keep the faded page out of the way of taps (14e4ea0)
- feat(dashboard): shorten the page transition to a slide-and-fade (7a55e4b)
- docs: record the chart.js shim alias and the trap it replaces (bdaf574)
- fix(test): load the chart shims during setup, not lazily (b0ba4da)
- fix(test): alias chart.js to a shim so the mock cannot lose a race (94ed422)
- fix(data-chart): rebuild the chart when the orientation is toggled (7386fa1)
- fix(data-chart): keep the plot window when the label is hidden (7ea2f3e)
- feat(data-chart): draw scale ticks inside the plot area (d28f477)
- fix(data-chart): separate the angle range field from Source (928596b)
- fix(gauges): keep zone colours off an ignore-zones bar (95c7023)
- fix(electrical): layer the message above the placeholder card (c46d4ed)
- fix(autopilot): clear stale heading and wind readouts (b715187)
- fix(autopilot): gate all controls on reachability (dddae60)
- fix(theme): darken light theme page background (790b5bf)
- fix(electrical): give the rest of the family the same no-data card (96092ae)
- fix(electrical): keep the card shape behind the empty-state message (d48e16e)
- fix(autopilot): disable the engage toggle while an error is showing (9d851db)
- fix(autopilot): keep the widget readable when the pilot is off-line (c31cb3e)
- Fix video camera v2 URL fallback (994b018)
- fix(position): show '--' for a coordinate that has no value (638ec99)
- fix(gauges): show the dial with no data instead of a blank card (fbf7708)
- test(gesture): pin the guard's upper bound and the pointer contract (8ff05ae)
- fix(racer-timer): let the helm retry a start time that was refused (580e620)
- fix(racer-timer): commit the start time from a Set button (2f01ad7)
- fix(gesture): leave native form controls to the browser (7b4da09)
- fix(racer-timer): confirm the start time before leaving the form (50b4915)
- fix(storage): drop the availability cache (d0ddf47)
- fix(autopilot): name the tack key the operator can see, keep labels in names (3e8379a)
- fix(storage): make every storage operation total, and probe availability (a8a37f0)
- fix(racing-widgets): stop percentage padding zeroing the control row (b0bc4d4)
- docs(changelog): record the racing widget and storage fixes (d32d2fd)
- fix(autopilot): text labels, named controls, correct label ink (315f50b)
- fix(theme): on-colours for the starboard, orange and grey accents (e477996)
- fix(racing-widgets): real text labels, named controls, correct label ink (1cdbe9d)
- feat(theme): add per-accent on-colour tokens (5dc770b)
- chore: ignore in-clone worktrees (6d8a016)
- fix(storage): survive a browser that denies localStorage (c7fb28a)
- docs(changelog): fold in the compact linear sizing (5286789)
- fix(simple-linear): fill the tile, not a fixed box (e4f30ce)
- docs(changelog): record the linear gauge sizing (57ab259)
- fix(gauge-ng-linear): fill the box length (056bfc1)
- docs(changelog): record the widget unit row change (a215f05)
- fix(gauge-ng-linear): move unit beside the label (dad501f)
- fix(numeric): put the unit on the label's row (46be060)
- feat(units): add a renderable unit symbol helper (8d7ba8c)
- fix(racer-timer): bound label size by both axes, stop clipping taps (9d76d3a)
- docs(changelog): record the racer timer control fixes (5d58c30)
- test(racer-timer): pin the controls' accessible names (5d76281)
- fix(racer-timer): size controls off the row, not an empty viewBox (ac269a1)
- Bump version: 1.3.0 → 1.3.1 (35d9c5f)
- docs(changelog): record the unpublished-path fix (5458270)
- chore(settings): drop the redundant path-validation toggle (085b026)
- fix(widget-config): keep an unpublished datachart path saveable (09d9851)
- fix(widget-config): keep an unpublished path saveable (a193bd5)
v1.4.0+8_pre (Pre-release)
Skip v1.4.0+8_pre (Pre-release)
Pre-release build from the main branch. Not published to npm — for testing only.
Build Information:
- Version: 1.4.0
- Commit: 68aed14 (
68aed14ae57195f4f9a8231cc50d39106cd8c4fe) - Built: 2026-08-13 07:55:55 UTC
Recent Changes
- chore: remove CHANGELOG.md and CONTRIBUTORS.md (dddc763)
- fix(default-config): clear the Volt filter from seeded Compact Linear gauges (49ad05e)
- fix(widget-simple-linear): start Compact Linear unfiltered (df19bf6)
- docs(units): pin why imperial flow differs from the server (9378f0c)
- test(perf-harness): re-send meta when a scenario swaps it (1d43701)
- docs: explain how to set display units on the server (ba1731e)
- fix(units): match a server target in its own group first (334cb27)
- test(perf-harness): stream path meta from the mock server (bafdb37)
- fix(units): map every server preset target unit (ee1b6ab)
- fix(deploy): make the guards this fix added actually fire (b8d0b4e)
- fix(bootstrap): scope an anonymous session's subscription to what it renders (4bde6fe)
- docs(help): correct what an unpublished slot returns (75b740c)
- fix(deploy): verify the device serves the build just synced (af1d09e)
- docs(help): publishing the anonymous default dashboard (5df7214)
- docs(auth): name the param the Signal K server actually reads (b5ea7f1)
- fix(auth): keep a framed sign-in out of embed mode (3247b9f)
- fix(auth): send the login return address as redirect (963aaec)
- fix(video): derive the v2 API base URL from the shared server root (7e8dd94)
- fix(auth): stop a read-only session offering edits it cannot perform (0195dda)
- fix(auth): make a read-only view stay read-only for the whole session (a9a7ecc)
- feat(auth): render a shared, read-only dashboard for an anonymous visitor (b48998d)
- fix(storage): read without a session, refuse writes without write access (d0259c4)
- fix(auth): read anonymously when the server grants readonly access (d4d560e)
- Bump version: 1.3.1 → 1.4.0 (60e7453)
- docs(perf-harness): document the default-seed probe (4f23db2)
- test(perf-harness): shoot the seeded pages with live data (5de4487)
- feat(profiles): say what a new profile starts from (06d7124)
- feat(config): seed profiles from the onboarding pages (f10fee4)
- fix(gauge-steel): do not animate a gauge a rebuild will discard (9f40968)
- fix(gauge-steel): seed a freshly built gauge with its value (f33905e)
- fix(dashboard): keep the faded page out of the way of taps (14e4ea0)
- feat(dashboard): shorten the page transition to a slide-and-fade (7a55e4b)
- docs: record the chart.js shim alias and the trap it replaces (bdaf574)
- fix(test): load the chart shims during setup, not lazily (b0ba4da)
- fix(test): alias chart.js to a shim so the mock cannot lose a race (94ed422)
- fix(data-chart): rebuild the chart when the orientation is toggled (7386fa1)
- fix(data-chart): keep the plot window when the label is hidden (7ea2f3e)
- feat(data-chart): draw scale ticks inside the plot area (d28f477)
- fix(data-chart): separate the angle range field from Source (928596b)
- fix(gauges): keep zone colours off an ignore-zones bar (95c7023)
- fix(electrical): layer the message above the placeholder card (c46d4ed)
- fix(autopilot): clear stale heading and wind readouts (b715187)
- fix(autopilot): gate all controls on reachability (dddae60)
- fix(theme): darken light theme page background (790b5bf)
- fix(electrical): give the rest of the family the same no-data card (96092ae)
- fix(electrical): keep the card shape behind the empty-state message (d48e16e)
- fix(autopilot): disable the engage toggle while an error is showing (9d851db)
- fix(autopilot): keep the widget readable when the pilot is off-line (c31cb3e)
- Fix video camera v2 URL fallback (994b018)
- fix(position): show '--' for a coordinate that has no value (638ec99)
- fix(gauges): show the dial with no data instead of a blank card (fbf7708)
- test(gesture): pin the guard's upper bound and the pointer contract (8ff05ae)
- fix(racer-timer): let the helm retry a start time that was refused (580e620)
- fix(racer-timer): commit the start time from a Set button (2f01ad7)
- fix(gesture): leave native form controls to the browser (7b4da09)
- fix(racer-timer): confirm the start time before leaving the form (50b4915)
- fix(storage): drop the availability cache (d0ddf47)
- fix(autopilot): name the tack key the operator can see, keep labels in names (3e8379a)
- fix(storage): make every storage operation total, and probe availability (a8a37f0)
- fix(racing-widgets): stop percentage padding zeroing the control row (b0bc4d4)
- docs(changelog): record the racing widget and storage fixes (d32d2fd)
- fix(autopilot): text labels, named controls, correct label ink (315f50b)
- fix(theme): on-colours for the starboard, orange and grey accents (e477996)
- fix(racing-widgets): real text labels, named controls, correct label ink (1cdbe9d)
- feat(theme): add per-accent on-colour tokens (5dc770b)
- chore: ignore in-clone worktrees (6d8a016)
- fix(storage): survive a browser that denies localStorage (c7fb28a)
- docs(changelog): fold in the compact linear sizing (5286789)
- fix(simple-linear): fill the tile, not a fixed box (e4f30ce)
- docs(changelog): record the linear gauge sizing (57ab259)
- fix(gauge-ng-linear): fill the box length (056bfc1)
- docs(changelog): record the widget unit row change (a215f05)
- fix(gauge-ng-linear): move unit beside the label (dad501f)
- fix(numeric): put the unit on the label's row (46be060)
- feat(units): add a renderable unit symbol helper (8d7ba8c)
- fix(racer-timer): bound label size by both axes, stop clipping taps (9d76d3a)
- docs(changelog): record the racer timer control fixes (5d58c30)
- test(racer-timer): pin the controls' accessible names (5d76281)
- fix(racer-timer): size controls off the row, not an empty viewBox (ac269a1)
- Bump version: 1.3.0 → 1.3.1 (35d9c5f)
- docs(changelog): record the unpublished-path fix (5458270)
- chore(settings): drop the redundant path-validation toggle (085b026)
- fix(widget-config): keep an unpublished datachart path saveable (09d9851)
- fix(widget-config): keep an unpublished path saveable (a193bd5)
v1.4.0+7_pre (Pre-release)
Skip v1.4.0+7_pre (Pre-release)
Pre-release build from the main branch. Not published to npm — for testing only.
Build Information:
- Version: 1.4.0
- Commit: 401f4fc (
401f4fc80d5a6b1bcc837cb60829e9c29da3d53d) - Built: 2026-08-13 07:47:43 UTC
Recent Changes
- fix(default-config): clear the Volt filter from seeded Compact Linear gauges (49ad05e)
- fix(widget-simple-linear): start Compact Linear unfiltered (df19bf6)
- docs(units): pin why imperial flow differs from the server (9378f0c)
- test(perf-harness): re-send meta when a scenario swaps it (1d43701)
- docs: explain how to set display units on the server (ba1731e)
- fix(units): match a server target in its own group first (334cb27)
- test(perf-harness): stream path meta from the mock server (bafdb37)
- fix(units): map every server preset target unit (ee1b6ab)
- fix(deploy): make the guards this fix added actually fire (b8d0b4e)
- fix(bootstrap): scope an anonymous session's subscription to what it renders (4bde6fe)
- docs(help): correct what an unpublished slot returns (75b740c)
- fix(deploy): verify the device serves the build just synced (af1d09e)
- docs(help): publishing the anonymous default dashboard (5df7214)
- docs(auth): name the param the Signal K server actually reads (b5ea7f1)
- fix(auth): keep a framed sign-in out of embed mode (3247b9f)
- fix(auth): send the login return address as redirect (963aaec)
- fix(video): derive the v2 API base URL from the shared server root (7e8dd94)
- fix(auth): stop a read-only session offering edits it cannot perform (0195dda)
- fix(auth): make a read-only view stay read-only for the whole session (a9a7ecc)
- feat(auth): render a shared, read-only dashboard for an anonymous visitor (b48998d)
- fix(storage): read without a session, refuse writes without write access (d0259c4)
- fix(auth): read anonymously when the server grants readonly access (d4d560e)
- Bump version: 1.3.1 → 1.4.0 (60e7453)
- docs(perf-harness): document the default-seed probe (4f23db2)
- test(perf-harness): shoot the seeded pages with live data (5de4487)
- feat(profiles): say what a new profile starts from (06d7124)
- feat(config): seed profiles from the onboarding pages (f10fee4)
- fix(gauge-steel): do not animate a gauge a rebuild will discard (9f40968)
- fix(gauge-steel): seed a freshly built gauge with its value (f33905e)
- fix(dashboard): keep the faded page out of the way of taps (14e4ea0)
- feat(dashboard): shorten the page transition to a slide-and-fade (7a55e4b)
- docs: record the chart.js shim alias and the trap it replaces (bdaf574)
- fix(test): load the chart shims during setup, not lazily (b0ba4da)
- fix(test): alias chart.js to a shim so the mock cannot lose a race (94ed422)
- fix(data-chart): rebuild the chart when the orientation is toggled (7386fa1)
- fix(data-chart): keep the plot window when the label is hidden (7ea2f3e)
- feat(data-chart): draw scale ticks inside the plot area (d28f477)
- fix(data-chart): separate the angle range field from Source (928596b)
- fix(gauges): keep zone colours off an ignore-zones bar (95c7023)
- fix(electrical): layer the message above the placeholder card (c46d4ed)
- fix(autopilot): clear stale heading and wind readouts (b715187)
- fix(autopilot): gate all controls on reachability (dddae60)
- fix(theme): darken light theme page background (790b5bf)
- fix(electrical): give the rest of the family the same no-data card (96092ae)
- fix(electrical): keep the card shape behind the empty-state message (d48e16e)
- fix(autopilot): disable the engage toggle while an error is showing (9d851db)
- fix(autopilot): keep the widget readable when the pilot is off-line (c31cb3e)
- Fix video camera v2 URL fallback (994b018)
- fix(position): show '--' for a coordinate that has no value (638ec99)
- fix(gauges): show the dial with no data instead of a blank card (fbf7708)
- test(gesture): pin the guard's upper bound and the pointer contract (8ff05ae)
- fix(racer-timer): let the helm retry a start time that was refused (580e620)
- fix(racer-timer): commit the start time from a Set button (2f01ad7)
- fix(gesture): leave native form controls to the browser (7b4da09)
- fix(racer-timer): confirm the start time before leaving the form (50b4915)
- fix(storage): drop the availability cache (d0ddf47)
- fix(autopilot): name the tack key the operator can see, keep labels in names (3e8379a)
- fix(storage): make every storage operation total, and probe availability (a8a37f0)
- fix(racing-widgets): stop percentage padding zeroing the control row (b0bc4d4)
- docs(changelog): record the racing widget and storage fixes (d32d2fd)
- fix(autopilot): text labels, named controls, correct label ink (315f50b)
- fix(theme): on-colours for the starboard, orange and grey accents (e477996)
- fix(racing-widgets): real text labels, named controls, correct label ink (1cdbe9d)
- feat(theme): add per-accent on-colour tokens (5dc770b)
- chore: ignore in-clone worktrees (6d8a016)
- fix(storage): survive a browser that denies localStorage (c7fb28a)
- docs(changelog): fold in the compact linear sizing (5286789)
- fix(simple-linear): fill the tile, not a fixed box (e4f30ce)
- docs(changelog): record the linear gauge sizing (57ab259)
- fix(gauge-ng-linear): fill the box length (056bfc1)
- docs(changelog): record the widget unit row change (a215f05)
- fix(gauge-ng-linear): move unit beside the label (dad501f)
- fix(numeric): put the unit on the label's row (46be060)
- feat(units): add a renderable unit symbol helper (8d7ba8c)
- fix(racer-timer): bound label size by both axes, stop clipping taps (9d76d3a)
- docs(changelog): record the racer timer control fixes (5d58c30)
- test(racer-timer): pin the controls' accessible names (5d76281)
- fix(racer-timer): size controls off the row, not an empty viewBox (ac269a1)
- Bump version: 1.3.0 → 1.3.1 (35d9c5f)
- docs(changelog): record the unpublished-path fix (5458270)
- chore(settings): drop the redundant path-validation toggle (085b026)
- fix(widget-config): keep an unpublished datachart path saveable (09d9851)
- fix(widget-config): keep an unpublished path saveable (a193bd5)
v1.4.0+15_pre (Pre-release)
Skip v1.4.0+15_pre (Pre-release)
Pre-release build from the main branch. Not published to npm — for testing only.
Build Information:
- Version: 1.4.0
- Commit: a6e25ea (
a6e25ea6eb3040462bf7578e1622cc07eb27ef9f) - Built: 2026-08-13 15:10:24 UTC
Recent Changes
- docs: correct what happens when no history provider is installed (b0f0b31)
- refactor(graph): state the selector invariant without narrating history (714b40e)
- refactor(graph): finish the rename in three strings the sweep missed (e1bc9a8)
- chore(graph): regenerate the MCP dashboard schema artifact (f291ab0)
- docs(graph): rename charts and plots to graphs in user-facing docs (2266e1d)
- refactor(graph): rename time-series code identifiers to graph (3da9218)
- test(profiles): make the drain tests fail when the await is removed (eec0a7b)
- fix(profiles): cancel the switch when pending writes did not land (f0fffc0)
- feat(profiles): activate a profile the moment it is created (680040b)
- docs(testing): record the gauge test-shim trap (30a3672)
- chore: review at the assertive profile (c65952f)
- chore: remove the docs/ tree (e32202a)
- chore: configure CodeRabbit for this repo's conventions (0606916)
- fix(data): fetch a path's meta over REST when the stream omits it (11473a7)
- fix(profiles): close the delete and demand holes a deferred switch opens (fd1b373)
- fix(profiles): keep saves on the loaded profile when a reload is declined (5881bdc)
- fix(units): alias kilogram, and pin the new factors numerically (cf234dc)
- fix(units): add the mass and area conversion groups (406c6d0)
- fix(gauges): cover the cleared-path and zone-state branches of the re-point (80bc27f)
- fix(gauge-steel): rebuild by default, and re-derive geometry on a type flip (96e97f6)
- fix(gauges): clear on a cleared path, and separate the first-run sentinel (4888cf7)
- fix(gauges): clear the reading when re-pointed at another path (8dffeef)
- test(gauge-steel): pin the one-rebuild claim and the live setters (1600ec4)
- fix(gauge-steel): apply subType, barGauge and decimals changes (80ac62a)
- chore: remove CHANGELOG.md and CONTRIBUTORS.md (dddc763)
- fix(default-config): clear the Volt filter from seeded Compact Linear gauges (49ad05e)
- fix(widget-simple-linear): start Compact Linear unfiltered (df19bf6)
- docs(units): pin why imperial flow differs from the server (9378f0c)
- test(perf-harness): re-send meta when a scenario swaps it (1d43701)
- docs: explain how to set display units on the server (ba1731e)
- fix(units): match a server target in its own group first (334cb27)
- test(perf-harness): stream path meta from the mock server (bafdb37)
- fix(units): map every server preset target unit (ee1b6ab)
- fix(deploy): make the guards this fix added actually fire (b8d0b4e)
- fix(bootstrap): scope an anonymous session's subscription to what it renders (4bde6fe)
- docs(help): correct what an unpublished slot returns (75b740c)
- fix(deploy): verify the device serves the build just synced (af1d09e)
- docs(help): publishing the anonymous default dashboard (5df7214)
- docs(auth): name the param the Signal K server actually reads (b5ea7f1)
- fix(auth): keep a framed sign-in out of embed mode (3247b9f)
- fix(auth): send the login return address as redirect (963aaec)
- fix(video): derive the v2 API base URL from the shared server root (7e8dd94)
- fix(auth): stop a read-only session offering edits it cannot perform (0195dda)
- fix(auth): make a read-only view stay read-only for the whole session (a9a7ecc)
- feat(auth): render a shared, read-only dashboard for an anonymous visitor (b48998d)
- fix(storage): read without a session, refuse writes without write access (d0259c4)
- fix(auth): read anonymously when the server grants readonly access (d4d560e)
- Bump version: 1.3.1 → 1.4.0 (60e7453)
- docs(perf-harness): document the default-seed probe (4f23db2)
- test(perf-harness): shoot the seeded pages with live data (5de4487)
- feat(profiles): say what a new profile starts from (06d7124)
- feat(config): seed profiles from the onboarding pages (f10fee4)
- fix(gauge-steel): do not animate a gauge a rebuild will discard (9f40968)
- fix(gauge-steel): seed a freshly built gauge with its value (f33905e)
- fix(dashboard): keep the faded page out of the way of taps (14e4ea0)
- feat(dashboard): shorten the page transition to a slide-and-fade (7a55e4b)
- docs: record the chart.js shim alias and the trap it replaces (bdaf574)
- fix(test): load the chart shims during setup, not lazily (b0ba4da)
- fix(test): alias chart.js to a shim so the mock cannot lose a race (94ed422)
- fix(data-chart): rebuild the chart when the orientation is toggled (7386fa1)
- fix(data-chart): keep the plot window when the label is hidden (7ea2f3e)
- feat(data-chart): draw scale ticks inside the plot area (d28f477)
- fix(data-chart): separate the angle range field from Source (928596b)
- fix(gauges): keep zone colours off an ignore-zones bar (95c7023)
- fix(electrical): layer the message above the placeholder card (c46d4ed)
- fix(autopilot): clear stale heading and wind readouts (b715187)
- fix(autopilot): gate all controls on reachability (dddae60)
- fix(theme): darken light theme page background (790b5bf)
- fix(electrical): give the rest of the family the same no-data card (96092ae)
- fix(electrical): keep the card shape behind the empty-state message (d48e16e)
- fix(autopilot): disable the engage toggle while an error is showing (9d851db)
- fix(autopilot): keep the widget readable when the pilot is off-line (c31cb3e)
- Fix video camera v2 URL fallback (994b018)
- fix(position): show '--' for a coordinate that has no value (638ec99)
- fix(gauges): show the dial with no data instead of a blank card (fbf7708)
- test(gesture): pin the guard's upper bound and the pointer contract (8ff05ae)
- fix(racer-timer): let the helm retry a start time that was refused (580e620)
- fix(racer-timer): commit the start time from a Set button (2f01ad7)
- fix(gesture): leave native form controls to the browser (7b4da09)
- fix(racer-timer): confirm the start time before leaving the form (50b4915)
- fix(storage): drop the availability cache (d0ddf47)
- fix(autopilot): name the tack key the operator can see, keep labels in names (3e8379a)
- fix(storage): make every storage operation total, and probe availability (a8a37f0)
- fix(racing-widgets): stop percentage padding zeroing the control row (b0bc4d4)
- docs(changelog): record the racing widget and storage fixes (d32d2fd)
- fix(autopilot): text labels, named controls, correct label ink (315f50b)
- fix(theme): on-colours for the starboard, orange and grey accents (e477996)
- fix(racing-widgets): real text labels, named controls, correct label ink (1cdbe9d)
- feat(theme): add per-accent on-colour tokens (5dc770b)
- chore: ignore in-clone worktrees (6d8a016)
- fix(storage): survive a browser that denies localStorage (c7fb28a)
- docs(changelog): fold in the compact linear sizing (5286789)
- fix(simple-linear): fill the tile, not a fixed box (e4f30ce)
- docs(changelog): record the linear gauge sizing (57ab259)
- fix(gauge-ng-linear): fill the box length (056bfc1)
- docs(changelog): record the widget unit row change (a215f05)
- fix(gauge-ng-linear): move unit beside the label (dad501f)
- fix(numeric): put the unit on the label's row (46be060)
- feat(units): add a renderable unit symbol helper (8d7ba8c)
- fix(racer-timer): bound label size by both axes, stop clipping taps (9d76d3a)
- docs(changelog): record the racer timer control fixes (5d58c30)
- test(racer-timer): pin the controls' accessible names (5d76281)
- fix(racer-timer): size controls off the row, not an empty viewBox (ac269a1)
- Bump version: 1.3.0 → 1.3.1 (35d9c5f)
- docs(changelog): record the unpublished-path fix (5458270)
- chore(settings): drop the redundant path-validation toggle (085b026)
- fix(widget-config): keep an unpublished datachart path saveable (09d9851)
- fix(widget-config): keep an unpublished path saveable (a193bd5)
v1.4.0+14_pre (Pre-release)
Skip v1.4.0+14_pre (Pre-release)
Pre-release build from the main branch. Not published to npm — for testing only.
Build Information:
- Version: 1.4.0
- Commit: 448944a (
448944ae52eeff8f9a23aa07469e44d25be08606) - Built: 2026-08-13 12:10:14 UTC
Recent Changes
- test(profiles): make the drain tests fail when the await is removed (eec0a7b)
- fix(profiles): cancel the switch when pending writes did not land (f0fffc0)
- feat(profiles): activate a profile the moment it is created (680040b)
- docs(testing): record the gauge test-shim trap (30a3672)
- chore: review at the assertive profile (c65952f)
- chore: remove the docs/ tree (e32202a)
- chore: configure CodeRabbit for this repo's conventions (0606916)
- fix(data): fetch a path's meta over REST when the stream omits it (11473a7)
- fix(profiles): close the delete and demand holes a deferred switch opens (fd1b373)
- fix(profiles): keep saves on the loaded profile when a reload is declined (5881bdc)
- fix(units): alias kilogram, and pin the new factors numerically (cf234dc)
- fix(units): add the mass and area conversion groups (406c6d0)
- fix(gauges): cover the cleared-path and zone-state branches of the re-point (80bc27f)
- fix(gauge-steel): rebuild by default, and re-derive geometry on a type flip (96e97f6)
- fix(gauges): clear on a cleared path, and separate the first-run sentinel (4888cf7)
- fix(gauges): clear the reading when re-pointed at another path (8dffeef)
- test(gauge-steel): pin the one-rebuild claim and the live setters (1600ec4)
- fix(gauge-steel): apply subType, barGauge and decimals changes (80ac62a)
- chore: remove CHANGELOG.md and CONTRIBUTORS.md (dddc763)
- fix(default-config): clear the Volt filter from seeded Compact Linear gauges (49ad05e)
- fix(widget-simple-linear): start Compact Linear unfiltered (df19bf6)
- docs(units): pin why imperial flow differs from the server (9378f0c)
- test(perf-harness): re-send meta when a scenario swaps it (1d43701)
- docs: explain how to set display units on the server (ba1731e)
- fix(units): match a server target in its own group first (334cb27)
- test(perf-harness): stream path meta from the mock server (bafdb37)
- fix(units): map every server preset target unit (ee1b6ab)
- fix(deploy): make the guards this fix added actually fire (b8d0b4e)
- fix(bootstrap): scope an anonymous session's subscription to what it renders (4bde6fe)
- docs(help): correct what an unpublished slot returns (75b740c)
- fix(deploy): verify the device serves the build just synced (af1d09e)
- docs(help): publishing the anonymous default dashboard (5df7214)
- docs(auth): name the param the Signal K server actually reads (b5ea7f1)
- fix(auth): keep a framed sign-in out of embed mode (3247b9f)
- fix(auth): send the login return address as redirect (963aaec)
- fix(video): derive the v2 API base URL from the shared server root (7e8dd94)
- fix(auth): stop a read-only session offering edits it cannot perform (0195dda)
- fix(auth): make a read-only view stay read-only for the whole session (a9a7ecc)
- feat(auth): render a shared, read-only dashboard for an anonymous visitor (b48998d)
- fix(storage): read without a session, refuse writes without write access (d0259c4)
- fix(auth): read anonymously when the server grants readonly access (d4d560e)
- Bump version: 1.3.1 → 1.4.0 (60e7453)
- docs(perf-harness): document the default-seed probe (4f23db2)
- test(perf-harness): shoot the seeded pages with live data (5de4487)
- feat(profiles): say what a new profile starts from (06d7124)
- feat(config): seed profiles from the onboarding pages (f10fee4)
- fix(gauge-steel): do not animate a gauge a rebuild will discard (9f40968)
- fix(gauge-steel): seed a freshly built gauge with its value (f33905e)
- fix(dashboard): keep the faded page out of the way of taps (14e4ea0)
- feat(dashboard): shorten the page transition to a slide-and-fade (7a55e4b)
- docs: record the chart.js shim alias and the trap it replaces (bdaf574)
- fix(test): load the chart shims during setup, not lazily (b0ba4da)
- fix(test): alias chart.js to a shim so the mock cannot lose a race (94ed422)
- fix(data-chart): rebuild the chart when the orientation is toggled (7386fa1)
- fix(data-chart): keep the plot window when the label is hidden (7ea2f3e)
- feat(data-chart): draw scale ticks inside the plot area (d28f477)
- fix(data-chart): separate the angle range field from Source (928596b)
- fix(gauges): keep zone colours off an ignore-zones bar (95c7023)
- fix(electrical): layer the message above the placeholder card (c46d4ed)
- fix(autopilot): clear stale heading and wind readouts (b715187)
- fix(autopilot): gate all controls on reachability (dddae60)
- fix(theme): darken light theme page background (790b5bf)
- fix(electrical): give the rest of the family the same no-data card (96092ae)
- fix(electrical): keep the card shape behind the empty-state message (d48e16e)
- fix(autopilot): disable the engage toggle while an error is showing (9d851db)
- fix(autopilot): keep the widget readable when the pilot is off-line (c31cb3e)
- Fix video camera v2 URL fallback (994b018)
- fix(position): show '--' for a coordinate that has no value (638ec99)
- fix(gauges): show the dial with no data instead of a blank card (fbf7708)
- test(gesture): pin the guard's upper bound and the pointer contract (8ff05ae)
- fix(racer-timer): let the helm retry a start time that was refused (580e620)
- fix(racer-timer): commit the start time from a Set button (2f01ad7)
- fix(gesture): leave native form controls to the browser (7b4da09)
- fix(racer-timer): confirm the start time before leaving the form (50b4915)
- fix(storage): drop the availability cache (d0ddf47)
- fix(autopilot): name the tack key the operator can see, keep labels in names (3e8379a)
- fix(storage): make every storage operation total, and probe availability (a8a37f0)
- fix(racing-widgets): stop percentage padding zeroing the control row (b0bc4d4)
- docs(changelog): record the racing widget and storage fixes (d32d2fd)
- fix(autopilot): text labels, named controls, correct label ink (315f50b)
- fix(theme): on-colours for the starboard, orange and grey accents (e477996)
- fix(racing-widgets): real text labels, named controls, correct label ink (1cdbe9d)
- feat(theme): add per-accent on-colour tokens (5dc770b)
- chore: ignore in-clone worktrees (6d8a016)
- fix(storage): survive a browser that denies localStorage (c7fb28a)
- docs(changelog): fold in the compact linear sizing (5286789)
- fix(simple-linear): fill the tile, not a fixed box (e4f30ce)
- docs(changelog): record the linear gauge sizing (57ab259)
- fix(gauge-ng-linear): fill the box length (056bfc1)
- docs(changelog): record the widget unit row change (a215f05)
- fix(gauge-ng-linear): move unit beside the label (dad501f)
- fix(numeric): put the unit on the label's row (46be060)
- feat(units): add a renderable unit symbol helper (8d7ba8c)
- fix(racer-timer): bound label size by both axes, stop clipping taps (9d76d3a)
- docs(changelog): record the racer timer control fixes (5d58c30)
- test(racer-timer): pin the controls' accessible names (5d76281)
- fix(racer-timer): size controls off the row, not an empty viewBox (ac269a1)
- Bump version: 1.3.0 → 1.3.1 (35d9c5f)
- docs(changelog): record the unpublished-path fix (5458270)
- chore(settings): drop the redundant path-validation toggle (085b026)
- fix(widget-config): keep an unpublished datachart path saveable (09d9851)
- fix(widget-config): keep an unpublished path saveable (a193bd5)