diff --git a/CHANGELOG.md b/CHANGELOG.md index a0c3cd8..47e90c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -218,6 +218,23 @@ the state the outcome was decided in — and stripped of markup, since it lands console line. The drift test that compared this string against the engine now maps `win`/`loss` to `won`/`lost`, so it still checks the two agree rather than that they are spelled alike. +### The save warning, the buttons, and a claim that was simply false + +Three more from Jesse reading the two screens side by side. + +- **The save warning is a warning.** "That's a warning, not an 'oh by the way'." It had already moved + off `.ng-note` earlier in this release; it is larger and heavier again now — 15px, weight 500, + bright amber on a deeper ground with a 5px rule down the side. Worth noting what he was actually + looking at: `phoenix.local` runs v0.7.8, where this line is still the small grey `.ng-note`. None + of this release has been deployed. +- **The buttons read the same on both screens**: **Continue saved game** and **Create new game**. + Solitaire said "Continue Existing Saved Game" and "Deal New Game"; the lobby said "Create game". + Three phrasings for two actions. +- **"Off in every game type" is deleted from the Optional rules note, because it was not true.** + Checked against the presets rather than taken on trust: `discardTimetabled` — §6.2's "a Timetabled + train may be discarded" — ships **on** in all four types, not just Co-op. The note now says only + what is true of all of them: "Each one changes how the game plays." + ### Three wording and layout fixes - **The collision entries** on all three screens now read "The game ends immediately and results in diff --git a/src/web/main.ts b/src/web/main.ts index 66a0234..f0aef78 100644 --- a/src/web/main.ts +++ b/src/web/main.ts @@ -2152,14 +2152,14 @@ function commitNewGame(wired: WiredGameType, seedFieldValue: string): void { * to the screen that already asks these questions properly. * * Nothing is lost on the way: `render()` calls `save()` every frame, so the game in progress is - * always on disk, and the setup screen offers "Continue Existing Saved Game" to come back to it. + * always on disk, and the setup screen offers "Continue saved game" to come back to it. */ const newBtn = document.getElementById('newgame'); if (newBtn) { newBtn.onclick = () => { showScreen('solitairesetup'); // IN PLACE, not a navigation: the live session stays in memory, so the fields can open on the - // rules actually being played and "Continue Existing Saved Game" is just showing the board + // rules actually being played and "Continue saved game" is just showing the board // again rather than a reload and a replay. runSolitaireSetup(new URLSearchParams(), true, session.view()); }; diff --git a/src/web/play.html b/src/web/play.html index d4281e2..a18cd7a 100644 --- a/src/web/play.html +++ b/src/web/play.html @@ -81,9 +81,11 @@ dialog input:focus{outline:none;border-color:#4d6fa8} where the eye has already learned there is nothing to act on. Sized and coloured to be read (Jesse, 2026-08-30). Amber rather than red: losing a saved game is a real cost, not a danger, and red here would outrank the actual rules of the game sitting above it. */ -#ss-saved-note{font-size:14px;line-height:1.5;color:#f0c674;background:#2e2718; - border:1px solid #7a6320;border-left-width:4px;border-radius:5px;padding:10px 12px;margin:16px 0 0} -/* Two live choices, so neither is the quiet one: `Deal New Game` keeps the primary blue it has when +#ss-saved-note{font-size:15px;font-weight:500;line-height:1.55;color:#ffcf70;background:#332a15; + border:1px solid #b8912c;border-left:5px solid #e0a83c;border-radius:5px;padding:12px 14px; + margin:18px 0 0} +#ss-saved-note b{color:#ffe3a6} +/* Two live choices, so neither is the quiet one: `Create new game` keeps the primary blue it has when it is the only button, and `Continue` is given the same weight rather than reading as a cancel. */ #ss-deal{background:#31527f;border-color:#4d6fa8} #ss-resume{background:#2f5340;border-color:#4f8a68} @@ -534,7 +536,7 @@ ul.blocked li{padding:2px 0}

Optional rules

-

Off in every game type; each one changes how the game plays.

+

Each one changes how the game plays.

@@ -761,7 +763,7 @@ ul.blocked li{padding:2px 0}

Optional rules

-

Off in every game type; each one changes how the game plays.

+

Each one changes how the game plays.

@@ -928,7 +930,7 @@ ul.blocked li{padding:2px 0} Deleting it removes the drift rather than re-wording it. Nothing is lost by navigating away mid-game: `render()` calls `save()` on every frame, so the - game in progress is always on disk, and the setup screen offers "Continue Existing Saved Game" + game in progress is always on disk, and the setup screen offers "Continue saved game" to come straight back to it. -->