Skip to content

v0.7.0 — real boats, real numbers

Latest

Choose a tag to compare

@munzzyy munzzyy released this 09 Jul 20:24

Boats that exist, numbers that are real

The engine used to invent transportation when geography got wet: a Honolulu–Maui ferry (dead since 2009), trains from Finland to Tallinn straight across the Gulf of Finland, and one 40 km/h formula pricing every boat on Earth. v0.7.0 replaces all of that with real data — still zero keys.

Ferries are now a real mode

  • 85 researched passenger-ferry corridors ship with the app (data/ferries.json): actual terminals, operators, crossing times, sailings per day, and fare bands checked against operator/aggregator pages. Every entry cites its source and date.
  • A ferry leg only exists where a corridor does. Helsinki–Tallinn is Tallink/Viking from $14; Dar es Salaam–Zanzibar is the real Azam boat (and yes, that split gets recommended — it clears the $200 rule); Maui simply gets no ferry, because there isn't one.
  • A land/water grid (Natural Earth, 0.25°) plus a sea-gap detector stops land legs from crossing open sea. Calibrated against a 29-pair corpus so the Channel Tunnel keeps its trains and Barcelona–Valencia keeps its coastal rail while Turku–Tallinn loses its imaginary one.

Real numbers, keyless

  • Real ground timetables via Transitous — real operators, departures, and door-to-door times on train/bus/ferry legs, in the server and the static browser build. Fares on those legs stay labeled estimates; schedules are open data, ticket prices aren't.
  • US fares anchored to reality: a bundled extract of the BTS Consumer Airfare Report (public domain) with real average fares for ~4,100 US city-pair markets. The model gets clamped into each route's real band — thin expensive routes (Aspen, Jackson Hole) stop being underpriced — and the itinerary shows the real market numbers next to the estimate.
  • Place search and weather now work with no keys: Photon and Open-Meteo replace key-gated Geoapify/OpenWeather defaults (Geoapify stays as the keyed upgrade). Live FX for non-USD fares comes from frankfurter.dev with the old table as offline fallback.

One-command trips

hopandhaul go JFK "Tallinn" --date 2026-08-15

The full pipeline — direct vs splits, real ferries, anchored fares, live schedules, the $200 rule, leg-by-leg itinerary with provenance — in a terminal, zero keys.

Removed

  • The Amadeus flight fallback. Amadeus decommissions its entire self-service API portal on 2026-07-17; better removed deliberately than broken silently next week. Duffel remains the (optional) live-fare provider.

Gates

ruff clean · 12 module selftests · 57/57 Python↔JS parity cases (8 new: ferries, sea gaps, anchors) · both UIs verified in a headless browser · cold-verified end to end.

Data sources and licenses are listed in the README's new attribution section.