0.8.0.5:0 — bundle Station Master v0.8.0.5

Somewhere to look while another player moves. The Home Office deck is drawn at
last — face down with its count, a number the Frame has carried since it existed
and nothing ever read — and whichever pile a move just touched lights up for as
long as that move is on screen: the deck when somebody draws from it, the
Department a card is taken from or discarded onto, the Salvage Yard when a played
card ends there.

What lights follows what is public, measured across four seeds rather than
reasoned about: a card drawn face down stays private and only the deck getting
shorter is shown, while a Department pile is face up so the card taken from it is
not a secret.

Release notes updated in all five locales. Still no migration —
git diff v0.8.0.2..v0.8.0.5 -- src/engine/ is empty; the highlight is a diff of two
frames the client already holds, so nothing joined the protocol either. Games in
progress resume.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X6cF1iYvJ1kNmzYBzu4QX6
This commit is contained in:
Jesse
2026-09-10 04:49:16 -04:00
co-authored by Claude Opus 5
parent cf148129d7
commit a1f30ac727
2 changed files with 43 additions and 14 deletions
+42 -13
View File
@@ -10,10 +10,10 @@ 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.4:0',
version: '0.8.0.5:0',
releaseNotes: {
en_US:
'Bundles Station Master v0.8.0.4 — you can watch the other players now. GAMES IN PROGRESS ON ' +
'Bundles Station Master v0.8.0.5 — you can watch the other players now. GAMES IN PROGRESS ON ' +
'THIS SERVER ARE UNAFFECTED and will resume normally. Until now another player could move a ' +
'train the length of their district and the only trace on your screen was a line of text: your ' +
'board showed your own Office Area and nobody else’s, and a bot’s whole turn arrived as a ' +
@@ -42,9 +42,14 @@ export const current = VersionInfo.of({
'playing that: Skip has moved to the left of the row, where your eye already is; the row says ' +
'WHO you are waiting on and what they are doing, instead of only how far behind you are; and ' +
'the speed setting now stretches other players\u2019 moves without stretching the clock, so ' +
'finishing your own turn no longer leaves you waiting on the phases behind it.',
'finishing your own turn no longer leaves you waiting on the phases behind it. And there is ' +
'somewhere to look: the Home Office deck is drawn at last, face down with its count, and ' +
'whichever pile a move just touched lights up for as long as that move is on screen — the deck ' +
'when somebody draws from it, the Department a card is taken from or discarded onto, the ' +
'Salvage Yard when a played card ends up there. What lights follows what is public: a card ' +
'drawn face down from the deck stays private, and only the deck getting shorter is shown.',
es_ES:
'Incluye Station Master v0.8.0.4 — ahora puedes ver jugar a los demás. LAS PARTIDAS EN CURSO EN ' +
'Incluye Station Master v0.8.0.5 — ahora puedes ver jugar a los demás. LAS PARTIDAS EN CURSO EN ' +
'ESTE SERVIDOR NO SE VEN AFECTADAS y se reanudarán con normalidad. Hasta ahora otro jugador ' +
'podía mover un tren a lo largo de todo su distrito y el único rastro en tu pantalla era una ' +
'línea de texto: tu tablero mostraba tu propia Área de Oficina y la de nadie más, y el turno ' +
@@ -74,9 +79,15 @@ export const current = VersionInfo.of({
'de jugarlo: Saltar se ha movido a la izquierda de la fila, donde ya está tu mirada; la fila ' +
'dice a QUIÉN estás esperando y qué está haciendo, en vez de sólo cuánto te falta; y el ajuste ' +
'de velocidad alarga ahora los movimientos de los demás sin alargar el reloj, así que terminar ' +
'tu turno ya no te deja esperando las fases que vienen detrás.',
'tu turno ya no te deja esperando las fases que vienen detrás. Y ahora hay dónde mirar: por fin ' +
'se dibuja el mazo de la Oficina Central, boca abajo y con su recuento, y la pila que acaba de ' +
'tocar un movimiento se ilumina mientras ese movimiento está en pantalla: el mazo cuando ' +
'alguien roba de él, el Departamento del que se toma o en el que se descarta una carta, el ' +
'Depósito de Chatarra cuando allí acaba una carta jugada. Lo que se ilumina respeta lo que es ' +
'público: una carta robada boca abajo del mazo sigue siendo privada, y sólo se muestra que el ' +
'mazo mengua.',
de_DE:
'Enthält Station Master v0.8.0.4 — Sie können den anderen jetzt beim Spielen zusehen. LAUFENDE ' +
'Enthält Station Master v0.8.0.5 — Sie können den anderen jetzt beim Spielen zusehen. LAUFENDE ' +
'PARTIEN AUF DIESEM SERVER SIND NICHT BETROFFEN und werden normal fortgesetzt. Bisher konnte ' +
'ein anderer Spieler einen Zug durch sein ganzes Revier bewegen, und die einzige Spur auf ' +
'Ihrem Bildschirm war eine Textzeile: Ihr Brett zeigte nur Ihren eigenen Dienstbereich und den ' +
@@ -108,9 +119,15 @@ export const current = VersionInfo.of({
'heraus: Überspringen sitzt jetzt links in der Zeile, wo Ihr Blick ohnehin ist; die Zeile sagt, ' +
'auf WEN Sie warten und was er tut, statt nur wie weit Sie zurück sind; und die ' +
'Geschwindigkeit dehnt die Züge der anderen, ohne die Uhr mitzudehnen — nach Ihrem eigenen Zug ' +
'warten Sie also nicht mehr auf die Phasen dahinter.',
'warten Sie also nicht mehr auf die Phasen dahinter. Und es gibt jetzt etwas anzusehen: der ' +
'Stapel der Hauptverwaltung wird endlich gezeichnet, verdeckt und mit seiner Anzahl, und der ' +
'Stapel, den ein Zug gerade berührt hat, leuchtet so lange, wie dieser Zug zu sehen ist — der ' +
'Stapel, wenn jemand daraus zieht, die Abteilung, aus der eine Karte genommen oder auf die ' +
'abgeworfen wird, der Schrottplatz, wenn dort eine gespielte Karte landet. Was leuchtet, folgt ' +
'dem, was öffentlich ist: eine verdeckt gezogene Karte bleibt privat, gezeigt wird nur, dass ' +
'der Stapel kürzer wird.',
pl_PL:
'Zawiera Station Master v0.8.0.4 — teraz możesz obserwować grę pozostałych. TRWAJĄCE PARTIE NA ' +
'Zawiera Station Master v0.8.0.5 — teraz możesz obserwować grę pozostałych. TRWAJĄCE PARTIE NA ' +
'TYM SERWERZE NIE SĄ NARUSZONE i zostaną normalnie wznowione. Do tej pory inny gracz mógł ' +
'przeprowadzić pociąg przez cały swój okręg, a jedynym śladem na twoim ekranie była linijka ' +
'tekstu: twoja plansza pokazywała wyłącznie twój własny Obszar Biura i niczyj inny, a cała ' +
@@ -138,9 +155,14 @@ export const current = VersionInfo.of({
'bo Dzień już się przewinął, gdy je czytałeś. Teraz nazywa Dzień: „2 w Dniu 1, 2 łącznie". A z ' +
'samej gry: Pomiń przeniesiono na lewą stronę wiersza, tam gdzie i tak patrzysz; wiersz mówi, na ' +
'KOGO czekasz i co robi, a nie tylko o ile jesteś z tyłu; a ustawienie szybkości wydłuża teraz ' +
'ruchy innych, nie wydłużając zegara — po własnej turze nie czekasz już na fazy za nią.',
'ruchy innych, nie wydłużając zegara — po własnej turze nie czekasz już na fazy za nią. I jest ' +
'wreszcie na co patrzeć: talia Centrali jest w końcu narysowana, zakryta i z liczbą kart, a ' +
'stos, którego właśnie dotknął ruch, podświetla się na tak długo, jak długo ten ruch jest na ' +
'ekranie — talia, gdy ktoś z niej dobiera, Dział, z którego bierze się kartę lub na który się ' +
'ją odrzuca, Złomowisko, gdy trafia tam zagrana karta. To, co się świeci, idzie za tym, co ' +
'jawne: karta dobrana zakryta z talii pozostaje prywatna, widać tylko, że talia maleje.',
fr_FR:
'Contient Station Master v0.8.0.4 — vous pouvez maintenant regarder jouer les autres. LES ' +
'Contient Station Master v0.8.0.5 — vous pouvez maintenant regarder jouer les autres. LES ' +
'PARTIES EN COURS SUR CE SERVEUR NE SONT PAS AFFECTÉES et reprendront normalement. Jusqu’ici ' +
'un autre joueur pouvait déplacer un train sur toute la longueur de son district et la seule ' +
'trace sur votre écran était une ligne de texte : votre plateau ne montrait que votre propre ' +
@@ -173,7 +195,12 @@ export const current = VersionInfo.of({
'ligne, là où se porte déjà le regard ; la ligne dit QUI vous attendez et ce qu’il fait, et pas ' +
'seulement de combien vous êtes en retard ; et le réglage de vitesse étire les coups des autres ' +
'sans étirer l’horloge, si bien qu’après votre propre tour vous n’attendez plus les phases qui ' +
'le suivent.',
'le suivent. Et il y a enfin où regarder : la pioche de la Direction est dessinée, face cachée ' +
'avec son compte, et la pile qu’un coup vient de toucher s’allume tant que ce coup est à ' +
'l’écran — la pioche quand quelqu’un y prend une carte, le Département d’où une carte est tirée ' +
'ou sur lequel elle est défaussée, la Casse quand une carte jouée y aboutit. Ce qui s’allume ' +
'suit ce qui est public : une carte piochée face cachée reste privée, et seule la pioche qui ' +
'raccourcit est montrée.',
},
migrations: {
/**
@@ -213,9 +240,11 @@ export const current = VersionInfo.of({
* `advance.ts`. It is a counter that nothing checks — no predicate reads it, so no once-legal move
* became illegal.
*
* v0.8.0.3 AND v0.8.0.4 ADD NOTHING AGAIN: `git diff v0.8.0.2..v0.8.0.4 -- src/engine/` is empty.
* v0.8.0.3 THROUGH v0.8.0.5 ADD NOTHING AGAIN: `git diff v0.8.0.2..v0.8.0.5 -- src/engine/` is empty.
* One moved the Skip button, changed what the waiting row says, and stopped the speed control
* stretching the clock; the other took a hostname out of comments. Neither is a rule.
* stretching the clock; one took a hostname out of comments; the last drew the Home Office deck
* and lit the pile a watched move touched, which is a diff of two frames the client already
* holds. None of it is a rule, and none of it is on disk.
*
* A NEW STATE FIELD CANNOT STRAND A SAVE HERE, which is the property worth naming rather than
* re-deriving: a `SavedGame` holds `{ seed, config, history }` and NOT a serialised `GameState`.