What (issues #22 + #25 + #27 — connected, one PR per the AGENTS.md rule)
Hovering now draws the entire route trace as a dashed great-circle line on the map, not just endpoint rings:
#22 job list: hovering an open package draws its origin→destination trace (zero pane edits — the hover target already carried both ICAOs; Map now renders it). The target airport gets a distinct green ring (#4ade80) vs the yellow endpoint rings, per "make target airport circle different color"
#25 on-board rows: hovering a package row in the On board panel draws the same trace and keeps that plane's halo (hover target gains optional planeId)
#27 relocation panel: with a grounded plane + destination selected, hovering the Relocate section previews the planned route line + rings the target airport only
New pure builder hoverRouteGeoJson(from, to, airportsByIcao) in lib/mapData.ts (+5 unit tests) using the existing great-circle slerp
Map: new hover-routes source + top-most dashed hover-route line layer (#facc15, w4, dash [2,2]) re-added on every styledata; new airports-target-highlight green ring layer for the destination only (package + route hovers); existing highlight layers untouched
LeftPane: cargo-row enter/leave handlers (#25), Relocate section enter/leave → {kind:'route'} when both selected (relocate-section testid, #27)
E2E (hover.spec.ts, 41 tests total, was 39)
Extended open-package test: trace endpoints vs /api/airports, target-layer = destination only, clears on unhover
New: on-board cargo row → trace + plane halo together
New: Relocate section hover → planned route + target-only ring (both via the new green layer assertions)
Version
package.json → 0.22.0; CHANGELOG.md entry at top
Checks (local)
tsc --noEmit clean; unit 288/288 green (was 283); playwright test --list = 41 tests in 12 files
e2e not run locally by design — CI verifies against the isolated stack
## What (issues #22 + #25 + #27 — connected, one PR per the AGENTS.md rule)
Hovering now draws the **entire route trace** as a dashed great-circle line on the map, not just endpoint rings:
- **#22 job list**: hovering an open package draws its origin→destination trace (zero pane edits — the hover target already carried both ICAOs; Map now renders it). The **target airport gets a distinct green ring** (`#4ade80`) vs the yellow endpoint rings, per "make target airport circle different color"
- **#25 on-board rows**: hovering a package row in the On board panel draws the same trace and keeps that plane's halo (hover target gains optional `planeId`)
- **#27 relocation panel**: with a grounded plane + destination selected, hovering the Relocate section previews the planned route line + rings the **target airport only**
## How
- `HoverTarget` extended: `{kind:'package';…;planeId?} | {kind:'route';fromIcao;toIcao}` (hoverTypes.ts)
- New pure builder `hoverRouteGeoJson(from, to, airportsByIcao)` in lib/mapData.ts (+5 unit tests) using the existing great-circle slerp
- Map: new `hover-routes` source + top-most dashed `hover-route` line layer (`#facc15`, w4, dash [2,2]) re-added on every styledata; new `airports-target-highlight` green ring layer for the destination only (package + route hovers); existing highlight layers untouched
- LeftPane: cargo-row enter/leave handlers (#25), Relocate section enter/leave → `{kind:'route'}` when both selected (`relocate-section` testid, #27)
## E2E (hover.spec.ts, 41 tests total, was 39)
- Extended open-package test: trace endpoints vs `/api/airports`, target-layer = destination only, clears on unhover
- New: on-board cargo row → trace + plane halo together
- New: Relocate section hover → planned route + target-only ring (both via the new green layer assertions)
## Version
- `package.json` → **0.22.0**; `CHANGELOG.md` entry at top
## Checks (local)
- `tsc --noEmit` clean; unit 288/288 green (was 283); `playwright test --list` = 41 tests in 12 files
- e2e not run locally by design — CI verifies against the isolated stack
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.
What (issues #22 + #25 + #27 — connected, one PR per the AGENTS.md rule)
Hovering now draws the entire route trace as a dashed great-circle line on the map, not just endpoint rings:
#4ade80) vs the yellow endpoint rings, per "make target airport circle different color"planeId)How
HoverTargetextended:{kind:'package';…;planeId?} | {kind:'route';fromIcao;toIcao}(hoverTypes.ts)hoverRouteGeoJson(from, to, airportsByIcao)in lib/mapData.ts (+5 unit tests) using the existing great-circle slerphover-routessource + top-most dashedhover-routeline layer (#facc15, w4, dash [2,2]) re-added on every styledata; newairports-target-highlightgreen ring layer for the destination only (package + route hovers); existing highlight layers untouched{kind:'route'}when both selected (relocate-sectiontestid, #27)E2E (hover.spec.ts, 41 tests total, was 39)
/api/airports, target-layer = destination only, clears on unhoverVersion
package.json→ 0.22.0;CHANGELOG.mdentry at topChecks (local)
tsc --noEmitclean; unit 288/288 green (was 283);playwright test --list= 41 tests in 12 files