Add docs/inspirations.md as the durable record of the 2026-07-05/06 prior-art research — per-project learnings with source paths, canonical credit lines, and the changes each spawned — and extend the acknowledgment lists in philosophy.md/architecture.md (Organic Maps, Endurain, wanderer). New OpenSpec changes (proposal/design/specs/tasks each): - Organic Maps: elevation-profile-hardening, gpx-parser-robustness, hiking-time-estimate, poi-index, hiking-foot-profile - Endurain: account-export, activity-duplicate-review, fit-parsing-hardening, activity-locations, self-hosting-guide, activity-privacy-controls - wanderer: federation-hardening, link-share-tokens - credits-page (user-visible acknowledgments) Updated in-flight changes with wanderer prior-art sections: route-federation, route-discovery. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
Why
The planner shows distance and ascent for a planned route but no time estimate, even though "how long will this take?" is the first question a hiker asks of a plan — and even though BRouter already returns elevation-tagged geometry that makes a good estimate cheap to compute. Tobler's hiking function (speed as a function of slope, the model Organic Maps uses for pedestrian ETA) turns the existing route geometry into a credible walking-time estimate with a small pure function. Bonus: the multi-day-routes spec already requires per-day "estimated duration", which was never implemented — this change closes that drift.
What Changes
- New pure function in
@trails-cool/gpx: Tobler-based walking time over a sequence of points with elevation (speed = 6·e^(−3.5·|slope+0.05|)km/h per segment, flat-ground fallback when elevation is missing). - The planner sidebar shows estimated walking time alongside distance and ascent when the routing profile is the foot profile (
trekking, labeled "Hiking" in the UI). Cycling/car profiles show no estimate (out of scope for now). computeDaysgains an opt-in per-dayestimatedTimeSecso the multi-day day breakdown shows a time per day (planner only; journal'scomputeDayscall is unaffected).- Estimates are labeled as walking time without breaks (signpost convention), localized in English and German.
- Not in scope: cycling time estimates (BRouter's
total-timeis already summed inEnrichedRoute.totalTimeand could be surfaced later), journal route detail display, rest-break padding (DIN 33466-style), and any change to routing itself.
Capabilities
New Capabilities
hiking-time-estimate: Tobler-based walking-time estimation for planned routes — the model, where it appears (whole-route stats, per-day stats), when it applies (foot profile), and its fallback behavior without elevation data.
Modified Capabilities
Impact
packages/gpx/src/hiking-time.ts(new) + tests — the Tobler function and a cumulative variant for day splits.packages/gpx/src/compute-days.ts— optionalestimatedTimeSeconDayStagebehind an opt-in flag; existing callers unchanged.apps/planner/app/lib/use-routing.ts— computeestimatedTimeSecinto route stats when the profile istrekking, from the enriched route's elevation-tagged coordinates.apps/planner/app/components/WaypointSidebar.tsx+DayBreakdown.tsx— display whole-route and per-day time.packages/i18n— new planner strings (en + de).- No API, schema, or BRouter changes.