@signalk/freeboard-sk 3.2.0-beta.5 → 3.2.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.
Files changed (51) hide show
  1. package/package.json +3 -2
  2. package/public/assets/features/route-following-1.jpg +0 -0
  3. package/public/assets/features/route-following-2.jpg +0 -0
  4. package/public/assets/features/route-following-3.jpg +0 -0
  5. package/public/assets/features-corpus.json +1 -1
  6. package/public/assets/help/index.html +7 -5
  7. package/public/{chunk-ZXIUZMA7.js → chunk-3HO5JDYF.js} +1 -1
  8. package/public/{chunk-RRFDJNNT.js → chunk-3UKG3D3M.js} +1 -1
  9. package/public/{chunk-VJLDZ4NI.js → chunk-4UBQTQSK.js} +1 -1
  10. package/public/{chunk-PU7NCPYW.js → chunk-5SYZI253.js} +1 -1
  11. package/public/{chunk-DFAGTODX.js → chunk-6ZXMFU55.js} +1 -1
  12. package/public/{chunk-JEAAYERI.js → chunk-7OBOGNNY.js} +1 -1
  13. package/public/chunk-A2UDMCI5.js +1 -0
  14. package/public/{chunk-OPNUYGIO.js → chunk-BCS6VHKX.js} +1 -1
  15. package/public/{chunk-N4UL6N3G.js → chunk-BJKB23AZ.js} +1 -1
  16. package/public/{chunk-WYYDGUIZ.js → chunk-BNCDJR4Z.js} +1 -1
  17. package/public/{chunk-AA62TGOR.js → chunk-D4A5NW5G.js} +1 -1
  18. package/public/{chunk-6QJRUI6F.js → chunk-DD47QU4L.js} +1 -1
  19. package/public/chunk-EDKY4MXN.js +1 -0
  20. package/public/{chunk-WCLDE6BT.js → chunk-GBMW6IJP.js} +1 -1
  21. package/public/{chunk-VEGUHS2I.js → chunk-GFDZNVNU.js} +79 -79
  22. package/public/{chunk-DBYANQFC.js → chunk-GVRPUNRX.js} +1 -1
  23. package/public/chunk-H54CRRPU.js +1 -0
  24. package/public/chunk-HT6GODHM.js +1 -0
  25. package/public/{chunk-RZEZX533.js → chunk-L4ONBCRR.js} +1 -1
  26. package/public/{chunk-HWRLJ3DL.js → chunk-LFAWLMM4.js} +1 -1
  27. package/public/{chunk-GODGWAVZ.js → chunk-LNU63734.js} +1 -1
  28. package/public/chunk-NCEQPEJE.js +1 -0
  29. package/public/{chunk-6PWYCIYX.js → chunk-OVB2ZLN5.js} +1 -1
  30. package/public/{chunk-TUQRCX5V.js → chunk-P57WKW3G.js} +1 -1
  31. package/public/{chunk-SUT6O77L.js → chunk-QWUBBFQO.js} +1 -1
  32. package/public/{chunk-TK54SKYF.js → chunk-R7YVRRY3.js} +1 -1
  33. package/public/{chunk-Q4NBIMTT.js → chunk-RQKGK2KO.js} +1 -1
  34. package/public/{chunk-WTDLBURC.js → chunk-RRYFRHFP.js} +1 -1
  35. package/public/{chunk-6WPO4OMT.js → chunk-UBTZRPVO.js} +1 -1
  36. package/public/{chunk-7TRKAN4B.js → chunk-USYMWMPO.js} +1 -1
  37. package/public/{chunk-4JRVRHO7.js → chunk-VQDXDSU7.js} +1 -1
  38. package/public/chunk-XXGLBGHG.js +1 -0
  39. package/public/{chunk-4ZE2OKZZ.js → chunk-XZM7Q5WP.js} +1 -1
  40. package/public/{chunk-PG6RM7YJ.js → chunk-YB4RBYE2.js} +1 -1
  41. package/public/index.html +1 -1
  42. package/public/main-LYWXFV5I.js +468 -0
  43. package/public/worker-DYC3TMVW.js +3 -0
  44. package/public/chunk-6H3I7D5M.js +0 -1
  45. package/public/chunk-AMDY4THY.js +0 -1
  46. package/public/chunk-CCTZD6S5.js +0 -1
  47. package/public/chunk-SGKVAYBG.js +0 -1
  48. package/public/chunk-U67UWQ7C.js +0 -1
  49. package/public/chunk-XVRRHA2K.js +0 -1
  50. package/public/main-BW35DEQ6.js +0 -468
  51. package/public/worker-GBKY4SNO.js +0 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signalk/freeboard-sk",
3
- "version": "3.2.0-beta.5",
3
+ "version": "3.2.0",
4
4
  "description": "Openlayers chart plotter implementation for Signal K",
5
5
  "keywords": [
6
6
  "signalk-webapp",
@@ -24,6 +24,7 @@
24
24
  ],
25
25
  "recommends": [
26
26
  "signalk-charts-provider-simple",
27
+ "@signalk/tracks-plugin",
27
28
  "signalk-instrument-widgets",
28
29
  "signalk-symbol-manager",
29
30
  "@signalk/open-meteo-provider",
@@ -77,7 +78,7 @@
77
78
  "google-protobuf": "^4.0.1",
78
79
  "remark-gfm": "^4.0.1",
79
80
  "remark-parse": "^11.0.0",
80
- "signalk-plotterext-bus": "^0.14.0",
81
+ "signalk-plotterext-bus": "^0.15.0",
81
82
  "tslib": "^2.0.0",
82
83
  "unified": "^11.0.5",
83
84
  "uuid": "^14.0.1"
@@ -1 +1 @@
1
- {"docs":[{"id":"buddy-list","raw":"---\nid: buddy-list\ntitle: Buddy List\ncategory: AIS & Vessels\n---\n\nKeep track of boats you know — friends, other boats in your flotilla — by\nmarking them as **buddies**, then filter the vessel list down to just them\nwhen you want to find one quickly.\n\nThis requires the [signalk-buddylist-plugin](https://www.npmjs.com/package/signalk-buddylist-plugin)\ninstalled on your Signal K server. Without it, Freeboard behaves as before —\nthere's no buddy marking or filtering available.\n\n**To mark a vessel as a buddy**, tap it on the chart to open its popover and\ntap the **Is Buddy** button. Tap it again to remove the mark.\n\n**To see just your buddies**, open **Vessels** from the main menu and switch\non the **Buddies Only** toggle in the filter row. The list narrows to the\nvessels you've marked. Buddies Only can be combined with the list's other\nfilters — Ship Type and IMO Only — to narrow things down further.\n"},{"id":"chart-auto-refresh","raw":"---\nid: chart-auto-refresh\ntitle: Auto-refreshing Charts\ncategory: Charts\n---\n\n![Fig 1. NOAA NEXRAD weather radar served by a storm-intelligence plugin, drawn over the Florida Keys](chart-auto-refresh-1.jpg)\n\nWhile most charts never change once drawn, certain types of charts like weather radar\nand satellite images may need a fresh image every few minutes. Freeboard supports a\nchart that declares itself time-varying and will re-fetch its tiles on its own, at the\ncadence the chart asks for.\n\n## How it works\n\nA chart's refresh cadence comes from whoever added it: a chart-provider plugin declares\nit on the charts it serves, and a chart source you add yourself carries the interval you\ngive it (see below). Charts with no interval behave exactly as before. The shortest\nrefresh cadence honoured is **one minute**.\n\nA provider can go further and offer the **earlier** frames too, which turns the chart\ninto one you can scrub back through and play as a loop — see **Time-varying Charts**.\nWhile such a chart is showing a past frame its auto-refresh pauses, and resumes when\nit returns to its newest frame.\n\n## For sources you add yourself\n\nAny WMS, WMTS or JSON map source added through **Add Chart Source** can be given a\nrefresh interval from its **Properties** dialog: enter the number of minutes in\n**Auto refresh** (0 means never) and **SAVE**. The same field lets you change or turn\noff the interval later. Public weather-radar and satellite services — NOAA nowCOAST,\nthe Iowa State Mesonet NEXRAD mosaics, and the like — are the typical candidates.\n\nProvider-served charts show their declared interval here but cannot be changed — the\nplugin that serves them owns it.\n\n## Offline and poor signal\n\nBeing out of range is normal at sea, so a refresh that can't reach the server is not an\nerror. The chart keeps showing the **last image it loaded** — it never goes blank because\na newer one failed to arrive — and quietly tries again at the next interval. When the\nconnection returns, the chart catches up.\n\n## Which charts\n\nAny raster chart can opt in: plain tile layers, TileJSON, WMS and WMTS. Vector charts\n(Mapbox-style sources, S-57 ENCs) are not refreshed. OpenStreetMap and OpenSeaMap are\nunaffected. An Overlay from an earlier Freeboard now appears in the Chart list as a\nchart and keeps the refresh interval it was given (see **Overlays**).\n\n## For chart-provider plugins\n\nAdd **`refreshInterval`** (milliseconds) to the chart resource, e.g.\n`\"refreshInterval\": 300000` for five minutes. Omit it or set `0` for a static chart;\nvalues under 60 000 are raised to the floor. Each refresh requests the tiles with a\nfresh `_refresh` query parameter, so the browser never hands back the image it already\nhas, whatever caching headers the tile endpoint sends. The refresh is non-destructive —\nthe previous tile stays until its replacement has loaded — so an interval is safe to\ndeclare for a product that is sometimes unreachable.\n"},{"id":"chart-image-adjustment","raw":"---\nid: chart-image-adjustment\ntitle: Chart Image Adjustment\ncategory: Charts\n---\n\n![Fig 1. The Image Adjustment palette, opened from the tune icon in the chart list](chart-image-adjustment-1.jpg)\n\nAerial and satellite chart imagery is usually exposed for the land, which\ncan leave the water — where the hazards are — looking crushed and nearly\nblack. Adjusting the brightness and contrast can pull submerged rocks,\nshallows, and reefs back into view, which is handy when you're scouting an\nanchorage.\n\n**To adjust a chart's image**, open the chart list and tap the **tune**\nicon next to a chart (it appears alongside the existing opacity control,\nfor image-based charts only). The chart list closes and a compact **Image\nAdjustment** palette opens over the map, headed by the name of the chart\nlayer you're working on.\n\nThe palette is modeless — there is no backdrop, so panning and zooming stay\navailable while you adjust. Drag it by its header to move it clear of the\nwater you're studying; it reopens wherever you last left it, even after a\nreload.\n\n**Brightness** and **Contrast** run from 0% to 200%, with 100% being\nneutral, and the chart updates live as you drag. **RESET** returns both to\nneutral. **SAVE** keeps your changes; closing the palette with its **close**\nbutton instead discards them and puts the chart back as it was.\n\nA saved adjustment is stored with that chart, alongside its opacity, so it's\nstill applied the next time you open Freeboard. Left untouched, a chart looks\nexactly as it always has — the neutral default makes no visible change.\n\nThis applies to raster, tile, WMS, and WMTS image charts. Vector charts\n(like S-57) don't have an image to adjust, so the control doesn't appear\nfor them.\n"},{"id":"chart-list","raw":"---\nid: chart-list\ntitle: Chart List\ncategory: Charts\n---\n\n![Fig 1. The chart list, with Bounds turned on so each chart's outline is drawn on the map](chart-list-1.jpg)\n\nThe **Chart List** is where you pick which charts are drawn on the screen, what order\nthey stack in, and how each one looks. Open it from the resources menu, then **Charts**.\n\nEvery chart the server offers is listed with its name and description. A **map** icon\nmarks a chart hosted on your own Signal K server; a **globe** icon marks one fetched from\nthe internet — worth a glance before you rely on a chart offshore.\n\n**To show or hide a chart**, tick or untick its checkbox. The checkbox at the top of the\npanel switches every chart on or off at once, and **refresh** re-reads the list from the\nserver if you've just installed new charts.\n\n## Finding a chart in a long list\n\nA boat carrying a full regional ENC set can have hundreds of charts, so there are three\nways to narrow the list. They combine, so you can use them together.\n\n- **Type to filter list** — matches on the chart's name.\n- **In view** — hides every chart that doesn't cover what you're currently looking at.\n The list re-filters live as you pan and zoom, so it always reflects the current view.\n Charts that don't declare bounds (OpenStreetMap, for instance) count as covering\n everywhere and stay listed whatever the view.\n- **Bounds** — draws the outline of every listed chart on the map, so you can see what\n covers where. Clicking an outline brings up the charts at that spot and lets you switch\n one on directly, without finding it in the list.\n\n**In view** and **Bounds** both start off each time you open the list — they're a way to\nsearch, not a setting to leave set.\n\n## Chart order\n\nCharts are drawn stacked, and the one on top is the one you read. The list *is* that stack:\n**Top Layer** is labelled at the top, **Base Layer** — a world map, typically — at the\nbottom.\n\n![Fig 2. The list as the chart stack — Top Layer at the top, drag grips on the right of each row](chart-list-2.jpg)\n\nTo move a chart up or down, drag it by the handle on the right of its row (the six-dot\ngrip). The map re-stacks as soon as you drop it, and the order is saved for next time.\n\nCharts you have never re-ordered start out stacked by scale — the largest-area chart at\nthe bottom, so the most detailed one ends up on top. That is only the starting point:\nonce you drag anything, your order wins.\n\nFiltering the list withdraws the handles, whether you filter by typing or with **In view**.\nA filtered list is only part of the stack, so dropping a row inside it says nothing about\nwhere the charts hidden between belong. The caption beside **Top Layer** says so — it\nchanges from *(drag to re-order)* to *(clear the filter to re-order)*.\n\n## Per-chart actions\n\n![Fig 3. A chart entry, with its actions along the bottom](chart-list-3.jpg)\n\nAlong the bottom of each entry is a row of icons — the actions for that chart. Only the\nones that apply are shown, so the row is shorter on some charts than on others. In the\nrow above, left to right:\n\n- **Properties** (the *i* in a circle) — view and edit the chart's details.\n- **Opacity** (the droplet) — fade a chart to let the one beneath show through. Useful\n for laying a harbour chart over an aerial image.\n- **Image adjustment** (the sliders) — brightness and contrast; image-based charts only.\n See the **Chart Image Adjustment** feature.\n- **Minimum Zoom Level** (the downward arrow onto a line) — the lowest zoom to draw this\n chart at, so overlapping charts reveal in turn as you zoom in; image-based charts only.\n See the **Chart Zoom Limits** feature.\n- **Add to Group** (the shapes) — file the chart into a resource group. Only shown when\n your server supports resource groups.\n\nTwo more appear where they apply:\n\n- **Cache Tiles** (the download arrow) — select an area of the map to download for\n offline use. Only offered for charts the chart provider serves as proxied.\n- **Remove** (the waste bin) — delete a chart you added yourself. Charts that come from\n the server's chart plugin can't be deleted from here.\n\nOpacity, image adjustment and minimum zoom are saved per chart and persist between\nsessions. The checkbox on the right of the entry is what shows or hides the chart.\n\n## Adding your own chart source\n\n**Add** (the `add` icon) registers a new chart source with the server — **WMTS**, **WMS**,\nor a **JSON Map Source**. Added charts appear in the list alongside the rest and can be\nremoved again with **Remove**.\n\nFreeboard also offers OpenStreetMap and OpenSeaMap without any server-side charts\ninstalled; both need an internet connection to draw.\n\nNote that everything else in the list comes from the Signal K server, so a chart plugin\n(such as `@signalk/charts-plugin`) has to be installed and configured before your own\ncharts appear here.\n"},{"id":"chart-sources","raw":"---\nid: chart-sources\ntitle: Adding a Chart Source\ncategory: Charts\n---\n\n![Fig 1. NCEP CONUS radar added as a WMS source and drawn over the chart, sitting at the top of the chart list](chart-sources-1.jpg)\n\nFreeboard draws whatever charts your Signal K server offers, but you can also point it at\na chart or imagery service yourself — a weather radar mosaic, satellite imagery, an aerial\nphoto layer, a tile set someone publishes. **Add Chart Source** registers that service with\nthe server, after which it behaves like any other chart in the list.\n\n## Adding one\n\n![Fig 2. Add on the chart list offers WMTS, WMS or JSON Map Source](chart-sources-2.jpg)\n\nOpen the chart list (resources menu, then **Charts**) and press **add** — the `+` on the\nrow with the **Bounds** and **In view** switches. Three kinds of source are offered:\n\n- **WMTS** — a Web Map Tile Service, serving pre-rendered tiles.\n- **WMS** — a Web Map Service, which draws an image to fit what you are looking at.\n- **JSON Map Source** — a TileJSON or Mapbox Style document; Freeboard works out which\n from the file itself.\n\n## The service address\n\n![Fig 3. Add WMS Source — paste the address the provider publishes](chart-sources-3.jpg)\n\nFor WMS and WMTS the dialog asks for the **WMS service URL** (or **WMTS service URL**).\nPaste whatever address the provider publishes — the plain service address, or the full\n*GetCapabilities* link, which is what most providers actually hand out. Either works.\nFreeboard stores the address without the request parameters it supplies itself, and keeps\nanything else on the link, so an API key or a MapServer `map=` parameter survives.\n\nPress the arrow. Freeboard asks the service what it offers and opens **Chart Properties**\non the answer.\n\nIf the service refuses, the reason it gave is shown rather than a generic failure —\nusually enough to tell whether the address is wrong, the service is down, or the layer you\nwere after is unavailable.\n\n## Choosing the layer\n\nChart Properties lists what the service offers. A **WMS** source can draw several layers\ntogether, so each row has a checkbox; a **WMTS** source draws one layer, so the list is a\nsingle choice.\n\nEach row shows the layer's title, followed by its identifier in lighter text wherever the\ntwo differ — *NEXRAD BASE REFLECT (GOOGLE)* **(nexrad-n0q-900913-conus)**. Services often\ngive a whole run of sibling layers the same title and distinguish them only by identifier\n— one per region, say — and the identifier is the thing you are really choosing, so it is\nshown whenever it tells you something the title doesn't.\n\nA small **clock** icon in front of a layer means it is time-varying: it carries earlier\nframes you can scrub back through and play as a loop. Hover it for a one-line summary —\nhow often it updates and how far back it goes (*Time-varying: every 5 min, last 12 h*), an\narchive's date range, or a frame count. See **Time-varying Charts**.\n\n## What gets filled in for you\n\n![Fig 4. Chart Properties after picking a layer — name, description and refresh interval filled in, and a clock icon marking the layer as time-varying](chart-sources-4.jpg)\n\nPicking a layer fills in what the service can tell Freeboard:\n\n- **Name** — the layer's title.\n- **Description** — the first clause of the service's own description of that layer. These\n tend to run to a paragraph, and the field is a single line.\n- **Auto refresh** — for a time-varying layer only: the cadence the service declares, or\n five minutes when it declares none. *Never* is almost always the wrong answer for radar\n or satellite imagery. See **Auto-refreshing Charts**.\n\nAnything you have typed yourself is left alone — including a refresh interval you\ndeliberately set to 0. Only the values Freeboard filled in are replaced if you change your\nmind and pick a different layer, and a cadence it filled in is cleared again if you\nre-point the chart at a layer that doesn't vary with time.\n\nThen press **SAVE**.\n\n## Afterwards\n\nThe new chart appears in the chart list among the rest, and can be shown, hidden,\nre-ordered, faded and adjusted like any other — see **Chart List**. **Properties** reopens\nthis same dialog, so the name, description, layer and refresh interval can all be changed\nlater. **Remove** (the waste bin) deletes it from the server; charts that come from a chart\nplugin cannot be removed this way.\n"},{"id":"chart-zoom-limits","raw":"---\nid: chart-zoom-limits\ntitle: Chart Zoom Limits\ncategory: Charts\n---\n\n![Fig 1. Setting a chart's minimum zoom — the panel stays open beside the chart list](chart-zoom-limits-1.jpg)\n\nEvery chart holds detail down to a certain resolution and no further. Zoom in past that\npoint and you aren't shown more information — you're shown the last real chart data\nmagnified, which looks sharper than it is. Freeboard gives you two controls over what\nhappens at that boundary.\n\nThe other end of the range is yours to choose: a chart can be given the lowest zoom it\nappears at, so a stack of overlapping charts reveals each one in turn as you zoom in.\n\n## Constrain map zoom\n\nThe **Constrain map zoom** button (the `zoom_in_map` icon on the right-hand toolbar) stops\nthe map at the edge of your chart data. Turn it on and you simply cannot zoom in — or out —\nbeyond the range your selected charts actually cover. The button highlights while active,\nand the zoom **+** / **−** buttons grey out once you reach a limit.\n\nThe limits are taken from the **widest** range across all currently selected charts: the\nlowest minimum zoom and the highest maximum zoom of any of them. Selecting or deselecting\ncharts recalculates it, so the constraint always reflects what you have switched on. Charts\nthat don't declare their own zoom range fall back to a 0–24 range. With the setting off,\nthe map is free to move between zoom 2 and 28 regardless of what your charts hold.\n\nThis is off by default. It matters most when you're working from downloaded or offline\nchart sets — a cached raster or MBTiles collection on a boat with no internet — where\nzooming past the data can't be rescued by fetching better tiles, and where a magnified\ntile can read as detail that was never surveyed.\n\n## Keep tiles visible on max zoom\n\nThe companion setting, **Keep tiles visible on max zoom** (Settings → Map), decides what a\nchart layer does once you pass *its* maximum zoom. Leave it on — it is on by default — and\nthe chart keeps drawing, stretched, instead of disappearing. Turn it off and each layer\nstops rendering beyond the resolution it genuinely has, leaving the chart blank there.\n\nIt also matters when charts of different resolutions are stacked. In a selection mixing a\nwide-area chart with a detailed harbour chart, the lower-resolution one keeps rendering\n(stretched) up to the map's maximum rather than dropping out as you zoom in.\n\nThose two settings answer different questions: *Constrain map zoom* decides **whether you\ncan get there at all**, while *Keep tiles visible on max zoom* decides **what you see if\nyou do**. With the defaults — constrain off, keep-tiles on — you can zoom freely and charts\nstay visible but progressively blurrier past their real detail.\n\n## Per-chart minimum zoom\n\nChart sets covering the same water at different scales are drawn on top of each other, and\na large-scale sheet is clutter until you are zoomed in far enough to want it. Every\nhydrographic office publishes raster charts in overlapping bands — NOAA's Overview,\nGeneral, Coastal, Approach and Harbor; Finland's Yleiskartat, Merikarttasarjat,\nRannikkokartat and Satamakartat. Freeboard picks the right band on its own for S-57 vector\ncharts, because the standard records which band a chart belongs to. Raster carries no\nequivalent, so the only remedy used to be ticking and unticking charts as you went.\n\nInstead, give each chart the zoom it starts earning its place at — coastal from z9, boating\nfrom z12, harbour from z14 — and each appears as you zoom in, drawn over the coarser charts\nalready on screen.\n\nThe control is in **Charts**, on the row of each image-based chart: **Minimum Zoom Level**\n(the downward arrow onto a line), next to opacity and image adjustment. It opens a small\npanel beside the chart list, which stays open — balancing an overlapping set means moving\nbetween charts — and can be dragged out of the way by its title bar.\n\nType a level into **Show from**, or press the target button to take the map's current zoom.\nThe line beneath the title gives the chart's own data range and where the map is now, for\nreference; the line under the box reads back what you have set — *Hidden below z12*, or\n*Shown at every zoom level*. The map updates as you go, so you can see the effect.\n**APPLY** keeps the level, and closing the panel without applying puts the old one back.\nThe **X** beside the target button clears the level, so the chart shows at every zoom\nagain.\n\nA chart carrying a minimum shows **from z12** under its name in the list, and adds *—\nhidden at this zoom* while it is not being drawn — so a ticked chart that is not on screen\ntells you why rather than looking broken.\n\nThe minimum only ever restricts. A chart is never drawn below the zoom its own tiles start\nat, so a level set under the chart's own range does nothing, and the top of the range is\nuntouched — *Keep tiles visible on max zoom* behaves exactly as described above. Which\nchart you see where several overlap is still decided by chart order. Levels are saved per\nchart on this device, alongside opacity and image adjustment, and persist between sessions.\n\nThe zoom readout in the status bar counts up rather than rounding: a view a hair under z14\nreads `Zm: 13.9` where it once read `Zm: 14.0`. It never claims a level the map has not\nreached, which is what makes \"set 14, zoom to 14, see the chart\" behave.\n"},{"id":"cursor-eta","raw":"---\nid: cursor-eta\ntitle: Live ETA at Cursor\ncategory: Display\n---\n\n![Fig 1. The Status Bar Options settings, and the resulting Brg/Dist/ETA readout in the status bar](cursor-eta-1.jpg)\n\nGet a quick bearing, distance, and time estimate to any point on the chart —\nwithout setting a destination first.\n\n**To turn it on**, go to **Settings → Display → Status Bar Options** and check\n**Live ETA at cursor**. It's off by default. Once on, the status bar adds the\nbearing, distance, and ETA from your boat to the point you're pointing at,\nalongside the existing latitude/longitude readout.\n\n**With a mouse**, the readout follows the pointer as you move it over the chart.\n\n**Click or tap the chart** and the readout locks onto that point, with a marker\nshowing which point it refers to. The marker fades away and the readout is\nreleased with it, so the numbers are never left on screen with nothing\nidentifying what they describe. Tap somewhere else to measure to the new point.\nThis gives a touchscreen at the helm the same \"how far is that?\" gesture a mouse\nuser gets — dragging the chart still just pans it, and a press-and-hold still\nopens the chart menu.\n\n**Tap Fade Speed** sets how long the marker takes to fade, in seconds (minimum\n1, default 1.5). Raise it to give yourself longer to read the numbers; lower it\nif the marker sits over something on the chart you want to see or grab.\n\nThe ETA uses your boat's current speed over ground. If you're stopped — at\nanchor, hove to — there's no speed to estimate from, so Freeboard falls back to\na **Reference Boat Speed** you set alongside the checkbox, keeping the ETA\nuseful even when you're not moving.\n"},{"id":"custom-map-symbols","raw":"---\nid: custom-map-symbols\ntitle: Custom Map Symbols\ncategory: Charts\n---\n\n![Fig 1. A custom route start marker and a custom anchorage icon shown on the chart](custom-map-symbols-1.jpg)\n\nFreeboard normally marks notes, waypoints, your boat, AIS traffic, aids to\nnavigation, and route points with its own built-in icons. If you'd rather use\nyour own artwork — a personal marker for a favorite dive site, a custom boat\nicon for your own vessel, a branded buoy — you can, once you install a\n**symbol provider** app on your Signal K server. Freeboard picks up whatever\nicons the provider offers and uses them automatically — there's nothing to\nturn on.\n\nThe reference app for this is\n[signalk-symbol-manager](https://www.npmjs.com/package/signalk-symbol-manager),\nwhich gives you a simple web page for uploading and organizing your own icons.\nAny similar app that publishes icons the standard way works too.\n\n## Two ways to use a custom icon\n\n**Replace one of Freeboard's built-in icons.** Give your icon the same name\nas the built-in you want to replace (for example `dive-site`) and mark it as\nbelonging to Freeboard's icon set. Your version then shows up everywhere that\nicon is normally used — on the chart and in the icon pickers — without you\nhaving to touch any existing notes or waypoints. See the reference list below\nfor which built-in names you can replace.\n\n**Add a brand-new icon.** Give your icon a new name of your choosing and it\nshows up as an extra option in the icon pickers, alongside the built-ins.\n\nWhen you've replaced a built-in, the picker shows only your version — not\nboth — so the list doesn't get cluttered. Flip the **\"Show all symbols\"**\ntoggle in a note or waypoint's icon picker to see everything at once,\nbuilt-ins included, in case you ever want to go back to the original. If you\ndeliberately pick the original built-in this way, Freeboard remembers your\nchoice and won't swap your custom icon back in later.\n\n## Where custom icons show up\n\n| Area | Custom icons? |\n|------|:---:|\n| Notes | Yes |\n| Waypoints | Yes |\n| Your own vessel | Yes |\n| AIS vessels | Yes |\n| Aids to navigation | Yes |\n| Route start / turn / end points | Yes |\n| Wind, ocean current and tidal current arrows | Yes |\n| Special waypoint markers (start pin, start boat, sightings, alarms) | No |\n| Shaded chart areas | No |\n| Dots for moored vessels | No |\n\nIcons that normally rotate to a heading or bearing — your vessel, AIS\ntargets, aids to navigation, route turn points, and the wind and current\ndirection arrows — keep rotating correctly even when you've replaced them with\nyour own artwork.\n\n## Built-in icon names you can replace\n\nTo replace one of these, give your icon the matching name below.\n\n**Note and waypoint markers:**\n\n```\nanchorage boatramp bridge business dam\ndive-site ferry hazard inlet lock\nmarina dock turning-basin radio-call-point\ntranshipment-dock notice-to-mariners diver-down\nnavigation-structure fuel tunnel waterway-guage\n```\n\n**Generic waypoint marker:** `waypoint`\n\n**Your own vessel:** `vessel-self`\n\n**AIS vessels** (by type):\n\n```\nais_active ais_highspeed ais_special ais_passenger ais_cargo\nais_tanker ais_other ais_inactive ais_buddy ais_self\n```\n\n(`ais_self` is whichever AIS target you currently have selected — not your\nown boat, which is `vessel-self`.)\n\n**Aids to navigation** — each comes in a physical (`real-…`) and an AIS-only\n(`virtual-…`) version:\n\n```\nreal-north / virtual-north real-east / virtual-east\nreal-south / virtual-south real-west / virtual-west\nreal-port / virtual-port real-starboard / virtual-starboard\nreal-danger / virtual-danger real-safe / virtual-safe\nreal-special / virtual-special real-basestation / virtual-basestation\nreal-weatherStation / virtual-weatherStation\nreal-aton / virtual-aton\n```\n\n**Route points:** `route-start`, `route-waypoint`, `route-end`\n\n**Weather indicators** — the direction arrows on the wind, ocean current and\ntidal current overlays:\n\n```\nwindIndicator-arrow oceanCurrentIndicator-arrow tidalCurrentIndicator-arrow\n```\n\nThe two current arrows are tinted by Freeboard to show speed, so draw\nreplacements for those with a plain white fill — a pre-coloured glyph comes out\nmuddy. The wind arrow isn't tinted and renders in your own colours.\n\nYour own vessel, AIS, aids-to-navigation, route and weather-indicator icons\napply everywhere at once — Freeboard picks these automatically rather than\nletting you choose them per marker, so one custom icon covers every marker of\nthat kind.\n\n## Keeping icons through GPX import and export\n\nIf your icon declares a matching GPX symbol name, Freeboard will recognize it\nwhen you import a GPX file — a waypoint tagged with that symbol picks up your\ncustom icon instead of the default marker. Exporting a waypoint that uses a\ncustom icon writes the same information back into the GPX file, so the icon\nsurvives a round trip: export, re-import elsewhere, and your custom icon is\nstill there.\n\n## Without a symbol provider\n\nIf you haven't installed a symbol provider — or it isn't publishing any\nicons — Freeboard looks and behaves exactly as it always has: built-in icons\neverywhere, and \"Show all symbols\" just shows the built-ins.\n"},{"id":"extension-panels","raw":"---\nid: extension-panels\ntitle: Extension Panels\ncategory: Extensions\n---\n\n![Fig 1. A plugin's search panel open alongside its toolbar button](extension-panels-1.jpg)\n\nPanel extensions let a Signal K server plugin add a completely new feature to\nFreeboard, without waiting on a Freeboard code change to get it. You can pick\nand choose which of these tools you want installed on your boat. Each one\nadds its own new button to Freeboard's toolbar — for example, a proximity\nsearch for nearby points of interest, or an automatic route planner that\nroutes around land.\n\n![Fig 2. An auto-routing panel, another example of a panel extension](extension-panels-2.jpg)\n\n**To use one**, tap the grid icon in the top-right corner of the chart to\nreveal the toolbar, then tap the plugin's button. Its panel slides in from\nthe right-hand side of the screen. Tap the button again, or use the panel's\nown close button, to put it away.\n\nA panel can also narrow down what's shown on the chart — for example,\nfiltering the waypoints list to just the ones matching your search. When a\npanel does this, a small chip appears near the top of the screen describing\nthe filter; tap its **×** to clear it and show everything again.\n\nIf you haven't installed any plugins that add a panel, the extension toolbar\nbutton doesn't appear — Freeboard looks and works exactly as it always has.\n"},{"id":"feature-browser","raw":"---\nid: feature-browser\ntitle: Feature Browser\ncategory: Display\n---\n\nThis very window you're looking at right now is the **Feature Browser** — a\nsearchable \"What's New\" window covering everything Freeboard can do. Curious\nwhat a feature does, how to use it, or when it was added? Open it any time\nfrom the main menu — **What's New**, between **About** and **Help** — or\nfrom the **⋯ (More actions)** menu, no matter what you're doing on the\nchart.\n\nEach entry shows a screenshot, a plain description of what the feature does\nand how to use it, and the release it last changed in — click a screenshot\nto view it larger. When a feature has changed in the current release, its\nnewest changes are listed at the top of the entry so you don't have to hunt\nfor them; the complete history sits in a table at the bottom. Search narrows\nthe list by name, and you can sort the table by category, feature, status,\nor release.\n\nA small lightbulb button also appears on the left toolbar whenever there's\nsomething new or changed you haven't seen yet — click it to jump straight\ninto the Feature Browser. It only shows up when there's something to tell\nyou about, and disappears once you've opened the browser. Freeboard no\nlonger interrupts you with a welcome screen or a \"what's new\" popup when it\nstarts — this lightbulb is the quiet, opt-in replacement.\n"},{"id":"follow-vessel","raw":"---\nid: follow-vessel\ntitle: Center & Follow Vessel\ncategory: Map\n---\n\n![Fig 1. Following with a positive Vertical offset — the boat sits low on screen and the chart in front of it gets the room](follow-vessel-1.jpg)\n\nKeep your boat on screen without touching the chart. Follow Vessel mode centers the\nvessel and holds it there as you move, so the chart scrolls under you instead of you\nchasing it.\n\n## The button\n\n**Center & Follow Vessel**, on the left-hand toolbar, does both jobs. A press centers the\nvessel and turns follow mode on, easing out to your offset a couple of seconds later. The\nbutton stays highlighted while follow mode is on. Press it again to turn follow mode off —\nthe chart stays exactly where it is, so whatever you'd panned across to study stays in\nview. The button is disabled until your boat's position is known.\n\nJust want to center the boat once, without following it? Press again before it eases off\ncenter, and the boat stays where it is.\n\n## Offset Vessel Center\n\n![Fig 2. Offset Vessel Center and Map Pan When Following, in Settings → Map](follow-vessel-2.jpg)\n\nSitting dead center spends half your screen on water you have already covered.\n**Settings → Map → Offset Vessel Center (%)** moves the boat off center so the chart that\nmatters gets the room. Two values, each a whole percentage up to ±90 of the distance from\nthe middle of the screen to its edge:\n\n- **Vertical** — moves the vessel up or down the screen. A positive value looks ahead,\n putting more chart in front of the boat; `50` puts the boat halfway between the center\n and the bottom edge. A negative value looks behind instead.\n- **Horizontal** — moves the vessel left or right. A positive value shifts the map to the\n right, putting the boat toward the left of the screen with more chart visible to the\n right; a negative value does the opposite.\n\nBoth are measured against the **screen**, not your course — the offset holds the exact spot\nyou set it to whether you're underway, drifting, or sitting still, instead of swinging\naround as your heading jitters at low speed or with no course at all. In heading-up mode\nthis comes to the same thing as ahead/abeam, since \"up the screen\" already tracks your\ncourse; the difference only shows in north-up. Zooming keeps the boat on that same spot\ntoo, scaling the chart around it rather than nudging the boat back toward center.\n\n## Setting the offset by panning\n\nYou don't have to work the numbers out at all. With **Map Pan When Following** set to\n**Set Follow Offset**, simply pan the chart until the boat sits where you want it.\nFreeboard works out the Vertical and Horizontal values from where you dropped it and saves\nthem, staying in follow mode the whole time — so the boat holds that spot from then on. For\nmost people this is the only way they will ever set the offset.\n\nPan the boat clean off the screen and Freeboard takes it as \"stop following\" instead —\nfollow mode turns off and the chart stays exactly where you left it, rather than snapping\nthe boat back into view.\n\n## Map Pan When Following\n\n**Settings → Map → Map Pan When Following** decides what panning the chart does while\nfollow mode is on:\n\n- **Set Follow Offset** — follow mode stays on and your pan sets the offset, as above.\n- **Exit Follow Mode** — panning turns follow mode off and leaves the chart where you put\n it.\n- **Do nothing** — follow mode stays on and the vessel returns to its usual position on\n the next position update. Worth choosing at the helm, where a stray touch shouldn't\n disturb the view.\n\n### Getting follow mode back on its own\n\nChoosing **Exit Follow Mode** reveals a companion setting, **Resume Following After**.\nLeave it at **Never** and nothing changes — follow mode stays off until you press the\nbutton. Pick a delay instead and the chart hands itself back: pan across to look at what\nis ahead, and once you have left it alone that long the boat returns to the screen on its\nown.\n\nThe wait measures idle time, not time since the pan. Every pan and every zoom starts it\nover, so you can take as long as you like looking around and the chart only comes back\nonce you have actually stopped. Turning follow mode off with the button is left alone —\nthat stays off, so you can still park the chart somewhere deliberately.\n\nWorth setting when the display is out of easy reach, or when whoever is watching it would\nrather not hunt for the Follow button: a quick pan to check the water ahead, then back to\nthe boat without touching anything.\n"},{"id":"gpx-export","raw":"---\nid: gpx-export\ntitle: Export to GPX\ncategory: Import/Export\n---\n\n![Fig 1. Exporting an AIS vessel's track from its popover](gpx-export-1.jpg)\n\nSave routes, waypoints and tracks to a GPX file, to load into another\nplotter or app, or to send to a friend so they can follow the same line.\n\n## Routes, waypoints and your trail\n\nOpen the **Resources** menu (the stacked layers button on the left toolbar)\nand choose **Export**. The **Export to GPX** window lists what can be saved:\n\n- **Waypoints** and **Routes** from your Signal K server. Tick a section's\n box to select all of them, or expand it to pick individual ones.\n- **Tracks**: your vessel's trail, whether it is kept on this device or\n comes from the server (see **Vessel Tracks**).\n\nClick **Save** and choose where to save the file. Browsers that can't show a\nsave window download it as `fb_export.gpx` instead.\n\n## Tracks\n\n![Fig 2. The Export track to GPX button in a vessel's popover](gpx-export-2.jpg)\n\nTo save a single vessel's track, your own or another boat's, tap the vessel\non the chart and use **Export track to GPX** (the download button) in its\npopover. The button appears while that vessel's track is shown on the chart,\nor while its history is shown in **Track History & Playback**. It opens the\nsame window with just that vessel's track.\n\n**Track to export** chooses which part of the track to save:\n\n- **As displayed**: the track as it is drawn on the chart right now.\n- **Last 7 days** or **Last 30 days**.\n- **All recorded**: everything the server has kept for that vessel.\n- **Track history range**: the range the Track history window is showing.\n Offered while that vessel's history is shown, and the choice the window\n starts on when you opened it with only the history showing.\n- **Custom range**: pick a **From** and **To** date and time.\n\nRanges other than **As displayed** are fetched from the server when you\nclick **Save**, in the most detail it provides, so a file can hold far more\nthan is drawn on the chart. They need a Signal K server with the Track API\n(server 2.33 or later with a track provider, such as the Tracks plugin).\nWithout one, the track is saved as displayed. For another vessel that means\nonly the positions Freeboard gathered while it was open, and the button's\ntooltip says so.\n\nEach track is saved under a name that says whose it is and when it was\nrecorded, such as `Heron (366000012) 2026-09-22 19:06 – 2026-09-24 19:14`.\nEvery point carries the time it was recorded, where known, so other plotters\ncan show your speed along it or replay it.\n\nTo load a GPX file into Freeboard, use **Import** in the same menu.\n"},{"id":"notes","raw":"---\nid: notes\ntitle: Notes\ncategory: Notes\n---\n\n![Fig 1. Note options under Settings → Resources → Notes](notes-1.jpg)\n\nDrop a note anywhere on the chart to mark something worth remembering — a\ngood anchorage, a hazard, a spot to check next time you're through.\n\n**To add a note**, open the edit menu (pencil icon) and choose **Add Note**,\nthen tap the chart where you want it.\n\n**To work with an existing note**, tap it on the chart. By default this\nopens a quick popover with **Move**, **Edit**, **Delete**, and **Info**\n(the info panel or a details dialog, depending on your **Prefer Info-Panel**\nsetting under **Settings → Display**). If you'd rather skip that popover and\ngo straight to the note's details, turn on **Single Click for Note Details**\nunder **Settings → Resources → Notes** — a single tap then opens the details\ndirectly, and the details view itself offers **Move**, **Edit**, and\n**Delete**, so you don't lose anything by skipping the popover.\n\nA note with rich content — an embedded image, or a graph like the one on a\ntide-station note — resizes its details dialog to fit, instead of clipping\nthe content or forcing you to scroll in two directions.\n\n**The rest of the note options** live in that same **Settings → Resources →\nNotes** group. **Display Notes on Map** turns notes off entirely, and\n**Notes Zoom Level** sets how far in you have to be zoomed before they\nappear — between them, that's how you stop notes cluttering a\npassage-planning view.\n**Fetch Notes radius** controls how far around the chart center notes are\nretrieved from the server (a fresh fetch is triggered once the center moves\nmore than half that distance), and **Notes fetch filter** narrows what comes\nback. The remaining two concern groups: **Edit Group Names** makes a note's\ngroup editable in the note editor, and **Position Group Note** asks you to\nplace a new group note on the chart rather than adding it without a position.\n"},{"id":"overlays","raw":"---\nid: overlays\ntitle: Overlays\ncategory: Charts\n---\n\nOverlays were Freeboard's way of laying a WMS or WMTS layer — typically weather radar\nor satellite imagery — over the chart, from an **Overlays** panel of their own. They\nno longer exist as a separate feature: everything an Overlay did, a chart now does,\nso Overlays have been folded into the **Chart list**.\n\n## What happened to my Overlays\n\nNothing you need to act on. Any Overlay you had set up appears in the Chart list as a\nchart, keeping its name, layer, opacity, zoom range and refresh interval, and stays\nshown or hidden as it was. It starts at the top of the chart stack — where an Overlay\nalways drew — and can be re-ordered from there like any other chart.\n\nBehind the scenes, Freeboard converts each Overlay into an ordinary chart source the\nfirst time it loads with a login that can write to the server. Until then — a\nread-only session, or a server whose resources-provider has no `charts` collection —\nthe Overlay is simply shown *as* a chart, and the conversion happens on a later load.\nEither way the chart keeps the same identity, so nothing you set on it — opacity,\norder, a playback loop — is lost.\n\nThe **Overlays** menu item remains for now as a signpost: choosing it tells you where\nyour overlays went.\n\n## What a former Overlay can do\n\nIt is a chart like any other in the list — **Properties**, **Opacity**, **Remove**\n(which deletes it from the server) — and gains what charts have:\n\n- **Auto-refresh** — the interval set on the Overlay carries across and can be changed\n under Properties. See **Auto-refreshing Charts**.\n- **The Time palette** — a WMS or WMTS source with a time dimension gets the clock\n action and the full scrub / loop / play control in place of the Overlay's time\n slider. See **Time-varying Charts**.\n- **Image Adjustment**, **Minimum Zoom Level**, resource groups and the ordinary\n chart order.\n\n## Adding a new radar or satellite layer\n\nUse **Add Chart Source** in the Chart list (WMS or WMTS), pick the layer, and set a\nrefresh interval under Properties if the source updates regularly.\n"},{"id":"own-vessel-display","raw":"---\nid: own-vessel-display\ntitle: Own Vessel Display\ncategory: AIS & Vessels\n---\n\n![Fig 1. Your boat on the chart among nearby AIS traffic, with its heading and course lines drawn](own-vessel-display-1.jpg)\n\nYour boat is drawn on the chart at the position your Signal K server reports, turned to\npoint the way you are heading. Around it Freeboard can draw the lines and circles that\nturn a dot on a map into a picture of where you are going.\n\n## The vessel icon\n\nThe icon sits at your reported position and rotates to your heading, so a glance tells\nyou both where you are and which way you are pointing. It is drawn above everything else\non the chart, so route lines and chart detail never hide it.\n\n**Settings → Vessels → Vessel Icon Size** scales it. Larger is easier to pick out on a\nhelm tablet in daylight; smaller keeps more chart visible around you at close zoom.\n\nWant a different boat entirely? A symbol provider can replace the icon with your own\nartwork — see **Custom Map Symbols**.\n\n## Lines drawn with your vessel\n\nEach of these can be turned on or off in **Settings → Vessels**, and each appears only\nwhen the underlying data is available:\n\n- **Heading line** — where the bow is pointing. **Heading Line Length** sets how far it\n reaches: a fixed distance in nautical miles, or **Default**, which scales the line from\n your speed and the chart scale so it always means roughly the same thing.\n- **COG line** — where you will actually end up, projected from your course and speed\n over ground. **COG Line Length** sets the projection time, so the line answers \"where\n will I be in N minutes?\" With a cross-current, the gap between this line and the\n heading line is your set and drift, drawn to scale.\n- **Wind vectors** — true wind direction and apparent wind angle, when the boat reports\n wind data.\n- **Laylines** — when navigating to a destination, the tacking angles that reach it.\n- **Range circles** — equidistant rings centered on the boat, for judging distance off\n at a glance. **Number of Range Circles** sets how many; the spacing adapts to the chart\n scale and is labeled next to the boat. **Minimum Zoom Level** stops them cluttering the\n chart when zoomed out.\n\n## When position data stops\n\n![Fig 2. Position data has stopped arriving — the boat dims and a red question mark marks the last known fix](own-vessel-display-2.jpg)\n\nIf nothing updates your position for **30 seconds**, the boat icon dims and a red\nquestion mark appears over it. The icon stays where it last was — that position is still\nthe best information available, but it is no longer current, and the marker says so.\n\nThis matters because the ways position data stops are quiet ones. A dropped Wi-Fi link\noften does not close the connection cleanly, so the boat can sit on the chart looking\nauthoritative for minutes. It also covers the case where the server is healthy and\ntalking but its position source has failed: everything else keeps updating while the one\nnumber you steer by does not.\n\nThe marker clears as soon as position data resumes.\n\nIt is not shown in Fixed Location Mode, where position updates are not expected.\n\n## Fixed Location Mode\n\nRunning Freeboard somewhere that does not move — a shore station, a clubhouse, a desk —\nmakes a boat icon misleading. **Settings → Vessels → Fixed Location Mode** switches the\nicon to a fixed-location marker and lets you enter the latitude and longitude to place it\nat. Heading rotation is dropped, since a building does not have one.\n\n## Related\n\n- **Center & Follow Vessel** — keeping the boat on screen as you move.\n- **Vessel Tracks** — recording and showing where you have been.\n- **Custom Map Symbols** — replacing the boat icon with your own artwork.\n"},{"id":"radar-overlay","raw":"---\nid: radar-overlay\ntitle: Radar Overlay\ncategory: Radar\n---\n\n![Fig 1. Radar returns painted over the chart, centred on the vessel](radar-overlay-1.jpg)\n\nOverlays live radar returns on the chart, centred on your vessel and rotated\nto its heading, using the Signal K Radar API. Returns are drawn spoke by spoke\nas the scanner turns, on top of the chart layers.\n\n**What it needs.** Server side, the radar must be reaching Signal K — that\nmeans the **signalk-container** and **@marineyachtradar/signalk-plugin**\n(MaYaRa) plugins installed and running. The radar controls only appear once the\nserver reports the Radar API _and_ at least one radar has been discovered; with\nno radar found, nothing radar-related is shown. Display side, the browser must\nsupport WebGL — on a device without it, the radar button reports that rather\nthan opening the panel.\n\n**Turning it on.** A radar button appears on the toolbar, and **Radar Overlay**\nin the map's _More actions_ menu. Either one connects to the radar and opens\nthe **radar control panel**. If you use radar often, **Settings → Display →\nAction Button → \"Radar Overlay\"** promotes it to the main floating action\nbutton.\n\n**The control panel** shows the selected radar's name and brand, and:\n\n- **Off / On** — the connection to the radar. Switching Off drops the spoke\n stream and clears the overlay while leaving the panel open.\n- **Opacity** — how strongly the returns paint over the chart underneath.\n- **Radar controls** — range, gain, sea clutter, rain and whatever else your\n radar exposes. Freeboard doesn't ship a fixed list of knobs: it builds these\n from the control definitions the radar itself advertises, so you see exactly\n what your unit supports. Controls with a fixed set of values become\n drop-downs, numeric ones a value field, and anything the radar reports as\n read-only stays read-only. Changes are sent to the radar immediately, and\n changes made elsewhere — at the MFD, or from another device — appear here\n live. All controls are disabled while the overlay is Off.\n\n**More than one radar.** Pick the one to use in **Settings → Radar → Radar\nDevices**, with **REFRESH** to re-query the server for the current list. The\nselection is locked while the overlay is running — switch it Off first. Your\nchoice is remembered for next time; if that radar is no longer present, the\nfirst one found is used.\n\n**Server versions.** Both Radar API 3.4.0 and earlier servers are supported.\nFreeboard detects the version when it discovers the radars and talks to the\nright endpoint automatically — there is nothing to configure.\n\nIf the radar stream fails, Freeboard reports the error and switches the overlay\noff.\n"},{"id":"route-planning","raw":"---\nid: route-planning\ntitle: Route Planning\ncategory: Routes\n---\n\n![Fig 1. Tapping a route brings up its actions — Modify, Start, Points, Notes, Info, Delete](route-planning-1.jpg)\n\nDraw a route on the chart, review and adjust it, then save it for later —\nor skip saving and just use it right away.\n\n**To draw a route**, open the edit menu (pencil icon) and choose **Draw\nRoute**. Tap each point along your intended route. A small editing card\nshows the running distance and a **Finish** button — tap **Finish** (or\npress Enter) when the route is complete, or **Cancel** to discard it.\nPlaced a point in the wrong spot? **Undo** (the card's Undo button, or\nCtrl-Z / ⌘-Z) removes the last point, again and again back to the first.\nYour new route appears on the chart in amber to show it hasn't been saved\nyet.\n\n**Unsaved and saved routes work the same way.** Tap any route on the\nchart — freshly drawn or previously saved — to bring up its actions:\n**Modify** to reshape it, **Points** to reorder its point list, **Hide**\nto take it off the chart, **Delete** to remove it, and more. An unsaved\nroute also offers **Save** right there, so turning a quick sketch into a\npermanent route is one tap. Saving keeps the route right where it is on the\nchart — it won't disappear on you.\n\n![Fig 2. The editing card while modifying a route — running distance, the active leg, and Undo / Save / Cancel in one place](route-planning-2.jpg)\n\n**Modifying a route** uses the same editing card as drawing, showing the\nrunning distance and the leg you're working on. Drag a point to move it,\ndrag a leg to add a point, or remove a point with Ctrl-Click or a\npress-and-hold. Both delete gestures work the same with a mouse, a\ntouchscreen or a pen; a press that turns into a drag moves the point instead\nof deleting it. To **extend the route**, click open water past its end: the\nroute grows by a new end point, the same way you drew it, without leaving\nModify.\n**Undo** steps back through your edits one at a time. The card's commit\naction saves your changes — labelled **Save** for a route that isn't stored\nyet, **Finish** for one that is — and **Cancel** (or the ✕) discards them,\nwith no separate \"save changes?\" prompt to answer.\n\n**Reordering points** works on any route, saved or not. Open **Points**\nfrom the route's actions to drag its waypoints into a new order; on an\nunsaved draft the new order is held with the rest of your draft until you\nSave.\n\n**Hiding a route** takes it off the chart without deleting it — the same as\nunchecking **Show on Map** in the Routes list, but reachable straight from\nthe route on the chart. The route stays in your Routes list, ready to show\nagain, and the list's checkbox stays in step. (A route that is currently\nactive can't be hidden.)\n\nThe route's info panel offers the same actions — **Save**, **Edit**,\n**Delete** — plus the point list, distance, and a description you can write\nfor the route. A route that hasn't been saved yet is labelled **(unsaved)**\nso you always know its status at a glance.\n\nIf you have an extension plugin installed that helps you plan routes — an\nauto-router that fits a route around land, for instance — it can work with\nyour route while it's still a draft, before you decide to save it.\n"},{"id":"screen-widgets","raw":"---\nid: screen-widgets\ntitle: Screen Widgets\ncategory: Extensions\n---\n\n![Fig 1. Instrument and tide widgets placed around the edges of the chart](screen-widgets-1.jpg)\n\nIf you've installed a Signal K server plugin that provides a screen widget,\nyou can place it directly onto the chart screen — a compact readout like a\nspeed dial, a wind gauge, or anything else the plugin offers. Two examples\nare [signalk-instrument-widgets](https://www.npmjs.com/package/signalk-instrument-widgets),\na set of boat instrument gauges, and\n[signalk-basic-tide-widgets](https://www.npmjs.com/package/signalk-basic-tide-widgets),\nwhich shows upcoming tides.\n\nWidgets sit in the corners of the screen and at the centre of the top and\nbottom edges *(the top-left corner is reserved for Freeboard's own menu)*.\n\n**To add a widget**, press and hold an empty spot in one of these areas for\nabout a second and a half (or right-click there if you're using a mouse and\nkeyboard). A short list of the widgets that fit there appears — choose one\nand it's added to your screen. As you place more, widgets stack neatly from\nthe edge inward.\n\n**To change or remove a widget**, press and hold the widget itself. This\nopens its settings, where you can adjust it (if it has any options) or\nremove it from the screen.\n\nYour layout is remembered, so the widgets you place are still there the next\ntime you open Freeboard-SK.\n\nSome widgets can also narrow down what's shown elsewhere on the chart — for\nexample, showing only certain waypoints. When a widget does this, a small\nchip appears near the top of the screen describing the filter; tap its **×**\nto clear it and show everything again.\n\nIf you haven't installed any plugins that provide screen widgets, none of\nthis is visible — Freeboard looks and works exactly as it always has.\n"},{"id":"temporal-charts","raw":"---\nid: temporal-charts\ntitle: Time-varying Charts\ncategory: Charts\n---\n\n![Fig 1. NEXRAD weather radar scrubbed back to an earlier frame, with the Time palette open](temporal-charts-1.jpg)\n\nA weather radar, satellite or nowcast chart is not one picture but a run of them,\none every few minutes. Where a chart provider offers those earlier frames, Freeboard\nlets you scrub back through them, step frame by frame, and play the run as a loop —\nthe way you would on a weather app — without the provider having to publish a\nseparate chart for every frame.\n\n## Which charts\n\nA chart is time-varying when its provider says so. Charts served by a plugin declare\nit on the chart resource (see below). A **WMS or WMTS** chart you add yourself\nbecomes time-varying automatically when the service advertises a time dimension for\nthe layer you pick — either in the add-chart dialog or later under **Chart\nProperties**. An Overlay from an earlier Freeboard that had a time slider appears\nin the Chart list as a chart, with this control in its place (see **Overlays**).\nVector charts (Mapbox-style sources, S-57 ENCs) are never time-varying.\n\nA time-varying chart shows a **clock** action on its row in the Chart list,\nalongside Opacity, Image Adjustment and Minimum Zoom Level. The action is available\nwhile the chart is displayed.\n\n![Fig 2. The clock action on a chart's row opens the Time palette; the row notes the frame being shown](temporal-charts-2.jpg)\n\n## The Time palette\n\nThe palette is small and stays open beside the Chart list, so you can keep the map\nin view while you scrub. It shows the chart's frame cadence (\"every 5 min\"), the\ninstant currently on the map, and a bar spanning the last 12 hours of frames:\n\n- **Scrub** — drag the blue playhead on the upper lane of the bar. The map keeps the\n frame it has until the new one has loaded, so scrubbing never blanks the chart,\n even on a slow connection.\n- **‹ ›** — step back or forward one frame. Stepping past either end of the bar moves\n the bar along, so the whole archive is reachable.\n- **Loop** — the two amber dots on the lower lane bracket the frames **Play** cycles\n through; the shaded band between them is the loop, and its range is written out\n beside the speed. It starts as the last hour up to the newest frame. Drag a dot to\n change either end; the two cannot cross.\n- **Play / Pause** — cycle the loop at the chosen **Speed** (Slow, Medium, Fast or\n X-fast). Scrubbing, stepping or NOW stops playback.\n- **NOW** — return to the newest frame: the live frame for a source that serves one,\n or, for an archive-only source (IEM's NEXRAD history, for instance), the newest\n frame it holds — which the chart then keeps up with as new frames are added.\n\nDates and times are shown in your local time.\n\nScrubbing back in time is something you do with the palette in view. **Closing the\npalette returns the chart to its newest frame** — whatever you had scrubbed to is\ndiscarded, so a chart is never left drawing old weather with nothing on screen to\nsay so. While the palette is open, the frame you have selected stays exactly where\nyou put it: a chart that also auto-refreshes keeps its bar and loop current as new\nframes arrive, but never moves your selection.\n\n## What the chart list shows\n\nWhile a chart is showing a past frame its row carries a small **\"at …\"** note with\nthe frame's time, so a ticked chart drawing old weather says why. The note clears\nwhen the chart is back on its newest frame.\n\n## What is remembered\n\n- The **frame you are looking at is not remembered** — every time-varying chart\n starts on its newest frame when Freeboard loads, and returns to it when the\n palette closes.\n- The **loop range is remembered per chart**, measured back from the newest frame,\n so a chart you loop over \"the last three hours\" opens on the last three hours\n next time too.\n- The **palette's position** is remembered, like the Image Adjustment palette.\n\n## With auto-refresh\n\nA chart that also auto-refreshes (see **Auto-refreshing Charts**) stops refreshing\nwhile it is showing a past frame — a historical frame does not change — and picks up\nagain when it returns to its newest frame. For an archive-only source that keeps\nadding frames, \"newest\" moves on with them: on each refresh the chart is drawn from\nthe newest frame the source now holds. A **WMS or WMTS chart you added yourself**\nkeeps up the same way.\n\n## For chart-provider plugins\n\nAdd a **`time`** block to the chart resource. `current: true` says the source serves\na live frame (so NOW is offered); `from` / `to` / `step` (milliseconds) or an\nexplicit `values` list describe the frames on offer. For **tile layers and TileJSON**\nsources, `time.url` is the tile URL template with a `{time}` placeholder that\nFreeboard fills with the ISO 8601 instant; the plain `url` stays the live frame.\n**WMS and WMTS** sources need no template — the instant goes out as the standard\n`TIME` parameter / `Time` dimension. Instants are requested exactly as the timeline\ndescribes them (`from` plus whole steps), so a service that only serves those\ninstants is safe. The full convention is the *Time-varying charts* section of the\nPlotter Extensions API documentation in the Freeboard-SK repository, which also\nlets an extension plugin drive the same control.\n"},{"id":"track-history","raw":"---\nid: track-history\ntitle: Track History & Playback\ncategory: Tracks\n---\n\n![Fig 1. Track history for your own vessel and an AIS vessel, played back with ghost boats](track-history-1.jpg)\n\nSee everywhere a vessel has been, not just its last few hours: your own\nboat's past passages, or where another boat has been over the last month.\nThen play it back to watch the boats move along their tracks together.\n\nTrack history needs a Signal K server with the Track API (server 2.33 or\nlater with a track provider, such as the Tracks plugin). Without one, the\nhistory button doesn't appear.\n\n## Showing a vessel's history\n\n![Fig 2. The history button in a vessel's popover](track-history-2.jpg)\n\nTap a vessel on the chart, your own or an AIS vessel, and use the **history**\nbutton in its popover. In the AIS vessel list the same button is labelled\n**HISTORY**. The vessel's whole recorded track is drawn as a solid, muted\nline behind its usual trail, and the **Track history** window opens.\n\nThe button is greyed out for a vessel with nothing recorded. How far back a\ntrack goes depends on your server: the Tracks plugin keeps your own track\nindefinitely and other vessels' tracks for 30 days.\n\nThe history follows the chart. Pan somewhere else and the passages there are\ndrawn; zoom in and they are redrawn in more detail. If a vessel's track is\nsomewhere else, see **Finding a track that's out of view** below.\n\n## The Track history window\n\n![Fig 3. The Track history window](track-history-3.jpg)\n\n- **Vessels** lists every vessel whose history is shown. Zoom the chart to one\n with its zoom-to-track button, remove one with its ×, or close the window to\n hide them all. Add more from their popovers.\n- **Range** chooses how far back to look: **7 days**, **30 days** or **All**,\n or drag the two handles under the bar to pick any stretch of time. The same\n range applies to every vessel shown.\n\nThe window can be dragged anywhere on the screen, and it reopens where you\nleft it. History is shown for the current session only.\n\nTo save a vessel's history to a GPX file, see **Export to GPX**.\n\n## Finding a track that's out of view\n\nHistory is drawn for the part of the chart you're looking at, so a vessel's\ntrack can be shown and still be off-screen: another boat's passage last\nmonth, or your own trip from last season.\n\n![Fig 4. Zoom to a vessel's track from the Vessels list](track-history-4.jpg)\n\nEach vessel in the **Vessels** list has a **zoom to track** button beside its\nname. It moves the chart to fit where that vessel's track lies in the selected\n**Range**, so after switching to **7 days** it zooms to the last week's\npassages, not the whole record. The button is greyed out when the range holds\nnothing for that vessel.\n\nWhen a track you're showing is out of view, the line at the bottom of the\nwindow says so: **Recorded outside this area**, or which vessels are out of\nview beside the ones you can see. It also offers **Show**, which fits the chart\nto all of them at once. When the range holds no track at all, it says **No\nrecorded track in this time range** instead.\n\n![Fig 5. The chart fitted to a recorded passage](track-history-5.jpg)\n\nThe chart only moves when you ask. Zooming to a track turns off **follow\nvessel**, so the chart stays on the track instead of jumping back to your boat.\n\n## Playback\n\nThe **Playback** box replays the history. Drag the round playhead on the bar\nback in time, or step through with **‹** and **›**. **▶** plays through the\nselected range at the chosen **Speed** and starts again from the beginning\nwhen it reaches the end.\n\nAt any time other than now, each vessel shown is drawn as a faded \"ghost\"\nwhere it was at that moment, pointed along its course, so you can see where\ntwo boats were relative to each other. A vessel with nothing recorded at that\ntime has no ghost. **NOW** puts the ghosts away and returns to the present.\n\n## When was it there?\n\nTap a history line to see when that stretch was recorded, **From** and\n**To**, how long it lasted, and when the vessel was at the spot you tapped\n(**Here at**). The same works on your own trail and on other vessels' tracks;\nsee **Vessel Tracks**.\n"},{"id":"unit-preferences","raw":"---\nid: unit-preferences\ntitle: Units & Value Display\ncategory: Display\n---\n\n![Fig 1. The Units settings panel, with Use Server Unit Preferences turned on](unit-preferences-1.jpg)\n\nFreeboard shows every numeric value in the units you prefer. You choose them in\n**Settings** on the **Units** tab, under **UNITS & VALUES**.\n\n## Choosing your own units\n\nFive settings, each covering one kind of value:\n\n- **Distance units** - Kilometres or Nautical Miles. Ranges, route legs, distance to\n the next waypoint.\n- **Depth units** - metres, feet or fathoms.\n- **Length units** - metres or feet. Vessel dimensions and other short lengths, kept\n separate from Distance so you can read a boat's length in feet while navigating in\n nautical miles.\n- **Speed units** - knots, m/sec, km/h or mph.\n- **Temperature units** - Celsius or Fahrenheit.\n\nA change applies straight away, with no restart.\n\nThe depth setting reaches further than the instrument readouts: it also sets the unit\nS-57 vector charts label their soundings in, so changing it redraws the chart as well.\nSounder depth and charted depth always agree.\n\n## Taking your units from the Signal K server\n\nThe server keeps its own unit preferences, set per user in **Server Admin** under\n**Server &rarr; Configuration &rarr; Settings &rarr; Unit Preferences**. Tick\n**Use Server Unit Preferences** and Freeboard follows those instead: the five\nselections above grey out and take their values from the server.\n\nThe point of this is to set your units once, on the server, and have every app that\nhonours them agree - Freeboard included. Change a unit on the server and Freeboard\npicks it up; there is nothing to update here.\n\nThe checkbox is only available if your server actually publishes unit preferences. On\na server without them it stays greyed out and your own selections apply.\n\nIf the server asks for a unit Freeboard doesn't offer, Freeboard keeps your existing\nchoice for that category rather than showing a value it cannot convert.\n\n## When one value needs a different unit\n\nA single unit per category isn't always what you want. Wind speed in metres per second\nalongside boat speed in knots is the common case, and normal practice in much of\nEurope.\n\nThe server handles this by publishing a unit against one specific data path rather than\nagainst the whole category. Freeboard honours that for **wind speed**: with **Use\nServer Unit Preferences** on, the true and apparent wind speeds in a vessel popover\ndisplay in the server's wind-speed unit, while boat speed stays in your Speed unit.\n\nThere is nothing to set in Freeboard. Configure the override on the server and it\nappears; where the server publishes no override, wind speed falls back to the Speed\nunit like everything else. Turning **Use Server Unit Preferences** off drops the\noverrides along with the rest of the server's preferences.\n\nThe true-wind value Freeboard reads is the one you selected under **Preferred Paths**,\nso if you have picked a particular true-wind source the override follows that choice.\n\nWind speed is currently the only value that uses a per-path unit.\n\n## Also on this tab\n\nTwo further settings share the **UNITS & VALUES** panel because they change how values\nare shown rather than what they are:\n\n- **Position display format** - how latitude and longitude are written, from decimal\n degrees through to degrees, minutes and seconds.\n- **Prefer True / Magnetic values** - which of the two Freeboard uses for paths you\n have not pinned under **Preferred Paths**.\n"},{"id":"vessel-tracks","raw":"---\nid: vessel-tracks\ntitle: Vessel Tracks\ncategory: Tracks\n---\n\n![Fig 1. A vessel's popover: its track button, and the history button beside it](vessel-tracks-1.jpg)\n\nSee where your own boat has been, and where other AIS vessels have been, as a\ntrack (trail) drawn on the chart.\n\n## Your own track\n\nTurn on **Display Vessel Track** under **Settings → Vessels** to draw your\nboat's recent track behind it. It is on by default.\n\n**Track source** chooses where that track comes from:\n\n- **Auto** (the default) uses the track your Signal K server has recorded\n whenever the server can supply one. The track then survives restarts and is\n the same on every device you open Freeboard on. When the server has no\n recorded track, the track is kept on this device instead. The hint under the\n selector shows which one is in use.\n- **Server** always asks the server. It is unavailable when the server cannot\n supply a track, and the hint says what is needed: a Track API (v2) provider,\n such as the Tracks plugin.\n- **This device** keeps the track in this browser only, recorded while\n Freeboard is open. Each device then shows its own track.\n\nWhen the track comes from the server, **Length** sets how many hours of it to\nshow (24 hours by default). The three **Resolution** settings trade detail for\nspeed. They set how closely spaced the points are for the last hour, for 1 to\n24 hours ago, and for anything older.\n\nIn the chart's context menu (right-click, or long-press on a touch screen),\n**Refresh Trail** reloads a server track. For a track kept on this device, the\nsame item reads **Clear Trail** and deletes it. **Trail to Route** turns the\ntrack into a route.\n\n![Fig 2. Tapping the trail shows when you were there](vessel-tracks-2.jpg)\n\nTap your trail to see when that stretch was recorded, **From** and **To**,\nhow long it lasted, and when you were at the spot you tapped (**Here at**).\nTapping the boat itself still opens its usual popover.\n\n## Other vessels' tracks\n\n![Fig 3. Other Vessels settings](vessel-tracks-3.jpg)\n\n**To show every vessel's track at once**, turn on **Show all tracks** under\n**Settings → Vessels → Other Vessels**. The last two hours of each track are\ndrawn for the vessels on screen, and they follow the chart as you pan to a\nnew area. These tracks are drawn only when zoomed in (zoom level 10 or\ncloser), so a crowded chart zoomed far out stays readable.\n\n**To follow just one or two vessels** instead of cluttering the chart with\neveryone's track, leave that setting off and pick vessels individually. Tap a\nvessel on the chart to open its popover, or find it in the AIS vessel list.\nThen use the **track** button (labelled **TRACK** in the list) to turn its\ntrack on or off. A picked vessel's track shows at any zoom, and\n**Picked vessel track length** sets how far back it reaches (12 hours by\ndefault). Your picks apply for the current session only; they aren't saved\nbetween visits.\n\nThe per-vessel picker and its length setting are only available while\n**Show all tracks** is off. With it on, every vessel is already shown, so\nthere's nothing to pick.\n\nTap another vessel's track to see when it was recorded and when the vessel\nwas at that spot, just as for your own trail.\n\nVessels hidden by **Hide Moored** or **Hide Anchored** don't have their tracks\ndrawn either.\n\nTo see a vessel's whole recorded track, beyond these recent hours, see\n**Track History & Playback**. To save a track to a GPX file, see\n**Export to GPX**.\n\n## Where the tracks come from\n\nRecorded tracks come from your Signal K server's Track API (server 2.33 and\nlater, with a track provider such as the Tracks plugin). Freeboard can still\nread tracks from the older track interface on older servers and plugins. When\nit does, a **Vessel Tracks** notice at start says that support for the older\ninterface will be removed in a future release, and what is needed instead.\nTick **Don't show this message again** to stop it appearing on that device.\n\nWithout any server track source, your own track is kept on this device, and\nother vessels show only the short track Freeboard gathers while it is open.\n"},{"id":"weather-overlays","raw":"---\nid: weather-overlays\ntitle: Wind, Currents & Tides\ncategory: Weather\n---\n\n![Fig 1. Wind and ocean current overlays on the chart](weather-overlays-1.jpg)\n\nGrid overlays sample live weather and current data across the visible chart\narea, each toggled independently from the **Weather** panel (opened from the\nresources list):\n\n- **Wind** — \"Enable wind layer\" toggle. Requires a Signal K Weather Provider\n plugin installed on the server. Freeboard samples a 5×4 grid of points across\n the current view and refreshes them shortly after you pan or zoom. Each point\n renders as a **wind barb** by default (half feather = 5 kn, full = 10 kn,\n pennant = 50 kn, staff pointing into the wind) or, with the\n **Display → Weather → \"Wind indicator\"** setting set to Arrow, an arrow\n pointing where the wind flows to. Either glyph always shows the sampled wind\n speed as a label. The glyph choice is shared with the wind barbs shown on\n weather-station targets — switching the Wind indicator setting changes both\n at once. The arrow glyph can be replaced with custom artwork through a symbol\n provider plugin by publishing a symbol with the well-known id\n `windIndicator-arrow`.\n\n- **Ocean Currents** — \"Enable ocean currents layer\" toggle. No server plugin\n needed — Freeboard queries the Open-Meteo Marine API directly. It samples a\n denser 10×8 grid; each arrow points in the current's flow direction, is\n colour-graded from blue (slow) to red (fast), sized by speed, and labelled\n with the current's velocity in knots.\n\n![Fig 2. The Tidal Currents section of the Weather panel, with its 24-hour time bar, and the current overlay on the chart](weather-overlays-2.jpg)\n\n- **Tidal Currents** — appears in the Weather panel as **\"Enable tidal\n currents layer\"**, but only when a `signalk-tidal-currents` plugin is\n installed on the server; otherwise this option doesn't show up at all.\n Arrows are colour-graded and labelled with speed, the same as Ocean\n Currents. What sets it apart is a **24-hour time bar** underneath the\n toggle: drag it, click anywhere on it, or use the step buttons (±1h, ±6h)\n to see how currents shift through the day, with **Play** to animate\n through time and **Now** to jump back to the current moment.\n\nBoth current arrows can also be replaced with custom artwork through a symbol\nprovider plugin, each under its own well-known id — `oceanCurrentIndicator-arrow`\nand `tidalCurrentIndicator-arrow` — so the two overlays stay distinguishable\nwhen shown together. Because Freeboard tints these arrows to encode speed, draw\na replacement with a plain white fill; a pre-coloured glyph comes out muddy.\n\nAll three overlays refresh automatically as you pan or zoom, and can be\nshown together or independently.\n"},{"id":"weather-station-wind-barbs","raw":"---\nid: weather-station-wind-barbs\ntitle: Weather Station Wind Barbs\ncategory: Weather\n---\n\n![Fig 1. A weather-station target rendered as a wind barb](weather-station-wind-barbs-1.jpg)\n\nWeather-station (`meteo`) targets — AIS Met/Hydro buoys and plugin-published shore\nstations such as signalk-viva — show wind as a standard **wind barb**: half\nfeather = 5 kn, full = 10 kn, pennant = 50 kn. The barb is picked from the\nstation's reported wind speed in 5-knot buckets (5–75 kn, clamped) and its staff\nrotates to point into the reported wind direction. Below 5 kn, or when no wind is\nreported, the target falls back to the plain windsock icon, unrotated.\n\nThe wind speed is always shown as a label next to the glyph, in your configured\nwind-speed units.\n\nAll 15 barb glyphs ship with Freeboard, so this works with no setup. Any bucket\ncan be replaced with custom artwork through a symbol provider plugin by\npublishing a symbol whose id matches the well-known bucket id —\n`real-weatherStation-<kts>` for real stations, `virtual-weatherStation-<kts>` for\nvirtual ones, where `<kts>` is one of the buckets 5–75 (e.g.\n`real-weatherStation-25`).\n\nA **Display → Weather → \"Wind indicator\"** setting can switch the glyph to a\nplain arrow instead of a barb for every weather-station target on the chart.\n"}],"ledger":[{"feature":"own-vessel-display","pr":693,"kind":"enhanced","since":"v3.1.0","date":"2026-08-08","title":"feat(vessels): flag own vessel when its position goes stale"},{"feature":"own-vessel-display","pr":394,"kind":"enhanced","since":"v3.0.0","date":"2026-06-25","title":"Vessel icon can be replaced with a custom symbol"},{"feature":"own-vessel-display","kind":"enhanced","since":"v2.17.0","date":"2025-08-18","title":"Range circles around the vessel"},{"feature":"own-vessel-display","kind":"enhanced","since":"v2.8.0","date":"2024-05-20","title":"Laylines when navigating to a destination"},{"feature":"own-vessel-display","kind":"enhanced","since":"v2.2.0","date":"2023-08-05","title":"Fixed Location Mode for shore-based installations"},{"feature":"own-vessel-display","kind":"new","since":"v0.0.2","date":"2015-05-01","title":"Vessel shown on the chart at its reported position"},{"feature":"notes","pr":667,"kind":"enhanced","since":"v3.1.0","date":"2026-08-01","title":"feat(notes): move note details option to the Notes settings group"},{"feature":"weather-station-wind-barbs","pr":495,"kind":"new","since":"v3.0.0","date":"2026-07-10","title":"feat(map): render meteo targets as wind barbs"},{"feature":"weather-overlays","pr":413,"kind":"new","since":"v3.0.0","date":"2026-07-03","title":"feat(weather): add wind and ocean current overlays"},{"feature":"weather-overlays","pr":520,"kind":"enhanced","since":"v3.0.0","date":"2026-07-14","title":"feat(weather): unify wind indicator rendering across overlays"},{"feature":"weather-station-wind-barbs","pr":520,"kind":"enhanced","since":"v3.0.0","date":"2026-07-14","title":"feat(weather): unify wind indicator rendering across overlays"},{"feature":null,"pr":520,"kind":"skip","reason":"internal UI fix — settings dialog fixed sizing/scrolling, not a distinct feature"},{"feature":"custom-map-symbols","pr":394,"kind":"new","since":"v3.0.0","date":"2026-06-25","title":"feat(charts): Custom map symbols via symbol providers"},{"feature":"screen-widgets","pr":395,"kind":"new","since":"v3.0.0","date":"2026-06-26","title":"feat: Add plotter extension host: widgets, panels, buttons, resource filters & background runtimes"},{"feature":"extension-panels","pr":395,"kind":"new","since":"v3.0.0","date":"2026-06-26","title":"feat: Add plotter extension host: widgets, panels, buttons, resource filters & background runtimes"},{"feature":"route-planning","pr":432,"kind":"enhanced","since":"v3.0.0","date":"2026-06-29","title":"feat(routes): live route editing — editable drafts + plotter-extension route API"},{"feature":null,"pr":432,"kind":"skip","reason":"adds the routes capability to the Plotter Extensions API for extension plugins (e.g. auto-routing); no direct end-user surface in Freeboard itself"},{"feature":"vessel-tracks","pr":448,"kind":"enhanced","since":"v3.0.0","date":"2026-07-02","title":"feat(map): add per-vessel AIS track display"},{"feature":"cursor-eta","pr":455,"kind":"new","since":"v3.0.0","date":"2026-07-03","title":"feat(map): show live bearing, distance and ETA at cursor"},{"feature":"cursor-eta","pr":636,"kind":"enhanced","since":"v3.1.0","date":"2026-07-27","title":"feat(map): support the cursor bearing/distance/ETA readout on touch devices"},{"feature":"buddy-list","pr":484,"kind":"enhanced","since":"v3.0.0","date":"2026-07-07","title":"feat(ais): add \"Buddies only\" option to the vessel filter"},{"feature":"chart-image-adjustment","pr":489,"kind":"new","since":"v3.0.0","date":"2026-07-07","title":"feat(charts): add brightness/contrast adjustment for raster image layers"},{"feature":"chart-image-adjustment","pr":497,"kind":"enhanced","since":"v3.0.0","date":"2026-07-10","title":"feat(charts): make image adjustment a modeless draggable palette"},{"feature":"chart-image-adjustment","pr":510,"kind":"enhanced","since":"v3.0.0","date":"2026-07-12","title":"feat(charts): trim image adjustment palette and remember its position"},{"feature":"weather-overlays","pr":491,"kind":"enhanced","since":"v3.0.0","date":"2026-07-11","title":"feat(weather): add tidal currents overlay with time-stepping controls"},{"feature":"weather-overlays","pr":523,"kind":"enhanced","since":"v3.0.0","date":"2026-07-14","title":"feat(weather): make current-overlay arrows customizable symbols"},{"feature":"notes","pr":485,"kind":"enhanced","since":"v3.0.0","date":"2026-07-07","title":"feat(notes): size Note Details dialog to fit its content"},{"feature":"notes","pr":512,"kind":"enhanced","since":"v3.0.0","date":"2026-07-12","title":"feat(notes): add option to open note details on single click"},{"feature":"feature-browser","pr":528,"kind":"new","since":"v3.0.0","date":"2026-07-16","title":"feat(features): add a searchable \"What's New\" feature browser"},{"feature":"feature-browser","pr":530,"kind":"enhanced","since":"v3.0.0","date":"2026-07-17","title":"feat(features): replace forced onboarding modals with a passive What's New indicator"},{"feature":"feature-browser","pr":604,"kind":"enhanced","since":"v3.1.0","date":"2026-07-27","title":"feat(features): show a feature's newest changes above its instructions"},{"feature":"feature-browser","pr":657,"kind":"enhanced","since":"v3.1.0","date":"2026-07-31","title":"feat(ui): add \"What's New\" to the main menu"},{"feature":"chart-zoom-limits","kind":"new","since":"v2.1.0","date":"2023-07-06","title":"limit zoom to selected maps"},{"feature":"route-planning","pr":580,"kind":"enhanced","since":"v3.1.0","date":"2026-07-25","title":"feat(map): delete a route vertex with a long left-click, matching touch"},{"feature":"route-planning","pr":582,"kind":"enhanced","since":"v3.1.0","date":"2026-07-25","title":"feat(routes): unify the route draw and modify helper panels"},{"feature":"route-planning","pr":584,"kind":"enhanced","since":"v3.1.0","date":"2026-07-25","title":"feat(routes): add undo for route drawing and editing"},{"feature":"route-planning","pr":593,"kind":"enhanced","since":"v3.1.0","date":"2026-07-25","title":"feat(routes): add a Hide action to the route popover"},{"feature":"route-planning","pr":597,"kind":"enhanced","since":"v3.1.0","date":"2026-07-26","title":"feat(routes): allow reordering points on unsaved routes"},{"feature":"route-planning","pr":598,"kind":"enhanced","since":"v3.1.0","date":"2026-07-26","title":"feat(routes): extend a route by clicking open water in modify mode"},{"feature":"chart-list","kind":"new","since":"v0.0.2","date":"2016-07-05","title":"Add charts find and display"},{"feature":"chart-list","kind":"enhanced","since":"v1.14.0","date":"2020-12-19","title":"Chart List ordering (closes #88)"},{"feature":"chart-list","pr":177,"kind":"enhanced","since":"v2.11.2","date":"2024-08-30","title":"Toggle chart on boundary click"},{"feature":"chart-list","kind":"enhanced","since":"v2.19.6","date":"2026-01-07","title":"Editable chart properties"},{"feature":"chart-list","kind":"enhanced","since":"v2.22.0","date":"2026-04-30","title":"Add chart opacity control (closes #368)"},{"feature":"chart-list","pr":352,"kind":"enhanced","since":"v3.1.0","date":"2026-07-25","title":"feat(charts): add In view filter to chart list"},{"feature":"chart-list","pr":595,"kind":"enhanced","since":"v3.1.0","date":"2026-07-26","title":"feat(charts): order chart list to match the chosen layer order"},{"feature":"follow-vessel","kind":"new","since":"v0.0.2","date":"2015-05-18","title":"Added vesselUp and followVessel control buttons"},{"feature":"follow-vessel","kind":"enhanced","since":"v2.11.2","date":"2024-09-05","title":"Lock in Follow Vessel setting to remain in this mode when map is panned"},{"feature":"follow-vessel","kind":"enhanced","since":"v2.17.0","date":"2025-08-18","title":"Look ahead"},{"feature":"follow-vessel","pr":601,"kind":"enhanced","since":"v3.1.0","date":"2026-07-26","title":"feat(map): single center/follow button and pan to set follow offset"},{"feature":"follow-vessel","pr":616,"kind":"enhanced","since":"v3.1.0","date":"2026-07-27","title":"feat(map): offset the vessel abeam as well as ahead when following"},{"feature":"follow-vessel","pr":638,"kind":"enhanced","since":"v3.1.0","date":"2026-07-28","title":"fix(map): hold the follow-vessel offset fixed to the screen, not the boat"},{"feature":"follow-vessel","pr":642,"kind":"enhanced","since":"v3.1.0","date":"2026-07-29","title":"fix(map): keep the follow offset fixed on screen while zooming"},{"feature":"radar-overlay","kind":"new","since":"v2.19.7","date":"2026-01-18","title":"Initial RADAR API support"},{"feature":"radar-overlay","kind":"enhanced","since":"v2.24.0","date":"2026-06-19","title":"Radar control panel with overlay toggle, opacity and radar controls"},{"feature":"radar-overlay","pr":573,"kind":"enhanced","since":"v3.1.0","date":"2026-07-25","title":"feat(radar): Support Radar API 3.4.0 in the radar overlay (with pre-3.4.0 fallback)"},{"feature":"unit-preferences","kind":"new","since":"v1.8.0-rc1","date":"2018-09-12","title":"Unit selection for distance, depth, speed and temperature"},{"feature":"unit-preferences","kind":"enhanced","since":"v2.20.0","date":"2026-03-14","title":"Use unit preferences configured on the Signal K server"},{"feature":"unit-preferences","kind":"enhanced","since":"v2.21.0","date":"2026-04-01","title":"server unit preferences additional support"},{"feature":"unit-preferences","pr":447,"kind":"enhanced","since":"v3.0.0","date":"2026-07-02","title":"feat(units): honor per-path display units for wind speed"},{"feature":null,"pr":446,"kind":"skip","reason":"adds the optional path argument and display-unit cache to formatValueForDisplay; foundation only, with no user-facing change until #447 populates it"},{"feature":null,"pr":454,"kind":"skip","reason":"adds the charts capability to the Plotter Extensions API — display management of chart layers Freeboard already manages, for extension plugins; no direct end-user surface in Freeboard itself"},{"feature":null,"pr":505,"kind":"skip","reason":"implements the nightMode capability of the Plotter Extensions API for extension plugins; the user-facing Dark Mode / Auto-set Night Mode settings are unchanged"},{"feature":null,"pr":508,"kind":"skip","reason":"exposes the host API to an embedding application (e.g. KIP) over the plotter-extension bus; an integration topology change with no end-user surface in Freeboard itself"},{"feature":null,"pr":607,"kind":"skip","reason":"emits the map.view event of the Plotter Extensions API so extensions stop polling map.getView; no end-user surface"},{"feature":null,"pr":529,"kind":"skip","reason":"developer tooling — generates the GitHub Release body from the feature ledger; excluded from the npm package, never shipped to users"},{"feature":null,"pr":450,"kind":"skip","reason":"developer tooling — dev-tools/fsk-mcp lets an AI agent drive a running Freeboard; excluded from the npm package, never shipped to users"},{"feature":null,"pr":419,"kind":"skip","reason":"performance work — runs OpenLayers and change detection outside the Angular zone; no change to what the user can do"},{"feature":null,"pr":420,"kind":"skip","reason":"performance work — debounces config saves and guards dark-mode updates; no change to what the user can do"},{"feature":null,"kind":"skip","date":"2026-06-05","title":"feat(charts): honor chart tileSize for raster tile sources","reason":"corrects the rendering scale of raster charts whose tiles are not 256px; a correctness fix despite the feat prefix, with nothing new for the user to do"},{"feature":null,"kind":"skip","date":"2026-05-23","title":"perf(app): lazy-load dialog components on demand","reason":"performance work — no change to what the user can do"},{"feature":null,"kind":"skip","date":"2026-05-23","title":"perf(s57): cache derived text-style config across features","reason":"performance work — no change to what the user can do"},{"feature":null,"kind":"skip","date":"2026-04-04","title":"perf: defer S57 chart symbols loading until first use","reason":"performance work — no change to what the user can do"},{"feature":"chart-list","pr":680,"kind":"enhanced","since":"v3.1.0","date":"2026-08-08","title":"feat(charts): re-order charts from the chart list itself"},{"feature":"chart-zoom-limits","pr":679,"kind":"enhanced","since":"v3.1.0","date":"2026-08-08","title":"feat(charts): add a per-chart minimum zoom level"},{"feature":"follow-vessel","pr":726,"kind":"enhanced","since":"v3.2.0-beta.0","date":"2026-09-02","title":"feat(map): resume follow mode after a configurable idle period"},{"feature":"chart-auto-refresh","pr":767,"kind":"new","since":"v3.2.0-beta.2","date":"2026-09-17","title":"feat(charts): auto-refresh time-varying raster charts (radar/satellite)"},{"feature":"temporal-charts","pr":775,"kind":"new","since":"v3.2.0-beta.2","date":"2026-09-18","title":"feat(charts): native support for time-varying (temporal) charts"},{"feature":null,"pr":777,"kind":"skip","reason":"implements the charts.time sub-capability of the Plotter Extensions API for extension plugins; the user-facing Time control is documented under Time-varying Charts"},{"feature":"chart-auto-refresh","pr":793,"kind":"enhanced","since":"v3.2.0-beta.3","date":"2026-09-20","title":"feat(charts): refresh interval for user-added chart sources"},{"feature":"overlays","kind":"new","since":"v2.19.0","date":"2025-10-31","title":"Overlay map data from WMS & WMTS sources over charts"},{"feature":"overlays","kind":"enhanced","since":"v2.19.2","date":"2025-11-23","title":"add WMTS time dimension support"},{"feature":"overlays","pr":805,"kind":"enhanced","since":"v3.2.0-beta.3","date":"2026-09-21","title":"feat(charts): fold overlays into the chart list"},{"feature":"chart-sources","kind":"new","since":"v2.12.0","date":"2024-10-24","title":"Add WMS/WMTS/JSON chart sources from the chart list"},{"feature":"chart-sources","pr":798,"kind":"enhanced","since":"v3.2.0-beta.3","date":"2026-09-21","title":"feat(charts): show layer names in the WMS/WMTS layer pickers"},{"feature":"chart-sources","pr":811,"kind":"enhanced","since":"v3.2.0-beta.3","date":"2026-09-22","title":"feat(charts): fill name, description and refresh from the picked WMS/WMTS layer"},{"feature":"chart-sources","pr":813,"kind":"enhanced","since":"v3.2.0-beta.3","date":"2026-09-22","title":"fix(charts): accept a WMS/WMTS GetCapabilities link as the source URL"},{"feature":"temporal-charts","pr":799,"kind":"enhanced","since":"v3.2.0-beta.3","date":"2026-09-21","title":"feat(charts): temporal chart follows the newest frame on auto-refresh"},{"feature":"temporal-charts","pr":807,"kind":"enhanced","since":"v3.2.0-beta.3","date":"2026-09-21","title":"feat(charts): re-read the time dimension from the service for user-added temporal charts"},{"feature":null,"pr":818,"kind":"skip","reason":"implements the resourceGroups capability of the Plotter Extensions API for extension plugins; the user-facing Resource Groups list behaves as before"},{"feature":"vessel-tracks","pr":822,"kind":"enhanced","since":"v3.2.0-beta.4","date":"2026-09-24","title":"feat(tracks): source the own-vessel trail and AIS tracks from the v2 Track API"},{"feature":"vessel-tracks","pr":829,"kind":"enhanced","since":"v3.2.0-beta.4","date":"2026-09-24","title":"feat(tracks): browse, scrub and play back recorded track history"},{"feature":"track-history","pr":829,"kind":"new","since":"v3.2.0-beta.4","date":"2026-09-24","title":"feat(tracks): browse, scrub and play back recorded track history"},{"feature":"gpx-export","kind":"new","since":"v1.18.0","date":"2021-08-26","title":"feature: Save to GPX"},{"feature":"gpx-export","kind":"enhanced","since":"v1.18.0","date":"2021-08-30","title":"add vessel trail to track option in Save to GPX"},{"feature":"gpx-export","pr":831,"kind":"enhanced","since":"v3.2.0-beta.4","date":"2026-09-24","title":"feat(gpx): export the server trail and other vessels' tracks to GPX, over any recorded range"},{"feature":"track-history","pr":844,"kind":"enhanced","since":"v3.2.0-beta.5","date":"2026-09-26","title":"feat(tracks): zoom to a vessel's recorded track from the Track history window"}],"categories":[{"name":"Charts","hue":215},{"name":"Waypoints","hue":30},{"name":"Routes","hue":140},{"name":"Tracks","hue":170},{"name":"Notes","hue":50},{"name":"Navigation","hue":265},{"name":"Autopilot","hue":300},{"name":"Weather","hue":200},{"name":"Radar","hue":110},{"name":"AIS & Vessels","hue":240},{"name":"Alarms & Notifications","hue":5},{"name":"Import/Export","hue":80},{"name":"Extensions","hue":325},{"name":"Display","hue":185},{"name":"Map","hue":345}]}
1
+ {"docs":[{"id":"buddy-list","raw":"---\nid: buddy-list\ntitle: Buddy List\ncategory: AIS & Vessels\n---\n\nKeep track of boats you know — friends, other boats in your flotilla — by\nmarking them as **buddies**, then filter the vessel list down to just them\nwhen you want to find one quickly.\n\nThis requires the [signalk-buddylist-plugin](https://www.npmjs.com/package/signalk-buddylist-plugin)\ninstalled on your Signal K server. Without it, Freeboard behaves as before —\nthere's no buddy marking or filtering available.\n\n**To mark a vessel as a buddy**, tap it on the chart to open its popover and\ntap the **Is Buddy** button. Tap it again to remove the mark.\n\n**To see just your buddies**, open **Vessels** from the main menu and switch\non the **Buddies Only** toggle in the filter row. The list narrows to the\nvessels you've marked. Buddies Only can be combined with the list's other\nfilters — Ship Type and IMO Only — to narrow things down further.\n"},{"id":"chart-auto-refresh","raw":"---\nid: chart-auto-refresh\ntitle: Auto-refreshing Charts\ncategory: Charts\n---\n\n![Fig 1. NOAA NEXRAD weather radar served by a storm-intelligence plugin, drawn over the Florida Keys](chart-auto-refresh-1.jpg)\n\nWhile most charts never change once drawn, certain types of charts like weather radar\nand satellite images may need a fresh image every few minutes. Freeboard supports a\nchart that declares itself time-varying and will re-fetch its tiles on its own, at the\ncadence the chart asks for.\n\n## How it works\n\nA chart's refresh cadence comes from whoever added it: a chart-provider plugin declares\nit on the charts it serves, and a chart source you add yourself carries the interval you\ngive it (see below). Charts with no interval behave exactly as before. The shortest\nrefresh cadence honoured is **one minute**.\n\nA provider can go further and offer the **earlier** frames too, which turns the chart\ninto one you can scrub back through and play as a loop — see **Time-varying Charts**.\nWhile such a chart is showing a past frame its auto-refresh pauses, and resumes when\nit returns to its newest frame.\n\n## For sources you add yourself\n\nAny WMS, WMTS or JSON map source added through **Add Chart Source** can be given a\nrefresh interval from its **Properties** dialog: enter the number of minutes in\n**Auto refresh** (0 means never) and **SAVE**. The same field lets you change or turn\noff the interval later. Public weather-radar and satellite services — NOAA nowCOAST,\nthe Iowa State Mesonet NEXRAD mosaics, and the like — are the typical candidates.\n\nProvider-served charts show their declared interval here but cannot be changed — the\nplugin that serves them owns it.\n\n## Offline and poor signal\n\nBeing out of range is normal at sea, so a refresh that can't reach the server is not an\nerror. The chart keeps showing the **last image it loaded** — it never goes blank because\na newer one failed to arrive — and quietly tries again at the next interval. When the\nconnection returns, the chart catches up.\n\n## Which charts\n\nAny raster chart can opt in: plain tile layers, TileJSON, WMS and WMTS. Vector charts\n(Mapbox-style sources, S-57 ENCs) are not refreshed. OpenStreetMap and OpenSeaMap are\nunaffected. An Overlay from an earlier Freeboard now appears in the Chart list as a\nchart and keeps the refresh interval it was given (see **Overlays**).\n\n## For chart-provider plugins\n\nAdd **`refreshInterval`** (milliseconds) to the chart resource, e.g.\n`\"refreshInterval\": 300000` for five minutes. Omit it or set `0` for a static chart;\nvalues under 60 000 are raised to the floor. Each refresh requests the tiles with a\nfresh `_refresh` query parameter, so the browser never hands back the image it already\nhas, whatever caching headers the tile endpoint sends. The refresh is non-destructive —\nthe previous tile stays until its replacement has loaded — so an interval is safe to\ndeclare for a product that is sometimes unreachable.\n"},{"id":"chart-image-adjustment","raw":"---\nid: chart-image-adjustment\ntitle: Chart Image Adjustment\ncategory: Charts\n---\n\n![Fig 1. The Image Adjustment palette, opened from the tune icon in the chart list](chart-image-adjustment-1.jpg)\n\nAerial and satellite chart imagery is usually exposed for the land, which\ncan leave the water — where the hazards are — looking crushed and nearly\nblack. Adjusting the brightness and contrast can pull submerged rocks,\nshallows, and reefs back into view, which is handy when you're scouting an\nanchorage.\n\n**To adjust a chart's image**, open the chart list and tap the **tune**\nicon next to a chart (it appears alongside the existing opacity control,\nfor image-based charts only). The chart list closes and a compact **Image\nAdjustment** palette opens over the map, headed by the name of the chart\nlayer you're working on.\n\nThe palette is modeless — there is no backdrop, so panning and zooming stay\navailable while you adjust. Drag it by its header to move it clear of the\nwater you're studying; it reopens wherever you last left it, even after a\nreload.\n\n**Brightness** and **Contrast** run from 0% to 200%, with 100% being\nneutral, and the chart updates live as you drag. **RESET** returns both to\nneutral. **SAVE** keeps your changes; closing the palette with its **close**\nbutton instead discards them and puts the chart back as it was.\n\nA saved adjustment is stored with that chart, alongside its opacity, so it's\nstill applied the next time you open Freeboard. Left untouched, a chart looks\nexactly as it always has — the neutral default makes no visible change.\n\nThis applies to raster, tile, WMS, and WMTS image charts. Vector charts\n(like S-57) don't have an image to adjust, so the control doesn't appear\nfor them.\n"},{"id":"chart-list","raw":"---\nid: chart-list\ntitle: Chart List\ncategory: Charts\n---\n\n![Fig 1. The chart list, with Bounds turned on so each chart's outline is drawn on the map](chart-list-1.jpg)\n\nThe **Chart List** is where you pick which charts are drawn on the screen, what order\nthey stack in, and how each one looks. Open it from the resources menu, then **Charts**.\n\nEvery chart the server offers is listed with its name and description. A **map** icon\nmarks a chart hosted on your own Signal K server; a **globe** icon marks one fetched from\nthe internet — worth a glance before you rely on a chart offshore.\n\n**To show or hide a chart**, tick or untick its checkbox. The checkbox at the top of the\npanel switches every chart on or off at once, and **refresh** re-reads the list from the\nserver if you've just installed new charts.\n\n## Finding a chart in a long list\n\nA boat carrying a full regional ENC set can have hundreds of charts, so there are three\nways to narrow the list. They combine, so you can use them together.\n\n- **Type to filter list** — matches on the chart's name.\n- **In view** — hides every chart that doesn't cover what you're currently looking at.\n The list re-filters live as you pan and zoom, so it always reflects the current view.\n Charts that don't declare bounds (OpenStreetMap, for instance) count as covering\n everywhere and stay listed whatever the view.\n- **Bounds** — draws the outline of every listed chart on the map, so you can see what\n covers where. Clicking an outline brings up the charts at that spot and lets you switch\n one on directly, without finding it in the list.\n\n**In view** and **Bounds** both start off each time you open the list — they're a way to\nsearch, not a setting to leave set.\n\n## Chart order\n\nCharts are drawn stacked, and the one on top is the one you read. The list *is* that stack:\n**Top Layer** is labelled at the top, **Base Layer** — a world map, typically — at the\nbottom.\n\n![Fig 2. The list as the chart stack — Top Layer at the top, drag grips on the right of each row](chart-list-2.jpg)\n\nTo move a chart up or down, drag it by the handle on the right of its row (the six-dot\ngrip). The map re-stacks as soon as you drop it, and the order is saved for next time.\n\nCharts you have never re-ordered start out stacked by scale — the largest-area chart at\nthe bottom, so the most detailed one ends up on top. That is only the starting point:\nonce you drag anything, your order wins.\n\nFiltering the list withdraws the handles, whether you filter by typing or with **In view**.\nA filtered list is only part of the stack, so dropping a row inside it says nothing about\nwhere the charts hidden between belong. The caption beside **Top Layer** says so — it\nchanges from *(drag to re-order)* to *(clear the filter to re-order)*.\n\n## Per-chart actions\n\n![Fig 3. A chart entry, with its actions along the bottom](chart-list-3.jpg)\n\nAlong the bottom of each entry is a row of icons — the actions for that chart. Only the\nones that apply are shown, so the row is shorter on some charts than on others. In the\nrow above, left to right:\n\n- **Properties** (the *i* in a circle) — view and edit the chart's details.\n- **Opacity** (the droplet) — fade a chart to let the one beneath show through. Useful\n for laying a harbour chart over an aerial image.\n- **Image adjustment** (the sliders) — brightness and contrast; image-based charts only.\n See the **Chart Image Adjustment** feature.\n- **Minimum Zoom Level** (the downward arrow onto a line) — the lowest zoom to draw this\n chart at, so overlapping charts reveal in turn as you zoom in; image-based charts only.\n See the **Chart Zoom Limits** feature.\n- **Add to Group** (the shapes) — file the chart into a resource group. Only shown when\n your server supports resource groups.\n\nTwo more appear where they apply:\n\n- **Cache Tiles** (the download arrow) — select an area of the map to download for\n offline use. Only offered for charts the chart provider serves as proxied.\n- **Remove** (the waste bin) — delete a chart you added yourself. Charts that come from\n the server's chart plugin can't be deleted from here.\n\nOpacity, image adjustment and minimum zoom are saved per chart and persist between\nsessions. The checkbox on the right of the entry is what shows or hides the chart.\n\n## Adding your own chart source\n\n**Add** (the `add` icon) registers a new chart source with the server — **WMTS**, **WMS**,\nor a **JSON Map Source**. Added charts appear in the list alongside the rest and can be\nremoved again with **Remove**.\n\nFreeboard also offers OpenStreetMap and OpenSeaMap without any server-side charts\ninstalled; both need an internet connection to draw.\n\nNote that everything else in the list comes from the Signal K server, so a chart plugin\n(such as `@signalk/charts-plugin`) has to be installed and configured before your own\ncharts appear here.\n"},{"id":"chart-sources","raw":"---\nid: chart-sources\ntitle: Adding a Chart Source\ncategory: Charts\n---\n\n![Fig 1. NCEP CONUS radar added as a WMS source and drawn over the chart, sitting at the top of the chart list](chart-sources-1.jpg)\n\nFreeboard draws whatever charts your Signal K server offers, but you can also point it at\na chart or imagery service yourself — a weather radar mosaic, satellite imagery, an aerial\nphoto layer, a tile set someone publishes. **Add Chart Source** registers that service with\nthe server, after which it behaves like any other chart in the list.\n\n## Adding one\n\n![Fig 2. Add on the chart list offers WMTS, WMS or JSON Map Source](chart-sources-2.jpg)\n\nOpen the chart list (resources menu, then **Charts**) and press **add** — the `+` on the\nrow with the **Bounds** and **In view** switches. Three kinds of source are offered:\n\n- **WMTS** — a Web Map Tile Service, serving pre-rendered tiles.\n- **WMS** — a Web Map Service, which draws an image to fit what you are looking at.\n- **JSON Map Source** — a TileJSON or Mapbox Style document; Freeboard works out which\n from the file itself.\n\n## The service address\n\n![Fig 3. Add WMS Source — paste the address the provider publishes](chart-sources-3.jpg)\n\nFor WMS and WMTS the dialog asks for the **WMS service URL** (or **WMTS service URL**).\nPaste whatever address the provider publishes — the plain service address, or the full\n*GetCapabilities* link, which is what most providers actually hand out. Either works.\nFreeboard stores the address without the request parameters it supplies itself, and keeps\nanything else on the link, so an API key or a MapServer `map=` parameter survives.\n\nPress the arrow. Freeboard asks the service what it offers and opens **Chart Properties**\non the answer.\n\nIf the service refuses, the reason it gave is shown rather than a generic failure —\nusually enough to tell whether the address is wrong, the service is down, or the layer you\nwere after is unavailable.\n\n## Choosing the layer\n\nChart Properties lists what the service offers. A **WMS** source can draw several layers\ntogether, so each row has a checkbox; a **WMTS** source draws one layer, so the list is a\nsingle choice.\n\nEach row shows the layer's title, followed by its identifier in lighter text wherever the\ntwo differ — *NEXRAD BASE REFLECT (GOOGLE)* **(nexrad-n0q-900913-conus)**. Services often\ngive a whole run of sibling layers the same title and distinguish them only by identifier\n— one per region, say — and the identifier is the thing you are really choosing, so it is\nshown whenever it tells you something the title doesn't.\n\nA small **clock** icon in front of a layer means it is time-varying: it carries earlier\nframes you can scrub back through and play as a loop. Hover it for a one-line summary —\nhow often it updates and how far back it goes (*Time-varying: every 5 min, last 12 h*), an\narchive's date range, or a frame count. See **Time-varying Charts**.\n\n## What gets filled in for you\n\n![Fig 4. Chart Properties after picking a layer — name, description and refresh interval filled in, and a clock icon marking the layer as time-varying](chart-sources-4.jpg)\n\nPicking a layer fills in what the service can tell Freeboard:\n\n- **Name** — the layer's title.\n- **Description** — the first clause of the service's own description of that layer. These\n tend to run to a paragraph, and the field is a single line.\n- **Auto refresh** — for a time-varying layer only: the cadence the service declares, or\n five minutes when it declares none. *Never* is almost always the wrong answer for radar\n or satellite imagery. See **Auto-refreshing Charts**.\n\nAnything you have typed yourself is left alone — including a refresh interval you\ndeliberately set to 0. Only the values Freeboard filled in are replaced if you change your\nmind and pick a different layer, and a cadence it filled in is cleared again if you\nre-point the chart at a layer that doesn't vary with time.\n\nThen press **SAVE**.\n\n## Afterwards\n\nThe new chart appears in the chart list among the rest, and can be shown, hidden,\nre-ordered, faded and adjusted like any other — see **Chart List**. **Properties** reopens\nthis same dialog, so the name, description, layer and refresh interval can all be changed\nlater. **Remove** (the waste bin) deletes it from the server; charts that come from a chart\nplugin cannot be removed this way.\n"},{"id":"chart-zoom-limits","raw":"---\nid: chart-zoom-limits\ntitle: Chart Zoom Limits\ncategory: Charts\n---\n\n![Fig 1. Setting a chart's minimum zoom — the panel stays open beside the chart list](chart-zoom-limits-1.jpg)\n\nEvery chart holds detail down to a certain resolution and no further. Zoom in past that\npoint and you aren't shown more information — you're shown the last real chart data\nmagnified, which looks sharper than it is. Freeboard gives you two controls over what\nhappens at that boundary.\n\nThe other end of the range is yours to choose: a chart can be given the lowest zoom it\nappears at, so a stack of overlapping charts reveals each one in turn as you zoom in.\n\n## Constrain map zoom\n\nThe **Constrain map zoom** button (the `zoom_in_map` icon on the right-hand toolbar) stops\nthe map at the edge of your chart data. Turn it on and you simply cannot zoom in — or out —\nbeyond the range your selected charts actually cover. The button highlights while active,\nand the zoom **+** / **−** buttons grey out once you reach a limit.\n\nThe limits are taken from the **widest** range across all currently selected charts: the\nlowest minimum zoom and the highest maximum zoom of any of them. Selecting or deselecting\ncharts recalculates it, so the constraint always reflects what you have switched on. Charts\nthat don't declare their own zoom range fall back to a 0–24 range. With the setting off,\nthe map is free to move between zoom 2 and 28 regardless of what your charts hold.\n\nThis is off by default. It matters most when you're working from downloaded or offline\nchart sets — a cached raster or MBTiles collection on a boat with no internet — where\nzooming past the data can't be rescued by fetching better tiles, and where a magnified\ntile can read as detail that was never surveyed.\n\n## Keep tiles visible on max zoom\n\nThe companion setting, **Keep tiles visible on max zoom** (Settings → Map), decides what a\nchart layer does once you pass *its* maximum zoom. Leave it on — it is on by default — and\nthe chart keeps drawing, stretched, instead of disappearing. Turn it off and each layer\nstops rendering beyond the resolution it genuinely has, leaving the chart blank there.\n\nIt also matters when charts of different resolutions are stacked. In a selection mixing a\nwide-area chart with a detailed harbour chart, the lower-resolution one keeps rendering\n(stretched) up to the map's maximum rather than dropping out as you zoom in.\n\nThose two settings answer different questions: *Constrain map zoom* decides **whether you\ncan get there at all**, while *Keep tiles visible on max zoom* decides **what you see if\nyou do**. With the defaults — constrain off, keep-tiles on — you can zoom freely and charts\nstay visible but progressively blurrier past their real detail.\n\n## Per-chart minimum zoom\n\nChart sets covering the same water at different scales are drawn on top of each other, and\na large-scale sheet is clutter until you are zoomed in far enough to want it. Every\nhydrographic office publishes raster charts in overlapping bands — NOAA's Overview,\nGeneral, Coastal, Approach and Harbor; Finland's Yleiskartat, Merikarttasarjat,\nRannikkokartat and Satamakartat. Freeboard picks the right band on its own for S-57 vector\ncharts, because the standard records which band a chart belongs to. Raster carries no\nequivalent, so the only remedy used to be ticking and unticking charts as you went.\n\nInstead, give each chart the zoom it starts earning its place at — coastal from z9, boating\nfrom z12, harbour from z14 — and each appears as you zoom in, drawn over the coarser charts\nalready on screen.\n\nThe control is in **Charts**, on the row of each image-based chart: **Minimum Zoom Level**\n(the downward arrow onto a line), next to opacity and image adjustment. It opens a small\npanel beside the chart list, which stays open — balancing an overlapping set means moving\nbetween charts — and can be dragged out of the way by its title bar.\n\nType a level into **Show from**, or press the target button to take the map's current zoom.\nThe line beneath the title gives the chart's own data range and where the map is now, for\nreference; the line under the box reads back what you have set — *Hidden below z12*, or\n*Shown at every zoom level*. The map updates as you go, so you can see the effect.\n**APPLY** keeps the level, and closing the panel without applying puts the old one back.\nThe **X** beside the target button clears the level, so the chart shows at every zoom\nagain.\n\nA chart carrying a minimum shows **from z12** under its name in the list, and adds *—\nhidden at this zoom* while it is not being drawn — so a ticked chart that is not on screen\ntells you why rather than looking broken.\n\nThe minimum only ever restricts. A chart is never drawn below the zoom its own tiles start\nat, so a level set under the chart's own range does nothing, and the top of the range is\nuntouched — *Keep tiles visible on max zoom* behaves exactly as described above. Which\nchart you see where several overlap is still decided by chart order. Levels are saved per\nchart on this device, alongside opacity and image adjustment, and persist between sessions.\n\nThe zoom readout in the status bar counts up rather than rounding: a view a hair under z14\nreads `Zm: 13.9` where it once read `Zm: 14.0`. It never claims a level the map has not\nreached, which is what makes \"set 14, zoom to 14, see the chart\" behave.\n"},{"id":"cursor-eta","raw":"---\nid: cursor-eta\ntitle: Live ETA at Cursor\ncategory: Display\n---\n\n![Fig 1. The Status Bar Options settings, and the resulting Brg/Dist/ETA readout in the status bar](cursor-eta-1.jpg)\n\nGet a quick bearing, distance, and time estimate to any point on the chart —\nwithout setting a destination first.\n\n**To turn it on**, go to **Settings → Display → Status Bar Options** and check\n**Live ETA at cursor**. It's off by default. Once on, the status bar adds the\nbearing, distance, and ETA from your boat to the point you're pointing at,\nalongside the existing latitude/longitude readout.\n\n**With a mouse**, the readout follows the pointer as you move it over the chart.\n\n**Click or tap the chart** and the readout locks onto that point, with a marker\nshowing which point it refers to. The marker fades away and the readout is\nreleased with it, so the numbers are never left on screen with nothing\nidentifying what they describe. Tap somewhere else to measure to the new point.\nThis gives a touchscreen at the helm the same \"how far is that?\" gesture a mouse\nuser gets — dragging the chart still just pans it, and a press-and-hold still\nopens the chart menu.\n\n**Tap Fade Speed** sets how long the marker takes to fade, in seconds (minimum\n1, default 1.5). Raise it to give yourself longer to read the numbers; lower it\nif the marker sits over something on the chart you want to see or grab.\n\nThe ETA uses your boat's current speed over ground. If you're stopped — at\nanchor, hove to — there's no speed to estimate from, so Freeboard falls back to\na **Reference Boat Speed** you set alongside the checkbox, keeping the ETA\nuseful even when you're not moving.\n"},{"id":"custom-map-symbols","raw":"---\nid: custom-map-symbols\ntitle: Custom Map Symbols\ncategory: Charts\n---\n\n![Fig 1. A custom route start marker and a custom anchorage icon shown on the chart](custom-map-symbols-1.jpg)\n\nFreeboard normally marks notes, waypoints, your boat, AIS traffic, aids to\nnavigation, and route points with its own built-in icons. If you'd rather use\nyour own artwork — a personal marker for a favorite dive site, a custom boat\nicon for your own vessel, a branded buoy — you can, once you install a\n**symbol provider** app on your Signal K server. Freeboard picks up whatever\nicons the provider offers and uses them automatically — there's nothing to\nturn on.\n\nThe reference app for this is\n[signalk-symbol-manager](https://www.npmjs.com/package/signalk-symbol-manager),\nwhich gives you a simple web page for uploading and organizing your own icons.\nAny similar app that publishes icons the standard way works too.\n\n## Two ways to use a custom icon\n\n**Replace one of Freeboard's built-in icons.** Give your icon the same name\nas the built-in you want to replace (for example `dive-site`) and mark it as\nbelonging to Freeboard's icon set. Your version then shows up everywhere that\nicon is normally used — on the chart and in the icon pickers — without you\nhaving to touch any existing notes or waypoints. See the reference list below\nfor which built-in names you can replace.\n\n**Add a brand-new icon.** Give your icon a new name of your choosing and it\nshows up as an extra option in the icon pickers, alongside the built-ins.\n\nWhen you've replaced a built-in, the picker shows only your version — not\nboth — so the list doesn't get cluttered. Flip the **\"Show all symbols\"**\ntoggle in a note or waypoint's icon picker to see everything at once,\nbuilt-ins included, in case you ever want to go back to the original. If you\ndeliberately pick the original built-in this way, Freeboard remembers your\nchoice and won't swap your custom icon back in later.\n\n## Where custom icons show up\n\n| Area | Custom icons? |\n|------|:---:|\n| Notes | Yes |\n| Waypoints | Yes |\n| Your own vessel | Yes |\n| AIS vessels | Yes |\n| Aids to navigation | Yes |\n| Route start / turn / end points | Yes |\n| Wind, ocean current and tidal current arrows | Yes |\n| Special waypoint markers (start pin, start boat, sightings, alarms) | No |\n| Shaded chart areas | No |\n| Dots for moored vessels | No |\n\nIcons that normally rotate to a heading or bearing — your vessel, AIS\ntargets, aids to navigation, route turn points, and the wind and current\ndirection arrows — keep rotating correctly even when you've replaced them with\nyour own artwork.\n\n## Built-in icon names you can replace\n\nTo replace one of these, give your icon the matching name below.\n\n**Note and waypoint markers:**\n\n```\nanchorage boatramp bridge business dam\ndive-site ferry hazard inlet lock\nmarina dock turning-basin radio-call-point\ntranshipment-dock notice-to-mariners diver-down\nnavigation-structure fuel tunnel waterway-guage\n```\n\n**Generic waypoint marker:** `waypoint`\n\n**Your own vessel:** `vessel-self`\n\n**AIS vessels** (by type):\n\n```\nais_active ais_highspeed ais_special ais_passenger ais_cargo\nais_tanker ais_other ais_inactive ais_buddy ais_self\n```\n\n(`ais_self` is whichever AIS target you currently have selected — not your\nown boat, which is `vessel-self`.)\n\n**Aids to navigation** — each comes in a physical (`real-…`) and an AIS-only\n(`virtual-…`) version:\n\n```\nreal-north / virtual-north real-east / virtual-east\nreal-south / virtual-south real-west / virtual-west\nreal-port / virtual-port real-starboard / virtual-starboard\nreal-danger / virtual-danger real-safe / virtual-safe\nreal-special / virtual-special real-basestation / virtual-basestation\nreal-weatherStation / virtual-weatherStation\nreal-aton / virtual-aton\n```\n\n**Route points:** `route-start`, `route-waypoint`, `route-end`\n\n**Weather indicators** — the direction arrows on the wind, ocean current and\ntidal current overlays:\n\n```\nwindIndicator-arrow oceanCurrentIndicator-arrow tidalCurrentIndicator-arrow\n```\n\nThe two current arrows are tinted by Freeboard to show speed, so draw\nreplacements for those with a plain white fill — a pre-coloured glyph comes out\nmuddy. The wind arrow isn't tinted and renders in your own colours.\n\nYour own vessel, AIS, aids-to-navigation, route and weather-indicator icons\napply everywhere at once — Freeboard picks these automatically rather than\nletting you choose them per marker, so one custom icon covers every marker of\nthat kind.\n\n## Keeping icons through GPX import and export\n\nIf your icon declares a matching GPX symbol name, Freeboard will recognize it\nwhen you import a GPX file — a waypoint tagged with that symbol picks up your\ncustom icon instead of the default marker. Exporting a waypoint that uses a\ncustom icon writes the same information back into the GPX file, so the icon\nsurvives a round trip: export, re-import elsewhere, and your custom icon is\nstill there.\n\n## Without a symbol provider\n\nIf you haven't installed a symbol provider — or it isn't publishing any\nicons — Freeboard looks and behaves exactly as it always has: built-in icons\neverywhere, and \"Show all symbols\" just shows the built-ins.\n"},{"id":"extension-panels","raw":"---\nid: extension-panels\ntitle: Extension Panels\ncategory: Extensions\n---\n\n![Fig 1. A plugin's search panel open alongside its toolbar button](extension-panels-1.jpg)\n\nPanel extensions let a Signal K server plugin add a completely new feature to\nFreeboard, without waiting on a Freeboard code change to get it. You can pick\nand choose which of these tools you want installed on your boat. Each one\nadds its own new button to Freeboard's toolbar — for example, a proximity\nsearch for nearby points of interest, or an automatic route planner that\nroutes around land.\n\n![Fig 2. An auto-routing panel, another example of a panel extension](extension-panels-2.jpg)\n\n**To use one**, tap the grid icon in the top-right corner of the chart to\nreveal the toolbar, then tap the plugin's button. Its panel slides in from\nthe right-hand side of the screen. Tap the button again, or use the panel's\nown close button, to put it away.\n\nA panel can also narrow down what's shown on the chart — for example,\nfiltering the waypoints list to just the ones matching your search. When a\npanel does this, a small chip appears near the top of the screen describing\nthe filter; tap its **×** to clear it and show everything again.\n\nIf you haven't installed any plugins that add a panel, the extension toolbar\nbutton doesn't appear — Freeboard looks and works exactly as it always has.\n"},{"id":"feature-browser","raw":"---\nid: feature-browser\ntitle: Feature Browser\ncategory: Display\n---\n\nThis very window you're looking at right now is the **Feature Browser** — a\nsearchable \"What's New\" window covering everything Freeboard can do. Curious\nwhat a feature does, how to use it, or when it was added? Open it any time\nfrom the main menu — **What's New**, between **About** and **Help** — or\nfrom the **⋯ (More actions)** menu, no matter what you're doing on the\nchart.\n\nEach entry shows a screenshot, a plain description of what the feature does\nand how to use it, and the release it last changed in — click a screenshot\nto view it larger. When a feature has changed in the current release, its\nnewest changes are listed at the top of the entry so you don't have to hunt\nfor them; the complete history sits in a table at the bottom. Search narrows\nthe list by name, and you can sort the table by category, feature, status,\nor release.\n\nA small lightbulb button also appears on the left toolbar whenever there's\nsomething new or changed you haven't seen yet — click it to jump straight\ninto the Feature Browser. It only shows up when there's something to tell\nyou about, and disappears once you've opened the browser. Freeboard no\nlonger interrupts you with a welcome screen or a \"what's new\" popup when it\nstarts — this lightbulb is the quiet, opt-in replacement.\n"},{"id":"follow-vessel","raw":"---\nid: follow-vessel\ntitle: Center & Follow Vessel\ncategory: Map\n---\n\n![Fig 1. Following with a positive Vertical offset — the boat sits low on screen and the chart in front of it gets the room](follow-vessel-1.jpg)\n\nKeep your boat on screen without touching the chart. Follow Vessel mode centers the\nvessel and holds it there as you move, so the chart scrolls under you instead of you\nchasing it.\n\n## The button\n\n**Center & Follow Vessel**, on the left-hand toolbar, does both jobs. A press centers the\nvessel and turns follow mode on, easing out to your offset a couple of seconds later. The\nbutton stays highlighted while follow mode is on. Press it again to turn follow mode off —\nthe chart stays exactly where it is, so whatever you'd panned across to study stays in\nview. The button is disabled until your boat's position is known.\n\nJust want to center the boat once, without following it? Press again before it eases off\ncenter, and the boat stays where it is.\n\n## Offset Vessel Center\n\n![Fig 2. Offset Vessel Center and Map Pan When Following, in Settings → Map](follow-vessel-2.jpg)\n\nSitting dead center spends half your screen on water you have already covered.\n**Settings → Map → Offset Vessel Center (%)** moves the boat off center so the chart that\nmatters gets the room. Two values, each a whole percentage up to ±90 of the distance from\nthe middle of the screen to its edge:\n\n- **Vertical** — moves the vessel up or down the screen. A positive value looks ahead,\n putting more chart in front of the boat; `50` puts the boat halfway between the center\n and the bottom edge. A negative value looks behind instead.\n- **Horizontal** — moves the vessel left or right. A positive value shifts the map to the\n right, putting the boat toward the left of the screen with more chart visible to the\n right; a negative value does the opposite.\n\nBoth are measured against the **screen**, not your course — the offset holds the exact spot\nyou set it to whether you're underway, drifting, or sitting still, instead of swinging\naround as your heading jitters at low speed or with no course at all. In heading-up mode\nthis comes to the same thing as ahead/abeam, since \"up the screen\" already tracks your\ncourse; the difference only shows in north-up. Zooming keeps the boat on that same spot\ntoo, scaling the chart around it rather than nudging the boat back toward center.\n\n## Setting the offset by panning\n\nYou don't have to work the numbers out at all. With **Map Pan When Following** set to\n**Set Follow Offset**, simply pan the chart until the boat sits where you want it.\nFreeboard works out the Vertical and Horizontal values from where you dropped it and saves\nthem, staying in follow mode the whole time — so the boat holds that spot from then on. For\nmost people this is the only way they will ever set the offset.\n\nPan the boat clean off the screen and Freeboard takes it as \"stop following\" instead —\nfollow mode turns off and the chart stays exactly where you left it, rather than snapping\nthe boat back into view.\n\n## Map Pan When Following\n\n**Settings → Map → Map Pan When Following** decides what panning the chart does while\nfollow mode is on:\n\n- **Set Follow Offset** — follow mode stays on and your pan sets the offset, as above.\n- **Exit Follow Mode** — panning turns follow mode off and leaves the chart where you put\n it.\n- **Do nothing** — follow mode stays on and the vessel returns to its usual position on\n the next position update. Worth choosing at the helm, where a stray touch shouldn't\n disturb the view.\n\n### Getting follow mode back on its own\n\nChoosing **Exit Follow Mode** reveals a companion setting, **Resume Following After**.\nLeave it at **Never** and nothing changes — follow mode stays off until you press the\nbutton. Pick a delay instead and the chart hands itself back: pan across to look at what\nis ahead, and once you have left it alone that long the boat returns to the screen on its\nown.\n\nThe wait measures idle time, not time since the pan. Every pan and every zoom starts it\nover, so you can take as long as you like looking around and the chart only comes back\nonce you have actually stopped. Turning follow mode off with the button is left alone —\nthat stays off, so you can still park the chart somewhere deliberately.\n\nWorth setting when the display is out of easy reach, or when whoever is watching it would\nrather not hunt for the Follow button: a quick pan to check the water ahead, then back to\nthe boat without touching anything.\n"},{"id":"gpx-export","raw":"---\nid: gpx-export\ntitle: Export to GPX\ncategory: Import/Export\n---\n\n![Fig 1. Exporting an AIS vessel's track from its popover](gpx-export-1.jpg)\n\nSave routes, waypoints and tracks to a GPX file, to load into another\nplotter or app, or to send to a friend so they can follow the same line.\n\n## Routes, waypoints and your trail\n\nOpen the **Resources** menu (the stacked layers button on the left toolbar)\nand choose **Export**. The **Export to GPX** window lists what can be saved:\n\n- **Waypoints** and **Routes** from your Signal K server. Tick a section's\n box to select all of them, or expand it to pick individual ones.\n- **Tracks**: your vessel's trail, whether it is kept on this device or\n comes from the server (see **Vessel Tracks**).\n\nClick **Save** and choose where to save the file. Browsers that can't show a\nsave window download it as `fb_export.gpx` instead.\n\n## Tracks\n\n![Fig 2. The Export track to GPX button in a vessel's popover](gpx-export-2.jpg)\n\nTo save a single vessel's track, your own or another boat's, tap the vessel\non the chart and use **Export track to GPX** (the download button) in its\npopover. The button appears while that vessel's track is shown on the chart,\nor while its history is shown in **Track History & Playback**. It opens the\nsame window with just that vessel's track.\n\n**Track to export** chooses which part of the track to save:\n\n- **As displayed**: the track as it is drawn on the chart right now.\n- **Last 7 days** or **Last 30 days**.\n- **All recorded**: everything the server has kept for that vessel.\n- **Track history range**: the range the Track history window is showing.\n Offered while that vessel's history is shown, and the choice the window\n starts on when you opened it with only the history showing.\n- **Custom range**: pick a **From** and **To** date and time.\n\nRanges other than **As displayed** are fetched from the server when you\nclick **Save**, in the most detail it provides, so a file can hold far more\nthan is drawn on the chart. They need a Signal K server with the Track API\n(server 2.33 or later with a track provider, such as the Tracks plugin).\nWithout one, the track is saved as displayed. For another vessel that means\nonly the positions Freeboard gathered while it was open, and the button's\ntooltip says so.\n\nEach track is saved under a name that says whose it is and when it was\nrecorded, such as `Heron (366000012) 2026-09-22 19:06 – 2026-09-24 19:14`.\nEvery point carries the time it was recorded, where known, so other plotters\ncan show your speed along it or replay it.\n\nTo load a GPX file into Freeboard, use **Import** in the same menu.\n"},{"id":"notes","raw":"---\nid: notes\ntitle: Notes\ncategory: Notes\n---\n\n![Fig 1. Note options under Settings → Resources → Notes](notes-1.jpg)\n\nDrop a note anywhere on the chart to mark something worth remembering — a\ngood anchorage, a hazard, a spot to check next time you're through.\n\n**To add a note**, open the edit menu (pencil icon) and choose **Add Note**,\nthen tap the chart where you want it.\n\n**To work with an existing note**, tap it on the chart. By default this\nopens a quick popover with **Move**, **Edit**, **Delete**, and **Info**\n(the info panel or a details dialog, depending on your **Prefer Info-Panel**\nsetting under **Settings → Display**). If you'd rather skip that popover and\ngo straight to the note's details, turn on **Single Click for Note Details**\nunder **Settings → Resources → Notes** — a single tap then opens the details\ndirectly, and the details view itself offers **Move**, **Edit**, and\n**Delete**, so you don't lose anything by skipping the popover.\n\nA note with rich content — an embedded image, or a graph like the one on a\ntide-station note — resizes its details dialog to fit, instead of clipping\nthe content or forcing you to scroll in two directions.\n\n**The rest of the note options** live in that same **Settings → Resources →\nNotes** group. **Display Notes on Map** turns notes off entirely, and\n**Notes Zoom Level** sets how far in you have to be zoomed before they\nappear — between them, that's how you stop notes cluttering a\npassage-planning view.\n**Fetch Notes radius** controls how far around the chart center notes are\nretrieved from the server (a fresh fetch is triggered once the center moves\nmore than half that distance), and **Notes fetch filter** narrows what comes\nback. The remaining two concern groups: **Edit Group Names** makes a note's\ngroup editable in the note editor, and **Position Group Note** asks you to\nplace a new group note on the chart rather than adding it without a position.\n"},{"id":"overlays","raw":"---\nid: overlays\ntitle: Overlays\ncategory: Charts\n---\n\nOverlays were Freeboard's way of laying a WMS or WMTS layer — typically weather radar\nor satellite imagery — over the chart, from an **Overlays** panel of their own. They\nno longer exist as a separate feature: everything an Overlay did, a chart now does,\nso Overlays have been folded into the **Chart list**.\n\n## What happened to my Overlays\n\nNothing you need to act on. Any Overlay you had set up appears in the Chart list as a\nchart, keeping its name, layer, opacity, zoom range and refresh interval, and stays\nshown or hidden as it was. It starts at the top of the chart stack — where an Overlay\nalways drew — and can be re-ordered from there like any other chart.\n\nBehind the scenes, Freeboard converts each Overlay into an ordinary chart source the\nfirst time it loads with a login that can write to the server. Until then — a\nread-only session, or a server whose resources-provider has no `charts` collection —\nthe Overlay is simply shown *as* a chart, and the conversion happens on a later load.\nEither way the chart keeps the same identity, so nothing you set on it — opacity,\norder, a playback loop — is lost.\n\nThe **Overlays** menu item remains for now as a signpost: choosing it tells you where\nyour overlays went.\n\n## What a former Overlay can do\n\nIt is a chart like any other in the list — **Properties**, **Opacity**, **Remove**\n(which deletes it from the server) — and gains what charts have:\n\n- **Auto-refresh** — the interval set on the Overlay carries across and can be changed\n under Properties. See **Auto-refreshing Charts**.\n- **The Time palette** — a WMS or WMTS source with a time dimension gets the clock\n action and the full scrub / loop / play control in place of the Overlay's time\n slider. See **Time-varying Charts**.\n- **Image Adjustment**, **Minimum Zoom Level**, resource groups and the ordinary\n chart order.\n\n## Adding a new radar or satellite layer\n\nUse **Add Chart Source** in the Chart list (WMS or WMTS), pick the layer, and set a\nrefresh interval under Properties if the source updates regularly.\n"},{"id":"own-vessel-display","raw":"---\nid: own-vessel-display\ntitle: Own Vessel Display\ncategory: AIS & Vessels\n---\n\n![Fig 1. Your boat on the chart among nearby AIS traffic, with its heading and course lines drawn](own-vessel-display-1.jpg)\n\nYour boat is drawn on the chart at the position your Signal K server reports, turned to\npoint the way you are heading. Around it Freeboard can draw the lines and circles that\nturn a dot on a map into a picture of where you are going.\n\n## The vessel icon\n\nThe icon sits at your reported position and rotates to your heading, so a glance tells\nyou both where you are and which way you are pointing. It is drawn above everything else\non the chart, so route lines and chart detail never hide it.\n\n**Settings → Vessels → Vessel Icon Size** scales it. Larger is easier to pick out on a\nhelm tablet in daylight; smaller keeps more chart visible around you at close zoom.\n\nWant a different boat entirely? A symbol provider can replace the icon with your own\nartwork — see **Custom Map Symbols**.\n\n## Lines drawn with your vessel\n\nEach of these can be turned on or off in **Settings → Vessels**, and each appears only\nwhen the underlying data is available:\n\n- **Heading line** — where the bow is pointing. **Heading Line Length** sets how far it\n reaches: a fixed distance in nautical miles, or **Default**, which scales the line from\n your speed and the chart scale so it always means roughly the same thing.\n- **COG line** — where you will actually end up, projected from your course and speed\n over ground. **COG Line Length** sets the projection time, so the line answers \"where\n will I be in N minutes?\" With a cross-current, the gap between this line and the\n heading line is your set and drift, drawn to scale.\n- **Wind vectors** — true wind direction and apparent wind angle, when the boat reports\n wind data.\n- **Laylines** — when navigating to a destination, the tacking angles that reach it.\n- **Range circles** — equidistant rings centered on the boat, for judging distance off\n at a glance. **Number of Range Circles** sets how many; the spacing adapts to the chart\n scale and is labeled next to the boat. **Minimum Zoom Level** stops them cluttering the\n chart when zoomed out.\n\n## When position data stops\n\n![Fig 2. Position data has stopped arriving — the boat dims and a red question mark marks the last known fix](own-vessel-display-2.jpg)\n\nIf nothing updates your position for **30 seconds**, the boat icon dims and a red\nquestion mark appears over it. The icon stays where it last was — that position is still\nthe best information available, but it is no longer current, and the marker says so.\n\nThis matters because the ways position data stops are quiet ones. A dropped Wi-Fi link\noften does not close the connection cleanly, so the boat can sit on the chart looking\nauthoritative for minutes. It also covers the case where the server is healthy and\ntalking but its position source has failed: everything else keeps updating while the one\nnumber you steer by does not.\n\nThe marker clears as soon as position data resumes.\n\nIt is not shown in Fixed Location Mode, where position updates are not expected.\n\n## Fixed Location Mode\n\nRunning Freeboard somewhere that does not move — a shore station, a clubhouse, a desk —\nmakes a boat icon misleading. **Settings → Vessels → Fixed Location Mode** switches the\nicon to a fixed-location marker and lets you enter the latitude and longitude to place it\nat. Heading rotation is dropped, since a building does not have one.\n\n## Related\n\n- **Center & Follow Vessel** — keeping the boat on screen as you move.\n- **Vessel Tracks** — recording and showing where you have been.\n- **Custom Map Symbols** — replacing the boat icon with your own artwork.\n"},{"id":"radar-overlay","raw":"---\nid: radar-overlay\ntitle: Radar Overlay\ncategory: Radar\n---\n\n![Fig 1. Radar returns painted over the chart, centred on the vessel](radar-overlay-1.jpg)\n\nOverlays live radar returns on the chart, centred on your vessel and rotated\nto its heading, using the Signal K Radar API. Returns are drawn spoke by spoke\nas the scanner turns, on top of the chart layers.\n\n**What it needs.** Server side, the radar must be reaching Signal K — that\nmeans the **signalk-container** and **@marineyachtradar/signalk-plugin**\n(MaYaRa) plugins installed and running. The radar controls only appear once the\nserver reports the Radar API _and_ at least one radar has been discovered; with\nno radar found, nothing radar-related is shown. Display side, the browser must\nsupport WebGL — on a device without it, the radar button reports that rather\nthan opening the panel.\n\n**Turning it on.** A radar button appears on the toolbar, and **Radar Overlay**\nin the map's _More actions_ menu. Either one connects to the radar and opens\nthe **radar control panel**. If you use radar often, **Settings → Display →\nAction Button → \"Radar Overlay\"** promotes it to the main floating action\nbutton.\n\n**The control panel** shows the selected radar's name and brand, and:\n\n- **Off / On** — the connection to the radar. Switching Off drops the spoke\n stream and clears the overlay while leaving the panel open.\n- **Opacity** — how strongly the returns paint over the chart underneath.\n- **Radar controls** — range, gain, sea clutter, rain and whatever else your\n radar exposes. Freeboard doesn't ship a fixed list of knobs: it builds these\n from the control definitions the radar itself advertises, so you see exactly\n what your unit supports. Controls with a fixed set of values become\n drop-downs, numeric ones a value field, and anything the radar reports as\n read-only stays read-only. Changes are sent to the radar immediately, and\n changes made elsewhere — at the MFD, or from another device — appear here\n live. All controls are disabled while the overlay is Off.\n\n**More than one radar.** Pick the one to use in **Settings → Radar → Radar\nDevices**, with **REFRESH** to re-query the server for the current list. The\nselection is locked while the overlay is running — switch it Off first. Your\nchoice is remembered for next time; if that radar is no longer present, the\nfirst one found is used.\n\n**Server versions.** Both Radar API 3.4.0 and earlier servers are supported.\nFreeboard detects the version when it discovers the radars and talks to the\nright endpoint automatically — there is nothing to configure.\n\nIf the radar stream fails, Freeboard reports the error and switches the overlay\noff.\n"},{"id":"route-following","raw":"---\nid: route-following\ntitle: Following a Route\ncategory: Navigation\n---\n\n![Fig 1. Tap a route and choose Start to start following it](route-following-1.jpg)\n\nStart following a route and Freeboard steers you along it, point by point —\nand when plans change underway, you can rejoin it further on or skip a point\nwithout starting over.\n\n**Following a route.** Tap a route on the chart and choose **Start**, or press\n**Start** beside it in the Routes list or in its info panel, and Freeboard\nstarts following it from its first point. To start partway along, press\n**Start here** beside a point in the info panel's point list, or open the\nroute's **Points** and choose **Start at nearest point** to pick up the route\nat the point closest to your boat.\n\n**Following a route you haven't saved.** For a quick \"take me there\" route —\naround a shoal, or into an anchorage — you don't have to name and save it\nfirst. Tap **Start** on a freshly drawn route, or **Start here** on one of its\npoints, and Freeboard starts following it at once. It stores the route on your\nserver as **Temporary route**, and its info panel labels it **(temporary)**.\nIt stays on the chart after you stop following it, so if the course gets\ncleared — a detour to a waypoint, or the autopilot or another display clearing\nit — just press **Start** on it again. Only one temporary route is kept: it's\nreplaced the next time you start following a drawn route, and removed a day\nafter you stop following it. To keep it for good, press **Save** (*Keep this\nroute*) in its info panel and give it a name; it becomes an ordinary route.\n\n![Fig 2. The course controls while following a route — previous and next point, reverse, restart XTE and Course Settings](route-following-2.jpg)\n\n**Moving along the route.** While a route is active, the course controls\noffer **Previous point** (⏮) and **Next point** (⏭). Both steer straight from\nwhere your boat is to the new point, then follow the route on from there.\nAlongside them, **Reverse route direction** follows the route back the other\nway, **Restart XTE** measures cross-track error from your current position,\nand **Course Settings** opens the course options.\n\n![Fig 3. Clicking a point on the route you're following — Rejoin here, or Skip to the point after it](route-following-3.jpg)\n\n**Rejoining or skipping a point.** Click a point on the route you're following\n— the point itself, not a leg — and a popover names it (\"3 of 4\") with its\nposition. **Rejoin here** steers straight to that point and then follows the\nroute on from it: handy after a detour, or to cut a corner. On the point\nyou're heading for, **Skip** steers straight to the point after it. On a\nday-sail loop, the marina is the first point on the way out and the last on\nthe way home. The route's info panel offers the same actions: **Rejoin here**\nbeside each point, and **Skip this point** beside the one you're heading for.\nBoth are unavailable while the route has unsaved edits.\n\n**Arriving at a point.** When you reach a point, an alert offers **Next\npoint**. To move on without touching anything, turn on **Auto-advance to next\npoint on arrival** in Settings → Course, then choose which notification\ntriggers it (passing the perpendicular, or entering the arrival circle) and\nhow long to wait. Advancing on arrival, by hand or automatically, follows the\nplanned leg rather than steering straight from the boat. The **Arrival\nCircle** size is set in the same place.\n\n**Stopping.** **Stop Navigating** ends navigation. It's beside the active\nroute in the Routes list and its info panel, in the route's popover, in the\nMore Actions menu, and in the chart's right-click menu.\n"},{"id":"route-planning","raw":"---\nid: route-planning\ntitle: Route Planning\ncategory: Routes\n---\n\n![Fig 1. Tapping a route brings up its actions — Modify, Start, Points, Notes, Info, Delete](route-planning-1.jpg)\n\nDraw a route on the chart, review and adjust it, then save it for later —\nor skip saving and just use it right away.\n\n**To draw a route**, open the edit menu (pencil icon) and choose **Draw\nRoute**. Tap each point along your intended route. A small editing card\nshows the running distance and a **Finish** button — tap **Finish** (or\npress Enter) when the route is complete, or **Cancel** to discard it.\nPlaced a point in the wrong spot? **Undo** (the card's Undo button, or\nCtrl-Z / ⌘-Z) removes the last point, again and again back to the first.\nYour new route appears on the chart in amber to show it hasn't been saved\nyet.\n\n**Unsaved and saved routes work the same way.** Tap any route on the\nchart — freshly drawn or previously saved — to bring up its actions:\n**Modify** to reshape it, **Points** to reorder its point list, **Hide**\nto take it off the chart, **Delete** to remove it, and more. An unsaved\nroute also offers **Save** and **Start** right there: Save turns a quick\nsketch into a permanent route in one tap, and Start begins following it\nstraight away, without saving — see *Following a Route*. Saving keeps the\nroute right where it is on the chart — it won't disappear on you.\n\n![Fig 2. The editing card while modifying a route — running distance, the active leg, and Undo / Save / Cancel in one place](route-planning-2.jpg)\n\n**Modifying a route** uses the same editing card as drawing, showing the\nrunning distance and the leg you're working on. Drag a point to move it,\ndrag a leg to add a point, or remove a point with Ctrl-Click or a\npress-and-hold. Both delete gestures work the same with a mouse, a\ntouchscreen or a pen; a press that turns into a drag moves the point instead\nof deleting it. To **extend the route**, click open water past its end: the\nroute grows by a new end point, the same way you drew it, without leaving\nModify.\n**Undo** steps back through your edits one at a time. The card's commit\naction saves your changes — labeled **Save** for a route that isn't stored\nyet, **Finish** for one that is — and **Cancel** (or the ✕) discards them,\nwith no separate \"save changes?\" prompt to answer.\n\n**Reordering points** works on any route, saved or not. Open **Points**\nfrom the route's actions to drag its waypoints into a new order; on an\nunsaved draft the new order is held with the rest of your draft until you\nSave.\n\n**Hiding a route** takes it off the chart without deleting it — the same as\nunchecking **Show on Map** in the Routes list, but reachable straight from\nthe route on the chart. The route stays in your Routes list, ready to show\nagain, and the list's checkbox stays in step. (A route that is currently\nactive can't be hidden.)\n\nThe route's info panel offers the same actions — **Save**, **Edit**,\n**Delete** — plus the point list, distance, and a description you can write\nfor the route. A route that hasn't been saved yet is labeled **(unsaved)**\nso you always know its status at a glance.\n\nIf you have an extension plugin installed that helps you plan routes — an\nauto-router that fits a route around land, for instance — it can work with\nyour route while it's still a draft, before you decide to save it.\n"},{"id":"screen-widgets","raw":"---\nid: screen-widgets\ntitle: Screen Widgets\ncategory: Extensions\n---\n\n![Fig 1. Instrument and tide widgets placed around the edges of the chart](screen-widgets-1.jpg)\n\nIf you've installed a Signal K server plugin that provides a screen widget,\nyou can place it directly onto the chart screen — a compact readout like a\nspeed dial, a wind gauge, or anything else the plugin offers. Two examples\nare [signalk-instrument-widgets](https://www.npmjs.com/package/signalk-instrument-widgets),\na set of boat instrument gauges, and\n[signalk-basic-tide-widgets](https://www.npmjs.com/package/signalk-basic-tide-widgets),\nwhich shows upcoming tides.\n\nWidgets sit in the corners of the screen and at the centre of the top and\nbottom edges *(the top-left corner is reserved for Freeboard's own menu)*.\n\n**To add a widget**, press and hold an empty spot in one of these areas for\nabout a second and a half (or right-click there if you're using a mouse and\nkeyboard). A short list of the widgets that fit there appears — choose one\nand it's added to your screen. As you place more, widgets stack neatly from\nthe edge inward.\n\n**To change or remove a widget**, press and hold the widget itself. This\nopens its settings, where you can adjust it (if it has any options) or\nremove it from the screen.\n\nYour layout is remembered, so the widgets you place are still there the next\ntime you open Freeboard-SK.\n\nSome widgets can also narrow down what's shown elsewhere on the chart — for\nexample, showing only certain waypoints. When a widget does this, a small\nchip appears near the top of the screen describing the filter; tap its **×**\nto clear it and show everything again.\n\nIf you haven't installed any plugins that provide screen widgets, none of\nthis is visible — Freeboard looks and works exactly as it always has.\n"},{"id":"temporal-charts","raw":"---\nid: temporal-charts\ntitle: Time-varying Charts\ncategory: Charts\n---\n\n![Fig 1. NEXRAD weather radar scrubbed back to an earlier frame, with the Time palette open](temporal-charts-1.jpg)\n\nA weather radar, satellite or nowcast chart is not one picture but a run of them,\none every few minutes. Where a chart provider offers those earlier frames, Freeboard\nlets you scrub back through them, step frame by frame, and play the run as a loop —\nthe way you would on a weather app — without the provider having to publish a\nseparate chart for every frame.\n\n## Which charts\n\nA chart is time-varying when its provider says so. Charts served by a plugin declare\nit on the chart resource (see below). A **WMS or WMTS** chart you add yourself\nbecomes time-varying automatically when the service advertises a time dimension for\nthe layer you pick — either in the add-chart dialog or later under **Chart\nProperties**. An Overlay from an earlier Freeboard that had a time slider appears\nin the Chart list as a chart, with this control in its place (see **Overlays**).\nVector charts (Mapbox-style sources, S-57 ENCs) are never time-varying.\n\nA time-varying chart shows a **clock** action on its row in the Chart list,\nalongside Opacity, Image Adjustment and Minimum Zoom Level. The action is available\nwhile the chart is displayed.\n\n![Fig 2. The clock action on a chart's row opens the Time palette; the row notes the frame being shown](temporal-charts-2.jpg)\n\n## The Time palette\n\nThe palette is small and stays open beside the Chart list, so you can keep the map\nin view while you scrub. It shows the chart's frame cadence (\"every 5 min\"), the\ninstant currently on the map, and a bar spanning the last 12 hours of frames:\n\n- **Scrub** — drag the blue playhead on the upper lane of the bar. The map keeps the\n frame it has until the new one has loaded, so scrubbing never blanks the chart,\n even on a slow connection.\n- **‹ ›** — step back or forward one frame. Stepping past either end of the bar moves\n the bar along, so the whole archive is reachable.\n- **Loop** — the two amber dots on the lower lane bracket the frames **Play** cycles\n through; the shaded band between them is the loop, and its range is written out\n beside the speed. It starts as the last hour up to the newest frame. Drag a dot to\n change either end; the two cannot cross.\n- **Play / Pause** — cycle the loop at the chosen **Speed** (Slow, Medium, Fast or\n X-fast). Scrubbing, stepping or NOW stops playback.\n- **NOW** — return to the newest frame: the live frame for a source that serves one,\n or, for an archive-only source (IEM's NEXRAD history, for instance), the newest\n frame it holds — which the chart then keeps up with as new frames are added.\n\nDates and times are shown in your local time.\n\nScrubbing back in time is something you do with the palette in view. **Closing the\npalette returns the chart to its newest frame** — whatever you had scrubbed to is\ndiscarded, so a chart is never left drawing old weather with nothing on screen to\nsay so. While the palette is open, the frame you have selected stays exactly where\nyou put it: a chart that also auto-refreshes keeps its bar and loop current as new\nframes arrive, but never moves your selection.\n\n## What the chart list shows\n\nWhile a chart is showing a past frame its row carries a small **\"at …\"** note with\nthe frame's time, so a ticked chart drawing old weather says why. The note clears\nwhen the chart is back on its newest frame.\n\n## What is remembered\n\n- The **frame you are looking at is not remembered** — every time-varying chart\n starts on its newest frame when Freeboard loads, and returns to it when the\n palette closes.\n- The **loop range is remembered per chart**, measured back from the newest frame,\n so a chart you loop over \"the last three hours\" opens on the last three hours\n next time too.\n- The **palette's position** is remembered, like the Image Adjustment palette.\n\n## With auto-refresh\n\nA chart that also auto-refreshes (see **Auto-refreshing Charts**) stops refreshing\nwhile it is showing a past frame — a historical frame does not change — and picks up\nagain when it returns to its newest frame. For an archive-only source that keeps\nadding frames, \"newest\" moves on with them: on each refresh the chart is drawn from\nthe newest frame the source now holds. A **WMS or WMTS chart you added yourself**\nkeeps up the same way.\n\n## For chart-provider plugins\n\nAdd a **`time`** block to the chart resource. `current: true` says the source serves\na live frame (so NOW is offered); `from` / `to` / `step` (milliseconds) or an\nexplicit `values` list describe the frames on offer. For **tile layers and TileJSON**\nsources, `time.url` is the tile URL template with a `{time}` placeholder that\nFreeboard fills with the ISO 8601 instant; the plain `url` stays the live frame.\n**WMS and WMTS** sources need no template — the instant goes out as the standard\n`TIME` parameter / `Time` dimension. Instants are requested exactly as the timeline\ndescribes them (`from` plus whole steps), so a service that only serves those\ninstants is safe. The full convention is the *Time-varying charts* section of the\nPlotter Extensions API documentation in the Freeboard-SK repository, which also\nlets an extension plugin drive the same control.\n"},{"id":"track-history","raw":"---\nid: track-history\ntitle: Track History & Playback\ncategory: Tracks\n---\n\n![Fig 1. Track history for your own vessel and an AIS vessel, played back with ghost boats](track-history-1.jpg)\n\nSee everywhere a vessel has been, not just its last few hours: your own\nboat's past passages, or where another boat has been over the last month.\nThen play it back to watch the boats move along their tracks together.\n\nTrack history needs a Signal K server with the Track API (server 2.33 or\nlater with a track provider, such as the Tracks plugin). Without one, the\nhistory button doesn't appear.\n\n## Showing a vessel's history\n\n![Fig 2. The history button in a vessel's popover](track-history-2.jpg)\n\nTap a vessel on the chart, your own or an AIS vessel, and use the **history**\nbutton in its popover. In the AIS vessel list the same button is labelled\n**HISTORY**. The vessel's whole recorded track is drawn as a solid, muted\nline behind its usual trail, and the **Track history** window opens.\n\nThe button is greyed out for a vessel with nothing recorded. How far back a\ntrack goes depends on your server: the Tracks plugin keeps your own track\nindefinitely and other vessels' tracks for 30 days.\n\nThe history follows the chart. Pan somewhere else and the passages there are\ndrawn; zoom in and they are redrawn in more detail. If a vessel's track is\nsomewhere else, see **Finding a track that's out of view** below.\n\n## The Track history window\n\n![Fig 3. The Track history window](track-history-3.jpg)\n\n- **Vessels** lists every vessel whose history is shown. Zoom the chart to one\n with its zoom-to-track button, remove one with its ×, or close the window to\n hide them all. Add more from their popovers.\n- **Range** chooses how far back to look: **7 days**, **30 days** or **All**,\n or drag the two handles under the bar to pick any stretch of time. The same\n range applies to every vessel shown.\n\nThe window can be dragged anywhere on the screen, and it reopens where you\nleft it. History is shown for the current session only.\n\nTo save a vessel's history to a GPX file, see **Export to GPX**.\n\n## Finding a track that's out of view\n\nHistory is drawn for the part of the chart you're looking at, so a vessel's\ntrack can be shown and still be off-screen: another boat's passage last\nmonth, or your own trip from last season.\n\n![Fig 4. Zoom to a vessel's track from the Vessels list](track-history-4.jpg)\n\nEach vessel in the **Vessels** list has a **zoom to track** button beside its\nname. It moves the chart to fit where that vessel's track lies in the selected\n**Range**, so after switching to **7 days** it zooms to the last week's\npassages, not the whole record. The button is greyed out when the range holds\nnothing for that vessel.\n\nWhen a track you're showing is out of view, the line at the bottom of the\nwindow says so: **Recorded outside this area**, or which vessels are out of\nview beside the ones you can see. It also offers **Show**, which fits the chart\nto all of them at once. When the range holds no track at all, it says **No\nrecorded track in this time range** instead.\n\n![Fig 5. The chart fitted to a recorded passage](track-history-5.jpg)\n\nThe chart only moves when you ask. Zooming to a track turns off **follow\nvessel**, so the chart stays on the track instead of jumping back to your boat.\n\n## Playback\n\nThe **Playback** box replays the history. Drag the round playhead on the bar\nback in time, or step through with **‹** and **›**. **▶** plays through the\nselected range at the chosen **Speed** and starts again from the beginning\nwhen it reaches the end.\n\nAt any time other than now, each vessel shown is drawn as a faded \"ghost\"\nwhere it was at that moment, pointed along its course, so you can see where\ntwo boats were relative to each other. A vessel with nothing recorded at that\ntime has no ghost. **NOW** puts the ghosts away and returns to the present.\n\n## When was it there?\n\nTap a history line to see when that stretch was recorded, **From** and\n**To**, how long it lasted, and when the vessel was at the spot you tapped\n(**Here at**). The same works on your own trail and on other vessels' tracks;\nsee **Vessel Tracks**.\n"},{"id":"unit-preferences","raw":"---\nid: unit-preferences\ntitle: Units & Value Display\ncategory: Display\n---\n\n![Fig 1. The Units settings panel, with Use Server Unit Preferences turned on](unit-preferences-1.jpg)\n\nFreeboard shows every numeric value in the units you prefer. You choose them in\n**Settings** on the **Units** tab, under **UNITS & VALUES**.\n\n## Choosing your own units\n\nFive settings, each covering one kind of value:\n\n- **Distance units** - Kilometres or Nautical Miles. Ranges, route legs, distance to\n the next waypoint.\n- **Depth units** - metres, feet or fathoms.\n- **Length units** - metres or feet. Vessel dimensions and other short lengths, kept\n separate from Distance so you can read a boat's length in feet while navigating in\n nautical miles.\n- **Speed units** - knots, m/sec, km/h or mph.\n- **Temperature units** - Celsius or Fahrenheit.\n\nA change applies straight away, with no restart.\n\nThe depth setting reaches further than the instrument readouts: it also sets the unit\nS-57 vector charts label their soundings in, so changing it redraws the chart as well.\nSounder depth and charted depth always agree.\n\n## Taking your units from the Signal K server\n\nThe server keeps its own unit preferences, set per user in **Server Admin** under\n**Server &rarr; Configuration &rarr; Settings &rarr; Unit Preferences**. Tick\n**Use Server Unit Preferences** and Freeboard follows those instead: the five\nselections above grey out and take their values from the server.\n\nThe point of this is to set your units once, on the server, and have every app that\nhonours them agree - Freeboard included. Change a unit on the server and Freeboard\npicks it up; there is nothing to update here.\n\nThe checkbox is only available if your server actually publishes unit preferences. On\na server without them it stays greyed out and your own selections apply.\n\nIf the server asks for a unit Freeboard doesn't offer, Freeboard keeps your existing\nchoice for that category rather than showing a value it cannot convert.\n\n## When one value needs a different unit\n\nA single unit per category isn't always what you want. Wind speed in metres per second\nalongside boat speed in knots is the common case, and normal practice in much of\nEurope.\n\nThe server handles this by publishing a unit against one specific data path rather than\nagainst the whole category. Freeboard honours that for **wind speed**: with **Use\nServer Unit Preferences** on, the true and apparent wind speeds in a vessel popover\ndisplay in the server's wind-speed unit, while boat speed stays in your Speed unit.\n\nThere is nothing to set in Freeboard. Configure the override on the server and it\nappears; where the server publishes no override, wind speed falls back to the Speed\nunit like everything else. Turning **Use Server Unit Preferences** off drops the\noverrides along with the rest of the server's preferences.\n\nThe true-wind value Freeboard reads is the one you selected under **Preferred Paths**,\nso if you have picked a particular true-wind source the override follows that choice.\n\nWind speed is currently the only value that uses a per-path unit.\n\n## Also on this tab\n\nTwo further settings share the **UNITS & VALUES** panel because they change how values\nare shown rather than what they are:\n\n- **Position display format** - how latitude and longitude are written, from decimal\n degrees through to degrees, minutes and seconds.\n- **Prefer True / Magnetic values** - which of the two Freeboard uses for paths you\n have not pinned under **Preferred Paths**.\n"},{"id":"vessel-tracks","raw":"---\nid: vessel-tracks\ntitle: Vessel Tracks\ncategory: Tracks\n---\n\n![Fig 1. A vessel's popover: its track button, and the history button beside it](vessel-tracks-1.jpg)\n\nSee where your own boat has been, and where other AIS vessels have been, as a\ntrack (trail) drawn on the chart.\n\n## Your own track\n\nTurn on **Display Vessel Track** under **Settings → Vessels** to draw your\nboat's recent track behind it. It is on by default.\n\n**Track source** chooses where that track comes from:\n\n- **Auto** (the default) uses the track your Signal K server has recorded\n whenever the server can supply one. The track then survives restarts and is\n the same on every device you open Freeboard on. When the server has no\n recorded track, the track is kept on this device instead. The hint under the\n selector shows which one is in use.\n- **Server** always asks the server. It is unavailable when the server cannot\n supply a track, and the hint says what is needed: a Track API (v2) provider,\n such as the Tracks plugin.\n- **This device** keeps the track in this browser only, recorded while\n Freeboard is open. Each device then shows its own track.\n\nWhen the track comes from the server, **Length** sets how many hours of it to\nshow (24 hours by default). The three **Resolution** settings trade detail for\nspeed. They set how closely spaced the points are for the last hour, for 1 to\n24 hours ago, and for anything older.\n\nIn the chart's context menu (right-click, or long-press on a touch screen),\n**Refresh Trail** reloads a server track. For a track kept on this device, the\nsame item reads **Clear Trail** and deletes it. **Trail to Route** turns the\ntrack into a route.\n\n![Fig 2. Tapping the trail shows when you were there](vessel-tracks-2.jpg)\n\nTap your trail to see when that stretch was recorded, **From** and **To**,\nhow long it lasted, and when you were at the spot you tapped (**Here at**).\nTapping the boat itself still opens its usual popover.\n\n## Other vessels' tracks\n\n![Fig 3. Other Vessels settings](vessel-tracks-3.jpg)\n\n**To show every vessel's track at once**, turn on **Show all tracks** under\n**Settings → Vessels → Other Vessels**. The last two hours of each track are\ndrawn for the vessels on screen, and they follow the chart as you pan to a\nnew area. These tracks are drawn only when zoomed in (zoom level 10 or\ncloser), so a crowded chart zoomed far out stays readable.\n\n**To follow just one or two vessels** instead of cluttering the chart with\neveryone's track, leave that setting off and pick vessels individually. Tap a\nvessel on the chart to open its popover, or find it in the AIS vessel list.\nThen use the **track** button (labelled **TRACK** in the list) to turn its\ntrack on or off. A picked vessel's track shows at any zoom, and\n**Picked vessel track length** sets how far back it reaches (12 hours by\ndefault). Your picks apply for the current session only; they aren't saved\nbetween visits.\n\nThe per-vessel picker and its length setting are only available while\n**Show all tracks** is off. With it on, every vessel is already shown, so\nthere's nothing to pick.\n\nTap another vessel's track to see when it was recorded and when the vessel\nwas at that spot, just as for your own trail.\n\nVessels hidden by **Hide Moored** or **Hide Anchored** don't have their tracks\ndrawn either.\n\nTo see a vessel's whole recorded track, beyond these recent hours, see\n**Track History & Playback**. To save a track to a GPX file, see\n**Export to GPX**.\n\n## Where the tracks come from\n\nRecorded tracks come from your Signal K server's Track API (server 2.33 and\nlater, with a track provider such as the Tracks plugin). Freeboard can still\nread tracks from the older track interface on older servers and plugins. When\nit does, a **Vessel Tracks** notice at start says that support for the older\ninterface will be removed in a future release, and what is needed instead.\nTick **Don't show this message again** to stop it appearing on that device.\n\nWithout any server track source, your own track is kept on this device, and\nother vessels show only the short track Freeboard gathers while it is open.\n"},{"id":"weather-overlays","raw":"---\nid: weather-overlays\ntitle: Wind, Currents & Tides\ncategory: Weather\n---\n\n![Fig 1. Wind and ocean current overlays on the chart](weather-overlays-1.jpg)\n\nGrid overlays sample live weather and current data across the visible chart\narea, each toggled independently from the **Weather** panel (opened from the\nresources list):\n\n- **Wind** — \"Enable wind layer\" toggle. Requires a Signal K Weather Provider\n plugin installed on the server. Freeboard samples a 5×4 grid of points across\n the current view and refreshes them shortly after you pan or zoom. Each point\n renders as a **wind barb** by default (half feather = 5 kn, full = 10 kn,\n pennant = 50 kn, staff pointing into the wind) or, with the\n **Display → Weather → \"Wind indicator\"** setting set to Arrow, an arrow\n pointing where the wind flows to. Either glyph always shows the sampled wind\n speed as a label. The glyph choice is shared with the wind barbs shown on\n weather-station targets — switching the Wind indicator setting changes both\n at once. The arrow glyph can be replaced with custom artwork through a symbol\n provider plugin by publishing a symbol with the well-known id\n `windIndicator-arrow`.\n\n- **Ocean Currents** — \"Enable ocean currents layer\" toggle. No server plugin\n needed — Freeboard queries the Open-Meteo Marine API directly. It samples a\n denser 10×8 grid; each arrow points in the current's flow direction, is\n colour-graded from blue (slow) to red (fast), sized by speed, and labelled\n with the current's velocity in knots.\n\n![Fig 2. The Tidal Currents section of the Weather panel, with its 24-hour time bar, and the current overlay on the chart](weather-overlays-2.jpg)\n\n- **Tidal Currents** — appears in the Weather panel as **\"Enable tidal\n currents layer\"**, but only when a `signalk-tidal-currents` plugin is\n installed on the server; otherwise this option doesn't show up at all.\n Arrows are colour-graded and labelled with speed, the same as Ocean\n Currents. What sets it apart is a **24-hour time bar** underneath the\n toggle: drag it, click anywhere on it, or use the step buttons (±1h, ±6h)\n to see how currents shift through the day, with **Play** to animate\n through time and **Now** to jump back to the current moment.\n\nBoth current arrows can also be replaced with custom artwork through a symbol\nprovider plugin, each under its own well-known id — `oceanCurrentIndicator-arrow`\nand `tidalCurrentIndicator-arrow` — so the two overlays stay distinguishable\nwhen shown together. Because Freeboard tints these arrows to encode speed, draw\na replacement with a plain white fill; a pre-coloured glyph comes out muddy.\n\nAll three overlays refresh automatically as you pan or zoom, and can be\nshown together or independently.\n"},{"id":"weather-station-wind-barbs","raw":"---\nid: weather-station-wind-barbs\ntitle: Weather Station Wind Barbs\ncategory: Weather\n---\n\n![Fig 1. A weather-station target rendered as a wind barb](weather-station-wind-barbs-1.jpg)\n\nWeather-station (`meteo`) targets — AIS Met/Hydro buoys and plugin-published shore\nstations such as signalk-viva — show wind as a standard **wind barb**: half\nfeather = 5 kn, full = 10 kn, pennant = 50 kn. The barb is picked from the\nstation's reported wind speed in 5-knot buckets (5–75 kn, clamped) and its staff\nrotates to point into the reported wind direction. Below 5 kn, or when no wind is\nreported, the target falls back to the plain windsock icon, unrotated.\n\nThe wind speed is always shown as a label next to the glyph, in your configured\nwind-speed units.\n\nAll 15 barb glyphs ship with Freeboard, so this works with no setup. Any bucket\ncan be replaced with custom artwork through a symbol provider plugin by\npublishing a symbol whose id matches the well-known bucket id —\n`real-weatherStation-<kts>` for real stations, `virtual-weatherStation-<kts>` for\nvirtual ones, where `<kts>` is one of the buckets 5–75 (e.g.\n`real-weatherStation-25`).\n\nA **Display → Weather → \"Wind indicator\"** setting can switch the glyph to a\nplain arrow instead of a barb for every weather-station target on the chart.\n"}],"ledger":[{"feature":"own-vessel-display","pr":693,"kind":"enhanced","since":"v3.1.0","date":"2026-08-08","title":"feat(vessels): flag own vessel when its position goes stale"},{"feature":"own-vessel-display","pr":394,"kind":"enhanced","since":"v3.0.0","date":"2026-06-25","title":"Vessel icon can be replaced with a custom symbol"},{"feature":"own-vessel-display","kind":"enhanced","since":"v2.17.0","date":"2025-08-18","title":"Range circles around the vessel"},{"feature":"own-vessel-display","kind":"enhanced","since":"v2.8.0","date":"2024-05-20","title":"Laylines when navigating to a destination"},{"feature":"own-vessel-display","kind":"enhanced","since":"v2.2.0","date":"2023-08-05","title":"Fixed Location Mode for shore-based installations"},{"feature":"own-vessel-display","kind":"new","since":"v0.0.2","date":"2015-05-01","title":"Vessel shown on the chart at its reported position"},{"feature":"notes","pr":667,"kind":"enhanced","since":"v3.1.0","date":"2026-08-01","title":"feat(notes): move note details option to the Notes settings group"},{"feature":"weather-station-wind-barbs","pr":495,"kind":"new","since":"v3.0.0","date":"2026-07-10","title":"feat(map): render meteo targets as wind barbs"},{"feature":"weather-overlays","pr":413,"kind":"new","since":"v3.0.0","date":"2026-07-03","title":"feat(weather): add wind and ocean current overlays"},{"feature":"weather-overlays","pr":520,"kind":"enhanced","since":"v3.0.0","date":"2026-07-14","title":"feat(weather): unify wind indicator rendering across overlays"},{"feature":"weather-station-wind-barbs","pr":520,"kind":"enhanced","since":"v3.0.0","date":"2026-07-14","title":"feat(weather): unify wind indicator rendering across overlays"},{"feature":null,"pr":520,"kind":"skip","reason":"internal UI fix — settings dialog fixed sizing/scrolling, not a distinct feature"},{"feature":"custom-map-symbols","pr":394,"kind":"new","since":"v3.0.0","date":"2026-06-25","title":"feat(charts): Custom map symbols via symbol providers"},{"feature":"screen-widgets","pr":395,"kind":"new","since":"v3.0.0","date":"2026-06-26","title":"feat: Add plotter extension host: widgets, panels, buttons, resource filters & background runtimes"},{"feature":"extension-panels","pr":395,"kind":"new","since":"v3.0.0","date":"2026-06-26","title":"feat: Add plotter extension host: widgets, panels, buttons, resource filters & background runtimes"},{"feature":"route-planning","pr":432,"kind":"enhanced","since":"v3.0.0","date":"2026-06-29","title":"feat(routes): live route editing — editable drafts + plotter-extension route API"},{"feature":null,"pr":432,"kind":"skip","reason":"adds the routes capability to the Plotter Extensions API for extension plugins (e.g. auto-routing); no direct end-user surface in Freeboard itself"},{"feature":"vessel-tracks","pr":448,"kind":"enhanced","since":"v3.0.0","date":"2026-07-02","title":"feat(map): add per-vessel AIS track display"},{"feature":"cursor-eta","pr":455,"kind":"new","since":"v3.0.0","date":"2026-07-03","title":"feat(map): show live bearing, distance and ETA at cursor"},{"feature":"cursor-eta","pr":636,"kind":"enhanced","since":"v3.1.0","date":"2026-07-27","title":"feat(map): support the cursor bearing/distance/ETA readout on touch devices"},{"feature":"buddy-list","pr":484,"kind":"enhanced","since":"v3.0.0","date":"2026-07-07","title":"feat(ais): add \"Buddies only\" option to the vessel filter"},{"feature":"chart-image-adjustment","pr":489,"kind":"new","since":"v3.0.0","date":"2026-07-07","title":"feat(charts): add brightness/contrast adjustment for raster image layers"},{"feature":"chart-image-adjustment","pr":497,"kind":"enhanced","since":"v3.0.0","date":"2026-07-10","title":"feat(charts): make image adjustment a modeless draggable palette"},{"feature":"chart-image-adjustment","pr":510,"kind":"enhanced","since":"v3.0.0","date":"2026-07-12","title":"feat(charts): trim image adjustment palette and remember its position"},{"feature":"weather-overlays","pr":491,"kind":"enhanced","since":"v3.0.0","date":"2026-07-11","title":"feat(weather): add tidal currents overlay with time-stepping controls"},{"feature":"weather-overlays","pr":523,"kind":"enhanced","since":"v3.0.0","date":"2026-07-14","title":"feat(weather): make current-overlay arrows customizable symbols"},{"feature":"notes","pr":485,"kind":"enhanced","since":"v3.0.0","date":"2026-07-07","title":"feat(notes): size Note Details dialog to fit its content"},{"feature":"notes","pr":512,"kind":"enhanced","since":"v3.0.0","date":"2026-07-12","title":"feat(notes): add option to open note details on single click"},{"feature":"feature-browser","pr":528,"kind":"new","since":"v3.0.0","date":"2026-07-16","title":"feat(features): add a searchable \"What's New\" feature browser"},{"feature":"feature-browser","pr":530,"kind":"enhanced","since":"v3.0.0","date":"2026-07-17","title":"feat(features): replace forced onboarding modals with a passive What's New indicator"},{"feature":"feature-browser","pr":604,"kind":"enhanced","since":"v3.1.0","date":"2026-07-27","title":"feat(features): show a feature's newest changes above its instructions"},{"feature":"feature-browser","pr":657,"kind":"enhanced","since":"v3.1.0","date":"2026-07-31","title":"feat(ui): add \"What's New\" to the main menu"},{"feature":"chart-zoom-limits","kind":"new","since":"v2.1.0","date":"2023-07-06","title":"limit zoom to selected maps"},{"feature":"route-planning","pr":580,"kind":"enhanced","since":"v3.1.0","date":"2026-07-25","title":"feat(map): delete a route vertex with a long left-click, matching touch"},{"feature":"route-planning","pr":582,"kind":"enhanced","since":"v3.1.0","date":"2026-07-25","title":"feat(routes): unify the route draw and modify helper panels"},{"feature":"route-planning","pr":584,"kind":"enhanced","since":"v3.1.0","date":"2026-07-25","title":"feat(routes): add undo for route drawing and editing"},{"feature":"route-planning","pr":593,"kind":"enhanced","since":"v3.1.0","date":"2026-07-25","title":"feat(routes): add a Hide action to the route popover"},{"feature":"route-planning","pr":597,"kind":"enhanced","since":"v3.1.0","date":"2026-07-26","title":"feat(routes): allow reordering points on unsaved routes"},{"feature":"route-planning","pr":598,"kind":"enhanced","since":"v3.1.0","date":"2026-07-26","title":"feat(routes): extend a route by clicking open water in modify mode"},{"feature":"chart-list","kind":"new","since":"v0.0.2","date":"2016-07-05","title":"Add charts find and display"},{"feature":"chart-list","kind":"enhanced","since":"v1.14.0","date":"2020-12-19","title":"Chart List ordering (closes #88)"},{"feature":"chart-list","pr":177,"kind":"enhanced","since":"v2.11.2","date":"2024-08-30","title":"Toggle chart on boundary click"},{"feature":"chart-list","kind":"enhanced","since":"v2.19.6","date":"2026-01-07","title":"Editable chart properties"},{"feature":"chart-list","kind":"enhanced","since":"v2.22.0","date":"2026-04-30","title":"Add chart opacity control (closes #368)"},{"feature":"chart-list","pr":352,"kind":"enhanced","since":"v3.1.0","date":"2026-07-25","title":"feat(charts): add In view filter to chart list"},{"feature":"chart-list","pr":595,"kind":"enhanced","since":"v3.1.0","date":"2026-07-26","title":"feat(charts): order chart list to match the chosen layer order"},{"feature":"follow-vessel","kind":"new","since":"v0.0.2","date":"2015-05-18","title":"Added vesselUp and followVessel control buttons"},{"feature":"follow-vessel","kind":"enhanced","since":"v2.11.2","date":"2024-09-05","title":"Lock in Follow Vessel setting to remain in this mode when map is panned"},{"feature":"follow-vessel","kind":"enhanced","since":"v2.17.0","date":"2025-08-18","title":"Look ahead"},{"feature":"follow-vessel","pr":601,"kind":"enhanced","since":"v3.1.0","date":"2026-07-26","title":"feat(map): single center/follow button and pan to set follow offset"},{"feature":"follow-vessel","pr":616,"kind":"enhanced","since":"v3.1.0","date":"2026-07-27","title":"feat(map): offset the vessel abeam as well as ahead when following"},{"feature":"follow-vessel","pr":638,"kind":"enhanced","since":"v3.1.0","date":"2026-07-28","title":"fix(map): hold the follow-vessel offset fixed to the screen, not the boat"},{"feature":"follow-vessel","pr":642,"kind":"enhanced","since":"v3.1.0","date":"2026-07-29","title":"fix(map): keep the follow offset fixed on screen while zooming"},{"feature":"radar-overlay","kind":"new","since":"v2.19.7","date":"2026-01-18","title":"Initial RADAR API support"},{"feature":"radar-overlay","kind":"enhanced","since":"v2.24.0","date":"2026-06-19","title":"Radar control panel with overlay toggle, opacity and radar controls"},{"feature":"radar-overlay","pr":573,"kind":"enhanced","since":"v3.1.0","date":"2026-07-25","title":"feat(radar): Support Radar API 3.4.0 in the radar overlay (with pre-3.4.0 fallback)"},{"feature":"unit-preferences","kind":"new","since":"v1.8.0-rc1","date":"2018-09-12","title":"Unit selection for distance, depth, speed and temperature"},{"feature":"unit-preferences","kind":"enhanced","since":"v2.20.0","date":"2026-03-14","title":"Use unit preferences configured on the Signal K server"},{"feature":"unit-preferences","kind":"enhanced","since":"v2.21.0","date":"2026-04-01","title":"server unit preferences additional support"},{"feature":"unit-preferences","pr":447,"kind":"enhanced","since":"v3.0.0","date":"2026-07-02","title":"feat(units): honor per-path display units for wind speed"},{"feature":null,"pr":446,"kind":"skip","reason":"adds the optional path argument and display-unit cache to formatValueForDisplay; foundation only, with no user-facing change until #447 populates it"},{"feature":null,"pr":454,"kind":"skip","reason":"adds the charts capability to the Plotter Extensions API — display management of chart layers Freeboard already manages, for extension plugins; no direct end-user surface in Freeboard itself"},{"feature":null,"pr":505,"kind":"skip","reason":"implements the nightMode capability of the Plotter Extensions API for extension plugins; the user-facing Dark Mode / Auto-set Night Mode settings are unchanged"},{"feature":null,"pr":508,"kind":"skip","reason":"exposes the host API to an embedding application (e.g. KIP) over the plotter-extension bus; an integration topology change with no end-user surface in Freeboard itself"},{"feature":null,"pr":607,"kind":"skip","reason":"emits the map.view event of the Plotter Extensions API so extensions stop polling map.getView; no end-user surface"},{"feature":null,"pr":529,"kind":"skip","reason":"developer tooling — generates the GitHub Release body from the feature ledger; excluded from the npm package, never shipped to users"},{"feature":null,"pr":450,"kind":"skip","reason":"developer tooling — dev-tools/fsk-mcp lets an AI agent drive a running Freeboard; excluded from the npm package, never shipped to users"},{"feature":null,"pr":419,"kind":"skip","reason":"performance work — runs OpenLayers and change detection outside the Angular zone; no change to what the user can do"},{"feature":null,"pr":420,"kind":"skip","reason":"performance work — debounces config saves and guards dark-mode updates; no change to what the user can do"},{"feature":null,"kind":"skip","date":"2026-06-05","title":"feat(charts): honor chart tileSize for raster tile sources","reason":"corrects the rendering scale of raster charts whose tiles are not 256px; a correctness fix despite the feat prefix, with nothing new for the user to do"},{"feature":null,"kind":"skip","date":"2026-05-23","title":"perf(app): lazy-load dialog components on demand","reason":"performance work — no change to what the user can do"},{"feature":null,"kind":"skip","date":"2026-05-23","title":"perf(s57): cache derived text-style config across features","reason":"performance work — no change to what the user can do"},{"feature":null,"kind":"skip","date":"2026-04-04","title":"perf: defer S57 chart symbols loading until first use","reason":"performance work — no change to what the user can do"},{"feature":"chart-list","pr":680,"kind":"enhanced","since":"v3.1.0","date":"2026-08-08","title":"feat(charts): re-order charts from the chart list itself"},{"feature":"chart-zoom-limits","pr":679,"kind":"enhanced","since":"v3.1.0","date":"2026-08-08","title":"feat(charts): add a per-chart minimum zoom level"},{"feature":"follow-vessel","pr":726,"kind":"enhanced","since":"v3.2.0","date":"2026-09-02","title":"feat(map): resume follow mode after a configurable idle period"},{"feature":"chart-auto-refresh","pr":767,"kind":"new","since":"v3.2.0","date":"2026-09-17","title":"feat(charts): auto-refresh time-varying raster charts (radar/satellite)"},{"feature":"temporal-charts","pr":775,"kind":"new","since":"v3.2.0","date":"2026-09-18","title":"feat(charts): native support for time-varying (temporal) charts"},{"feature":null,"pr":777,"kind":"skip","reason":"implements the charts.time sub-capability of the Plotter Extensions API for extension plugins; the user-facing Time control is documented under Time-varying Charts"},{"feature":"chart-auto-refresh","pr":793,"kind":"enhanced","since":"v3.2.0","date":"2026-09-20","title":"feat(charts): refresh interval for user-added chart sources"},{"feature":"overlays","kind":"new","since":"v2.19.0","date":"2025-10-31","title":"Overlay map data from WMS & WMTS sources over charts"},{"feature":"overlays","kind":"enhanced","since":"v2.19.2","date":"2025-11-23","title":"add WMTS time dimension support"},{"feature":"overlays","pr":805,"kind":"enhanced","since":"v3.2.0","date":"2026-09-21","title":"feat(charts): fold overlays into the chart list"},{"feature":"chart-sources","kind":"new","since":"v2.12.0","date":"2024-10-24","title":"Add WMS/WMTS/JSON chart sources from the chart list"},{"feature":"chart-sources","pr":798,"kind":"enhanced","since":"v3.2.0","date":"2026-09-21","title":"feat(charts): show layer names in the WMS/WMTS layer pickers"},{"feature":"chart-sources","pr":811,"kind":"enhanced","since":"v3.2.0","date":"2026-09-22","title":"feat(charts): fill name, description and refresh from the picked WMS/WMTS layer"},{"feature":"chart-sources","pr":813,"kind":"enhanced","since":"v3.2.0","date":"2026-09-22","title":"fix(charts): accept a WMS/WMTS GetCapabilities link as the source URL"},{"feature":"temporal-charts","pr":799,"kind":"enhanced","since":"v3.2.0","date":"2026-09-21","title":"feat(charts): temporal chart follows the newest frame on auto-refresh"},{"feature":"temporal-charts","pr":807,"kind":"enhanced","since":"v3.2.0","date":"2026-09-21","title":"feat(charts): re-read the time dimension from the service for user-added temporal charts"},{"feature":null,"pr":818,"kind":"skip","reason":"implements the resourceGroups capability of the Plotter Extensions API for extension plugins; the user-facing Resource Groups list behaves as before"},{"feature":"vessel-tracks","pr":822,"kind":"enhanced","since":"v3.2.0","date":"2026-09-24","title":"feat(tracks): source the own-vessel trail and AIS tracks from the v2 Track API"},{"feature":"vessel-tracks","pr":829,"kind":"enhanced","since":"v3.2.0","date":"2026-09-24","title":"feat(tracks): browse, scrub and play back recorded track history"},{"feature":"track-history","pr":829,"kind":"new","since":"v3.2.0","date":"2026-09-24","title":"feat(tracks): browse, scrub and play back recorded track history"},{"feature":"gpx-export","kind":"new","since":"v1.18.0","date":"2021-08-26","title":"feature: Save to GPX"},{"feature":"gpx-export","kind":"enhanced","since":"v1.18.0","date":"2021-08-30","title":"add vessel trail to track option in Save to GPX"},{"feature":"gpx-export","pr":831,"kind":"enhanced","since":"v3.2.0","date":"2026-09-24","title":"feat(gpx): export the server trail and other vessels' tracks to GPX, over any recorded range"},{"feature":"track-history","pr":844,"kind":"enhanced","since":"v3.2.0","date":"2026-09-26","title":"feat(tracks): zoom to a vessel's recorded track from the Track history window"},{"feature":"route-following","pr":853,"kind":"enhanced","since":"v3.2.0","date":"2026-09-30","title":"feat(routes): start a drawn route without saving it first"},{"feature":"route-following","kind":"new","since":"v1.8.0-rc1","date":"2018-09-12","title":"Set a route as the Active Route"},{"feature":"route-following","kind":"enhanced","since":"v1.8.0-rc1","date":"2018-12-17","title":"Added Next / Prev Point selection for Active Route"},{"feature":"route-following","kind":"enhanced","since":"v2.0.0","date":"2022-04-06","title":"Course API: reverse route, restart XTE, auto-advance to next point on arrival"},{"feature":"route-following","kind":"enhanced","since":"v2.19.8","date":"2026-02-08","title":"Start navigating a route from the nearest point, or any point, in its Points screen"},{"feature":"route-following","pr":862,"kind":"enhanced","since":"v3.2.0","date":"2026-09-30","title":"feat(routes): rejoin the active route at a point, or skip the next one"},{"feature":"route-following","pr":864,"kind":"enhanced","since":"v3.2.0","date":"2026-09-30","title":"feat(routes): step the active route straight from the vessel"}],"categories":[{"name":"Charts","hue":215},{"name":"Waypoints","hue":30},{"name":"Routes","hue":140},{"name":"Tracks","hue":170},{"name":"Notes","hue":50},{"name":"Navigation","hue":265},{"name":"Autopilot","hue":300},{"name":"Weather","hue":200},{"name":"Radar","hue":110},{"name":"AIS & Vessels","hue":240},{"name":"Alarms & Notifications","hue":5},{"name":"Import/Export","hue":80},{"name":"Extensions","hue":325},{"name":"Display","hue":185},{"name":"Map","hue":345}]}
@@ -378,8 +378,8 @@
378
378
  server.
379
379
  </li>
380
380
  <li>
381
- Clear Destintation / Active Route: clears active destination
382
- or de-activates an active route.
381
+ Stop Navigating: clears the active destination or de-activates
382
+ an active route.
383
383
  </li>
384
384
  <li>Clear Course Data: clears the current course data.</li>
385
385
  <li>
@@ -655,11 +655,13 @@
655
655
 
656
656
  <b><i class="material-icons">skip_next</i></b>
657
657
  When a route is active click this button to advance to the next
658
- point in the sequence.<br />
658
+ point in the sequence, steering straight to it from the vessel's
659
+ position.<br />
659
660
 
660
661
  <b><i class="material-icons">skip_previous</i></b>
661
662
  When a route is active click this button to advance to the
662
- previous point in the sequence.<br />
663
+ previous point in the sequence, steering straight to it from the
664
+ vessel's position.<br />
663
665
  </div>
664
666
  <div style="padding-left: 15px">
665
667
  A waypoint can be set as the target for which navigation data is
@@ -943,7 +945,7 @@
943
945
  destination point.
944
946
  </li>
945
947
  <li>
946
- <b>Clear: </b> Clicking
948
+ <b>Stop Navigating: </b> Clicking
947
949
  <i class="material-icons">clear_all</i> sends a message to the
948
950
  server to clear the <i>Active Route</i>.
949
951
  </li>
@@ -1 +1 @@
1
- import{a as e}from"./chunk-64QDJX7X.js";import{a as r}from"./chunk-6QJRUI6F.js";import"./chunk-6H3I7D5M.js";var o=class extends r{decodeBlock(t){return e(new Uint8Array(t)).buffer}};export{o as default};
1
+ import{a as e}from"./chunk-64QDJX7X.js";import{a as r}from"./chunk-DD47QU4L.js";import"./chunk-NCEQPEJE.js";var o=class extends r{decodeBlock(t){return e(new Uint8Array(t)).buffer}};export{o as default};
@@ -1 +1 @@
1
- import{a as f}from"./chunk-6QJRUI6F.js";import{f as c}from"./chunk-6H3I7D5M.js";var l=class extends f{constructor(i){if(super(i),typeof createImageBitmap>"u")throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if(typeof document>"u"&&typeof OffscreenCanvas>"u")throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}decodeBlock(i){return c(this,null,function*(){let m=new Blob([i]),e=yield createImageBitmap(m),t;typeof document<"u"?(t=document.createElement("canvas"),t.width=e.width,t.height=e.height):t=new OffscreenCanvas(e.width,e.height);let d=t.getContext("2d");d.drawImage(e,0,0);let r=d.getImageData(0,0,e.width,e.height).data,s=this.parameters.samplesPerPixel||4;if(s===4)return r.buffer;if(s===3){let a=new Uint8ClampedArray(e.width*e.height*3);for(let n=0,o=0;n<a.length;n+=3,o+=4)a[n]=r[o],a[n+1]=r[o+1],a[n+2]=r[o+2];return a.buffer}else throw new Error(`Unsupported SamplesPerPixel value: ${s}`)})}};export{l as default};
1
+ import{a as f}from"./chunk-DD47QU4L.js";import{g as c}from"./chunk-NCEQPEJE.js";var l=class extends f{constructor(i){if(super(i),typeof createImageBitmap>"u")throw new Error("Cannot decode WebImage as `createImageBitmap` is not available");if(typeof document>"u"&&typeof OffscreenCanvas>"u")throw new Error("Cannot decode WebImage as neither `document` nor `OffscreenCanvas` is not available")}decodeBlock(i){return c(this,null,function*(){let m=new Blob([i]),e=yield createImageBitmap(m),t;typeof document<"u"?(t=document.createElement("canvas"),t.width=e.width,t.height=e.height):t=new OffscreenCanvas(e.width,e.height);let d=t.getContext("2d");d.drawImage(e,0,0);let r=d.getImageData(0,0,e.width,e.height).data,s=this.parameters.samplesPerPixel||4;if(s===4)return r.buffer;if(s===3){let a=new Uint8ClampedArray(e.width*e.height*3);for(let n=0,o=0;n<a.length;n+=3,o+=4)a[n]=r[o],a[n+1]=r[o+1],a[n+2]=r[o+2];return a.buffer}else throw new Error(`Unsupported SamplesPerPixel value: ${s}`)})}};export{l as default};
@@ -1,4 +1,4 @@
1
- import{a as at}from"./chunk-AA62TGOR.js";import{b as it,i as ct,j as ot,n as rt,o as dt}from"./chunk-WCLDE6BT.js";import{$d as et,Da as $,Ea as R,Ed as V,Fa as F,Fd as N,Ha as ae,Hd as Y,I as Ae,Ia as ie,Ic as se,Id as q,Ja as ce,Jc as _e,Jd as J,K as we,Ka as g,Kc as Ge,Kd as U,L as Te,La as o,Lc as He,M as Q,Ma as c,Md as G,N as B,Na as _,Nb as Ve,Nd as H,Oa as pe,Oc as fe,P as r,Pa as ke,R as M,S as D,Sd as Ye,T as Ie,Tc as Xe,U as Ee,Ua as P,Ud as Je,V as Z,Va as Pe,W as Se,Wa as b,Xb as re,Xc as Qe,Xd as E,Y as he,Ya as C,Z as te,Za as L,Zb as I,Zc as Ze,_ as Be,_a as x,_b as Ne,_d as O,aa as Re,ab as j,bb as A,be as tt,c as S,cb as w,da as ne,ga as be,gb as v,hd as Ke,i as De,ib as T,ja as d,ka as ue,kb as Le,la as Fe,lb as s,mb as oe,mc as qe,nb as h,nd as $e,qc as Ue,qe as nt,ra as p,sa as K,ta as f,ud as We,va as Oe,wa as ze,wb as je,wd as W,yc as de}from"./chunk-OPNUYGIO.js";import{a as z}from"./chunk-6H3I7D5M.js";var Mt=["*"],Dt=[[["mat-card-title"],["mat-card-subtitle"],["","mat-card-title",""],["","mat-card-subtitle",""],["","matCardTitle",""],["","matCardSubtitle",""]],[["","mat-card-image",""],["","matCardImage",""],["","mat-card-sm-image",""],["","matCardImageSmall",""],["","mat-card-md-image",""],["","matCardImageMedium",""],["","mat-card-lg-image",""],["","matCardImageLarge",""],["","mat-card-xl-image",""],["","matCardImageXLarge",""]],"*"],At=[`mat-card-title, mat-card-subtitle,
1
+ import{a as at}from"./chunk-D4A5NW5G.js";import{b as it,i as ct,j as ot,n as rt,o as dt}from"./chunk-GBMW6IJP.js";import{$d as et,Da as $,Ea as R,Ed as V,Fa as F,Fd as N,Ha as ae,Hd as Y,I as Ae,Ia as ie,Ic as se,Id as q,Ja as ce,Jc as _e,Jd as J,K as we,Ka as g,Kc as Ge,Kd as U,L as Te,La as o,Lc as He,M as Q,Ma as c,Md as G,N as B,Na as _,Nb as Ve,Nd as H,Oa as pe,Oc as fe,P as r,Pa as ke,R as M,S as D,Sd as Ye,T as Ie,Tc as Xe,U as Ee,Ua as P,Ud as Je,V as Z,Va as Pe,W as Se,Wa as b,Xb as re,Xc as Qe,Xd as E,Y as he,Ya as C,Z as te,Za as L,Zb as I,Zc as Ze,_ as Be,_a as x,_b as Ne,_d as O,aa as Re,ab as j,bb as A,be as tt,c as S,cb as w,da as ne,ga as be,gb as v,hd as Ke,i as De,ib as T,ja as d,ka as ue,kb as Le,la as Fe,lb as s,mb as oe,mc as qe,nb as h,nd as $e,qc as Ue,qe as nt,ra as p,sa as K,ta as f,ud as We,va as Oe,wa as ze,wb as je,wd as W,yc as de}from"./chunk-BCS6VHKX.js";import{a as z}from"./chunk-NCEQPEJE.js";var Mt=["*"],Dt=[[["mat-card-title"],["mat-card-subtitle"],["","mat-card-title",""],["","mat-card-subtitle",""],["","matCardTitle",""],["","matCardSubtitle",""]],[["","mat-card-image",""],["","matCardImage",""],["","mat-card-sm-image",""],["","matCardImageSmall",""],["","mat-card-md-image",""],["","matCardImageMedium",""],["","mat-card-lg-image",""],["","matCardImageLarge",""],["","mat-card-xl-image",""],["","matCardImageXLarge",""]],"*"],At=[`mat-card-title, mat-card-subtitle,
2
2
  [mat-card-title], [mat-card-subtitle],
3
3
  [matCardTitle], [matCardSubtitle]`,`[mat-card-image], [matCardImage],
4
4
  [mat-card-sm-image], [matCardImageSmall],