From 590ff5fa0b2a1771c4c4f15ebd835145e652ff30 Mon Sep 17 00:00:00 2001 From: Jesse Date: Sat, 29 Aug 2026 21:52:56 -0400 Subject: [PATCH] =?UTF-8?q?0.7.6:0=20=E2=80=94=20bundle=20Station=20Master?= =?UTF-8?q?=20v0.7.6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Submodule pinned to v0.7.6 (b4f09f0). current.ts bumped in place at 0.7.6:0 — no new version file, no migration: fixes a client-side routing bug in the solitaire door that v0.7.5 introduced (a browser that had ever held a multiplayer seat could not reach the new setup screen at all), so every game in progress carries over without exception. Verified: npm run check clean, prettier clean, make x86 packs as v0.7.6:0, installed on phoenix.local — logs show the empty migration running and both games in progress (WHISTLE-4086, COAL-7370) resuming with their same intent counts, and the served index.html confirmed to link the solitaire door to ./play.html?solitaire. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01AdG46Ja2PEDBkpqiDazMoX --- README.md | 14 +++++-- instructions.md | 5 +++ startos/versions/current.ts | 84 +++++++++++++++++-------------------- station-master | 2 +- 4 files changed, 55 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index cf4eacb..9b52b06 100644 --- a/README.md +++ b/README.md @@ -13,10 +13,16 @@ 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.7.5.** A client-side flow change: a genuinely fresh visit to the solitaire page -now opens a setup screen and asks for the game's options before dealing, the same question the -multiplayer lobby has asked before a game starts since 0.6.0. No rule the server enforces changed, -so this update carries every game in progress, on the server and in a browser, without exception. +**Bundled version: 0.7.6.** Fixes the solitaire door 0.7.5 introduced: a browser that had ever held a +multiplayer seat could not reach the new setup screen at all — a bare page load could not tell +"clicked Play solitaire" apart from "reloaded mid multiplayer game", so the door lost to whatever +game or lobby that browser last touched. The door now marks its intent explicitly (`?solitaire`), the +same fix `?lobby` already carries for the door on the other side. Client-side only; every game in +progress carries over. + +**0.7.5 was a client-side flow change**: a genuinely fresh visit to the solitaire page opens a setup +screen and asks for the game's options before dealing, the same question the multiplayer lobby has +asked before a game starts since 0.6.0. **0.7.4 bundled three rules corrections** off the tracker (Gitea#13, #5, #19), all of them places where the code and the cards disagreed. diff --git a/instructions.md b/instructions.md index 62185ba..fcc01d5 100644 --- a/instructions.md +++ b/instructions.md @@ -35,6 +35,11 @@ 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.7.6.** The **Play solitaire** door on the front page now reliably reaches +solitaire. If this browser had ever taken a seat at a multiplayer table, the door used to lose to +that game or lobby instead — a plain page load couldn't tell "I clicked Play solitaire" apart from +"I reloaded mid multiplayer game". Fixed; nothing else changed. + **What changed in 0.7.5.** Solitaire now asks before it deals. A genuinely fresh visit to the solitaire page opens a setup screen with the full set of options — game type, starting hand, where an Extra may start, the revenue rates, victory conditions, and the optional rules — the same diff --git a/startos/versions/current.ts b/startos/versions/current.ts index d3edb2c..d31f074 100644 --- a/startos/versions/current.ts +++ b/startos/versions/current.ts @@ -5,60 +5,54 @@ export const current = VersionInfo.of({ // (`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. - version: '0.7.5:0', + version: '0.7.6:0', releaseNotes: { en_US: - 'Bundles Station Master v0.7.5 \u2014 solitaire asks before it deals. A first visit to the solitaire ' + - 'page now opens a setup screen with the full set of options \u2014 game type, starting hand, where an ' + - 'Extra may start, the revenue rates, victory conditions, and the optional rules \u2014 the same question ' + - "the multiplayer lobby already asks before a game starts. Press Deal when you're ready. A saved game, " + - 'a shared link carrying a seed, or a setup screen already answered all skip straight past it. Nothing ' + - 'about the rules changed, so games in progress and saved games are unaffected by this update.', + 'Bundles Station Master v0.7.6 \u2014 fixes the solitaire door introduced in v0.7.5. A browser that ' + + "had ever held a multiplayer seat could not reach solitaire's new setup screen at all: a bare " + + 'page load could not tell "clicked Play solitaire" apart from "reloaded mid multiplayer game", ' + + 'so the door lost to whatever game or lobby this browser last touched. The door now marks its ' + + 'intent explicitly, so it reaches solitaire every time. No rules changed, so games in progress ' + + 'are unaffected.', es_ES: - 'Incluye Station Master v0.7.5: la partida en solitario pregunta antes de repartir. La primera visita a ' + - 'la p\u00e1gina de solitario abre ahora una pantalla de configuraci\u00f3n con todas las opciones \u2014 tipo de ' + - 'partida, mano inicial, d\u00f3nde puede empezar un tren Extra, las tarifas de ingresos, las condiciones de ' + - 'victoria y las reglas opcionales \u2014 la misma pregunta que el lobby multijugador ya hace antes de que ' + - 'empiece una partida. Pulsa Repartir cuando est\u00e9s listo. Una partida guardada, un enlace compartido ' + - 'con una semilla, o una pantalla de configuraci\u00f3n ya respondida, la omiten directamente. Las reglas ' + - 'no han cambiado, as\u00ed que las partidas en curso y las guardadas no se ven afectadas por esta ' + - 'actualizaci\u00f3n.', + 'Incluye Station Master v0.7.6: corrige la puerta de solitario introducida en v0.7.5. Un ' + + 'navegador que alguna vez ocup\u00f3 un asiento multijugador no pod\u00eda llegar en absoluto a la nueva ' + + 'pantalla de configuraci\u00f3n del solitario: una carga de p\u00e1gina simple no distingu\u00eda "puls\u00e9 Jugar ' + + 'en solitario" de "recargu\u00e9 en medio de una partida multijugador", as\u00ed que la puerta perd\u00eda ' + + 'frente a cualquier partida o sala de espera que ese navegador hubiera tocado por \u00faltima vez. La ' + + 'puerta ahora marca su intenci\u00f3n expl\u00edcitamente, as\u00ed que llega al solitario siempre. Las reglas ' + + 'no han cambiado, as\u00ed que las partidas en curso no se ven afectadas.', de_DE: - 'Enth\u00e4lt Station Master v0.7.5 \u2014 Solospiele fragen jetzt vor dem Austeilen. Ein erster Besuch der ' + - 'Solo-Seite \u00f6ffnet jetzt einen Einrichtungsbildschirm mit allen Optionen \u2014 Spieltyp, Starthand, wo ' + - 'ein Extrazug beginnen darf, die Erl\u00f6ss\u00e4tze, die Siegbedingungen und die optionalen Regeln \u2014 ' + - 'dieselbe Frage, die die Mehrspieler-Lobby schon vor Spielbeginn stellt. Dr\u00fccke Austeilen, wenn du ' + - 'bereit bist. Ein gespeichertes Spiel, ein geteilter Link mit einem Seed oder ein bereits beantworteter ' + - 'Einrichtungsbildschirm \u00fcberspringen ihn direkt. An den Regeln hat sich nichts ge\u00e4ndert, laufende ' + - 'und gespeicherte Spiele sind von diesem Update nicht betroffen.', + 'Enth\u00e4lt Station Master v0.7.6 \u2014 behebt die in v0.7.5 eingef\u00fchrte Solo-T\u00fcr. Ein Browser, der ' + + 'jemals einen Mehrspieler-Platz innehatte, konnte den neuen Solo-Einrichtungsbildschirm ' + + '\u00fcberhaupt nicht erreichen: ein einfacher Seitenaufruf konnte "Solo spielen angeklickt" nicht ' + + 'von "mitten im Mehrspieler-Spiel neu geladen" unterscheiden, sodass die T\u00fcr gegen jedes Spiel ' + + 'oder jede Lobby verlor, die dieser Browser zuletzt ber\u00fchrt hatte. Die T\u00fcr markiert ihre Absicht ' + + 'jetzt ausdr\u00fccklich und erreicht damit immer den Solo-Modus. An den Regeln hat sich nichts ' + + 'ge\u00e4ndert, laufende Spiele sind nicht betroffen.', pl_PL: - 'Zawiera Station Master v0.7.5 \u2014 gra solo pyta, zanim rozda karty. Pierwsza wizyta na stronie gry ' + - 'solo otwiera teraz ekran ustawie\u0144 z pe\u0142nym zestawem opcji \u2014 typ gry, pocz\u0105tkowa r\u0119ka, gdzie ' + - 'mo\u017ce zacz\u0105\u0107 poci\u0105g dodatkowy, stawki przychod\u00f3w, warunki zwyci\u0119stwa i zasady opcjonalne ' + - '\u2014 to samo pytanie, kt\u00f3re lobby gry wieloosobowej zadaje ju\u017c przed rozpocz\u0119ciem gry. Naci\u015bnij ' + - 'Rozdaj, gdy b\u0119dziesz gotowy. Zapisana gra, udost\u0119pniony link z ziarnem (seed) lub ju\u017c wype\u0142niony ' + - 'ekran ustawie\u0144 pomijaj\u0105 go od razu. Zasady si\u0119 nie zmieni\u0142y, wi\u0119c gry w toku i zapisane gry ' + - 'nie s\u0105 dotkni\u0119te t\u0105 aktualizacj\u0105.', + 'Zawiera Station Master v0.7.6 \u2014 naprawia drzwi do gry solo wprowadzone w v0.7.5. Przegl\u0105darka, ' + + 'kt\u00f3ra kiedykolwiek zajmowa\u0142a miejsce w grze wieloosobowej, w og\u00f3le nie mog\u0142a dotrze\u0107 do nowego ' + + 'ekranu ustawie\u0144 gry solo: zwyk\u0142e wczytanie strony nie odr\u00f3\u017cnia\u0142o "klikni\u0119to Zagraj solo" od ' + + '"prze\u0142adowano w trakcie gry wieloosobowej", wi\u0119c drzwi przegrywa\u0142y z dowoln\u0105 gr\u0105 lub ' + + 'poczekalni\u0105, kt\u00f3rej ta przegl\u0105darka ostatnio dotkn\u0119\u0142a. Drzwi teraz jawnie oznaczaj\u0105 sw\u00f3j ' + + 'zamiar, wi\u0119c zawsze prowadz\u0105 do gry solo. Zasady si\u0119 nie zmieni\u0142y, wi\u0119c gry w toku nie s\u0105 ' + + 'dotkni\u0119te.', fr_FR: - 'Inclut Station Master v0.7.5 \u2014 la partie solo demande maintenant avant de distribuer. Une premi\u00e8re ' + - 'visite de la page solo ouvre d\u00e9sormais un \u00e9cran de configuration avec toutes les options \u2014 type ' + - 'de partie, main de d\u00e9part, o\u00f9 un train suppl\u00e9mentaire peut d\u00e9marrer, les taux de revenu, les ' + - 'conditions de victoire et les r\u00e8gles optionnelles \u2014 la m\u00eame question que le lobby multijoueur ' + - "pose d\u00e9j\u00e0 avant le d\u00e9but d'une partie. Appuyez sur Distribuer quand vous \u00eates pr\u00eat. Une partie " + - 'sauvegard\u00e9e, un lien partag\u00e9 contenant une graine, ou un \u00e9cran de configuration d\u00e9j\u00e0 rempli, ' + - "passent directement outre. Les r\u00e8gles n'ont pas chang\u00e9, les parties en cours et sauvegard\u00e9es ne " + - 'sont donc pas affect\u00e9es par cette mise \u00e0 jour.', + 'Inclut Station Master v0.7.6 \u2014 corrige la porte solo introduite dans la v0.7.5. Un navigateur ' + + 'ayant d\u00e9j\u00e0 occup\u00e9 un si\u00e8ge en multijoueur ne pouvait pas du tout atteindre le nouvel \u00e9cran de ' + + 'configuration du solo : un simple chargement de page ne distinguait pas \u00ab a cliqu\u00e9 sur Jouer en ' + + 'solo \u00bb de \u00ab a recharg\u00e9 en pleine partie multijoueur \u00bb, si bien que la porte perdait face \u00e0 la ' + + "derni\u00e8re partie ou salle d'attente que ce navigateur avait touch\u00e9e. La porte marque d\u00e9sormais " + + "son intention explicitement, elle atteint donc toujours le solo. Les r\u00e8gles n'ont pas chang\u00e9, " + + 'les parties en cours ne sont donc pas affect\u00e9es.', }, migrations: { /** - * NOTHING TO CARRY, AND NOTHING FOR ANY SAVE TO TRIP OVER EITHER. - * - * v0.7.5 is a client-side flow change — a setup screen asked before a genuinely fresh solitaire - * visit deals, matching what the multiplayer lobby already asks before a game starts. It touches - * no rule the engine enforces and no shape a save or a game record is written in, unlike v0.7.4's - * three rules corrections (see that entry's history for what THAT migration had to reason about). - * A game already in progress, on either the multiplayer server or in a player's browser, resumes - * exactly as it would have on v0.7.4. + * STILL NOTHING TO CARRY. v0.7.6 fixes a routing bug in the solitaire door that v0.7.5 + * introduced (a browser remembering a multiplayer seat could not reach the setup screen at + * all) — client-side only, no rule the engine enforces and no save-format change. A game in + * progress, on the server or in a browser, resumes exactly as it would have on v0.7.5. */ up: async ({ effects }) => {}, down: IMPOSSIBLE, diff --git a/station-master b/station-master index 3e96149..b4f09f0 160000 --- a/station-master +++ b/station-master @@ -1 +1 @@ -Subproject commit 3e961496b02e8b1cc83b7318862cdbf9a55ebc00 +Subproject commit b4f09f05cbf24bef1b416625b421bf5ba37bf83b