DataField¶
| Garmin | |
|---|---|
| Status | ✅ |
| Code | apps/garmin-datafield/source/, apps/garmin-datafield/manifest.xml, apps/garmin-datafield/resources/ |
| Version | 1.2.1 (AppVersion in apps/garmin-datafield/resources/resources.xml) |
Verified against code: 2026-10-11
Purpose¶
The DataField is a free Connect IQ app of type datafield. The sailor adds it to a data screen of one of Garmin's own activities, usually Sailing. It replaces Garmin's grid of single values with one full sailing screen: speed with a speed curve, COG with the tack/jibe angle, distance, average speed, pressure with a trend arrow, position, clock, timer, GPS and battery status.
Garmin's activity does the recording. The FIT file goes to Garmin Connect as usual. The DataField only reads and displays.
There is one platform (Garmin), so the specs have no platform subsections. Device differences (screen size, MIP vs AMOLED) are covered in screen.md.
What it does¶
- Reads Garmin's activity data once per second (
compute) and redraws the screen (onUpdate). - Shows 13 metrics on one screen. The count used in marketing groups GPS and battery status as one metric: SOG, speed curve, tack/jibe angle, COG, average speed, distance, pressure, pressure trend, latitude, longitude, clock, timer, GPS and battery status.
- Is meant for a 1-field layout (the field fills the whole screen). See
screen.md.
What it never does¶
- It never uploads anything to SailEver. It has no pairing, no device token and no network access (no
Communicationspermission). - It writes nothing to the FIT file: no developer fields, no
FitContributor. The vessel state, thetrip_tokenand all other SailEver FIT fields belong to the WatchApp. - It stores nothing between activities: no
Application.Storage, no properties. All history (speed curve, COG history, pressure samples) lives in memory and starts empty each time the field is loaded. - It has no settings, no user properties and no on-watch menu. It reacts to no buttons or touches.
- It raises no alerts: no tones, no vibration, no pop-ups.
A sailor who wants the track in the SailEver logbook uploads Garmin's FIT file on the website (upload dialog).
Data sources¶
| Value | Source | Unit conversion |
|---|---|---|
| SOG | Activity.Info.currentSpeed (m/s) |
× 3600 / 1852 → kn. null → 0, negative → 0 |
| Distance | Activity.Info.elapsedDistance (m) |
/ 1852 → nm. null → 0 |
| Average speed | elapsedDistance / timerTime |
m/s → kn. 0 while distance or timer is 0 or null |
| Timer | Activity.Info.timerTime (ms) |
H:MM:SS |
| Position | Activity.Info.currentLocation |
degrees, shown as degrees and decimal minutes |
| GPS quality | Activity.Info.currentLocationAccuracy |
Position.Quality 0–4 |
| COG | Position.getInfo().heading (radians) and Position.getInfo().accuracy |
degrees. Never the compass (Activity.Info.currentHeading) |
| Pressure | Activity.Info.ambientPressure (Pa) |
/ 100 → hPa. Station pressure, not reduced to sea level. null → 0 |
| Clock | System.getClockTime() |
H:MM, 24 h |
| Battery | System.getSystemStats().battery |
percent 0–100 |
The maths for COG smoothing, the tack/jibe angle and the pressure trend is shared with the WatchApp and specified in ../shared/calculations.md. What the DataField shows, and its own parameters, are in screen.md.
Supported devices¶
The products in apps/garmin-datafield/manifest.xml (72 products, minSdkVersion 2.4.0). Every one of them has a round screen. The public list of compatible watches on the website is generated from this manifest (bin/rails devices:sync), so the manifest is the only place to change it.
| Screen | Display | Products |
|---|---|---|
| 218×218 | MIP | fenixchronos, fr255s, fr255sm |
| 240×240 | MIP | fenix5plus, fenix5splus, fenix5x, fenix5xplus, fenix6s, fenix6spro, fenix7s, fenix7spro, fr945, fr945lte, marqcaptain |
| 260×260 | MIP | fenix6, fenix6pro, fenix7, fenix7pro, fenix7pronowifi, fenix8solar47mm, fenix9prosolar47mm, fr255, fr255m, fr955 |
| 280×280 | MIP | enduro3, fenix6xpro, fenix7x, fenix7xpro, fenix7xpronowifi, fenix8solar51mm, fenix9prosolar51mm |
| 360×360 | AMOLED | fr265s, venu2s |
| 390×390 | AMOLED | descentg2, descentmk343mm, epix2pro42mm, fr165, fr165m, fr170, fr170m, fr57042mm, instinct3amoled45mm, instinctcrossoveramoled, marq2, marq2aviator, venu3s, venu441mm |
| 416×416 | AMOLED | d2mach1, epix2, epix2pro47mm, fenix843mm, fenix943mm, fenix9pro43mm, fenixe, fr265, instinct3amoled50mm, venu2, venu2plus |
| 454×454 | AMOLED | d2mach2, d2mach2pro, descentmk351mm, epix2pro51mm, fenix847mm, fenix8pro47mm, fenix947mm, fenix9pro47mm, fr57047mm, fr965, fr970, venu3, venu445mm |
| 466×466 | AMOLED | fenix9pro51mm |
31 MIP products, 41 AMOLED products. Screen sizes and display types come from the Connect IQ SDK device definitions.
Permissions: Positioning (for Position.getInfo()) and Sensor. Language: English only. The only UI string from resources is the app name SailEver; all on-screen labels are hard-coded in apps/garmin-datafield/source/SailEverView.mc.
App identity¶
| Value | |
|---|---|
| App name | SailEver (AppName) |
| Manifest app ID, production | e6abd42e-4ed3-41a0-b865-af2c91e3c8aa |
| Manifest app ID, beta | e6abd42e-4ed3-41a0-b865-af2c91e3c8bb |
| Launcher icon | apps/garmin-datafield/resources/drawables/launcher_icon.png: 40×40 PNG, orange sail on a dark blue tile |
| Entry class | SailEverField → one SailEverView (Ui.DataField) |
The version string is not shown anywhere on the watch.
Release and versioning¶
Releases use the /sailever-garmin-release skill (.agents/skills/sailever-garmin-release/SKILL.md): datafield, beta or prod, and a semver bump. It sets the beta or production app ID in the manifest for the build, writes AppVersion, builds the .iq with the shared signing key, renders the store images and writes apps/garmin-datafield/RELEASE_NOTES_v<version>.md. Beta and production builds behave the same.
Files¶
| File | Covers |
|---|---|
README.md |
This page: what the DataField is, devices, identity, release |
screen.md |
The screen: layout, every element, fonts, colours, formats, speed curve, COG and tack/jibe angle, pressure trend arrow, states and device differences |