#### Help, Instructions and Change Log

- 0. Introduction
- 1. Connect to your Signal K Server
- 2. Top Bar Buttons
  - 2.1. Change Page
    - 2.1.1. Alarms Page
  - 2.2. Layout
    - 2.2.1. Modify Layout
    - 2.2.2. Moving and Resizing Widgets
    - 2.2.3. Notes for iOS users
  - 2.3. Settings
    - 2.3.1. Customise Display screen
      - 2.3.1.1 Rule for displaying new widget
      - 2.3.1.2 Hide or Show widget
      - 2.3.1.3 Delete widget
      - 2.3.1.4 Unit selection
      - 2.3.1.5 Widget Specific Settings
        - 2.3.1.5.1 Universal Widget (with colored zones)
        - 2.3.1.5.2 Compass Widget
        - 2.3.1.5.3 Windmeter Widget
        - 2.3.1.5.4 Digital DateTime Widget
        - 2.3.1.5.5 Iframe Widget
      - 2.3.1.6 Widget managed paths
      - 2.3.1.7 Alarms Settings
      - 2.3.1.8 Add or Delete Pages
      - 2.3.1.9 Hide Widget label
    - 2.3.2. Preferred Units screen
    - 2.3.3. Dark Mode Screen
    - 2.3.4. Reset settings screen
    - 2.3.5. Save settings screen
    - 2.3.6. Load settings screen
    - 2.3.7. Widget border settings screen
- 3. Options Available on the Widgets
  - 3.1. Widget in full screen
  - 3.2. Changing Display Mode
  - 3.3. Wind Widget Modes
  - 3.4. Digital Position Modes
  - 3.5. Display SourceID
- 4. Full Screen mode & App mode
  - 4.1. Full Screen mode
  - 4.2. App mode
    - 4.2.1. On iPad or iPhone
    - 4.2.2. On Android
- 5. Advanced options
- 6. Trouble?
- 7. Change Log

0. Introduction Back to main menu

Signal K InstrumentPanel is implemented as a grid with draggable & resizable cells.
Each cell also called widget is in charge of displaying the value(s) of a Signal K path.
When a new path is discovered, a new dedicated widget is created and attached to this path. It automatically becomes visible or not on the grid according to a configurable rule.
For some data, like wind, there is a composite gauge that displays several items in the same time widget.
The cells are grouped into three columns:

- navigation
- environment
- everything else (electrical, propulsion etc)

When the help page is displayed all buttons are disabled.
You must close the help page by clicking on the button to reactivate them.

1. Connect to your Signal K Server Back to main menu

The Signal K server address is directly derived from your web page and InstrumentPanel automatically connects to the server.

If the Reconnecting reappears, it means that the connection to the Signal K server is broken and that InstrumentPanel is trying to reconnect automatically.

For advanced users, you can manually specify the address and the protocol to connect to your Signal K server (See: Advanced options).

2. Top Bar Buttons Back to main menu

After connecting an initial first page is auto generated with all paths known in your SignalK Server. Signal K data items are displayed in different cells with dedicated widgets depending on their types. Widgets are arranged on a virtual grid with vertical compaction.
Units on widgets are set to default and fetched from the server metadata.

- button: Click to unlock your layout
  Organize your widget placement as you want.
  (See: Moving and Resizing Widgets)
- button: Click to switch to settings.
  (See: Settings)
- buttons: To switch pages, just click on the page number.
  (See:Change Page)
- buttons: Click on it to see a list of your current alarms. The bell can have different colors depending on the current alert level (Emergency, Alarm, Warning, etc...).
  (See:Alarm Page)
- button: Cick to display the help page.
  (See: notes)
- button: Cick to activate /desactivate dark mode.
  (See: dark mode)
- icon: It's data indicator icon.
  When data is received it blinks every second. If the indicator is not blinking, either your connection is broken or the server is not sending any data and values displayed in your widgets may be obsolete.
- buttons: Click to switch to full screen mode. This feature is not available on all devices.(See:Full Screen mode ...).

After 15 seconds without user activity, the menu will automatically hide to free up space on the screen.
A small heart and a bell (when you have active notifications) are displayed at the top right of the screen.

To make the menu reappear click on the center of the Instrumentpanel screen.

If you want the menu to disappear before the 15 seconds, depending on the size of your screen, click in the green zone:

2.1. Change Page Back to up menu / main menu

You can have up to 10 pages, each with a separate selection, configuration and layout of widgets.
To switch pages, just click on the page number or doing a horizontal swipe on the screen.
To create a new page, see:Add or Delete Pages.

2.1.1. Alarms Page Back to up menu / main menu

By clicking on the button, you display the list of current alarms. They are sorted by alarm level and date when available (Emergency, Alarm, Warn, Alert, Normal, Nominal).
When you stay on the page, the alarms are no longer sorted.
To sort again, click the button again.
When the alarm level is higher than Nominal the border of all widgets takes the color of the highest alarm.

Color code by alarm level:

- : Nominal alarm level.
- : Normal alarm level.
- : Alert alarm level.
- : Warning alarm level.
- : Alarm alarm level.
- : Emergency alarm level.

You can hide some alarms in the settings page. In this case, the alarm button can also display a second information. The color of the dotted border of the indicates that there are hidden alarms and the maximum level of hidden alarms.
(See: Alarms Settings

2.2. Layout Back to up menu / main menu

InstrumentPanel supports several layouts. The choice of layout is selected according to 3 criteria in the following order:

- By adding the following query parameter ?layout=myLayoutName to the url.
- By the source that opened InstrumentPanel (http referrer). e.g. if you open InstrumentPanel embedded in freeboard-sk, the layout name will be /@signalk/freeboard-sk/.
- If no parameters are specified, the layout name will be default.

You can view the name of the layout by switching to Settings mode
in the Widget settings screen.

In the example above an layout dedicated to freeboard-sk has been automatically selected.

2.2.1. Modify Layout Back to up menu / main menu

Use the button on the main bar to unlock the layout. When the layout is unlocked, widget background changes to yellow and features are hidden.

To return to normal mode and to lock & save the layout, click on the button.

2.2.2. Moving and Resizing Widgets Back to up menu / main menu

On a unlocked layout:

- resize a widget by dragging the anchor located at the bottom right.

- Move a widget by dragging.

  The layout adjusts automatically to changes, compacting the widgets vertically.

2.2.3. Notes for iOS users Back to up menu / main menu

On an unlocked grid, to drag or to resize a widget, first click once or twice in the center of the widget to bring focus to it and then you can drag or resize the widget with the screen's scroll locked.
If you don't click first in the center of the widget, the page starts scrolling before you can drag or resize the widget.

2.3. Settings Back to up menu / main menu

Use the button to switch to settings.
In settings mode, at the top left, you will find a dropdown-list, click on the arrow to list the choices :

- The "Customise Display" entry allows you to change how the values will be displayed on the grid and tunning their individual settings. This page display all widgets, hidden or shown.
- The "Preferred Units" entry allows you to set the unit values applied to widgets when they are created.
- The "Dark Mode" entry allows you to change how the dark mode will be activated.
- The "Widget border" entry allows you to change border size of the widget displayed on the grid.
- The "Save settings" entry allows you to save your settings on the server or in a json file.
- The "Load settings" entry allows you to load saved settings from the server or a json file.
- The "Reset settings" entry allows you to clear settings stored in local storage browser.

In setting mode, use the button to return to the main view.

2.3.1. Customise Display screen Back to up menu / main menu

In this settings page, to access widget's parameters, click on 'edit'.
You can set:

- "Rules for new widgets" who validating the display on your grid of new the widgets created when a new path is discovered.
- "Hide or show" parameter individually or all your widgets on your grid.
- "Delete widget" linked to a Signal K path that no longer exists.
- "Unit selection" of the displayed value.
- "Widget Specific Settings" some widgets have specific parameters.
- "Widget managed paths" to discover the list of paths managed by this widget type.
- "Alarms Settings" to hide or show discovered alarms / notifications.
- "Add or Delete Pages" To manage multiple grid pages.
- "Hide Widget label" To show or hide the widget label.

2.3.1.1. Rule for displaying new widget Back to up menu / main menu

With this setting you can select if a new widget created will be shown or not on your grid.
three choices are available:

- Base paths shown, automatically shows on the grid a limited list of paths, this is the default value and help to not overhead your first grid with a lot of unusefull widgets.
  The list of paths is :
  environment.wind.angleApparent
  environment.wind.angleTrueGround
  environment.wind.angleTrueWater
  environment.wind.speedApparent
  environment.wind.speedOverGround
  environment.wind.speedTrue
  navigation.position
  navigation.courseOverGroundTrue
  navigation.courseOverGroundMagnetic
  navigation.headingMagnetic
  navigation.headingTrue
  environment.depth
  navigation.datetime
- Shown, all new widget are shown on the grid.
- Hidden, all new widget are hidden on the grid.

2.3.1.2. Hide or Show widget: Back to up menu / main menu

A common option for all widgets is the Shown on grid option

Unselect/Select checkbox to hide/show the widget on the page.

- button: Hides all widgets on the current page in one operation.
- button: Shows all widgets on the current page in one operation.

2.3.1.3. Delete widget Back to up menu / main menu

By checking Delete you delete an existing widget associated with a Signal K path and source.
In order to delete a widget, it must first not be Displayed on the grid.
If you delete a widget that is associated to a Signal K path still present in your server, it will be automatically recreated when reloading Instrumentpanel.

- button: Deletes all widgets whose "show on grid" checkbox is not checked.

2.3.1.4. Unit selection Back to up menu / main menu

Most widgets have a unit selection.
Select your preferred unit from the listbox.

To make the unit change active, InstrumentPanel must be reloaded. This will be done automatically when you leave settings screens.
You will be informed by a message at the top of the screen.

2.3.1.5. Widget Specific Settings Back to up menu / main menu

Each widget type has specific settings.

2.3.1.5.1. Universal Widget (with colored zones) Back to up menu / main menu

This widget has alternative digital and analog views.

The analog view can display colored zones for value ranges.
The ranges can be based on local settings in or zones fetched from the server.

In `Local` mode, the zones are configured in InstrumentPanel settings panel and stored in the browser.
The configuration is limited: a single red zone from redline value to maximum value and you can set the minimum value for the gauge.

In `server` mode, the zones are configured by modifying the `~/.signalk/baseDeltas.json` file on your Signal K server.
You can configure multiple zones, each associated with a state that has its own color.
In this case, only colors are configured in InstrumentPanel settings panel.
Changes there take effect after server restart.

batteries 1 sample baseDeltas.json:
Locate `updates/meta` section in your `baseDeltas.json`

      {
        "context": "vessels.self",
        "updates": [
          {
            "meta": [

Insert content like below

    {
      "path": "electrical.batteries.1.voltage",
      "value": {
        "displayName": "battery 1",
        "zones": [
          {
            "upper": 11.8,
            "state": "alarm"
          },
          {
            "upper": 12,
            "lower": 11.8,
            "state": "warn"
          },
          {
            "upper": 14.6,
            "lower": 12,
            "state": "nominal"
          },
          {
            "lower": 14.6,
            "state": "alarm"
          }
        ],
        "displayScale": {
          "lower": 11.5,
          "upper": 15.5
        }
      }
    }

Add `,` after the last `}` if your section is followed by another one.

Make sure the content is valid JSON.
Using an editor that validates the format is a great help !

For more information on zones see the Signal K Specification
and Server FAQ

2.3.1.5.2. Compass Widget Back to up menu / main menu

This widget has 3 displays view possible (rose/reading/digital).
Choose your preferred view by selecting the radio button.

- Rose view
- Reading view
- Digital view

2.3.1.5.3. Windmeter Widget: Back to up menu / main menu

This widget has only the unit selection.
Apparent Wind, True Wind over Ground and True Wind through Water values are automatically bound on widget.

2.3.1.5.4. Digital DateTime Widget: Back to up menu / main menu

This widget has only a timezone selection.
In timezone list, DST means Daylight Saving Time and displays time automatically in the timezone set on the device running your browser.

2.3.1.5.5. Iframe Widget: Back to up menu / main menu

This widget can embed an external HTML page like Grafana, Signal K Auto-pilot,...

The configuration is manual and must be done only once on the Signal K server.

- Edit the `~/.signalk/baseDeltas.json` file on your Signal K server.
  You can also look at this Server FAQ on the file format.
- Locate the `updates/value` section:

    [
      {
        "context": "vessels.self",
        "updates": [
          {
            "values": [

- Insert the bloc below to set the URL parameters

    {
      "path": "external.iframe.XXXXX",
      "value": {
        "src": "",
        "themeKey": "", // optional
        "darkValue": "", // optional
        "lightValue": "" // optional
      }
    }

- Fill the value with the data of the HTML page you want to expose in the widget.
  See the "Grafana example" below for details of the optional parameters and check the help of the software that produces the URL you want to embed in the widget to see if it supports dark mode via the URL parameters.
- Locate the `updates/meta` section

      {
        "context": "vessels.self",
        "updates": [
          {
            "meta": [

- Insert the block below to set the display name

    {
      "path": "external.iframe.XXXXX",
      "value": {
        "displayName": "my external page"
      }
    }

- Fill the path value with the same value as in the `updates/value` section used above
- Fill the displayName key with a value of your choice
- Double check your json file with a json validator (if something wrong in your json file, your server will exclude the entire file)
- Restart your Signal K server
- Launch InstrumentPanel
- Go in settings mode
- Locate the new widget and select `Show on grid`

- Return in main view
- Unlock the grid to adjust the widget size and position

Grafana example:

- Edit you grafana.ini
- Enable embedding query by `allow_embedding = true`
- Optionally enable anonymous mode in section `[auth.anonymous]` to avoid authentication in the widget
- Restart your Grafana server
- Generate in Grafana GUI the iframe URL to embed in widget

- Fill the src key with value generated in Grafana GUI, keep only src value without iframe, width, height, frameborder.
- To follow the dark mode fill the key themeKey, darkValue and lightValue to inform Grafana when InstrumentPanel switch in dark mode.
  Like this, the URL will be updated by adding at the end `&theme=dark` for dark mode and `&theme=light` for light mode.

    {
      "path": "external.iframe.grafana",
      "value": {
        "src": "http://barco.local:4000/d-solo/7v5TG3Wnk/demo-dashboard?orgId=1&refresh=10s&panelId=2",
        "themeKey": "theme",
        "darkValue": "dark",
        "lightValue": "light"
      }
    }

- The result in the Iframe widget

Signal K auto-pilot example:

    updates/value section
    {
      "path": "external.iframe.autopilot",
      "value": {
        "src": "http://my-signalk.local:3000/@signalk/signalk-autopilot"
      }
    }
    ...
    updates/meta section
    {
      "path": "external.iframe.autopilot",
      "value": {
        "displayName": "autopilot"
      }
    }

2.3.1.6. Widget managed paths: Back to up menu / main menu

A widget type (compass in screenshot) can handle multiple paths.

You can discover the list of these paths by clicking on the [+] sign.

In bold, are displayed the paths that are managed by this cell.
For each path listed, a new cell will be created with this widget type only if the path exists on your Signal K server.
Clic on the list to return to the default vue.

2.3.1.7. Alarms Settings: Back to up menu / main menu

In setting mode, on the page you can hide alarms from the main view by unchecking the Show on grid option. The button reminds you that alarms are hidden by a dotted border around the bell.
The color code for dotted lines is the same as for non-hidden alarms. The color indicates the highest value of hidden alarms.
The alarm settings are not saved when you exit the GUI.

2.3.1.8. Add or Delete Pages Back to up menu / main menu

You can have up to 10 pages with a specific widget organization.

To create a new page, click on button.
The new page is automatically selected.

To delete a page, activate the page by clicking on the page number and then on the button.

2.3.1.9. Hide Widget label Back to up menu / main menu

On some widgets you can hide the label to save space on the screen and have a bigger display font.
When the `Hide label when...` box is checked, the label disappears automatically along with the menu bar.

Widget with visible label:

Same Widget with `Hide label when...` checked:

2.3.2. Preferred Units screen Back to up menu / main menu

In this screen, you choose which default units will be displayed on your widgets. In 90% of cases the default values you choose here will correspond to your display habit.
For widgets on which the default units are not suitable, you can change them individually on each widget in the Widget settings screen.
The application on widgets of the default units is done at the time of widget creation. If your grid is already made up with widgets, you can use the button at the top right to apply the default units to your already created widgets.
Use the button at the top right to reset the default units to their initial values.

2.3.3. Dark Mode Screen Back to up menu / main menu

In this screen, you can select how the dark mode will be activated:.
You have 3 choices available :

- In By main bar icon, the dark mode is set by icon in main bar.
- In By OS settings, the dark mode follows your OS settings. This option need a page reload to be active.
- In By Signal K Mode, the dark mode follows the value of Signal K path: /vessels/self/environment/mode

Display in dark mode:

2.3.4. Reset settings screen Back to up menu / main menu

In this screen, you can clear settings stored in local storage browser.
This settings are :

- Layouts: Delete all layouts.
- Previous layout: Clean previous layouts, if a layout existed in version 0.12.0 and earlier, it is used as a template to build the default layout.
- Start connected: Reset the automatic connection at startup.
- Preferred units: Delete all preferred units.
- Dark Mode: Delete dark mode settings.
- Backup settings: Delete the settings backup and remove top message about imported configuration.

  Select at least one checkbox and click on reset button.
  The page will reload and the selected parameters will be erased.

2.3.5. Save settings screen Back to up menu / main menu

In this screen, you can save your settings on the server or in a json file.

Save on the server is only available on the Signal K server version > 1.27.0
The content of this screen follows the access level of the user who is logged in:

- Everyone (logged in or not): You can save to a json file.
- User not logged in or with Read Only access: You can save only to json file. A message prompts you to connect in order to be able to save on the server.
- User logged in with Read Write access: You can save to the server but the save only readable by your account.
- User logged in with Admin access: You can save to the server for global settings readable for all users or by only your account.

The button save all your page layouts on the server.
The button save your preferred units on the server. If you are logged in with Admin access and you select save for global settings these preferred units will be loaded on new devices by default.
The button make a backup of all your Instrumentpanel configuration.

2.3.6 Load settings screen Back to up menu / main menu

In this screen, you can load your previously saved settings from the server or from a json file.

Load from the server is only available on the Signal K server version > 1.27.0
As in the previous save screen, the screen content follows the access level of the user who is logged in:

- Everyone (logged in or not): You can load a json file.
- User not logged in or with Read Only access: You can load a json file, load layouts and preferred units.
- User logged in with Read Write access: Same as Read Only access with the addition that you can delete your personal layouts.
- User logged in with Admin access: Same as Read Write access with the addition that you can delete global layouts.

After loading a layout, Instrumentpanel restarts with a warning screen at the top of the page

Click on button to definitively validate your imported configuration.
This action will remove the warning message at the top of the page.
Make sure everything is working properly before enable

Click on button if something doesn't work, you can reload your old configuration

Click on to load the reset screen, it will allow you to erase parameters and return to a healthy configuration.

2.3.7 Widget border screen Back to up menu / main menu

In this screen, you can modify the widget's appearance (border thickness, margin, etc.).

Changes are automatically saved on the local device.
The reset button restores the initial settings.

3. Options Available on the Widgets Back to main menu

3.1. Widget in full screen Back to up menu / main menu

- you can display a widget in full screen by clicking in the center of the widget.
- To return to normal view, click anywhere on the widget.

3.2. Changing Display Mode Back to up menu / main menu

Some widgets have the ability to change their display mode directly.
They are identified by a icon in the top left corner.
Click on this icon to change the display mode.
New display mode is automatically saved.

3.3. Wind Widget Modes Back to up menu / main menu

The wind widget displays by default apparent wind.

This widget can also display True Wind over Ground and True Wind through Water, if your Signal K server provides them. You can change the mode by clicking on the icon inside the widget.
If there is no data, an alert message is raised when you try to display these values.

You can have your server automatically calculate these values with the Derived Data plugin available in Signal K server AppStore:

Install the plugin and restart your Signal K server.
Then locate the pluging in the Server/Plugin Config:

Activate the plugin:

Enable the options for True Wind over Ground and True Wind through Water:

And then click on the button to save and activate these options.

3.4. Digital Position Modes Back to up menu / main menu

The Digital Position Widget can display your position in different formats:

- Dir D.ddddd° (N 38.99177°)
- Dir +/-D.ddddd° (N +38.99177°)
- Dir D°M'S''ddd (N 38°59'30"357)
- DDirM'S''ddd (38N59'30"357)

You can change the display format by clicking on the icon.
The first click, displays the display format then the others clicks change the display format.
You have 5 seconds to repeat your clicks, after that the widget automatically displays its original label.

3.5. Display SourceID Back to up menu / main menu

To display the source Id of a widget's data stream, click on to the top right corner of widget.

To hide the source Id, just click in the displayed source Id field.

4. Full Screen mode & App mode Back to main menu

You can switch to full screen mode to make the URL bar disappear and save display space.

4.1 Full Screen mode Back to up menu / main menu

Click on the buttons in the main bar to switch to full screen mode. This feature is not available on all devices (not works on all IOS devices, see:App mode ...).

4.2 App mode Back to up menu / main menu

You can add to Home Screen InstrumentPanel on most mobile devices to use it as a mobile app.

4.2.1 On iPad or iPhone Back to up menu / main menu

1. Launch Safari app. This does not work from the Chrome app.
2. Open InstrumentPanel URL in Safari.
3. Tap the icon featuring a right-pointing arrow coming out of a box along the top of the Safari window to open a drop-down menu.
4. Tap Add to Home Screen The Add to Home dialog box will appear, with the icon that will be used for this website on the left side of the dialog box.
5. Enter the name for the shortcut using the on-screen keyboard and tap Add. Safari will close automatically and you will be taken to where the icon is located on your iPad’s desktop.

4.2.2 On Android Back to up menu / main menu

1. Launch Chrome app.
2. Open InstrumentPanel URL in Chrome.
3. Tap the menu icon (3 dots in upper right-hand corner) and tap Add to homescreen .
4. You’ll be able to enter a name for the shortcut and then Chrome will add it to your home screen.

5. Advanced options Back to main menu

For advanced users, you can manually specify the address and the protocol to connect to your Signal K server. Be careful if you mix secure and unsecured protocols, your browser may refuse the connection.
To manually specify the address and the protocol of the Signal K server, add the following query parameter ?signalkServer=wss://mysignalk.local:3443 to the url.
Use wss:// for secure websocket or ws:// for unsecure websocket.

6. Trouble? Back to main menu

InstrumentPanel stores some of its settings in the browser's local storage.
In case you have invalid stuff displayed, you can reset it by adding the following query parameter ?reset=true to the url.
If you only want to reset a few parameters, use the GUI instead:
See Reset settings screen

If you see ERROR in unit retrieval on the upper of a widget, there is a problem to contact your Signal K server.
Be careful, the values displayed may be wrong.
Try to add the options to the URL described above.
Check your browser logs and ask for help on Discord: https://discord.gg/uuZrwz4dCS
Maybe you discovered a bug.

If you see NaN inside a widget, it means that the value returned by your Signal K server is incorrect and that InstrumentPanel cannot interpret it

7. Change Log Back to main menu

### v0.26.0 : 18 September 2024

- feature: moved to “instruments” category in appstore (Christian MOTELET) `#277`
- fix: avoid hideLabel checkbox react component switch from uncontrolled to controlled (Christian MOTELET) `#273`
- feature: ability to change widger border (Christian MOTELET) `#272`
- fix: avoid changing layout when switching to edit mode (Christian MOTELET) `#271`
- chore: Bump internal dev Dependencies (Christian MOTELET) `#270`
- fix: add autoHideLabel accidentally deleted (Christian MOTELET) `#269`
- fix: /loginStatus is deprecated (Christian MOTELET) `#268`
- fix: unable to restore a saved layout (Christian MOTELET) `#267`
- chore: migration to github action v4 (nodejs20 compliant) (Christian MOTELET) `#265`
- chore: promote discord server in online help (Christian MOTELET) `#264`
- feature: Option to select num of decimals (Sam Houlder) `#258`
- chore: webpack update to support nodejs 20 (Christian MOTELET) `#259`
- fix: notification processing and subscription (Christian MOTELET) `#250`
- feature: different layouts for portrait/landscape mode (Christian MOTELET) `#249`
- fix: incorrect layout in instrument panel embedded in Freeboard-SK (Christian MOTELET) `#248`
- fix: temperature and date display formats (Matti Airas) `#244`
- feature: [Path Subscription] option to reduce network bandwidth usage (Christian MOTELET) `#242`
- feature: add visual alert level setting (#246) (Christian MOTELET) `ffa0e2c`

### v0.25.0 : 8 April 2024

- feat: Option to select num of decimals (Sam Houlder) `#258`
- chore: webpack update to support nodejs 20 (Christian MOTELET) `#259`
- fix: notification processing and subscription (Christian MOTELET) `#250`
- feature: different layouts for portrait/landscape mode (Christian MOTELET) `#249`
- [WIP]fix:incorrect layout in instrument panel embedded in Freeboard-SK (Christian MOTELET) `#248`
- feat: add visual alert level setting (Christian MOTELET) `#246`
- fix: temperature and date display formats (Matti Airas) `#244`
- feat:[Path Subscription] option to reduce network bandwidth usage (Christian MOTELET) `#242`
- chore: github deprecated actions updated to Node.js 16 (Christian MOTELET) `#239`

### v0.24.0 : 4 December 2022

- chore: improved changelog rendering (Christian MOTELET) `#238`
- feature: ability to hide the widget label (Christian MOTELET) `#233`

### v0.23.0 : 30 July 2022

- fix: better detection of dead websocket (Christian MOTELET) `#229`
- chore: new icon dedicated to Instrumentpanel (Christian MOTELET) `#230`
- fix: fixed decimal for inHg unit (Christian MOTELET) `#227`

### v0.22.1 : 8 May 2022

- fix: changelog building (Christian MOTELET) `#225`

### v0.22.0 : 8 May 2022

- chore: promote baseDeltas.json usage vs defaults.json (Christian MOTELET) `#223`
- feature: added conversion for units in coulombs and joules (Christian MOTELET) `#215`
- feature: adaptavive font size in specific widget & gnss.satellites with 0 decimal (Christian MOTELET) `#214`
- feature: add conversion to inches of mercury (Christian MOTELET) `#207`
- fix: avoid cursor blink (Christian MOTELET) `#204`

### v0.21.0 : 11 August 2021

- feature: Embed external HTML pages (Christian MOTELET) `#203`

### v0.20.1 : 26 July 2021

- fix: git fetch all in the github action to build the full changelog (Christian MOTELET) `#202`

### v0.20.0 : 26 July 2021

- feature: add popup to display the change log at first launch (Christian MOTELET) `#201`
- fix: save settings error introduced in #195 (Christian MOTELET) `#198`
- feature: added display DM.mmmm and Rhumbline.position to pathlist (Sam Houlder) `#196`
- fix: loss of units when preferred units are not set (Christian MOTELET) `#195`
- fix: migrate paths with "no_source" to real source (Christian MOTELET) `#194`
- feature: ability to remove dead paths (Christian MOTELET) `#193`

### v0.19.0 : 4 April 2021

- fix: missing convert function in attitude widget (Christian MOTELET) `#192`
- feature: in settings mode, sort widgets by path (Christian MOTELET) `#190`

### v0.18.0 : 1 April 2021

- chore: clean up unnecessary lines of code (Christian MOTELET) `#189`
- fix: unit and conversion on first widget load (Christian MOTELET) `#188`
- Add forecast.time.* from openweather.signalk (Michael Shulman) `#186`
- feature: add date format & position format in preferred units (Christian MOTELET) `#187`
- feature: use metadata in WS if available (Christian MOTELET) `#185`
- fix: more protection against null or bad values (Christian MOTELET) `#181`
- chore: migrate to github-create-release (Christian MOTELET) `#180`

### v0.17.3 : 1 February 2021

- chore: add npm publish workflow (Christian MOTELET) `#179`
- chore: update changelog (cmotelet) `4a217d2`

### v0.17.2 : 31 January 2021

- fix: load settings from file (Christian MOTELET) `#178`
- chore: update changelog (cmotelet) `fe1c291`

### v0.17.1 : 22 November 2020

- fix: filtering delta's update with no value (cmotelet) `44491a1`
- chore: update changelog (cmotelet) `b229e0b`

### v0.17.0 : 22 November 2020

- chore: promote the colorful analog widget on github's main page (Christian MOTELET) `#169`
- feature: get color zones from meta server zones (cmotelet) `e0976e3`
- chore:optimized display of widget settings (cmotelet) `a2b5f98`
- chore: remove meta cache feature (cmotelet) `2333442`

### v0.16.1 : 13 November 2020

- chore: update changelog (cmotelet) `d320150`
- fix: avoid widget goes in fullscreen in design mode (cmotelet) `7f78f89`

### v0.16.0 : 13 November 2020

- feature: autoConnect (remove connect & disconnect button) (cmotelet) `c34e7bb`
- feature: button to switch in fullscreen on Android/MacOS/Windows (cmotelet) `3be0805`
- chore: updating help with new features (cmotelet) `a82e82e`

### v0.15.0 : 13 November 2020

- feature: Save and load settings on server (cmotelet) `1d5b286`
- feature: menu to import & export configuration (cmotelet) `1f514b9`

### v0.14.0 : 13 November 2020

- chore: long name reduction in localstorage unit (Christian MOTELET) `#132`
- chore: readme.md update (Christian MOTELET) `#133`
- chore: reduce length of displayed notification path (Christian MOTELET) `#131`
- fix: bell border color when notification hidden (Christian MOTELET) `#130`
- feature: add flush option in GUI (Christian MOTELET) `#129`
- feature: add conversions for kg, m3 (Teppo Kurki) `#125`
- chore: add space on right for small screen scrolling (cmotelet) `6aec0d7`
- feature: settings how to add new widget on grid (cmotelet) `b89076b`
- feature: hide menu bar by click (cmotelet) `6cc2d1b`

### v0.13.0 : 14 November 2019

- feature: swipe to change pages (Christian MOTELET) `#123`
- feature: auto hide main bar after 15 seconds (Christian MOTELET) `#121`
- feature: add additional paths to the digitaldatetime widget (Christian MOTELET) `#120`
- chore: update dev dependencies to the latest version (Christian MOTELET) `#122`
- feature: multi-layout base on ?layout=myLayout | referrer | default (Christian MOTELET) `#115`
- chore: Update webpack4 / babel7 to the latest version (Christian MOTELET) `#112`
- chore: darker analog hand (Christian MOTELET) `#114`
- fix: wrong declaration in setPreferredUnit (Christian MOTELET) `#113`
- chore: migrating dist folder to public (Christian MOTELET) `#111`
- fix: protect rendering against bad value content (Christian MOTELET) `#110`
- feature: ability to handle dark mode (cmotelet) `e5755ad`
- chore: windmeter flat needle shadow-free & prepare dark mode (cmotelet) `9196700`
- chore: thinner analog gauge & prepare dark mode (cmotelet) `9686250`

### v0.12.0 : 28 August 2019

- fix: fetch meta in TLS when host is in https (Christian MOTELET) `#108`
- feature: extending display capabilities of digitalposition widget (Christian MOTELET) `#105`
- feature: hard code missing metas in Signal K SchemaData (Christian MOTELET) `#107`
- chore: avoid searching for notification's meta (Christian MOTELET) `#106`
- chore: remove unused tab 'Grid as JSON' (Christian MOTELET) `#104`
- feature: settings for preferred unit (Christian MOTELET) `#103`
- fix: avoid clear entire localstorage (Christian MOTELET) `#102`
- chore: update changelog (Teppo Kurki) `55ea7a6`

### v0.11.0 : 15 August 2019

- feature: auto reload page when unit changed (Christian MOTELET) `#101`
- chore: update changelog (Teppo Kurki) `d8092cf`
- chore: update changelog (Teppo Kurki) `9e62312`
- fix: release pushes tags last (Teppo Kurki) `515de61`

### v0.10.0 : 9 August 2019

- chore: update to @signalk/client:2.0.3 and simplify the connection process (Christian MOTELET) `#99`
- chore: change notification color normal to same color as nominal (Christian MOTELET) `#100`
- chore: normalize options passed to the widget (Christian MOTELET) `#97`
- fix: reactivation of knownKeys to reduce additional CPU cycles (Christian MOTELET) `#94`
- chore: reduce the number of browser.saveGrid() calls (Christian MOTELET) `#96`
- fix: updateNotificationLevel & pushGridChanges in toggleActive (Christian MOTELET) `#95`
- feature: add specific widget (Christian MOTELET) `#92`
- chore: moving css content to a dedicated file (Christian MOTELET) `#91`
- chore: rewriting the toolTips code (Christian MOTELET) `#90`
- chore: update changelog (Teppo Kurki) `e99072b`
- chore: update changelog (Teppo Kurki) `15536e3`

### v0.9.0 : 12 March 2019

- feature: add dedicated notification page (Christian MOTELET) `#89`
- chore: update package-lock.json (Teppo Kurki) `7524047`
- chore: update changelog (Teppo Kurki) `2112cc8`

### v0.8.0 : 25 February 2019

- feature: add online help page (Christian MOTELET) `#88`
- fix: reset displayed sourceId when the page changed (Christian MOTELET) `#86`
- fix: change the cursor type on the heartbeat (Christian MOTELET) `#87`
- chore: optimizing size of widgets & navbar (Christian MOTELET) `#83`
- fix: draging & resizing widget on iOS12 (Christian MOTELET) `#82`
- chore: update changelog (Teppo Kurki) `4f68e97`

### v0.7.1 : 29 January 2019

- chore: add prepublishOnly (Teppo Kurki) `68507fa`

### v0.7.0 : 28 January 2019

- fix: windmeter display mode when multiple pages (Christian MOTELET) `#80`
- fix: populate new pages with all known discovered widget (Christian MOTELET) `#77`
- feature: add buttons to hide/show all widgets & popup message on layout reset (Christian MOTELET) `#74`
- feature: add minimal widget to display yaw/pitch/roll (Christian MOTELET) `#76`
- chore:extend widget resizing zone (Christian MOTELET) `#81`
- chore: add the new widgets by page bottom (Christian MOTELET) `#78`
- feature: add popup if no wind true data (Christian MOTELET) `#75`
- chore: remove unused file (Christian MOTELET) `#79`
- feature: check outdated widget before loading layout (Christian MOTELET) `#73`
- chore: update changelog (Teppo Kurki) `48544e2`
- chore: ignore lib/* files (Teppo Kurki) `57d49dd`

### v0.6.0 : 15 January 2019

- chore(package): update to latest package version (webpack@4.27.1, react@16.6.3, and all sub modules) (Christian MOTELET) `#70`
- chore: update changelog (Teppo Kurki) `6c2907e`

### v0.5.2 : 4 December 2018

- fix: bad position of icon on clickable widget in setting mode (cmotelet) `4b4839c`
- chore: update changelog (Teppo Kurki) `7b4e61a`

### v0.5.1 : 2 December 2018

- chore: React production build (Teppo Kurki) `418c068`
- chore: update changelog (Teppo Kurki) `25f01bb`

### v0.5.0 : 2 December 2018

- feature: add digitaldatetime component (cmotelet) `f4c6613`
- feature: add windTue/speedTrue in windmeter (cmotelet) `0bf6a77`
- feature: add display formats in digitalposition (cmotelet) `fc9feb0`

### v0.4.0 : 17 November 2018

- feature: Use schema data from the server and remove the bundled schema (Christian MOTELET) `#65`
- chore: update package-lock.json (Teppo Kurki) `c9520b7`

### v0.3.1 : 12 August 2018

- refactor: remove lodash (Teppo Kurki) `fa82da7`
- doc: update changelog (Teppo Kurki) `ea9fb86`

### v0.3.0 : 12 August 2018

- Added ratio conversion (Christian MOTELET) `#64`

### v0.2.7 : 8 March 2018

- fix: update the reading also on falsy values (Teppo Kurki) `ce8cb13`

### v0.2.6 : 21 February 2018

- Add minus sign and remove decimal places from Apparent Wind (port) (zubenubi) `#61`

### v0.2.5 : 29 December 2017

- chore: remove console.logs (Teppo Kurki) `319508d`

### v0.2.4 : 29 December 2017

- chore: organise imports (Teppo Kurki) `88199af`
- feature: add ssl support (Teppo Kurki) `a2cc526`
- chore: update Signal K client (Teppo Kurki) `fda967a`

### v0.2.3 : 27 September 2017

- Add windmeter wind speed unit selection (Teppo Kurki) `#46`
- feature: add more pressure units per #57 (Teppo Kurki) `#57`
- feature: add conversions for m3/s (Teppo Kurki) `#56`
- feature: add 10,100,1000/min Hz conversions (Teppo Kurki) `#52`
- fix: pass convertTo units to analog (Teppo Kurki) `#50`
- Update dist (Teppo Kurki) `bef866d`
- Update dist (Teppo Kurki) `09e4326`
- fix: unit handling (Teppo Kurki) `a527084`

### v0.2.2 : 21 November 2016

- Super basic theme support with Material UI (Tim Mathews) `1ec6212`
- Move connection handling from navbar to instrumentpanel (Tim Mathews) `39c19f6`
- Code reformatting (Tim Mathews) `bf7c638`

### v0.1.2 : 4 March 2017

- Add windmeter wind speed unit selection (Teppo Kurki) `#46`
- feature: add 10,100,1000/min Hz conversions (Teppo Kurki) `#52`
- fix: pass convertTo units to analog (Teppo Kurki) `#50`
- Update dist (Teppo Kurki) `bef866d`
- Update dist (Teppo Kurki) `09e4326`
- Add Changelog (Teppo Kurki) `295db36`

### v0.1.1 : 12 February 2017

- fix: unit handling (Teppo Kurki) `a527084`
- Update bower version (Teppo Kurki) `aad1e3f`
- Add validator.js as external (Teppo Kurki) `b474874`

### v0.1.0 : 6 February 2017

- Settings for widgets (with multiple compass widgets as example) & responsive settings layout (Teppo Kurki) `#29`
- Multiple instrument pages (Teppo Kurki) `#28`
- React upgrade (Teppo Kurki) `#23`
- Send 'subscribe all' on connection (Teppo Kurki) `#18`
- Units si (Teppo Kurki) `#16`
- Update urls properly (Teppo Kurki) `#15`
- Digital Gauge Updates (Teppo Kurki) `#12`
- More Wind Meter Changes (Teppo Kurki) `#11`
- Fixes for Wind Meter (Teppo Kurki) `#10`
- Add v1 to urls for api and stream (Teppo Kurki) `#7`
- Added subscribe msg on connect (Teppo Kurki) `#5`
- Make the buttons/ui more mobile friendly (Teppo Kurki) `2913cd7`
- Update dist (Teppo Kurki) `3845c4f`
- Rearchitect: (Teppo Kurki) `d8f0f50`

Change Log generated by `auto-changelog`.