-
v0.4.9d — three playtest bugs: a train that looked gone, an unload that ignored the pick, a hang that wasn't one
released this
2026-08-21 03:26:39 +00:00 | 75 commits to main since this releasePatched directly onto 0.4.9a rather than the in-progress 0.5.0 line.
A switching train vanished from the board the moment it left the Office.
selectedTrainin
officeSvg(board-svg.ts), which gates whether a card draws a train's crew badge, was only ever
assigned inside thecell.adTracks !== nullbranch — true for the Office card alone. A train
standing anywhere else, which is everywhere it stands while actually being switched, drew no badge
at all. Game state was never affected; confirmed against the reported save with the engine directly.
Fix hoists the assignment out of the guard so it runs for any card with a train on it.Unloading always took the westmost car, whichever one was picked.
laborer.beginUnloadcarried the
player's chosencarIndex, andcheck()validated that specific car, but theunloadBeganevent
it produced carried only the car's type — the reducer that performs the swap re-derived the target
withindustryTrack.cars.findIndex(c => c.loaded), which always answers the first loaded car in
track order regardless of what was requested. Fix addscarIndexto the event and uses it directly.A legal decision could render with zero buttons, which looked exactly like a hang. The "where does
this Extra start" decision is titled bytrainCardTitle, beginning "Making up Extra X22…" — the
same prefixrenderActions()stripped from the action list on the assumption it only ever belonged
to the separate yard-chip car-placement panel. With no tray yet being filled, that panel is null, so
nothing rendered the Extra's decision either: a legal, correctly-computed option with no button
anywhere on the page. Replaying the reported save found no engine deadlock at any step — the engine
always had a move. Fix matches the exact title of the one group the yard-chip panel covers instead
of a title-prefix regex.New tests for all three: a train parked on an ordinary facility card must draw its crew badge; three
differently-typed loaded cars, unloading index 2, must leave indices 0 and 1 alone; the existing
softlock regression test now mirrors the real render filter instead of only the raw menu, plus a
deterministic test for the exact reported scenario. 590 tests, 0 failures.Downloads