Bundle Station Master v0.6.0: updates stop destroying games in progress
Pin moves to v0.6.0, package version to 0.6.0:0. README and instructions.md both promised the opposite of what now happens and had to be rewritten: an update keeps games in progress unless the rules actually changed, and a game that genuinely cannot replay is named in the log rather than described as a version mismatch. Verified on phoenix.local by doing the thing the release is about. A game (MAIL-4571) was created on the installed 0.5.6:0, then this build was installed over it. All four saved games on the volume came back: Resuming 4 saved game(s)… Resumed HOPPER-4607 — 37 intents replayed. (written under 0.5.2) Resumed TRESTLE-5109 — 5 intents replayed. (written under 0.5.3) Resumed TENDER-8092 — 38 intents replayed. (written under 0.5.5) Resumed MAIL-4571 — 0 intents replayed. (written under 0.5.6) The first three had been refused on every boot since the release that stranded them. They were never damaged, only unreachable, and replaying them is all it took to get them back — which is the clearest evidence that the version comparison was answering the wrong question. All four now show in Games in Progress with the correct Day, Stage and waiting-on player.
This commit is contained in:
@@ -96,12 +96,15 @@ and a critical task is raised pointing at **Get Join Secret** — the service st
|
||||
the moment the daemon is healthy, but a player cannot create or join a game until the join secret
|
||||
has been retrieved and shared with them.
|
||||
|
||||
**Updating the package ends every game in progress.** A save records the engine version that wrote
|
||||
it and the server refuses to resume one recorded under different rules, logging the refusal and
|
||||
leaving the file untouched. This is upstream's deliberate design, not something this package works
|
||||
around: a move that was legal under the old rules may not be under the new ones. Let games finish
|
||||
before updating, or accept losing them — rolling the package version back makes them loadable
|
||||
again, since nothing is deleted.
|
||||
**Updating the package keeps games in progress, unless the rules actually changed.** On boot the
|
||||
server replays each saved game's moves through the current engine and resumes it if they all still
|
||||
apply — the version that wrote the file is recorded and reported but decides nothing. When a move
|
||||
*is* rejected, that game is refused and the log names it: `move 3 of 8 (localOps.choose) is
|
||||
rejected by the current rules with OPTION_ALREADY_CHOSEN`. A refused game is never modified or
|
||||
deleted, so reinstalling the previous version makes it loadable again and it can be played out.
|
||||
|
||||
Earlier versions of this package compared version strings instead, which destroyed every game in
|
||||
progress on every update, including updates that changed only how the board is drawn.
|
||||
|
||||
## Actions
|
||||
|
||||
|
||||
+4
-5
@@ -60,8 +60,7 @@ a game that will never be finished — otherwise it sits there, and comes back e
|
||||
service restarts. It cannot be undone, so the game's save is handed back to you when it happens:
|
||||
that text is the only copy left, so keep it if the game was worth watching.
|
||||
|
||||
> One thing to know before you update this service: **games in progress do not survive an
|
||||
> update.** The rules can change between versions, so a half-played game recorded under the old
|
||||
> ones is refused rather than resumed under rules it was not played by. Nothing is deleted, and
|
||||
> going back to the previous version makes them playable again — but the safe habit is to finish
|
||||
> games before updating.
|
||||
> **Games in progress normally survive an update of this service.** When the update changes the
|
||||
> rules of the game itself, a half-played game cannot be resumed under rules it was not played by,
|
||||
> and that game is set aside rather than continued — you would see it disappear from the lobby.
|
||||
> Nothing is ever deleted, so going back to the previous version makes it playable again.
|
||||
|
||||
+16
-16
@@ -4,28 +4,28 @@ 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.
|
||||
version: '0.5.6:0',
|
||||
version: '0.6.0:0',
|
||||
releaseNotes: {
|
||||
en_US:
|
||||
'Bundles Station Master v0.5.6. Seats are numbered from 1 rather than 0 everywhere a person ' +
|
||||
"reads them, the current player's name on the Division map is legible again, and the " +
|
||||
'west-to-east seating line appears only while the game is opening.',
|
||||
'Bundles Station Master v0.6.0. Games in progress now survive an update of this service, so long ' +
|
||||
'as the rules did not change. The lobby lets the host set every game setting, and the Employee ' +
|
||||
'Rotation optional rule is playable.',
|
||||
es_ES:
|
||||
'Incluye Station Master v0.5.6. Los asientos se numeran desde 1 en lugar de 0 allí donde los ' +
|
||||
'lee una persona, el nombre del jugador en turno vuelve a ser legible en el mapa de la ' +
|
||||
'División, y la línea de asientos solo aparece al comenzar la partida.',
|
||||
'Incluye Station Master v0.6.0. Las partidas en curso sobreviven a una actualización de este ' +
|
||||
'servicio, siempre que las reglas no hayan cambiado. La sala permite al anfitrión ajustar todas ' +
|
||||
'las opciones, y la regla opcional de Rotación de Empleados ya se puede jugar.',
|
||||
de_DE:
|
||||
'Enthält Station Master v0.5.6. Plätze werden überall, wo ein Mensch sie liest, ab 1 statt ab 0 ' +
|
||||
'gezählt, der Name des Spielers am Zug ist auf der Divisionskarte wieder lesbar, und die ' +
|
||||
'Sitzreihenfolge erscheint nur noch zu Spielbeginn.',
|
||||
'Enthält Station Master v0.6.0. Laufende Spiele überstehen jetzt ein Update dieses Dienstes, ' +
|
||||
'sofern sich die Regeln nicht geändert haben. In der Lobby stellt der Gastgeber alle ' +
|
||||
'Spieloptionen ein, und die optionale Regel Employee Rotation ist spielbar.',
|
||||
pl_PL:
|
||||
'Zawiera Station Master v0.5.6. Miejsca są numerowane od 1 zamiast od 0 wszędzie tam, gdzie ' +
|
||||
'czyta je człowiek, nazwa gracza wykonującego ruch jest znów czytelna na mapie Dywizji, a ' +
|
||||
'linia kolejności miejsc pojawia się tylko na początku gry.',
|
||||
'Zawiera Station Master v0.6.0. Gry w toku przetrwają teraz aktualizację tej usługi, o ile ' +
|
||||
'zasady się nie zmieniły. W poczekalni gospodarz ustawia wszystkie opcje gry, a zasada ' +
|
||||
'opcjonalna Employee Rotation jest już grywalna.',
|
||||
fr_FR:
|
||||
'Inclut Station Master v0.5.6. Les places sont numérotées à partir de 1 plutôt que de 0 ' +
|
||||
'partout où une personne les lit, le nom du joueur dont c’est le tour est de nouveau lisible ' +
|
||||
'sur la carte de la Division, et la ligne des places n’apparaît qu’au début de la partie.',
|
||||
'Inclut Station Master v0.6.0. Les parties en cours survivent désormais à une mise à jour de ce ' +
|
||||
'service, tant que les règles n’ont pas changé. Le salon permet à l’hôte de régler toutes les ' +
|
||||
'options, et la règle optionnelle Employee Rotation est jouable.',
|
||||
},
|
||||
migrations: {
|
||||
up: async ({ effects }) => {},
|
||||
|
||||
+1
-1
Submodule station-master updated: 51710498f5...40f07b0710
Reference in New Issue
Block a user