You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
OpenMapX supports a single trip-level departure or arrival time, but a multi-stop trip cannot express “leave this stop after 10:00,” “arrive here by 11:30,” or “stay for 20 minutes.” That prevents realistic appointment and errand planning and can produce an itinerary that is individually routable but temporally impossible.
Current state
Ground and transit planning support global depart-at/arrive-by behavior.
The shared Waypoint type contains identity, coordinates, label, and type, but no time constraints or dwell duration.
Routing providers have different time-dependent capabilities, so passing fields through blindly is unsafe.
Proposed solution
Add provider-neutral per-waypoint temporal constraints and a canonical timeline solver. Plan ordered legs around fixed/earliest/latest times and dwell, using native provider support where semantics match and explicit leg chaining otherwise.
Acceptance criteria
The shared model represents departAfter, arriveBy, optional fixed appointment time, dwell duration, and waypoint time zone.
Validation rejects contradictory constraints and reports the specific infeasible interval/waypoint.
A canonical timeline accounts for travel, dwell, wait time, transfers, and time-zone/DST boundaries.
Provider capability metadata declares which temporal semantics are native, emulated, approximate, or unsupported.
Leg chaining preserves scheduled-transit feasibility and propagates delays/waiting between legs.
Arrive-by planning works backward where possible and fails clearly when a provider cannot support it.
Route optimization either respects all constraints or is disabled with an explanation.
The web waypoint editor exposes accessible date/time/dwell controls without cluttering unconstrained trips.
Constraints serialize through route state/deep links using a versioned representation.
Cache keys include every temporal input and resolved time zone.
Tests cover DST transitions, midnight/multi-day trips, impossible schedules, zero dwell, provider fallback, and transit disruptions.
Alternatives considered
Applying only a trip-level time cannot model appointments. Treating dwell as an added travel-time fudge obscures waiting and breaks arrive-by reasoning.
Problem
OpenMapX supports a single trip-level departure or arrival time, but a multi-stop trip cannot express “leave this stop after 10:00,” “arrive here by 11:30,” or “stay for 20 minutes.” That prevents realistic appointment and errand planning and can produce an itinerary that is individually routable but temporally impossible.
Current state
Waypointtype contains identity, coordinates, label, and type, but no time constraints or dwell duration.Proposed solution
Add provider-neutral per-waypoint temporal constraints and a canonical timeline solver. Plan ordered legs around fixed/earliest/latest times and dwell, using native provider support where semantics match and explicit leg chaining otherwise.
Acceptance criteria
departAfter,arriveBy, optional fixed appointment time, dwell duration, and waypoint time zone.Alternatives considered
Applying only a trip-level time cannot model appointments. Treating dwell as an added travel-time fudge obscures waiting and breaks arrive-by reasoning.
Area
Routing contracts, directions store, transit/ground providers, directions UI.
References
packages/core/src/types/routing.tspackages/core/src/stores/directionsStore.ts