diff --git a/startos/versions/current.ts b/startos/versions/current.ts index 94664ed..4fcd7d0 100644 --- a/startos/versions/current.ts +++ b/startos/versions/current.ts @@ -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.1:0', + version: '0.8.0.2:0', releaseNotes: { en_US: - 'Bundles Station Master v0.8.0.1 — you can watch the other players now. GAMES IN PROGRESS ON ' + + 'Bundles Station Master v0.8.0.2 — 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 ' + @@ -32,9 +32,15 @@ export const current = VersionInfo.of({ '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.', + 'does. **Playback speed is a control on the play screen now**, next to the zoom: press − to ' + + 'watch other players more slowly, all the way to a full minute for one switching turn, or turn ' + + 'it off to have every move drawn at once. It was previously only settable through the address ' + + 'bar, which did not survive arriving from the front page — so it never took effect for anyone ' + + 'who reached the game the ordinary way. Also fixed: the end-of-Day summary reported "0 today" ' + + 'beside a running collision total that disagreed with it, because the Day had already ticked ' + + 'over by the time you read it. It names the Day instead — "2 on Day 1, 2 in all".', es_ES: - 'Incluye Station Master v0.8.0.1 — ahora puedes ver jugar a los demás. LAS PARTIDAS EN CURSO EN ' + + 'Incluye Station Master v0.8.0.2 — 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 ' + @@ -54,9 +60,15 @@ export const current = VersionInfo.of({ '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.', + 'que hace. **La velocidad de reproducción es ahora un control en la pantalla de juego**, junto ' + + 'al zoom: pulsa − para ver a los demás más despacio, hasta un minuto entero para una maniobra, ' + + 'o desactívala para que cada movimiento se dibuje de golpe. Antes solo se podía ajustar desde ' + + 'la barra de direcciones, y eso no sobrevivía al entrar desde la página inicial, así que nunca ' + + 'surtía efecto para quien llegaba al juego por el camino normal. También corregido: el resumen ' + + 'de fin de Día decía «0 hoy» junto a un total de colisiones que lo contradecía, porque el Día ' + + 'ya había cambiado cuando lo leías. Ahora nombra el Día: «2 en el Día 1, 2 en total».', de_DE: - 'Enthält Station Master v0.8.0.1 — Sie können den anderen jetzt beim Spielen zusehen. LAUFENDE ' + + 'Enthält Station Master v0.8.0.2 — 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 ' + @@ -77,9 +89,16 @@ export const current = VersionInfo.of({ '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.', + 'was er vorhat, und hält bei jedem Schritt kurz inne. **Die Wiedergabegeschwindigkeit ist jetzt ' + + 'ein Bedienelement im Spielbildschirm**, neben dem Zoom: mit − sehen Sie den anderen langsamer ' + + 'zu, bis zu einer ganzen Minute für einen Rangiervorgang, oder Sie schalten sie aus, damit jeder ' + + 'Zug auf einmal gezeichnet wird. Bisher war sie nur über die Adresszeile einstellbar, was den ' + + 'Weg über die Startseite nicht überlebte — für jeden, der das Spiel auf dem normalen Weg ' + + 'erreichte, wirkte sie also nie. Ebenfalls behoben: die Tagesabschluss-Übersicht meldete „0 ' + + 'heute" neben einer Kollisionssumme, die dem widersprach, weil der Tag beim Lesen schon ' + + 'umgeschlagen war. Sie nennt jetzt den Tag: „2 an Tag 1, 2 insgesamt".', pl_PL: - 'Zawiera Station Master v0.8.0.1 — teraz możesz obserwować grę pozostałych. TRWAJĄCE PARTIE NA ' + + 'Zawiera Station Master v0.8.0.2 — 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 ' + @@ -98,9 +117,15 @@ export const current = VersionInfo.of({ '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.', + 'zrobić, i zatrzymuje się na chwilę przy każdej czynności. **Szybkość odtwarzania jest teraz ' + + 'sterowana na ekranie gry**, obok powiększenia: naciśnij −, aby obserwować pozostałych wolniej, ' + + 'aż do całej minuty na jeden manewr, albo wyłącz ją, by każdy ruch był rysowany od razu. ' + + 'Wcześniej dawała się ustawić tylko z paska adresu, co nie przetrwało wejścia ze strony ' + + 'startowej — więc dla każdego, kto trafiał do gry zwykłą drogą, nigdy nie działała. Poprawiono ' + + 'także: podsumowanie końca Dnia pokazywało „0 dzisiaj" obok sumy kolizji, która temu przeczyła, ' + + 'bo Dzień już się przewinął, gdy je czytałeś. Teraz nazywa Dzień: „2 w Dniu 1, 2 łącznie".', fr_FR: - 'Contient Station Master v0.8.0.1 — vous pouvez maintenant regarder jouer les autres. LES ' + + 'Contient Station Master v0.8.0.2 — 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 ' + @@ -121,7 +146,15 @@ export const current = VersionInfo.of({ '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.', + 'bot annonce désormais ce qu’il va faire et marque un temps sur chacune de ses actions. **La ' + + 'vitesse de relecture est maintenant un réglage sur l’écran de jeu**, à côté du zoom : appuyez ' + + 'sur − pour regarder les autres plus lentement, jusqu’à une minute entière pour une manœuvre, ' + + 'ou désactivez-la pour que chaque coup soit dessiné d’un coup. Elle ne se réglait auparavant ' + + 'que depuis la barre d’adresse, ce qui ne survivait pas à l’arrivée depuis la page d’accueil — ' + + 'elle n’a donc jamais pris effet pour quiconque atteignait le jeu par le chemin normal. Corrigé ' + + 'aussi : le récapitulatif de fin de Journée affichait « 0 aujourd’hui » à côté d’un total de ' + + 'collisions qui le contredisait, la Journée ayant déjà tourné au moment de la lecture. Il nomme ' + + 'la Journée : « 2 le Jour 1, 2 en tout ».', }, migrations: { /** @@ -150,11 +183,23 @@ export const current = VersionInfo.of({ * 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 + * v0.8.0.1 ADDED NOTHING TO THIS ARGUMENT: `git diff v0.8.0..v0.8.0.1 -- src/engine/` is empty. + * It changed `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. * + * v0.8.0.2 DOES TOUCH THE ENGINE, and it is worth being exact about why that is still nothing to + * migrate. `git diff v0.8.0.1..v0.8.0.2 -- src/engine/` is three added lines: `collisionsPrevDay` + * declared on `GameState`, initialised to 0 in `setup.ts`, and assigned at the Day rollover in + * `advance.ts`. It is a counter that nothing checks — no predicate reads it, so no once-legal move + * became illegal. + * + * 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`. + * Resuming calls `createGame` — which fills the new field from `setup.ts` — and then replays the + * intents through the current rules, so the field is populated on the way past. There is no old + * shape on disk for a new field to be missing from. + * * 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 diff --git a/station-master b/station-master index 0cfeb4c..c10f527 160000 --- a/station-master +++ b/station-master @@ -1 +1 @@ -Subproject commit 0cfeb4c496147afce73115d4c3ea3461dc96b9f4 +Subproject commit c10f52791e6964f5dcaa01dc0c7958e76ed2356c