Files
station-master-startos/startos/versions/current.ts
T
Jesse 1bfea8d49f 0.7.2:0 — bundle Station Master v0.7.2
Two engine bugs and two rules corrections, plus the Division map redrawn. The submodule pin moves to
v0.7.2 and the version follows it; the downstream digit resets to :0.

- Backing into a cut through a curve's 45° leg no longer couples it back to front, and a crew pulling
  out through one takes its own cut with it instead of leaving it standing.
- The card deck is the published counts exactly, which halves the track and drops two long-standing
  density multipliers — 206 cards to 121.
- Crossing a Mainline card counts the regions printed on it rather than the printed speed, which was
  only ever scenery. Most trains cross faster, slow trains much faster, and Fast/Slow now matters on
  the Hilly card alone.
- The Division map is one row read left to right, so east is always to the right.

GAMES IN PROGRESS DO NOT SURVIVE THIS UPDATE, and this is the first release of which that is true. A
save is a seed plus the moves played, and the deck changing size means a card id recorded under 0.7.1
refers to a different card or to none — so a save stops replaying at its first card.play. There is no
migration because there is no data to move: those moves were made against a deck that no longer
exists, and re-dealing would invent a game nobody played.

It fails safe. The server refuses to resume a save the rules reject, logs which move it stopped at,
and leaves the file untouched, so an operator can put 0.7.1 back on to finish a game that matters.
The release notes lead with this, in all five locales.

Packed and verified as v0.7.2:0 on x86_64.
2026-08-26 15:32:26 -04:00

98 lines
7.4 KiB
TypeScript

import { IMPOSSIBLE, VersionInfo } from '@start9labs/start-sdk'
export const current = VersionInfo.of({
// `<upstream>:<downstream>` — the upstream half tracks the bundled Station Master tag exactly
// (`versions.md`'s consistency checklist), so bumping the submodule pin and bumping this are one
// action. The downstream half moves only for packaging-only changes, and RESETS to `:0` when the
// upstream half moves — v0.7.0 ended on `:3` only because three test packs were played before it
// was released.
version: '0.7.2:0',
releaseNotes: {
en_US:
'Bundles Station Master v0.7.2. IMPORTANT — GAMES IN PROGRESS DO NOT CARRY OVER: the deck has ' +
'changed size, so a game saved under v0.7.1 no longer replays. The server refuses to resume ' +
'one rather than breaking it, says which move it stopped at, and leaves the file untouched, so ' +
'you can put v0.7.1 back on to finish a game you care about. Crossing a Mainline card is now ' +
'counted in the regions printed on it rather than the speed sign, which was only ever scenery ' +
'— most trains cross faster, slow trains much faster, and a train\u2019s Fast/Slow rating now ' +
'matters on the Hilly card alone. The card deck matches the published counts exactly, which ' +
'means less track and fewer industries in a smaller deck. And the Division map is drawn as one ' +
'row you read left to right, west to east, so east is always to the right.',
es_ES:
'Incluye Station Master v0.7.2. IMPORTANTE: LAS PARTIDAS EN CURSO NO SE CONSERVAN. La baraja ha ' +
'cambiado de tama\u00f1o, as\u00ed que una partida guardada con la v0.7.1 ya no se puede ' +
'reproducir. El servidor se niega a reanudarla en vez de estropearla, indica en qu\u00e9 ' +
'jugada se detuvo y deja el archivo intacto, de modo que puedes volver a instalar la v0.7.1 ' +
'para terminar una partida que te importe. Cruzar una carta de L\u00ednea Principal se cuenta ' +
'ahora por las regiones impresas en ella y no por la se\u00f1al de velocidad, que siempre fue ' +
'decorativa: casi todos los trenes cruzan m\u00e1s r\u00e1pido, los lentos mucho m\u00e1s, y ' +
'la clasificaci\u00f3n R\u00e1pido/Lento solo cuenta ya en la carta Ondulada. La baraja ' +
'coincide exactamente con las cantidades publicadas: menos v\u00eda y menos industrias en una ' +
'baraja m\u00e1s peque\u00f1a. Y el mapa de la Divisi\u00f3n se dibuja en una sola fila que ' +
'se lee de izquierda a derecha, de oeste a este, as\u00ed que el este siempre queda a la ' +
'derecha.',
de_DE:
'Enth\u00e4lt Station Master v0.7.2. WICHTIG \u2014 LAUFENDE PARTIEN GEHEN NICHT MIT: Das Deck ' +
'hat seine Gr\u00f6\u00dfe ge\u00e4ndert, daher l\u00e4sst sich ein unter v0.7.1 ' +
'gespeichertes Spiel nicht mehr nachspielen. Der Server verweigert die Fortsetzung, statt das ' +
'Spiel zu besch\u00e4digen, nennt den Zug, an dem er stehen blieb, und l\u00e4sst die Datei ' +
'unangetastet \u2014 wer eine Partie retten will, spielt sie mit v0.7.1 zu Ende. Die ' +
'\u00dcberquerung einer Streckenkarte z\u00e4hlt jetzt die darauf gedruckten Regionen statt ' +
'des Tempo-Schilds, das immer nur Kulisse war: Die meisten Z\u00fcge sind schneller dr\u00fcben, ' +
'langsame deutlich schneller, und die Einstufung Schnell/Langsam z\u00e4hlt nur noch auf der ' +
'H\u00fcgelkarte. Das Kartendeck entspricht exakt den ver\u00f6ffentlichten St\u00fcckzahlen ' +
'\u2014 weniger Gleise und weniger Industrie in einem kleineren Deck. Und die Streckenkarte ' +
'wird als EINE Reihe gezeichnet, von links nach rechts, West nach Ost, sodass Osten immer ' +
'rechts liegt.',
pl_PL:
'Zawiera Station Master v0.7.2. WA\u017bNE \u2014 TRWAJ\u0104CE PARTIE NIE ZOSTAJ\u0104 ' +
'PRZENIESIONE: talia zmieni\u0142a rozmiar, wi\u0119c gra zapisana w v0.7.1 nie da si\u0119 ' +
'ju\u017c odtworzy\u0107. Serwer odmawia wznowienia, zamiast j\u0105 zepsu\u0107, podaje ' +
'ruch, na kt\u00f3rym stan\u0105\u0142, i zostawia plik nietkni\u0119ty \u2014 mo\u017cna ' +
'wr\u00f3ci\u0107 do v0.7.1 i doko\u0144czy\u0107 wa\u017cn\u0105 parti\u0119. ' +
'Przejazd przez kart\u0119 Magistrali liczy si\u0119 teraz wed\u0142ug wydrukowanych na niej ' +
'region\u00f3w, a nie znaku pr\u0119dko\u015bci, kt\u00f3ry zawsze by\u0142 tylko ozdob\u0105: ' +
'wi\u0119kszo\u015b\u0107 poci\u0105g\u00f3w przeje\u017cd\u017ca szybciej, powolne du\u017co ' +
'szybciej, a ocena Szybki/Powolny liczy si\u0119 ju\u017c tylko na karcie Pag\u00f3rkowatej. ' +
'Talia odpowiada dok\u0142adnie opublikowanym liczbom \u2014 mniej tor\u00f3w i mniej ' +
'przemys\u0142u w mniejszej talii. A mapa Dywizji rysowana jest jako JEDEN rz\u0105d czytany ' +
'od lewej do prawej, z zachodu na wsch\u00f3d, wi\u0119c wsch\u00f3d zawsze jest po prawej.',
fr_FR:
'Inclut Station Master v0.7.2. IMPORTANT \u2014 LES PARTIES EN COURS NE SONT PAS ' +
'CONSERV\u00c9ES : la taille du jeu de cartes a chang\u00e9, donc une partie sauvegard\u00e9e ' +
'sous v0.7.1 ne peut plus \u00eatre rejou\u00e9e. Le serveur refuse de la reprendre au lieu de ' +
'l\u2019ab\u00eemer, indique le coup o\u00f9 il s\u2019est arr\u00eat\u00e9 et laisse le ' +
'fichier intact : vous pouvez r\u00e9installer la v0.7.1 pour terminer une partie qui compte. ' +
'La travers\u00e9e d\u2019une carte de Ligne Principale se compte d\u00e9sormais en r\u00e9gions ' +
'imprim\u00e9es sur la carte plut\u00f4t qu\u2019au panneau de vitesse, qui n\u2019a jamais ' +
'\u00e9t\u00e9 que du d\u00e9cor : la plupart des trains traversent plus vite, les lents ' +
'beaucoup plus vite, et la cote Rapide/Lent ne compte plus que sur la carte Vallonn\u00e9e. Le ' +
'jeu de cartes correspond exactement aux quantit\u00e9s publi\u00e9es \u2014 moins de voie et ' +
'moins d\u2019industries dans un jeu plus petit. Et la carte de la Division est dessin\u00e9e ' +
'sur UNE seule rang\u00e9e qui se lit de gauche \u00e0 droite, d\u2019ouest en est : l\u2019est ' +
'est donc toujours \u00e0 droite.',
},
migrations: {
/**
* STILL NOTHING TO CARRY, AND THIS TIME THAT IS NOT THE WHOLE STORY.
*
* A migration moves DATA a previous version wrote. There is none to move: the package keeps its
* saved games as a seed plus the moves played, and nothing about their shape has changed.
*
* WHAT HAS CHANGED IS WHETHER THEY STILL MEAN ANYTHING. v0.7.2 takes the deck from 206 cards to
* 121 (Gitea#14), so a card id recorded under v0.7.1 refers to a different card or to no card at
* all, and a saved game stops replaying at its first `card.play`. That cannot be migrated: the
* moves were made against a deck that no longer exists, and re-dealing would invent a game
* nobody played.
*
* IT FAILS SAFE, and that is why this is empty rather than a `down: IMPOSSIBLE` argument for
* holding the release. `src/server/index.ts` replays each save on startup and REFUSES to resume
* one the rules reject, naming the move it stopped at and leaving the file untouched — so a
* game in progress is declined, never silently corrupted, and an operator who wants it back can
* put v0.7.1 on and finish it. The release notes say so first, before anything else.
*/
up: async ({ effects }) => {},
down: IMPOSSIBLE,
},
})