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:
Jesse
2026-09-22 21:23:53 -04:00
co-authored by Claude Opus 5
parent 410803c478
commit d905c86e69
7 changed files with 199 additions and 118 deletions
+24 -1
View File
@@ -13,7 +13,30 @@ Station Master is a railroad operations board game with an authoritative multipl
solitaire needs no server and is not what this package is for. This package runs that server —
the browser client, the lobby, and the intent/SSE API — as a single StartOS service.
**Bundled version: 0.8.0.17.** Four fixes from a live playtest of 0.8.0.16, every one of them a case
**Bundled version: 0.8.1.0.** A table pass over 0.8.0.17, and a second-digit bump taken
deliberately — 0.8.1 had been reserved for the seatless display table, which is getting more
thought. **The one that changes state:** 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 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 needs `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.
**Games in progress resume, and it was measured before release**, not argued from the diff: all
twelve saves on the test box were 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. **That replay is the check to repeat on
any release that touches state**, because it answers before the install rather than after.
Also: leaving a running game no longer strands you in a lobby with no way to join or create
(`runLobby` never restored the section `enterSeating` hides); the lobby's action buttons carry the
board's amber; an Enhancement in the history names the Mainline card it went on, slot and type, by
its printed name; the Manage Game dropdown says how long ago each game was last touched; and §6.2's
Department refill — always implemented, never documented — is written into the game's rules
reference.
**Previously, 0.8.0.17.** Four fixes from a live playtest of 0.8.0.16, every one of them a case
of the game knowing something and the screen not saying it. **ABS Signals could be played on only
one Mainline card** although its own tooltip said "any": the engine allowed all of them, but the
action list drops duplicate labels and every placement described itself identically, so all but the
+35
View File
@@ -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.
+1 -7
View File
@@ -1,15 +1,9 @@
import { i18n } from '../i18n'
import { sdk } from '../sdk'
import { listGames } from '../serverApi'
import { when } from '../utils'
import type { GameRow } from '../serverApi'
/** "3 Aug 2026, 14:32" — a timestamp a person reads, not an epoch they decode. */
function when(ms: number): string {
return new Date(ms).toLocaleString('en-GB', {
dateStyle: 'medium',
timeStyle: 'short',
})
}
function describe(g: GameRow): string {
const who = g.playerNames.join(', ')
+1
View File
@@ -1,6 +1,7 @@
import { i18n } from '../i18n'
import { sdk } from '../sdk'
import { deleteGame, exportGame, listGames } from '../serverApi'
import { ago, when } from '../utils'
const { InputSpec, Value } = sdk
+28
View File
@@ -6,3 +6,31 @@ export const uiPort = 8081
// server's own per-game persistence (`games/<gameId>/`, `index.json`) and this package's
// store.json (the join secret) share this one directory — see README's Volume and Data Layout.
export const dataDir = '/data'
/**
* "3 Aug 2026, 14:32" — a timestamp a person reads, not an epoch they decode.
*
* Shared by the two actions that list games, so the administrator sees one date format wherever
* a game is named. It lived in `gamesInProgress.ts` until v0.8.1.0, when the Manage Game dropdown
* needed it too and copying it would have been the second copy to drift.
*/
export function when(ms: number): string {
return new Date(ms).toLocaleString('en-GB', { dateStyle: 'medium', timeStyle: 'short' })
}
/**
* How long ago, in the coarsest unit that is still true: "12m", "3h", "2d".
*
* The Manage Game dropdown is a one-line select whose job is to tell four games apart, and the
* question asked of it is "how old are these" (Jesse, 2026-09-22: "I've got four games out there,
* but I have no idea which one's which or how old they are"). An absolute date answers WHEN and
* makes the reader do the subtraction; this answers the question directly and costs four
* characters, so the label carries both.
*/
export function ago(ms: number, now: number = Date.now()): string {
const mins = Math.max(0, Math.round((now - ms) / 60_000))
if (mins < 60) return `${mins}m`
const hours = Math.round(mins / 60)
if (hours < 48) return `${hours}h`
return `${Math.round(hours / 24)}d`
}
+109 -109
View File
@@ -10,121 +10,121 @@ export const current = VersionInfo.of({
// — checked against the SDK's own parser rather than assumed, since every example in `versions.md`
// has three: `0.7.9.8:0` parses to upstream `[0,7,9,8]`, which sorts above `[0,7,9]`, so a box on
// 0.7.9:0 sees this as an update rather than refusing it as a downgrade.
version: '0.8.0.17:0',
version: '0.8.1.0:0',
releaseNotes: {
en_US:
'Bundles Station Master v0.8.0.17 — four fixes from a live playtest, every one of them the game ' +
'knowing something the screen did not say. **Games already running on this server resume ' +
'normally**: no rule changed. **ABS Signals could be played on only one Mainline card**, although ' +
'the card says any of them. Nothing was wrong with the rule — the game described every one of ' +
'those placements with the same words, and the action list hides duplicates, so all but one ' +
'disappeared before you saw them. **You can now see what is standing on a Mainline card.** One ' +
'carrying ABS Signals draws a signal mast with a lit lamp at its corner, and the Heavy Grade ' +
'modifiers draw as BRK, AIR and HLP beside the card\'s name. None of them marked the board at all ' +
'before: the only way to find out a card was protected — which is what decides whether a second ' +
'train on it is safe — was to hover it and read the tooltip. **The Freight Agent says what it ' +
'actually did.** The line read "one car moved to or from a facility" even when nothing had moved, ' +
'and then said nothing more. Doing nothing is a legitimate choice — the rules ask for no action, ' +
'and a bot declines rather than break open a working box to look busy — so it now says when it ' +
'has, and why; and when work does happen it names the car, the industry by name instead of a grid ' +
'coordinate, and which way the car went. **The whole guide is reachable from inside a game**, in ' +
'the This Game card: the Quickstart, the Rules in full, every card, both deck references and the ' +
'Components list, each opening in a new tab so reading one mid-turn does not lose your game. The ' +
'previous release published the Quickstart alone and the links at its foot all led nowhere. They ' +
'are served as plain text for now, so their tables come out as rows of pipes. **Smaller:** the ' +
'action list and the history log had been printing the same square in two different orders, and ' +
'now agree.',
'Bundles Station Master v0.8.1.0 — a table pass over v0.8.0.17. **Games already running on this ' +
'server resume normally**, and that was measured rather than assumed: every save on the test ' +
'server was replayed against this build before release, 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 already delivered and already paid for. A coach that came ' +
'back that way could never unload passengers again, so they gathered in the yards as dead stock; ' +
'over five measured games there were 18 such coaches against 6 usable ones. The car comes back ' +
'**empty** now, which is what the rules always meant. **And the option says what it does**: it ' +
'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.** Leaving a game in progress ' +
'returned you to a lobby showing only the games you were already in, with no way to join a ' +
'different one or start a new one — both doors were on the page the whole time, hidden. **The ' +
'lobby\'s buttons look like buttons**, carrying the same amber border that has meant "you can do ' +
'this now" everywhere else in the game. **Taking the last card from a Department refills it** — ' +
'that is the rule and always has been, but it was written down nowhere, 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 listed the code and the position and nothing about when the game ' +
'was last touched, so four games looked alike. **Smaller:** in the history an Enhancement now ' +
'names the 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.',
es_ES:
'Incluye Station Master v0.8.0.17 — cuatro correcciones de una partida de prueba, todas del mismo ' +
'tipo: el juego sabía algo que la pantalla no decía. **Las partidas ya en curso en este servidor ' +
'se reanudan con normalidad**: no ha cambiado ninguna regla. **Las Señales ABS solo podían ' +
'jugarse en una carta de Línea Principal**, aunque la carta dice que en cualquiera. La regla ' +
'nunca estuvo mal: el juego describía todas esas jugadas con las mismas palabras, y la lista de ' +
'acciones oculta los duplicados, así que todas menos una desaparecían antes de que las vieras. ' +
'**Ahora se ve qué hay sobre una carta de Línea Principal.** La que lleva Señales ABS dibuja un ' +
'mástil de señal con una luz encendida en su esquina, y los modificadores de Pendiente Fuerte ' +
'aparecen como BRK, AIR y HLP junto al nombre de la carta. Antes ninguno marcaba el tablero: la ' +
'única forma de saber que una carta estaba protegida — lo que decide si un segundo tren sobre ' +
'ella es seguro — era pasar el ratón por encima. **El Agente de Carga dice lo que hizo ' +
'realmente.** La línea decía "un vagón movido desde o hacia una instalación" incluso cuando nada ' +
'se había movido, y luego callaba. No hacer nada es una elección legítima — las reglas no exigen ' +
'ninguna acción, y un bot prefiere eso a destrozar una caja que funciona — así que ahora lo dice, ' +
'y explica por qué; y cuando sí hay trabajo, nombra el vagón, la industria por su nombre en vez ' +
'de una coordenada, y en qué dirección fue. **Toda la guía es accesible desde dentro de la ' +
'partida**, en la tarjeta Esta Partida: la Guía Rápida, las Reglas completas, todas las cartas, ' +
'ambas referencias de mazos y la lista de Componentes, cada una en una pestaña nueva para no ' +
'perder la partida. La versión anterior publicaba solo la Guía Rápida y los enlaces de su pie no ' +
'llevaban a ninguna parte. Se sirven como texto plano por ahora, así que sus tablas salen como ' +
'filas de barras. **Menor:** la lista de acciones y el registro imprimían la misma casilla en dos ' +
'órdenes distintos, y ahora coinciden.',
'Incluye Station Master v0.8.1.0 — una revisión tras una partida de prueba de v0.8.0.17. **Las ' +
'partidas ya en curso en este servidor se reanudan con normalidad**, y eso se midió en vez de ' +
'suponerse: todas las partidas guardadas del servidor de pruebas se reprodujeron contra esta ' +
'versión antes de publicarla, y las únicas que fallan son las que ya fallaban. **Los coches de ' +
'viajeros dejaron de acumularse inservibles.** Cuando el Agente de Carga vaciaba una caja roja de ' +
'entrada, el vagón volvía al Patio de Clasificación marcado aún como cargado — con una carga ya ' +
'entregada y ya pagada. Un coche que volvía así nunca podía volver a descargar viajeros, así que ' +
'se acumulaban como material muerto: en cinco partidas medidas, 18 de ellos frente a 6 ' +
'utilizables. Ahora el vagón vuelve **vacío**, que es lo que las reglas siempre quisieron decir. ' +
'**Y la opción dice lo que hace**: antes decía "enviar el coche cargado de la caja roja al Patio ' +
'de Clasificación", cierto para las fichas y absurdo como frase. Ahora dice que los viajeros ' +
'salen de la estación y el coche vuelve vacío al patio. **El vestíbulo ya no es un callejón sin ' +
'salida.** Salir de una partida en curso te devolvía a un vestíbulo que solo mostraba las ' +
'partidas en las que ya estabas, sin forma de unirte a otra ni crear una nueva; ambas puertas ' +
'estaban allí todo el tiempo, ocultas. **Los botones del vestíbulo parecen botones**, con el ' +
'mismo borde ámbar que significa "puedes hacer esto ahora" en el resto del juego. **Tomar la ' +
'última carta de un Departamento lo rellena** — es la regla y siempre lo fue, pero no estaba ' +
'escrita en ninguna parte y sorprendió a un jugador; ya está en las Reglas y en la referencia del ' +
'mazo. **Gestionar una partida dice cuánto hace que se jugó**: la lista mostraba el código y la ' +
'posición pero nada sobre la última jugada, así que cuatro partidas parecían iguales. **Menor:** ' +
'en el historial, una Mejora nombra la carta de Línea Principal sobre la que se jugó — la ' +
'posición y el tipo, porque pueden repartirse dos iguales — y la llama por su nombre impreso.',
de_DE:
'Enthält Station Master v0.8.0.17 — vier Korrekturen aus einem Testspiel, alle von derselben Art: ' +
'das Spiel wusste etwas, das der Bildschirm nicht sagte. **Bereits laufende Partien auf diesem ' +
'Server werden normal fortgesetzt**: keine Regel hat sich geändert. **ABS-Signale konnten nur auf ' +
'einer einzigen Streckenkarte gespielt werden**, obwohl die Karte jede erlaubt. Die Regel war nie ' +
'falsch — das Spiel beschrieb alle diese Züge mit denselben Worten, und die Aktionsliste blendet ' +
'Duplikate aus, sodass alle bis auf einen verschwanden, bevor man sie sah. **Man sieht jetzt, was ' +
'auf einer Streckenkarte steht.** Eine Karte mit ABS-Signalen zeichnet einen Signalmast mit ' +
'brennender Lampe in ihrer Ecke, und die Steigungs-Modifikatoren erscheinen als BRK, AIR und HLP ' +
'neben dem Kartennamen. Bisher markierte keiner von ihnen das Brett: Um zu erfahren, dass eine ' +
'Karte geschützt ist — was entscheidet, ob ein zweiter Zug darauf sicher ist — musste man mit der ' +
'Maus darüberfahren. **Der Frachtagent sagt, was er wirklich getan hat.** Die Zeile lautete "ein ' +
'Wagen zu oder von einer Anlage bewegt", auch wenn sich nichts bewegt hatte, und schwieg dann. ' +
'Nichts zu tun ist eine legitime Wahl — die Regeln verlangen keine Aktion, und ein Bot verzichtet ' +
'lieber, als eine funktionierende Box aufzubrechen — also sagt er es jetzt und begründet es; und ' +
'wenn gearbeitet wird, nennt er den Wagen, die Industrie beim Namen statt einer Koordinate, und ' +
'die Richtung. **Die ganze Anleitung ist aus dem laufenden Spiel erreichbar**, in der Karte Diese ' +
'Partie: Schnellstart, die vollständigen Regeln, jede Karte, beide Deck-Referenzen und die ' +
'Komponentenliste, jeweils in einem neuen Tab, damit das Lesen die Partie nicht verliert. Die ' +
'vorherige Version veröffentlichte nur den Schnellstart, und die Links an seinem Fuß führten ins ' +
'Leere. Sie werden vorerst als reiner Text ausgeliefert, ihre Tabellen erscheinen also als Reihen ' +
'von Strichen. **Kleineres:** Aktionsliste und Verlauf gaben dasselbe Feld in zwei verschiedenen ' +
'Reihenfolgen aus und stimmen nun überein.',
'Enthält Station Master v0.8.1.0 — ein Durchgang nach einem Testspiel von v0.8.0.17. **Bereits ' +
'laufende Partien auf diesem Server werden normal fortgesetzt**, und das wurde gemessen statt ' +
'angenommen: jeder Spielstand des Testservers wurde vor der Freigabe gegen diesen Build ' +
'abgespielt, und nur die Partien verweigern, die schon vorher verweigerten. **Personenwagen ' +
'häufen sich nicht mehr unbrauchbar an.** Wenn der Frachtagent eine rote Eingangsbox leerte, ' +
'kehrte der Wagen in den Rangierbahnhof zurück, immer noch als beladen markiert — mit einer ' +
'Ladung, die längst geliefert und längst bezahlt war. Ein so zurückgekehrter Wagen konnte nie ' +
'wieder Fahrgäste ausladen, also sammelten sie sich als totes Material: in fünf gemessenen ' +
'Partien 18 davon gegen 6 brauchbare. Jetzt kommt der Wagen **leer** zurück, wie es die Regeln ' +
'immer meinten. **Und die Option sagt, was sie tut**: sie lautete "den beladenen Wagen aus der ' +
'roten Box in den Rangierbahnhof schicken" — für die Marker zutreffend und als Satz unsinnig. ' +
'Jetzt heißt es, die Fahrgäste verlassen den Bahnhof und der Wagen kehrt leer zurück. **Die Lobby ' +
'ist keine Sackgasse mehr.** Wer eine laufende Partie verließ, landete in einer Lobby, die nur ' +
'die eigenen Partien zeigte, ohne Weg zu einer anderen oder zu einer neuen — beide Türen waren ' +
'die ganze Zeit da, nur verborgen. **Die Knöpfe der Lobby sehen aus wie Knöpfe**, mit demselben ' +
'bernsteinfarbenen Rand, der im übrigen Spiel "das kannst du jetzt tun" bedeutet. **Die letzte ' +
'Karte aus einer Abteilung zu nehmen füllt sie wieder auf** — das ist die Regel und war es immer, ' +
'stand aber nirgends geschrieben und überraschte einen Spieler; jetzt steht sie in den Regeln und ' +
'in der Deck-Referenz. **Die Partieverwaltung sagt, wie alt eine Partie ist**: die Liste nannte ' +
'Code und Position, aber nichts über den letzten Zug, sodass vier Partien gleich aussahen. ' +
'**Kleineres:** im Verlauf nennt eine Verbesserung die Streckenkarte, auf die sie kam — Platz und ' +
'Kartentyp, denn es können zwei gleiche ausliegen — und beim gedruckten Namen.',
pl_PL:
'Zawiera Station Master v0.8.0.17 — cztery poprawki z rozgrywki testowej, wszystkie tego samego ' +
'rodzaju: gra wiedziała coś, czego ekran nie mówił. **Partie już trwające na tym serwerze ' +
'wznawiają się normalnie**: żadna zasada się nie zmieniła. **Sygnały ABS można było zagrać tylko ' +
'na jednej karcie Magistrali**, choć karta mówi o dowolnej. Zasada nigdy nie była błędna — gra ' +
'opisywała wszystkie te zagrania tymi samymi słowami, a lista akcji ukrywa duplikaty, więc ' +
'wszystkie poza jednym znikały, zanim je zobaczyłeś. **Teraz widać, co stoi na karcie ' +
'Magistrali.** Karta z Sygnałami ABS rysuje maszt sygnałowy z zapaloną lampą w rogu, a ' +
'modyfikatory Stromego Podjazdu pojawiają się jako BRK, AIR i HLP obok nazwy karty. Wcześniej ' +
'żaden z nich nie znaczył planszy: jedynym sposobem, by dowiedzieć się, że karta jest chroniona — ' +
'co decyduje, czy drugi pociąg na niej jest bezpieczny — było najechanie na nią kursorem. **Agent ' +
'Towarowy mówi, co naprawdę zrobił.** Linia brzmiała "jeden wagon przesunięty do lub z zakładu" ' +
'nawet wtedy, gdy nic się nie ruszyło, i potem milkła. Nicnierobienie to uprawniony wybór — ' +
'zasady nie wymagają żadnej akcji, a bot woli odpuścić, niż rozbić działającą skrzynkę — więc ' +
'teraz to mówi i wyjaśnia dlaczego; a gdy praca się odbywa, nazywa wagon, zakład po nazwie ' +
'zamiast współrzędnych, i kierunek. **Cały przewodnik jest dostępny z wnętrza gry**, w karcie Ta ' +
'Partia: Szybki start, pełne zasady, każda karta, obie referencje talii i lista komponentów, ' +
'każda w nowej zakładce, by czytanie nie zgubiło partii. Poprzednie wydanie publikowało tylko ' +
'Szybki start, a odnośniki u jego stopy prowadziły donikąd. Na razie są podawane jako zwykły ' +
'tekst, więc ich tabele wychodzą jako rzędy kresek. **Drobne:** lista akcji i dziennik wypisywały ' +
'to samo pole w dwóch różnych kolejnościach, a teraz są zgodne.',
'Zawiera Station Master v0.8.1.0 — przegląd po rozgrywce testowej v0.8.0.17. **Partie już ' +
'trwające na tym serwerze wznawiają się normalnie**, i zostało to zmierzone, a nie założone: ' +
'każdy zapis z serwera testowego odtworzono na tej wersji przed wydaniem, a odmawiają tylko te ' +
'partie, które odmawiały już wcześniej. **Wagony pasażerskie przestały gromadzić się ' +
'bezużytecznie.** Gdy Agent Towarowy opróżniał czerwoną skrzynkę przyjęć, wagon wracał na stację ' +
'rozrządową wciąż oznaczony jako załadowany — ładunkiem już dostarczonym i już opłaconym. Tak ' +
'powracający wagon nigdy więcej nie mógł wyładować pasażerów, więc gromadziły się jako martwy ' +
'tabor: w pięciu zmierzonych partiach 18 takich wobec 6 użytecznych. Teraz wagon wraca **pusty**, ' +
'tak jak zasady zawsze zakładały. **A opcja mówi, co robi**: brzmiała "wyślij załadowany wagon z ' +
'czerwonej skrzynki na stację rozrządową" — prawdziwe dla znaczników i bez sensu jako zdanie. ' +
'Teraz mówi, że pasażerowie opuszczają stację, a wagon wraca pusty. **Poczekalnia nie jest już ' +
'ślepym zaułkiem.** Wyjście z trwającej partii przenosiło do poczekalni pokazującej tylko twoje ' +
'partie, bez możliwości dołączenia do innej ani stworzenia nowej — obie bramy były tam cały czas, ' +
'ukryte. **Przyciski poczekalni wyglądają jak przyciski**, z tą samą bursztynową obwódką, która w ' +
'grze oznacza "to możesz teraz zrobić". **Wzięcie ostatniej karty z Departamentu uzupełnia go** — ' +
'to zasada i zawsze nią była, ale nigdzie jej nie zapisano i zaskoczyła gracza; teraz jest w ' +
'Zasadach i w referencji talii. **Zarządzanie partią mówi, ile ma lat**: lista podawała kod i ' +
'pozycję, lecz nic o ostatnim ruchu, więc cztery partie wyglądały tak samo. **Drobne:** w ' +
'historii Ulepszenie nazywa kartę Magistrali, na którą trafiło — miejsce i typ, bo mogą trafić ' +
'się dwie takie same — i po nazwie z karty.',
fr_FR:
'Contient Station Master v0.8.0.17 — quatre corrections issues d\'une partie de test, toutes de la ' +
'même nature : le jeu savait quelque chose que l\'écran ne disait pas. **Les parties déjà en cours ' +
'sur ce serveur reprennent normalement** : aucune règle n\'a changé. **Les Signaux ABS ne ' +
'pouvaient être joués que sur une seule carte de Grande Ligne**, alors que la carte en autorise ' +
'n\'importe laquelle. La règle n\'a jamais été fautive : le jeu décrivait tous ces placements avec ' +
'les mêmes mots, et la liste d\'actions masque les doublons, de sorte que tous sauf un ' +
'disparaissaient avant que vous les voyiez. **On voit maintenant ce qui se trouve sur une carte ' +
'de Grande Ligne.** Celle qui porte des Signaux ABS dessine un mât de signal avec une lampe ' +
'allumée dans son coin, et les modificateurs de Forte Rampe apparaissent en BRK, AIR et HLP à ' +
'côté du nom de la carte. Auparavant aucun ne marquait le plateau : le seul moyen d\'apprendre ' +
'qu\'une carte était protégée — ce qui décide si un second train peut y rouler sans risque — était ' +
'de la survoler. **L\'Agent de Fret dit ce qu\'il a réellement fait.** La ligne indiquait "un wagon ' +
'déplacé vers ou depuis une industrie" même quand rien n\'avait bougé, puis se taisait. Ne rien ' +
'faire est un choix légitime — les règles n\'exigent aucune action, et un bot préfère s\'abstenir ' +
'plutôt que d\'éventrer une case qui fonctionne — alors il le dit désormais, et explique pourquoi ' +
'; et quand il y a du travail, il nomme le wagon, l\'industrie par son nom plutôt qu\'une ' +
'coordonnée, et le sens du mouvement. **Tout le guide est accessible depuis une partie en ' +
'cours**, dans la carte Cette Partie : le Démarrage rapide, les Règles complètes, toutes les ' +
'cartes, les deux références de decks et la liste des Composants, chacune dans un nouvel onglet ' +
'pour ne pas perdre la partie. La version précédente ne publiait que le Démarrage rapide, et les ' +
'liens en bas de page ne menaient nulle part. Ils sont servis en texte brut pour l\'instant, leurs ' +
'tableaux sortent donc en rangées de barres. **Mineur :** la liste d\'actions et l\'historique ' +
'écrivaient la même case dans deux ordres différents, et concordent désormais.',
'Contient Station Master v0.8.1.0 — une passe après une partie de test de v0.8.0.17. **Les ' +
'parties déjà en cours sur ce serveur reprennent normalement**, et cela a été mesuré plutôt que ' +
'supposé : chaque sauvegarde du serveur de test a été rejouée contre cette version avant ' +
'publication, et seules refusent les parties qui refusaient déjà. **Les voitures de voyageurs ne ' +
's\'accumulent plus, inutilisables.** Quand l\'Agent de Fret vidait une case rouge d\'arrivée, le ' +
'wagon repartait vers la gare de triage encore marqué comme chargé — d\'un chargement déjà livré ' +
'et déjà payé. Une voiture revenue ainsi ne pouvait plus jamais débarquer de voyageurs, elles ' +
's\'entassaient donc en matériel mort : sur cinq parties mesurées, 18 contre 6 utilisables. Le ' +
'wagon revient **vide** désormais, ce que les règles ont toujours voulu dire. **Et l\'option dit ' +
'ce qu\'elle fait** : elle indiquait "envoyer la voiture chargée de la case rouge vers la gare de ' +
'triage", vrai pour les jetons et absurde comme phrase. Elle dit maintenant que les voyageurs ' +
'quittent la gare et que la voiture repart à vide. **Le salon n\'est plus une impasse.** Quitter ' +
'une partie en cours ramenait à un salon n\'affichant que vos propres parties, sans moyen d\'en ' +
'rejoindre une autre ni d\'en créer une — les deux portes étaient là depuis le début, masquées. ' +
'**Les boutons du salon ressemblent à des boutons**, avec la même bordure ambre qui signifie « ' +
'vous pouvez faire ceci » partout ailleurs. **Prendre la dernière carte d\'un Département le ' +
'réapprovisionne** — c\'est la règle et l\'a toujours été, mais elle n\'était écrite nulle part et a ' +
'surpris un joueur ; elle figure désormais dans les Règles et la référence du deck. **La gestion ' +
'd\'une partie dit son âge** : la liste donnait le code et la position, rien sur le dernier coup, ' +
'si bien que quatre parties se ressemblaient. **Mineur :** dans l\'historique, une Amélioration ' +
'nomme la carte de Grande Ligne où elle a été posée — l\'emplacement et le type, car deux ' +
'identiques peuvent sortir — et par son nom imprimé.',
},
migrations: {
/**