Trip planner
Legs: - day.firstLeg (hotel -> first stop) is now a first-class leg object exactly like retLeg/transferIn: own mode/dur/geometry, same leg-row rendering, same click-to-edit L3 card (drag waypoint + walk/taxi toggle), same router + sanity guards, same strip/budget/context accounting - hotel rendered as a timeline NODE on every day: 'arrive HH:MM - drop bags' on the arrival day (after the airport->hotel leg row), 'depart HH:MM' (startMin minus the out-leg) on ordinary days; the arrival drop-off is a stand-alone leg row instead of being embedded in the flight card - arrival day: the first stop starts at hotel-arrival + out-leg; ordinary days keep startMin = time AT the first stop (the out-leg happens before) - out-leg suppressed when the day doesn't start at the base hotel: travel days (city change, first stop > 25km away) and breakfast-at-hotel days (< 120m); stale firstLeg objects self-heal - set_start tool shifts arrLandingMin on arrival days so the whole chain (hotel arrival, first stop, ...) follows the new landing time Coordinates (verified on land via Nominatim + tile coastline scan): - S14 Castillo San Diego -> Bodeguita promontory [10.4205,-75.5517] - S16 Malecon de Bocagrande -> seawall [10.43545,-75.539] - S18 Punta Canoa -> sandbar beach [10.4403,-75.530] - S19 beachside lunch -> same sandbar [10.4402,-75.5294] healCoordinates syncs saved plans from data.js on load |
||
|---|---|---|
| mock | ||
| router | ||
| spatial | ||
| .gitignore | ||
| DESIGN.md | ||
| SURVEY.md | ||