From ea012f1329bb99e3066966b8f7414780bc821b53 Mon Sep 17 00:00:00 2001 From: Jesse Date: Fri, 21 Aug 2026 11:13:40 -0400 Subject: [PATCH] Bundle Station Master v0.5.2, and fix the package version scheme MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Submodule pin moves to v0.5.2, which carries the working splash-page multiplayer door and the GET /api/health probe behind it. The interface goes back to serving `/` — the splash, which is the front door to all three ways to play. It pointed at /play.html only because the splash's multiplayer door was hardcoded to "Coming soon", making the front page a dead end on a real server; v0.5.2 removes the reason for the workaround. The splash now probes /api/health on load, so served from here it opens the lobby and served as a plain static site it says plainly that it needs a server. The package version was wrong and is corrected: 1.0.0:0 -> 0.5.2:0. That 1.0.0 was the scaffold's placeholder, left in by mistake — versions.md's consistency checklist requires the upstream half to match the bundled tag, which is what makes "bump the pin, bump the version" one mechanical action rather than a judgement call. No historical version file is needed: the placeholder carried no migration and was never published anywhere. The correction is a downgrade in ExVer terms, so StartOS refused to install over the existing copy ("uninit target range `!` is unsatisfiable"). The installed package was therefore removed and reinstalled — checked first that the volume held only an auto-generated join secret and no games. Two consequences, both one-time and both recorded in UPDATING.md: the join secret is regenerated, and the host's public domain binding was dropped with the uninstall and has to be re-added. Verified on phoenix.local: builds as v0.5.2:0, installs, starts, and serves /api/health 200 with the right body; the splash carries all three doors including a live ./play.html?lobby, no "Coming soon" anywhere, all three ids the probe addresses present, and #lobby rendering on play.html?lobby. --- UPDATING.md | 14 ++++++++++---- instructions.md | 23 ++++++++++++++--------- startos/interfaces.ts | 12 ++++++------ startos/versions/current.ts | 15 +++++++++------ station-master | 2 +- 5 files changed, 40 insertions(+), 26 deletions(-) diff --git a/UPDATING.md b/UPDATING.md index 6320081..712d161 100644 --- a/UPDATING.md +++ b/UPDATING.md @@ -29,10 +29,16 @@ cd station-master && git fetch --tags && git checkout v cd .. && git add station-master ``` -Then bump this package's own version in `startos/versions/current.ts` (see -[Versions](../start-technologies/projects/start-sdk/docs/src/versions.md)) with release notes -naming the Station Master version now bundled — e.g. "Bundles Station Master v0.5.2." — and -rebuild (`make`). +Then set this package's version in `startos/versions/current.ts` to **the same number**, as +`:0` — `versions.md`'s consistency checklist requires the upstream half to match the +submodule tag exactly, so v0.5.3 becomes `0.5.3:0`. Give it release notes naming what changed for +a player, then rebuild (`make`). Raise the `:0` instead, leaving the upstream half alone, when the +change is packaging-only and the bundled game has not moved. + +> The initial release shipped as `1.0.0:0` — the scaffold's placeholder, left in by mistake while +> the game was at 0.5.1. It was corrected to `0.5.2:0` before the package was ever published +> anywhere, which is the only reason a downgrade was harmless: `0.5.2:0` sorts *below* `1.0.0:0`, +> so an installed copy had to be removed rather than updated over. If the jump carries a multiplayer protocol or persistence-format change (check the game repo's `CHANGELOG.md` and `docs/architecture/multiplayer.md`), read it before bumping: a running diff --git a/instructions.md b/instructions.md index 7bc7f72..282e88d 100644 --- a/instructions.md +++ b/instructions.md @@ -14,21 +14,26 @@ interface below; there is nothing else to install or configure on a player's sid ## Getting set up -1. Open this service's **Multiplayer Table** interface. -2. Run the **Get Join Secret** action from this service's Actions menu, and copy the value it +1. Run the **Get Join Secret** action from this service's Actions menu, and copy the value it returns. -3. Share that secret, and the address you opened the interface at, with everyone you want to - play with. Anyone holding the secret can create a new game or join one that hasn't started yet. -4. In the browser, click **Multiplayer**, then **Create Game** (or **Join Game** with a game code - someone else created), and enter the join secret when asked. +2. Share that secret, and this service's address, with everyone you want to play with. Anyone + holding the secret can create a new game or join one that hasn't started yet. +3. Open this service's **Multiplayer Table** interface. You'll land on the front page, which + offers three ways in: solitaire, the replay viewer, and multiplayer. +4. Click **Play multiplayer**, then **Create Game** (or **Join Game** with a game code someone + else created), and enter the join secret when asked. ## Using Station Master ### Multiplayer Table -Create or join a game, seat players (including filling empty seats with a bot), and start. Once a -game is underway, this same interface is where every player plays their turns and watches the -table — there is nothing else to open. +The front page offers solitaire, the replay viewer, and multiplayer. **Play multiplayer** takes you +to the lobby: create or join a game, seat players (including filling empty seats with a bot), and +start. Once a game is underway, this same interface is where every player plays their turns and +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. ### Get Join Secret diff --git a/startos/interfaces.ts b/startos/interfaces.ts index ac821d4..3d79ed8 100644 --- a/startos/interfaces.ts +++ b/startos/interfaces.ts @@ -18,12 +18,12 @@ export const setInterfaces = sdk.setupInterfaces(async ({ effects }) => { masked: false, schemeOverride: null, username: null, - // `/` serves index.html — the game's marketing splash, identical to the public static - // solitaire site and with no lobby or Multiplayer button on it (both live on play.html; see - // src/web/main.ts's `start()` and the door link in index.html). That page makes sense for a - // stranger landing on the public site, not for someone who just installed a dedicated - // multiplayer server — so this interface opens straight at the game screen instead. - path: '/play.html', + // The splash at `/`, which is the front door to all three ways to play: solitaire, the + // replay viewer, and multiplayer. Its multiplayer door probes `/api/health` on load, so + // served from here it opens the lobby, and served as a plain static site it says plainly + // that it needs a server. This briefly pointed at `/play.html` instead, back when that door + // was hardcoded to "Coming soon" and the splash was a dead end on a real server. + path: '', query: {}, }) diff --git a/startos/versions/current.ts b/startos/versions/current.ts index c1f06f8..f6deeb2 100644 --- a/startos/versions/current.ts +++ b/startos/versions/current.ts @@ -1,13 +1,16 @@ import { IMPOSSIBLE, VersionInfo } from '@start9labs/start-sdk' export const current = VersionInfo.of({ - version: '1.0.0:0', + // `:` — 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.2:0', releaseNotes: { - en_US: 'Initial StartOS package, bundling Station Master v0.5.1.', - es_ES: 'Paquete inicial para StartOS, con Station Master v0.5.1.', - de_DE: 'Erstes StartOS-Paket, mit Station Master v0.5.1.', - pl_PL: 'Pierwszy pakiet dla StartOS, zawiera Station Master v0.5.1.', - fr_FR: 'Premier paquet StartOS, avec Station Master v0.5.1.', + en_US: 'Bundles Station Master v0.5.2: the splash page opens the multiplayer lobby.', + es_ES: 'Incluye Station Master v0.5.2: la página de inicio abre la sala multijugador.', + de_DE: 'Enthält Station Master v0.5.2: Die Startseite öffnet die Mehrspieler-Lobby.', + pl_PL: 'Zawiera Station Master v0.5.2: strona powitalna otwiera poczekalnię trybu wieloosobowego.', + fr_FR: "Inclut Station Master v0.5.2 : la page d'accueil ouvre le salon multijoueur.", }, migrations: { up: async ({ effects }) => {}, diff --git a/station-master b/station-master index e76bd77..62b6ed7 160000 --- a/station-master +++ b/station-master @@ -1 +1 @@ -Subproject commit e76bd77099cf8427eb21b257daa5ca0329139c5f +Subproject commit 62b6ed7e1b81a4e5bb73c60e5314bd41e84d6ec9