Skip to content

feat: live navigation mode with transit trip-following#45

Merged
Medformatik merged 21 commits into
mainfrom
feat/live-navigation-mode
Jun 3, 2026
Merged

feat: live navigation mode with transit trip-following#45
Medformatik merged 21 commits into
mainfrom
feat/live-navigation-mode

Conversation

@Medformatik

@Medformatik Medformatik commented Jun 3, 2026

Copy link
Copy Markdown
Collaborator

Summary

Turns the directions panel from a static route previewer into an active, follow-along navigator, plus the supporting infrastructure and a few fixes found while verifying it live.

Live navigation (driving / walking / cycling)

  • Navigation engine: a Zustand navigationStore driven by watchPosition through pure, unit-tested functions in packages/core/src/navigation/ (snapToRoute, computeProgress, shouldReroute, nextVoiceCue, processFix). Position is snapped to the route; progress, ETA, and the current maneuver are derived each tick.
  • Follow experience: heading-up follow camera (auto-releases on a user pan, restored via a recenter FAB), heading puck, traveled/remaining route split, screen Wake Lock, and locale-aware voice guidance.
  • Online reroute when the user leaves the route; arrival detection.
  • Maneuver banner, lane guidance, and speed-limit badge, rendered immediately from the static route on Start and refined as GPS fixes arrive (so it works even before/without a fix, with a "waiting for GPS" hint).
  • Capability hooks are all feature-detected with graceful fallbacks: useWatchPosition, useWakeLock, useHeading, haptics, platformCapabilities.

Richer routing data

  • OSRM and Valhalla adapters now surface normalized maneuver type/modifier, lane guidance, and speed limits on route steps.
  • Live speed limit for Valhalla routes via on-the-fly map-matching (/trace_attributes), throttled, for driving.

Settings: measurement units

  • New persisted, global metric/imperial preference in the settings panel (alongside language/theme), wired through directions and navigation (distance display + voice). Single source of truth (useSettingsStore); hydrated on the client and no longer clobbered by deep links.

Transit trip-following

  • Follow-along mode for a planned transit itinerary: current-leg detection, next stop, stops-until-alight countdown, alight alerts, overall ETA, and current-leg highlighting on the map. No rerouting. Built on the same position primitives.

Navigation UX

  • During navigation the map chrome (search, category chips, weather, account avatar, layer selector) is hidden and the directions sidebar collapses; the bottom bar and map controls are positioned clear of the footer.

Fixes found during verification

  • Corrected an ioredis defineCommand call in provider-health that passed a stray key-count arg, shifting ARGV and causing all transit plans to 500 with a Lua nil-comparison error.
  • Made provider-health recording best-effort so a health-store failure can never fail a user request.
  • Gated the ground navigation view to kind=ground so it doesn't overlay transit following.

Notes

  • Foreground-only, online navigation. Offline saved-route following is intentionally out of scope.

…anel, wired through directions and navigation
…p stray key-count arg that shifted ARGV and 500'd transit plans)
@changeset-bot

changeset-bot Bot commented Jun 3, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: fa084b2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@Medformatik Medformatik self-assigned this Jun 3, 2026
@Medformatik Medformatik changed the title Live Navigation Mode (driving/walking/cycling + transit trip-following) feat: live navigation mode with transit trip-following Jun 3, 2026
@Medformatik
Medformatik merged commit 8387d82 into main Jun 3, 2026
3 of 6 checks passed
@Medformatik
Medformatik deleted the feat/live-navigation-mode branch June 3, 2026 12:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant