v0.58.0 — plane markers no longer teleport across the antimeridian (#124) #132

Merged
kamilkrzywda merged 6 commits from feat/antimeridian-markers into master 2026-09-23 07:32:40 +02:00
Owner

Closes #124

Follow-up to ISS-120's known limitation: a plane mid-crossing used the snapshot's wrapped lat/lon, so its marker jumped +179.x → −179.x between polls (a 360° teleport) while its route line stayed continuous. planesGeoJson now takes the airport index and unwraps each flying plane's longitude against its departure airport — the same anchor greatCircleArc keeps for its first sample — via a new module-private unwrapLon shared with unwrapLons. The unwrap applies only when both leg endpoints exist, mirroring routesGeoJson's guard: a marker is unwrapped iff its line is drawn. Grounded planes and non-crossing legs are byte-identical to before.

Tests: unit +6 in lib/mapData.test.ts (incl. the key invariant — every arc sample fed back as a wrapped snapshot position comes out exactly on that arc's own sample); e2e +1 in e2e/map-interactions.spec.ts (chain-relocate the starter to NZAA, fly the hook-created NZAA→NFTF crossing at scale 1000, sample marker lons from the planes source — no consecutive pair may differ by ≥ 180°, some sample must sit on the east world copy).

Closes #124 Follow-up to ISS-120's known limitation: a plane mid-crossing used the snapshot's wrapped lat/lon, so its marker jumped +179.x → −179.x between polls (a 360° teleport) while its route line stayed continuous. `planesGeoJson` now takes the airport index and unwraps each flying plane's longitude against its departure airport — the same anchor `greatCircleArc` keeps for its first sample — via a new module-private `unwrapLon` shared with `unwrapLons`. The unwrap applies only when both leg endpoints exist, mirroring `routesGeoJson`'s guard: a marker is unwrapped iff its line is drawn. Grounded planes and non-crossing legs are byte-identical to before. Tests: unit +6 in `lib/mapData.test.ts` (incl. the key invariant — every arc sample fed back as a wrapped snapshot position comes out exactly on that arc's own sample); e2e +1 in `e2e/map-interactions.spec.ts` (chain-relocate the starter to NZAA, fly the hook-created NZAA→NFTF crossing at scale 1000, sample marker lons from the planes source — no consecutive pair may differ by ≥ 180°, some sample must sit on the east world copy).
kamilkrzywda added 1 commit 2026-09-22 23:36:23 +02:00
v0.58.0 — plane markers no longer teleport across the antimeridian (ISS-124)
CI / build + unit + e2e (pull_request) Failing after 8m36s
c06e038130
planesGeoJson now takes the airport index and unwraps each flying plane's
longitude against its departure airport (unwrapLon, shared with unwrapLons),
mirroring routesGeoJson's both-endpoints guard so a marker is unwrapped iff
its line is drawn. Map.tsx passes airportsIndexRef at both call sites.

Unit +6 in lib/mapData.test.ts; e2e +1 in e2e/map-interactions.spec.ts
(chain-relocate to NZAA, fly the NZAA→NFTF crossing, sample marker lons).
kamilkrzywda scheduled this pull request to auto merge when all checks succeed 2026-09-22 23:36:30 +02:00
kamilkrzywda added 1 commit 2026-09-23 00:58:05 +02:00
kamilkrzywda added 1 commit 2026-09-23 02:32:38 +02:00
kamilkrzywda added 1 commit 2026-09-23 04:00:07 +02:00
kamilkrzywda added 1 commit 2026-09-23 04:48:33 +02:00
kamilkrzywda added 1 commit 2026-09-23 07:17:13 +02:00
kamilkrzywda merged commit c5413aff65 into master 2026-09-23 07:32:40 +02:00
Sign in to join this conversation.