WatchApp parity¶
Where the watch platforms differ today without the platform forcing it. Justified platform differences (buttons vs touch, OS lifecycle, storage limits) are not listed here; they live in the platform sections of each spec file.
Rules: a row is added when a change can't reach every platform in the same piece of work (/port-change), and removed when the gap is closed. "Behind" names the platform that doesn't match the spec yet. Apple Watch is not built; every row implicitly applies to it once it is.
Verified against code: 2026-10-18
Open gaps¶
| # | Area | Difference | Behind | Spec |
|---|---|---|---|---|
| P1 | Vessel state picker | While recording, Garmin (BACK, action menu) focuses Engine instead of the current state. Wear OS preselects the current state when opened by the state header tap or a stem button; its swipe-left picker page is a plain list without preselection. | Garmin | menus.md |
| P2 | Track view zoom | Garmin resets to the default step every time the Track view is shown. Wear OS keeps the step. | Garmin | track-view.md |
| P3 | Pairing view | Wear OS shows the code as 482 915 and closes by itself 2 s after pairing. Garmin shows 482915 and waits for BACK. |
Garmin | sync-and-pairing.md |
| P4 | Save view | Garmin can skip the wait (BACK). Wear OS can't. | Wear OS | sync-and-pairing.md |
| P5 | Action menu / Controls order | Garmin: Stats, Pause, Stop, Discard, Vessel state. Wear OS: Pause, Stop, Stats, Touch lock, Settings, Discard; the vessel state is a page of its own. Needs one order. | open decision | menus.md |
| P6 | Last vessel state | Wear OS stores it on every change, Garmin only at pause / stop. After a crash, Continue trip preselects a different state. | Garmin | recording.md |
| P7 | Backup recording | Garmin also records a FIT activity (a fallback when the SLTB queue is full). Wear OS has no workout / Health record. | Wear OS | recording.md |
| P8 | Stats navigation | Garmin: BACK returns to the action menu, START to the instruments, UP/DOWN wrap. Wear OS: swipe returns to the instruments, pages don't wrap. | Wear OS | stats.md |
| P10 | Position buffer | Garmin plots any position, Wear OS only fixes younger than 10 s. | — (minor) | track-view.md |
| P12 | Stop confirmation | Wear OS asks Stop Track? before stopping. Garmin stops at once. |
Garmin | menus.md |
| P14 | Boating trips | Garmin trips are Sailing or Boating trips (Settings → Activity Type): a Boating trip records Garmin Boating activities, its start menu items read Continue boating / New boating trip, and its vessel state picker has no SAIL / MOTORSAIL. Wear OS records no workout (P7), so it has no trip type. Whether Wear OS gets Boating trips for the labels and the picker alone is open. |
open decision | lifecycle.md |
| P13 | Settings while recording | Wear OS reaches the settings from the Controls page. Garmin only from the start menu. | Garmin | alerts-and-auto-stats.md |
Bugs present on every platform¶
Listed for completeness; each one is under Known deviations in its spec file.
- Pairing code expiry (410) is not handled; polling every 5 s never stops (sync-and-pairing.md).
app_versionis sent as the fixed value2instead of the release version (../shared/track-sync.md).