Skip to content

WatchApp

The WatchApp records sailing tracks on the wrist and uploads them to the logbook. It works fully offline on deck; uploads happen when a connection is there. Every platform implements the same spec. Platform sections only state what has to differ.

Garmin Wear OS Apple Watch
Status ✅ released (store 1.0.x is the old public beta without pairing; 1.1.0 with pairing is next) ✅ built, not released ⏳ planned
Repo apps/garmin-watchapp/ (Monkey C, Connect IQ 3+) apps/android/ (Kotlin, Compose for Wear OS) — (plan)
Build & code guide AGENTS.md AGENTS.md (incl. Garmin → Kotlin source map) —
Platform value at pairing garmin wear_os apple_watch

How the platforms relate

  • One behaviour. Screens, values, colours, texts, thresholds and upload rules are the same on every platform. Garmin was built first and Wear OS draws its instrument screens line by line like Garmin, but the reference is this spec, not either codebase.
  • Platform differences are allowed only where the platform forces them: buttons vs touch and crown, OS lifecycle, storage limits, store rules. They are written under ### Garmin / ### Wear OS / ### Apple Watch in each file.
  • A change to one platform is made on all of them (/port-change), or the gap is listed in parity.md.

Screens and flows

Splash ─► Start menu ─► Vessel state picker ─► Instrument screens ◄─► Action menu / Controls
              │                                  1 Dashboard            │  Stats (2 pages)
              │                                  2 Track view           │  Pause ─► Pause view (Garmin) / background (Wear OS)
              │                                  3 Environment          │  Stop ─► Save view ─► exit
              │                                  (+ overlays: alerts,   │  Discard (confirm)
              │                                     auto-stats)         │  Vessel state
              ├─► Upload tracks (Sync view)
              ├─► Pair device / Unpair device (Pairing view)
              └─► Settings (alerts, auto-stats)

Files

File Covers
lifecycle.md Launch, splash, start menu, trip and track lifecycle (new, continue, resume, pause, stop, discard), crash recovery, exit
input.md The control concept and its mapping to Garmin buttons, Wear OS touch / crown / stems, Apple Watch
menus.md Action menu / Controls page, vessel state picker, discard confirmation
dashboard.md Instrument screen 1
track-view.md Instrument screen 2: plot, zoom, turn angle
environment.md Instrument screen 3: solar arc, clock, sun, position, tides, barometer, moon
pause-view.md Low-power standby screen while a track is paused (Garmin; Wear OS goes to the background)
stats.md Two-page stats summary
alerts-and-auto-stats.md Float, battery and baro alerts, distance / time splits, overlays, Settings menu
recording.md What is measured and stored while a track runs: tick, GPS, distance, timers, state periods, totals, FIT, persistence
sync-and-pairing.md When uploads happen, save / sync view, leftovers, pairing and unpairing, tides from the server
visual-system.md Palette, fonts, layout scaling, supported screens
live-surfaces.md Ambient, Tile, Complication, Ongoing Activity (Wear OS), Apple equivalents
parity.md Where the platforms differ today and why

Shared with other products: vessel states, calculations (COG, turns, baro trend, sun, moon), SLTB track sync, device API.