distanceKm added to PackageState, computed server-side in getStateSnapshot via haversine over the already-loaded airport coords (0 fallback)
OpenAPI schema + pinned key-list test updated in lockstep
New formatKm() helper; distance span rendered after the route on on-board contracts (EGCC → GMME 554km €…) and after the reward on job list rows (€… 215km Perishables …)
Unit: snapshot haversine equality + formatKm test (373→374); e2e: 3 new /^\d+km$/ assertions in existing specs
Closes #95
- `distanceKm` added to PackageState, computed server-side in getStateSnapshot via haversine over the already-loaded airport coords (0 fallback)
- OpenAPI schema + pinned key-list test updated in lockstep
- New `formatKm()` helper; distance span rendered after the route on on-board contracts (`EGCC → GMME 554km €…`) and after the reward on job list rows (`€… 215km Perishables …`)
- Unit: snapshot haversine equality + formatKm test (373→374); e2e: 3 new `/^\d+km$/` assertions in existing specs
Local: tsc clean, vitest 374/374, playwright --list 58 tests.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #95
distanceKmadded to PackageState, computed server-side in getStateSnapshot via haversine over the already-loaded airport coords (0 fallback)formatKm()helper; distance span rendered after the route on on-board contracts (EGCC → GMME 554km €…) and after the reward on job list rows (€… 215km Perishables …)/^\d+km$/assertions in existing specsLocal: tsc clean, vitest 374/374, playwright --list 58 tests.