The "breadcrumbs" element is always present, on top of the page.
It shows you where you are on the lab.
It enables you to reach any page on the lab.
R&D notes for the planner-v2-1 recipes: an HTTP version of the OTP 2 trip query without the routingProfile abstraction of planner-v2. Every control on these pages writes the query string shown on the right.
OTP 2 splits a trip into three street mode slots, and one set of transit modes in between:
access → transit → egress and, computed alongside, direct
access = first mile (origin to the first stop) · egress = last mile (last stop to the destination) · direct = door to door without transit
Each slot takes exactly one value per query: accessMode=bicycle, not "bike or rental bike". Every other combination is another query, which is what planner-v2 does behind its routing profile (up to nine queries per request). The slots are not polyfilled by the api: omit them all for the OTP 2 defaults (foot everywhere); as soon as one is given the others stay unset, so accessMode and egressMode go together (required with transportModes) and omitting directMode means transit only. The one catch-all is flexible (on-demand transport), a street mode with its own limitations: it needs flex data in the graph.
Queries in, shapes out. One query is one triple accessMode / directMode / egressMode; it returns up to two result shapes, [access → transit → egress] and [direct]. So foot / foot / foot is one query returning [walk → transit → walk] + [walk]. The catch is OTP's transit-vs-street filter: transit itineraries slower than the best street-only one are dropped, so a fast direct mode (car, taxi) hides the transit alternatives. Keeping both means a second query with transportModes= empty, or itineraryFiltersDebug=listAll plus client side filtering.
planner-v2-1 exposes the three slots and the transit modes as they are: one query. planner-v2-1-preset replaces the three street mode params by one modePreset (transportModes stays and narrows every query) that expands to one or several queries in a single OTP 2 document; results merged, one page cursor for the whole preset (the cursors of the queries travel inside it). Both share every other parameter (who, where, when, traveller profile). The snippet switches recipe by itself: a modePreset set means the preset recipe, otherwise the slots go to planner-v2-1. Several modePreset values mean several calls.
Every option of the UX page exists as a live page in the otp2-migration-demo app: the same native widgets, one settings screen shared by all of them, real searches on the Belgian network.
A settings screen (user preferences, restrict modes) and five ways to ask the traveller how they want to travel, each with the live list of OTP 2 queries it needs, plus pros and cons.
The 693 combinations of the three slots, with the preset level, symmetry and the transit-vs-street filter risk; pick one to put it in the snippet.
What OTP 2 offers versus what the recipes expose, what was verified live, and the recommendations.