kamilkrzywda
21cfe16d5d
Merge pull request 'v0.65.0 — Per-airport job pools with real-time refresh' ( #140 ) from feat/per-airport-jobs into master
CI / build + unit + e2e (push) Successful in 14m16s
v0.65.0
2026-09-23 17:46:04 +02:00
kamilkrzywda
70a726d546
fix(e2e): lift zoom floor for antimeridian hover test (EDDF→NFTF spans ~176°)
CI / build + unit + e2e (pull_request) Successful in 14m39s
2026-09-23 15:31:20 +00:00
kamilkrzywda
199704f761
v0.65.0: fix pool comments — queued legs count toward the pool even while their plane is in the shop (startRepair keeps the queue), so an all-repairing fleet only has no pools when its queues are empty too
CI / build + unit + e2e (pull_request) Failing after 16m24s
2026-09-23 13:13:44 +00:00
kamilkrzywda
12d900b22a
v0.65.0: per-airport job pools with real-time refresh — open jobs spawn per pool airport (grounded/flying/queued locations) in a fixed POOL_BANDS composition, expire on the wall clock after JOB_LIFETIME_MS even while the world is frozen, and refill taken slots after a per-band cooldown; /api/state + SSE filter open jobs to pool origins and expose expiresRealMs for the right-pane countdown
CI / build + unit + e2e (pull_request) Failing after 17m26s
2026-09-23 13:09:49 +00:00
kamilkrzywda
9c2c64fe89
Merge pull request 'v0.64.0 — Market keeps topping up while the fleet is grounded ( #135 follow-up)' ( #139 ) from fix/frozen-market-topup into master
...
CI / build + unit + e2e (push) Successful in 14m15s
v0.64.0 — Market keeps topping up while the fleet is grounded (#135 follow-up)
v0.64.0
2026-09-23 12:22:05 +02:00
kamilkrzywda
b2ff1d631b
v0.64.0: market top-up + coverage spawn run on every tick including frozen ones, so a grounded fleet can never drain the market to zero ( #135 follow-up)
CI / build + unit + e2e (pull_request) Successful in 14m12s
2026-09-23 10:07:28 +00:00
kamilkrzywda
d7f352adcf
Merge pull request 'v0.60.0 — Fiord default map style ( #118 )' ( #136 ) from feat/fiord-default-style into master
CI / build + unit + e2e (push) Successful in 13m51s
v0.63.0
2026-09-23 10:58:14 +02:00
kamilkrzywda
2b5c8541d7
v0.63.0: retune map overlay colors for the Fiord default (ISS-118) — brighten airport dot fill rose-600→rose-500 and hovered-route highlight red-500→red-400, the two elements below 3:1 on Fiord's dark slate/navy palette; all other overlay colors audited ≥3.3:1 and left untouched
CI / build + unit + e2e (pull_request) Successful in 13m55s
2026-09-23 08:43:41 +00:00
kamilkrzywda
673365f49c
Merge pull request 'v0.62.0 — Fixed 24x world clock ( #135 )' ( #138 ) from feat/fixed-world-clock into master
CI / build + unit + e2e (push) Successful in 17m9s
v0.62.0
2026-09-23 10:24:07 +02:00
kamilkrzywda
bb4e3b96f3
v0.62.0: fixed 24x world clock — frozen when fully grounded ( #135 )
CI / build + unit + e2e (pull_request) Successful in 14m3s
2026-09-23 08:09:29 +00:00
kamilkrzywda
e970f95036
Merge pull request 'v0.61.0 — Special remote airports ( #97 )' ( #137 ) from feat/special-airports into master
CI / build + unit + e2e (push) Successful in 16m38s
v0.61.0
2026-09-23 09:42:12 +02:00
kamilkrzywda
03731b938e
Special remote airports + isRemote curation (ISS-097, v0.61.0)
CI / build + unit + e2e (pull_request) Successful in 15m31s
2026-09-23 07:14:35 +00:00
kamilkrzywda
1d9e9ade58
Merge pull request 'v0.59.0 — SSE frames drop terminal package history ( #133 )' ( #134 ) from feat/sse-payload into master
CI / build + unit + e2e (push) Successful in 14m9s
v0.59.0
2026-09-23 08:06:44 +02:00
kamilkrzywda
6a819b8d5a
v0.59.0: SSE frames drop terminal package history (sseFrame projection) — ~597 KB → ~10 KB per frame ( #133 )
CI / build + unit + e2e (pull_request) Successful in 17m7s
2026-09-23 05:49:17 +00:00
kamilkrzywda
c5413aff65
Merge pull request 'v0.58.0 — plane markers no longer teleport across the antimeridian ( #124 )' ( #132 ) from feat/antimeridian-markers into master
CI / build + unit + e2e (push) Successful in 16m47s
v0.58.0
2026-09-23 07:32:39 +02:00
kamilkrzywda
44996b434f
e2e(antimeridian): crossing assertion copy-agnostic (|lon| > 180) — run-180 proved the product correct: sampled lons [−184.75…−175.24] are a continuous western world copy, only the 'east copy' assumption was wrong
CI / build + unit + e2e (pull_request) Successful in 15m24s
2026-09-23 05:17:11 +00:00
kamilkrzywda
d0d764e0c1
e2e(antimeridian): run-179 data collection — unconditional server/source diagnostics, values in expect messages, and wait-for-flying now requires SERVER state on the specific ORIGIN->CROSS_DEST leg (marker-only poll could pass on a stale hop frame)
CI / build + unit + e2e (pull_request) Failing after 18m58s
2026-09-23 02:48:32 +00:00
kamilkrzywda
d0aec35db1
fix(useGameState): re-arm SSE silence check on every message — a stream that goes silent after the first event must fall back to polling again (run-178 root cause); unit: pin NZAA→NFTF full-pipeline marker lons on stored dataset coords
CI / build + unit + e2e (pull_request) Failing after 19m22s
2026-09-23 01:59:54 +00:00
kamilkrzywda
7671c028b4
e2e: reload before the crossing leg + freshness gate on sampled frames (run-177); queue refuel bound 1.4→1.3×required2
CI / build + unit + e2e (pull_request) Failing after 20m42s
2026-09-23 00:32:36 +00:00
kamilkrzywda
baa4b0fa7c
e2e: fit camera over the crossing leg before querying the planes source; cleanup always runs (run-176)
CI / build + unit + e2e (pull_request) Failing after 21m24s
2026-09-22 22:58:03 +00:00
kamilkrzywda
c06e038130
v0.58.0 — plane markers no longer teleport across the antimeridian (ISS-124)
...
CI / build + unit + e2e (pull_request) Failing after 8m36s
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).
2026-09-22 21:35:48 +00:00
kamilkrzywda
18e5c832e3
Merge pull request 'v0.57.0 — push updated state to clients over SSE ( #129 )' ( #131 ) from feat/sse-state-push into master
CI / build + unit + e2e (push) Successful in 11m33s
v0.57.0
2026-09-22 22:55:42 +02:00
kamilkrzywda
1983d17099
push updated state to clients over SSE (ISS-129)
CI / build + unit + e2e (pull_request) Successful in 11m7s
2026-09-22 20:44:13 +00:00
kamilkrzywda
9b2938a5b0
Merge pull request 'v0.56.0 — idle fleet slows world clock to real-time instead of freezing ( #128 )' ( #130 ) from feat/idle-slowdown into master
CI / build + unit + e2e (push) Failing after 10m12s
v0.56.0
2026-09-22 20:48:17 +02:00
kamilkrzywda
0a40143497
idle fleet slows world clock to real time instead of freezing (ISS-128)
CI / build + unit + e2e (pull_request) Successful in 10m32s
2026-09-22 18:37:06 +00:00
kamilkrzywda
5268a39fe9
Merge pull request 'v0.55.0 — add favicon ( #122 )' ( #126 ) from feat/favicon into master
CI / build + unit + e2e (push) Successful in 9m52s
v0.55.0
2026-09-22 19:39:50 +02:00
kamilkrzywda
ae91bf6a5d
harden e2e getState against transient /api/state 500s (ISS-127)
CI / build + unit + e2e (pull_request) Successful in 9m55s
2026-09-22 17:29:45 +00:00
kamilkrzywda
a8c4e93dc1
fix e2e: actions.spec.ts self-heal tops tank full after reposition (retry cascade after transient 500)
CI / build + unit + e2e (pull_request) Failing after 9m33s
2026-09-22 16:42:38 +00:00
kamilkrzywda
e5693b3301
fix e2e: favicon href hash query + hover self-heal
CI / build + unit + e2e (pull_request) Failing after 10m50s
2026-09-22 16:03:21 +00:00
kamilkrzywda
dae354410f
Add favicon: white airplane on pastel blue as app/icon.svg (ISS-122)
CI / build + unit + e2e (pull_request) Failing after 12m56s
2026-09-22 15:39:04 +00:00
kamilkrzywda
d53ad41c09
Merge pull request 'v0.54.0 — long priority jobs are now always finishable ( #119 )' ( #125 ) from feat/expiry-floor into master
CI / build + unit + e2e (push) Failing after 8m47s
v0.54.0
2026-09-22 17:31:51 +02:00
kamilkrzywda
82061ed869
Clamp generated package expiry to travel time at max catalog speed + buffer so long jobs are finishable (ISS-119)
CI / build + unit + e2e (pull_request) Successful in 9m43s
2026-09-22 15:21:50 +00:00
kamilkrzywda
2a4b341a9c
Merge pull request 'v0.53.0 — antimeridian routes no longer chord across the map ( #120 )' ( #123 ) from feat/antimeridian-route into master
CI / build + unit + e2e (push) Successful in 12m43s
v0.53.0
2026-09-22 17:00:15 +02:00
kamilkrzywda
cd2c766895
Unwrap great-circle arc longitudes across the antimeridian so routes don't chord across the map (ISS-120)
CI / build + unit + e2e (pull_request) Successful in 10m58s
2026-09-22 14:48:53 +00:00
kamilkrzywda
23896b2cc4
Merge pull request 'v0.52.0 — fixed world clock at 24x (1h = 1 day): no time skip, background tick, idle-pause ( #117 )' ( #121 ) from feat/fixed-world-clock into master
...
CI / build + unit + e2e (push) Successful in 12m28s
v0.52.0 — fixed world clock at 24x (1h = 1 day): no time skip, background tick, idle-pause (#117 )
v0.52.0
2026-09-22 16:13:41 +02:00
kamilkrzywda
189a2c04eb
Fix e2e specs for fixed world clock: idle-pause expiry window, scale-1 motion settle, self-heal (ISS-117)
CI / build + unit + e2e (pull_request) Successful in 12m44s
2026-09-22 14:00:53 +00:00
kamilkrzywda
a0560ec767
Fixed world clock: no player time controls (ISS-117)
...
CI / build + unit + e2e (pull_request) Failing after 12m10s
The world always runs at WORLD_TIME_SCALE = 24 (lib/worldClock.ts). A server
background tick (instrumentation.ts -> startBackgroundTick, 1 s interval)
advances the sim with no open browser; idle-pause freezes the clock exactly
while no plane is flying or in repair. Fresh worlds start year 2000
(STARTING_CLOCK_MS in seed.ts).
- Removed: POST /api/sim + OpenAPI entry, applyTimeControls/clampTimeScale,
lib/timeScale.ts, LeftPane pause button + scale slider machinery,
ISS-057 slow-on-landing/resume in flyPlane.
- Snapshot simState is now { clockMs } only; client extrapolates at the fixed
rate between polls and freezes while idle (useSimClock).
- New test-only hook POST /api/test/set-timescale behind FLIGHT_TEST_HOOKS=1
(sibling of set-health); all e2e setScale helpers call it, afterEach restores
the world rate. E2E pause tests replaced by idle-pause assertions; sim.spec.ts
activates the world via set-health + /repair for advance/expiry tests.
2026-09-22 10:50:21 +00:00
kamilkrzywda
d31bc5d60f
Merge pull request 'v0.51.0 — spec card shows guaranteed (worst-case headwind) max range ( #99 )' ( #104 ) from feat/fuel-range-consistency into master
CI / build + unit + e2e (push) Successful in 9m11s
v0.51.0
2026-09-22 11:10:04 +02:00
kamilkrzywda
8319b2fa78
Max range display is the guaranteed (worst-case headwind) full-tank range (ISS-099, v0.51.0)
CI / build + unit + e2e (pull_request) Successful in 12m19s
2026-09-22 08:57:09 +00:00
kamilkrzywda
f01c3f417c
Merge pull request 'v0.50.0 — queued/planned route dotted line yellow-ish instead of gray ( #98 )' ( #103 ) from feat/queued-route-color into master
CI / build + unit + e2e (push) Successful in 9m11s
v0.50.0
2026-09-22 10:29:13 +02:00
kamilkrzywda
c3339f0e40
Make queued/planned route dotted line amber/gold instead of gray (ISS-098)
...
CI / build + unit + e2e (pull_request) Successful in 10m51s
Extract the queue-line color from an inline literal to exported
QUEUE_ROUTE_LINE_COLOR and retune it #64748b -> #d4a017. Dashed style
and width unchanged. Unit test pins the constant; existing e2e specs
(queue.spec.ts, relocation.spec.ts) already cover the rendering path.
2026-09-22 08:02:10 +00:00
kamilkrzywda
d215203988
Merge pull request 'v0.49.0 — airport popup Relocate works for flying planes via queue ( #96 )' ( #102 ) from feat/relocate-queue into master
CI / build + unit + e2e (push) Successful in 9m11s
v0.49.0
2026-09-22 09:48:50 +02:00
kamilkrzywda
11fc6f9d5c
Airport popup Relocate works for flying/repairing planes via queue (ISS-096, v0.49.0)
...
CI / build + unit + e2e (pull_request) Successful in 12m56s
The airport popup's Relocate row now lists ALL planes instead of only
grounded ones; the click handler picks the endpoint by the selected
plane's current status — available → /fly (unchanged), flying/repairing
→ /queue so the destination is appended to the flight queue and chains
on landing. No-planes fallback reworded to 'No planes to relocate.'
E2E +1: relocation.spec.ts dispatches the starter on a leg via API,
slows the sim to 1x, opens the popup for a different airport, selects
the flying plane and clicks Relocate here — asserts the queue contains
the clicked ICAO while the plane still flies its original destination.
2026-09-22 07:32:31 +00:00
kamilkrzywda
8f32d5bf81
Merge pull request 'v0.48.0 — show leg distance (km) on job list and on-board contracts ( #95 )' ( #100 ) from feat/leg-distance into master
CI / build + unit + e2e (push) Successful in 9m5s
v0.48.0
2026-09-22 09:10:37 +02:00
kamilkrzywda
a8233829c3
Show leg distance in km on job list and on-board contracts (ISS-095, v0.48.0)
CI / build + unit + e2e (pull_request) Successful in 10m21s
2026-09-22 06:58:05 +00:00
kamilkrzywda
bf6f1b3c95
Merge pull request 'v0.47.0 — reward: weight dominates payoff (REWARD_PER_KG 0.5→2.0) ( #90 )' ( #94 ) from feat/reward-weight into master
CI / build + unit + e2e (push) Successful in 9m0s
v0.47.0
2026-09-22 01:36:12 +02:00
kamilkrzywda
9ce8660fd2
Job reward retuned so weight dominates payoff (ISS-090, v0.47.0)
CI / build + unit + e2e (pull_request) Successful in 8m59s
2026-09-21 23:24:49 +00:00
kamilkrzywda
3dbac9c549
Merge pull request 'v0.46.0 — queue: consume-on-dispatch, chain backstops, sell guard + tests ( #88 )' ( #93 ) from feat/queue-tests-fixes into master
CI / build + unit + e2e (push) Successful in 11m40s
v0.46.0
2026-09-22 01:22:26 +02:00
kamilkrzywda
b76acbacac
fix(e2e): bound post-departure fuel burn in refuel-cost spec ( #88 )
CI / build + unit + e2e (pull_request) Successful in 9m5s
2026-09-21 23:13:21 +00:00
kamilkrzywda
479b993c09
Queue consumed on dispatch; engine chain hardened; queued planes unsellable (ISS-088)
CI / build + unit + e2e (pull_request) Failing after 12m59s
2026-09-21 22:36:01 +00:00