v1.21.0
MinorSep 20, 2026New
- —ENDU results adapter rewritten around the site's live API (`groups?slug` → editions → `results/events/{id}/settings` → paginated `results`). Verified by reproducing an existing import exactly: Nove Colli LUNGO 2024, 1,885 finishers.
- —Wiclax adapter (`lib/results/providers/wiclax.ts`) and `scripts/results-capture.ts`, which opens a page in a browser and saves the payload it fetches — the only way past Wiclax's bot check and ENDU's runtime loading.
- —Fixed-width listing reader (`lib/results/providers/text-table.ts`, `scripts/results-from-text.ts`, `scripts/results-text-sweep.ts`) for PDFs and Datasport's classic pages.
- —`ascentFromPoints` — ascent measured on a full-resolution track rather than on the stored profile.
Changed
- —Mont Ventoux 2026 imported: 523 + 1,158 + 2,444 finishers.
- —The race page shows the organiser's climbing figure; the elevation profile now drives shape, bands and climbs only.
- —The freshness worker sweeps weekly through the three months before a race (was fortnightly beyond 30 days).
- —Eval: `route_gpx_url` compares by host and event (lead decision 12). 86.9% → 90.5%, wrong 12 → 7.
Fixed
- —Ascent from the stored 150-point profile runs 20–48% under the real figure — Das Monument 1,628 m against 2,475 at full resolution. It had rejected three of the organiser's own GPX files.
- —A `.clax` file's `<E h=…>` is a start time of day, not a finish time. Read as a result, a 2,466-rider field "finishes" between 07h33 and 07h57. Results live in `<R t=…>` and must be joined on bib.
- —An e-bike field shares its course name ("Granfondo ELEC") and was being counted as finishers.
- —Datasport writes H:MM.SS,t — "5:25.59,2" parsed as 5.4 minutes instead of 326.
- —An edition whose entry has not opened can no longer be recorded closed or sold out. Ötztaler was live showing "closed" for a 2027 race 344 days out.
- —Four route conflicts resolved and two candidate tracks rejected as the wrong route; the review queue is empty.