import { IMPOSSIBLE, VersionInfo } from '@start9labs/start-sdk' export const current = VersionInfo.of({ // `:` — 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. // // FOUR COMPONENTS IS FINE. ExVer's upstream half is an arbitrary-length dotted number, not semver // — 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.1:0', releaseNotes: { en_US: 'Bundles Station Master v0.8.0.1 — 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 ' + 'position that had simply changed. Now every move is replayed on your screen in the order it ' + 'happened. The Office Area follows whoever is acting, so you watch their switching moves step ' + 'across their board — which is the part worth seeing, and the part reading the history could ' + 'never convey. A row above the board says how many moves behind you are and counts down, with ' + 'a Skip button when you would rather not wait; nothing is lost by skipping, since every line ' + 'is already in the History panel. The automatic phases — New Train, the Mainline, the shift ' + 'change — used to resolve between one click and the next without ever being drawn, and now ' + 'take a visible beat when something happens in them and none at all when nothing does. ' + 'Switching moves in the history finally say who made them and name the train, instead of ' + 'reading as an anonymous “CREW moved”. Playback speed is a per-player setting and can be ' + 'turned off entirely — and it now goes both ways, so you can slow it to twice or three times ' + 'the default if you would rather linger. Fixes over v0.8.0, from the first game played on it: ' + 'a player’s last move in a run used to vanish the instant it appeared, snapping the board back ' + 'to your own district before you could look at it, and bot turns went by far too fast to ' + 'follow — a bot now announces what it is about to do, and takes a beat over each thing it ' + 'does.', es_ES: 'Incluye Station Master v0.8.0.1 — 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 ' + 'completo de un bot llegaba como una posición que simplemente había cambiado. Ahora cada ' + 'movimiento se reproduce en tu pantalla en el orden en que ocurrió. El Área de Oficina sigue a ' + 'quien está jugando, así que ves sus maniobras avanzar por su tablero, que es lo que merece la ' + 'pena ver y lo que el historial nunca podía transmitir. Una fila sobre el tablero indica ' + 'cuántos movimientos llevas de retraso y va descontando, con un botón Saltar por si prefieres ' + 'no esperar; no se pierde nada al saltar, porque cada línea ya está en el panel de Historial. ' + 'Las fases automáticas — Tren Nuevo, la Línea Principal, el cambio de turno — se resolvían ' + 'entre un clic y el siguiente sin dibujarse nunca, y ahora tienen una pausa visible cuando algo ' + 'ocurre en ellas y ninguna cuando no ocurre nada. Las maniobras en el historial por fin dicen ' + 'quién las hizo y nombran el tren, en lugar de leerse como un anónimo «CREW moved». La ' + 'velocidad de reproducción es un ajuste por jugador y se puede desactivar por completo, y ahora ' + 'funciona en ambos sentidos: puedes ralentizarla al doble o al triple si prefieres detenerte. ' + 'Correcciones sobre la v0.8.0, salidas de la primera partida jugada con ella: el último ' + 'movimiento de una serie desaparecía en el instante en que aparecía, devolviendo el tablero a tu ' + 'propio distrito antes de que pudieras verlo, y los turnos de los bots pasaban demasiado rápido ' + 'para seguirlos — ahora un bot anuncia lo que va a hacer y se detiene un momento en cada cosa ' + 'que hace.', de_DE: 'Enthält Station Master v0.8.0.1 — 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 ' + 'von niemandem sonst, und der komplette Zug eines Bots erschien als eine Stellung, die sich ' + 'einfach geändert hatte. Jetzt wird jeder Zug auf Ihrem Bildschirm in der Reihenfolge ' + 'wiedergegeben, in der er geschah. Der Dienstbereich folgt demjenigen, der am Zug ist, sodass ' + 'Sie seine Rangierbewegungen über sein Brett wandern sehen — das ist der sehenswerte Teil und ' + 'der, den das Protokoll nie vermitteln konnte. Eine Zeile über dem Brett zeigt, wie viele Züge ' + 'Sie im Rückstand sind, und zählt herunter, mit einer Überspringen-Schaltfläche, wenn Sie ' + 'nicht warten möchten; dabei geht nichts verloren, denn jede Zeile steht schon im Protokoll. ' + 'Die automatischen Phasen — Neuer Zug, die Hauptstrecke, der Schichtwechsel — liefen zwischen ' + 'einem Klick und dem nächsten ab, ohne je gezeichnet zu werden, und halten nun sichtbar inne, ' + 'wenn darin etwas passiert, und gar nicht, wenn nichts passiert. Rangierbewegungen im ' + 'Protokoll nennen endlich den Spieler und den Zug, statt als anonymes „CREW moved“ zu ' + 'erscheinen. Die Wiedergabegeschwindigkeit ist eine Einstellung pro Spieler und lässt sich ' + 'ganz abschalten — und sie wirkt jetzt in beide Richtungen, sodass Sie sie auf das Doppelte ' + 'oder Dreifache verlangsamen können, wenn Sie lieber verweilen. Korrekturen gegenüber v0.8.0, ' + 'aus der ersten damit gespielten Partie: der letzte Zug einer Folge verschwand in dem Moment, in ' + 'dem er erschien, und das Brett sprang zu Ihrem eigenen Revier zurück, bevor Sie hinsehen ' + 'konnten; und Bot-Züge liefen viel zu schnell ab, um ihnen zu folgen — ein Bot kündigt jetzt an, ' + 'was er vorhat, und hält bei jedem Schritt kurz inne.', pl_PL: 'Zawiera Station Master v0.8.0.1 — 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 ' + 'tura bota pojawiała się jako pozycja, która po prostu się zmieniła. Teraz każdy ruch jest ' + 'odtwarzany na twoim ekranie w kolejności, w jakiej nastąpił. Obszar Biura podąża za tym, kto ' + 'wykonuje ruch, więc widzisz, jak jego manewry przesuwają się po jego planszy — a to właśnie ' + 'warto zobaczyć i tego historia nigdy nie potrafiła przekazać. Wiersz nad planszą pokazuje, o ' + 'ile ruchów jesteś z tyłu, i odlicza, z przyciskiem Pomiń, jeśli wolisz nie czekać; pominięcie ' + 'nic nie kosztuje, bo każda linijka jest już w panelu Historii. Fazy automatyczne — Nowy ' + 'Pociąg, Linia Główna, zmiana warty — rozstrzygały się między jednym kliknięciem a drugim, ' + 'nigdy nie będąc narysowane, a teraz zatrzymują się na widoczną chwilę, gdy coś się w nich ' + 'dzieje, i wcale, gdy nic się nie dzieje. Manewry w historii wreszcie mówią, kto je wykonał, i ' + 'nazywają pociąg, zamiast brzmieć jak anonimowe „CREW moved”. Szybkość odtwarzania jest ' + 'ustawieniem dla każdego gracza osobno i można ją całkiem wyłączyć — a teraz działa w obie ' + 'strony, więc możesz ją zwolnić dwu- lub trzykrotnie, jeśli wolisz się zatrzymać. Poprawki w ' + 'stosunku do v0.8.0, z pierwszej rozegranej na niej partii: ostatni ruch w serii znikał w chwili, ' + 'gdy się pojawiał, a plansza wracała do twojego własnego okręgu, zanim zdążyłeś spojrzeć; tury ' + 'botów przebiegały o wiele za szybko, by dało się je śledzić — teraz bot zapowiada, co zamierza ' + 'zrobić, i zatrzymuje się na chwilę przy każdej czynności.', fr_FR: 'Contient Station Master v0.8.0.1 — 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 ' + 'Zone de Bureau et celle de personne d’autre, et le tour entier d’un bot arrivait comme une ' + 'position qui avait simplement changé. Désormais chaque coup est rejoué sur votre écran dans ' + 'l’ordre où il a eu lieu. La Zone de Bureau suit celui qui joue, si bien que vous voyez ses ' + 'manœuvres progresser sur son plateau — c’est la partie qui vaut d’être vue, et celle que lire ' + 'l’historique ne pouvait jamais rendre. Une ligne au-dessus du plateau indique de combien de ' + 'coups vous êtes en retard et décompte, avec un bouton Passer si vous préférez ne pas ' + 'attendre ; rien n’est perdu en passant, puisque chaque ligne est déjà dans le panneau ' + 'Historique. Les phases automatiques — Nouveau Train, la Grande Ligne, la relève — se ' + 'résolvaient entre un clic et le suivant sans jamais être dessinées, et marquent maintenant un ' + 'temps visible quand quelque chose s’y produit, et aucun quand rien ne s’y produit. Les ' + 'manœuvres dans l’historique disent enfin qui les a faites et nomment le train, au lieu de se ' + 'lire comme un « CREW moved » anonyme. La vitesse de relecture est un réglage par joueur et ' + 'peut être entièrement désactivée — et elle joue maintenant dans les deux sens, vous pouvez donc ' + 'la ralentir au double ou au triple si vous préférez prendre le temps. Corrections par rapport à ' + 'la v0.8.0, issues de la première partie jouée avec elle : le dernier coup d’une série ' + 'disparaissait à l’instant où il apparaissait, ramenant le plateau à votre propre district avant ' + 'que vous puissiez le voir, et les tours des bots défilaient bien trop vite pour être suivis — un ' + 'bot annonce désormais ce qu’il va faire et marque un temps sur chacune de ses actions.', }, migrations: { /** * NOTHING TO CARRY, AND CHECKED THE SAME NARROW WAY v0.7.9.8's ENTRY WAS. * * The rule this package lives by is in the game's README: a save is a seed plus the moves * played, replayed through the CURRENT rules, so the only thing that strands an older save is a * change that makes a once-legal move illegal. So the question is never "how big was the * release" — v0.8.0 is a large one — but "did any predicate change its answer". * * Measured with `git diff v0.7.9.8..v0.8.0.1 -- src/engine/`. The WHOLE engine diff is eight * lines: * four `GameEvent` types (`trayMoved`, `carsCoupled`, `carsDropped`, `consistSorted`) gained a * `player` field, and the four places that build them pass it. `check()` is untouched, `legal.ts` * and `advance.ts` are untouched, and no predicate anywhere was edited. Games in progress resume, * and the release notes say so in all five locales rather than leaving it to be discovered. * * EVENTS ARE NOT PERSISTED, so widening four of them cannot invalidate anything on disk: a * `SavedGame` is `{ seed, config, history: Intent[], … }` and the events are derived by replaying * it. The narration TEXT of two lines changed with them ("Moved Train 3 …" where it used to read * "CREW moved …"), which a resumed game simply regenerates — the log is not stored either. * * WHAT IS NOT COVERED BY THAT ARGUMENT, and why it still does not need a migration: the wire * between this server and a browser gained a lot. `Push` now carries ordered presentation steps * and a public-board baseline, and the board deltas changed shape. None of it is on disk, and a * browser reloads onto the new page as part of the update, so there is no version skew to * migrate — the same reasoning v0.7.9.8 used for its own `Frame` changes. * * v0.8.0.1 ADDS NOTHING TO THIS ARGUMENT: `git diff v0.8.0..v0.8.0.1 -- src/engine/` is empty. * It changes `sim/pacing.ts`, `web/step-queue.ts` and `web/main.ts` — how long a step is shown and * when the queue calls itself idle — which is presentation and touches neither the rules nor * anything on disk. * * THE ONE THING THAT WOULD HAVE NEEDED CARE, had it been built the way the plan first described: * the display-step collector runs inside `submit()`, and the resume path (`fromMultiplayerSave`) * deliberately does not go through `submit()`. So replaying a saved game emits no steps and burns * no sequence numbers. A test in the game pins that, because it is a property rather than an * accident. */ up: async ({ effects }) => {}, down: IMPOSSIBLE, }, })