0.8.1.0:0 — bundle Station Master v0.8.1.0, and date the games in Manage Game
A table pass over 0.8.0.17. The second-digit bump is deliberate: 0.8.1 had been reserved for the seatless display table, which is getting more thought, and this batch earned the number on its own. GAMES IN PROGRESS RESUME, AND IT WAS MEASURED BEFORE RELEASE rather than argued from the diff. The bundled release changes what sits in the yards, so the risk was real. All twelve saves on the test box were pulled and replayed through `tryResumeSession` — the server's own boot check — against the new build: six resume, six refuse, and the six refusals are the SAME six, at the same moves, with the same codes, that 0.8.0.17 already logged. Nothing new was stranded. That replay is the check worth repeating on any release that touches state, because it answers before the install rather than after. THE GAME'S OWN FIX, for the README's benefit: the Freight Agent's "clear the red Inbound box" returned the car to the Classification Yard still marked loaded, carrying a load already delivered and already paid for. `pooled()` strips a load's `origin` stamp and keeps `loaded` on purpose — a train can retire at a Division Point with freight aboard — so the call site's comment, "a car back in a yard is back in the common supply, carrying nothing", described something it never did. Coaches suffered worst: detraining takes `coach && !loaded` out of the Division Yard, so a cleared coach came back as stock that could never unload a passenger. 18 loaded coaches against 6 empty over five measured games. THIS PACKAGE'S OWN CHANGE IS THE MANAGE GAME DROPDOWN. It listed each game's code, seat count and position and nothing about when the game was last touched, so four games on a server looked alike — reported 2026-09-22: "I've got four games out there, but I have no idea which one's which or how old they are." `lastMoveAt` was already on the wire from the server's `summary()` and simply unused. Each option now carries both an age and a timestamp, because they answer different questions: "5h ago" answers the one that was asked, and the date beside it is what you quote when deciding to end a game. A lobby has had no move, so it reports when it was created and says so. `when()` moved out of `gamesInProgress.ts` into `utils.ts` alongside a new `ago()`, shared by both actions so an administrator sees one date format wherever a game is named — the second copy would have been the one that drifted. No route, file model or interface changed. README and instructions.md carry the release, and the notes in all five locales say games in progress are unaffected. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MUizFYCMHRWhbWwXhp7WPR
This commit is contained in:
@@ -35,6 +35,41 @@ watches the table — there is nothing else to open.
|
||||
Solitaire runs entirely in your own browser and needs nothing from the server, so it works here
|
||||
exactly as it does on the public Station Master site.
|
||||
|
||||
**What changed in 0.8.1.0. Games already running on this server resume normally** — this was
|
||||
measured, not assumed: every save on the test server was replayed against the new build first, and
|
||||
the only games that refuse are the same ones that already refused.
|
||||
|
||||
**Passenger coaches stopped piling up unusable.** When the Freight Agent cleared a red Inbound box,
|
||||
the car went back to the Classification Yard still marked as carrying its load — a load that had
|
||||
already been delivered and already been paid for. A coach that came back that way could never be
|
||||
used to unload passengers again, so they accumulated in the yards as dead stock. The car comes back
|
||||
**empty** now, which is what the rules always intended.
|
||||
|
||||
**And that option says what it does.** It used to read "send the loaded coach in the red Inbound box
|
||||
to the Classification Yard", which is true of the counters and nonsense as a sentence. It now says
|
||||
the passengers leave the station and the coach goes back to the yard empty.
|
||||
|
||||
**The lobby is not a dead end any more.** Leaving a game in progress took you back to the lobby, and
|
||||
the lobby showed only the games you were already in — with no way to join a different one or start a
|
||||
new one. Both doors were there the whole time, hidden. They come back now.
|
||||
|
||||
**The lobby's buttons look like buttons.** Look up game, Join, Create new game, Copy code, Copy
|
||||
invite link, Start game and Rejoin carry the same amber border the action buttons in the game do,
|
||||
which has always meant "this is something you can do now".
|
||||
|
||||
**Taking the last card from a Department refills it** — that is the rule (§6.2) and always has been,
|
||||
but it was not written down anywhere, so it surprised a player at the table. It is in the Rules and
|
||||
the Home deck reference now.
|
||||
|
||||
**Managing a game tells you how old it is.** The dropdown in the Manage Game action listed the code
|
||||
and the position but nothing about when the game was last touched, so four games looked alike. Each
|
||||
now says how long ago the last move was and when.
|
||||
|
||||
**In the history, an Enhancement says which Mainline card it went on** — the slot and the card type
|
||||
both, since a Division can be dealt two of the same card — and calls the card by its printed name.
|
||||
|
||||
---
|
||||
|
||||
**What changed in 0.8.0.17. Games already running on this server resume normally** — no rule
|
||||
changed.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user