Epic: M2 — Personal pace in planner (plugin) #3

Closed
opened 2026-07-27 11:03:56 +00:00 by jmz · 1 comment
Owner

Goal: planner shows your moving-time and true D+ from the trail-analyze engine (IGN LiDAR-HD 50 cm + Minetti, fitted to 2.75 m/s from 260 runs) instead of Valhalla's generic pedestrian time — the Komoot-beating feature.

Architecture: WASM plugin (no fork coupling) that on route change calls trail-analyze /analyze with the drawn lonlats, then renders personalized time + D+ + splits, plus a pace override.

  • Confirm plugin host capabilities (network egress to tailnet, planner UI hooks) in plugins/sdk
  • Plugin scaffold in oss/wanderer-plugins
  • Call trail-analyze /analyze on route change; map result → planner UI
  • Pace override control (flat speed / vVAM)
  • Package WASM + runtime install docs
**Goal:** planner shows *your* moving-time and true D+ from the `trail-analyze` engine (IGN LiDAR-HD 50 cm + Minetti, fitted to 2.75 m/s from 260 runs) instead of Valhalla's generic pedestrian time — the Komoot-beating feature. **Architecture:** WASM plugin (no fork coupling) that on route change calls `trail-analyze /analyze` with the drawn lonlats, then renders personalized time + D+ + splits, plus a pace override. - [ ] Confirm plugin host capabilities (network egress to tailnet, planner UI hooks) in `plugins/sdk` - [ ] Plugin scaffold in `oss/wanderer-plugins` - [ ] Call `trail-analyze /analyze` on route change; map result → planner UI - [ ] Pace override control (flat speed / vVAM) - [ ] Package WASM + runtime install docs
Author
Owner

M2 shipped — 2026-07-27 (deploy deploy-4c34d9fd)

Personal-pace is now live in the route editor. When you draw a route (≥2 anchors) a "My pace (LiDAR + your runs)" card appears with an Estimate button that POSTs the drawn GPX to the trail-analyze engine and shows:

  • Your time — personalised moving-time from your 260-run pace model (~2.75 m/s, Minetti effort), not Valhalla's generic pedestrian estimate
  • True D+ — computed from IGN LiDAR 50 cm elevation, not the GPX's noisy barometric track
  • LiDAR % — fraction of the route covered by the 50 cm DEM

The estimate is invalidated automatically on any route change. /analyze is CORS-enabled (ACAO: *) so the browser calls it directly.

End-to-end verified against a Mercantour mini-route: 846 m / D+ 188 m / ~12.5 min / 100 % LiDAR.

Scope note: built inline in the fork (web/src/routes/trail/edit/[id]/+page.svelte) rather than as a WASM plugin. Plugin-ification (so it can ride upstream's plugin system / oss/wanderer-plugins) remains a follow-up — tracked under M0.4 (#9). Not upstreamable as-is since it depends on our private trail-analyze engine + IGN LiDAR.

Closing this epic as delivered; plugin migration continues in #9.

**M2 shipped — 2026-07-27** (deploy `deploy-4c34d9fd`) Personal-pace is now live in the route editor. When you draw a route (≥2 anchors) a **"My pace (LiDAR + your runs)"** card appears with an *Estimate* button that POSTs the drawn GPX to the `trail-analyze` engine and shows: - **Your time** — personalised moving-time from your 260-run pace model (~2.75 m/s, Minetti effort), not Valhalla's generic pedestrian estimate - **True D+** — computed from IGN LiDAR 50 cm elevation, not the GPX's noisy barometric track - **LiDAR %** — fraction of the route covered by the 50 cm DEM The estimate is invalidated automatically on any route change. `/analyze` is CORS-enabled (`ACAO: *`) so the browser calls it directly. End-to-end verified against a Mercantour mini-route: 846 m / D+ 188 m / ~12.5 min / 100 % LiDAR. **Scope note:** built **inline in the fork** (`web/src/routes/trail/edit/[id]/+page.svelte`) rather than as a WASM plugin. Plugin-ification (so it can ride upstream's plugin system / `oss/wanderer-plugins`) remains a follow-up — tracked under M0.4 (#9). Not upstreamable as-is since it depends on our private trail-analyze engine + IGN LiDAR. Closing this epic as delivered; plugin migration continues in #9.
jmz closed this issue 2026-07-27 18:30:36 +00:00
Sign in to join this conversation.
No labels
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
public/wanderer#3
No description provided.