Skip to content

v1.0.6822

Choose a tag to compare

@nettrash nettrash released this 06 May 20:47
· 70 commits to master since this release

Geo v1.0

The first App Store release of Geo — an iPhone hiking instrument
with live altitude (GPS + barometer), atmospheric pressure, an
augmented-reality view that names the mountains around you, and
an Apple Watch companion with complications.

Highlights

  • Live altitude, two ways. GPS and barometric altitude shown
    side by side; pressure in kPa, mmHg, and atm; 30-day history.
  • AR Nature view. Point the camera at the horizon — every
    visible peak within 5 km is labelled with name, elevation, and
    distance. History points from your past routes appear too,
    anchored to their real GPS coordinates.
  • Terrain-aware horizon. Instead of a flat sea-level circle,
    the horizon line traces the real skyline computed from public
    elevation data — bending up over distant ranges and dipping
    into valleys. Falls back to a geometric horizon when offline.
  • Cardinal markers. N / NE / E / SE / S / SW / W / NW labels
    welded to the horizon line as you turn.
  • iPhone Lock Screen and Home Screen widgets (small + medium),
    refreshed in the background by BGTaskScheduler.
  • Apple Watch app + complications in all four shapes (corner,
    circular, inline, rectangular). Standalone barometer on the
    watch, paired with the iPhone over WatchConnectivity.
  • iCloud sync. Altitude and pressure history syncs across
    your devices via NSPersistentCloudKitContainer. End-to-end
    private; no servers we run.

Privacy

  • No accounts, no logins.
  • No analytics, no advertising, no third-party SDKs.
  • NSPrivacyTracking = false declared in every binary.
  • Outbound calls limited to Apple Maps, OpenStreetMap Overpass,
    and Open-Elevation. Coordinates are rounded to ~100 m before
    any third-party request, so the precise device location is
    never disclosed.

Engineering notes

  • Swift 6 strict-concurrency clean across all targets.
  • PrivacyInfo.xcprivacy manifests for main app, iPhone widget,
    Watch app, and Watch widget — UserDefaults (CA92.1), file
    timestamp (C617.1), system boot time (35F9.1), disk space
    (E174.1).
  • Resilient CoreData store load: corrupted SQLite is deleted and
    retried, with a final in-memory fallback. No more fatalError
    on launch.
  • Background buffer + ring-buffer backfill: barometer samples
    captured by the widget while the app is suspended are queued in
    the App Group store and drained into CoreData on the next
    launch via a background context, so the main thread never
    contends with CloudKit's WAL checkpoint.
  • Unit tests covering the geometry primitives (geodesic
    projection, apparent-altitude angle with Earth-curvature drop,
    skyline max-angle picker, horizon distance, GPS↔ENU, peak ID
    stability, legacy-format InformationToken decoding).

Compatibility

  • iPhone with a barometric pressure sensor for full altitude
    features (most iPhones since the 6 series).
  • iOS 17.0 or later.
  • Apple Watch app: watchOS 10 or later. Optional.