The save warning, the buttons, and a claim that was simply false
- The save warning is a warning: 15px, weight 500, bright amber on a deeper ground with a 5px rule down the side. (What Jesse was looking at is v0.7.8, where this line is still the small grey .ng-note — none of 0.7.9 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, a Timetabled train may be discarded) ships ON in all four types, not just Co-op. The note now says only what holds for all of them. Stays in the unshipped v0.7.9. 877 tests pass. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AdG46Ja2PEDBkpqiDazMoX
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
a70b7f88f3
commit
788e5f2eec
@@ -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
|
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.
|
`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
|
### Three wording and layout fixes
|
||||||
|
|
||||||
- **The collision entries** on all three screens now read "The game ends immediately and results in
|
- **The collision entries** on all three screens now read "The game ends immediately and results in
|
||||||
|
|||||||
+2
-2
@@ -2152,14 +2152,14 @@ function commitNewGame(wired: WiredGameType, seedFieldValue: string): void {
|
|||||||
* to the screen that already asks these questions properly.
|
* 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
|
* 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');
|
const newBtn = document.getElementById('newgame');
|
||||||
if (newBtn) {
|
if (newBtn) {
|
||||||
newBtn.onclick = () => {
|
newBtn.onclick = () => {
|
||||||
showScreen('solitairesetup');
|
showScreen('solitairesetup');
|
||||||
// IN PLACE, not a navigation: the live session stays in memory, so the fields can open on the
|
// 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.
|
// again rather than a reload and a replay.
|
||||||
runSolitaireSetup(new URLSearchParams(), true, session.view());
|
runSolitaireSetup(new URLSearchParams(), true, session.view());
|
||||||
};
|
};
|
||||||
|
|||||||
+14
-12
@@ -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
|
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
|
(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. */
|
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;
|
#ss-saved-note{font-size:15px;font-weight:500;line-height:1.55;color:#ffcf70;background:#332a15;
|
||||||
border:1px solid #7a6320;border-left-width:4px;border-radius:5px;padding:10px 12px;margin:16px 0 0}
|
border:1px solid #b8912c;border-left:5px solid #e0a83c;border-radius:5px;padding:12px 14px;
|
||||||
/* Two live choices, so neither is the quiet one: `Deal New Game` keeps the primary blue it has when
|
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. */
|
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-deal{background:#31527f;border-color:#4d6fa8}
|
||||||
#ss-resume{background:#2f5340;border-color:#4f8a68}
|
#ss-resume{background:#2f5340;border-color:#4f8a68}
|
||||||
@@ -534,7 +536,7 @@ ul.blocked li{padding:2px 0}
|
|||||||
|
|
||||||
<div class="set-group">
|
<div class="set-group">
|
||||||
<h3>Optional rules</h3>
|
<h3>Optional rules</h3>
|
||||||
<p class="ng-note">Off in every game type; each one changes how the game plays.</p>
|
<p class="ng-note">Each one changes how the game plays.</p>
|
||||||
<div class="set-row" id="lb-visibility-row">
|
<div class="set-row" id="lb-visibility-row">
|
||||||
<label class="ng-num"><span>Reduced Visibility — five switching Moves instead of six in the
|
<label class="ng-num"><span>Reduced Visibility — five switching Moves instead of six in the
|
||||||
night Stages (1–3 and 11–12)</span>
|
night Stages (1–3 and 11–12)</span>
|
||||||
@@ -567,7 +569,7 @@ ul.blocked li{padding:2px 0}
|
|||||||
</details>
|
</details>
|
||||||
|
|
||||||
<div class="lb-span">
|
<div class="lb-span">
|
||||||
<button id="lb-create" type="button">Create game</button>
|
<button id="lb-create" type="button">Create new game</button>
|
||||||
<p class="lb-error" id="lb-create-err" role="alert"></p>
|
<p class="lb-error" id="lb-create-err" role="alert"></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -761,7 +763,7 @@ ul.blocked li{padding:2px 0}
|
|||||||
|
|
||||||
<div class="set-group">
|
<div class="set-group">
|
||||||
<h3>Optional rules</h3>
|
<h3>Optional rules</h3>
|
||||||
<p class="ng-note">Off in every game type; each one changes how the game plays.</p>
|
<p class="ng-note">Each one changes how the game plays.</p>
|
||||||
<div class="set-row" id="ss-visibility-row">
|
<div class="set-row" id="ss-visibility-row">
|
||||||
<label class="ng-num"><span>Reduced Visibility — five switching Moves instead of six in the
|
<label class="ng-num"><span>Reduced Visibility — five switching Moves instead of six in the
|
||||||
night Stages (1–3 and 11–12)</span>
|
night Stages (1–3 and 11–12)</span>
|
||||||
@@ -795,13 +797,13 @@ ul.blocked li{padding:2px 0}
|
|||||||
save (`commitNewGame` calls `clearSave`), so without a way back the door would be a way to
|
save (`commitNewGame` calls `clearSave`), so without a way back the door would be a way to
|
||||||
lose a game in progress — and the door is reached by clicking "Play solitaire", which nobody
|
lose a game in progress — and the door is reached by clicking "Play solitaire", which nobody
|
||||||
reads as "discard what I was playing". -->
|
reads as "discard what I was playing". -->
|
||||||
<p id="ss-saved-note" hidden><b>You have a solitaire game in progress.</b> Dealing a new game
|
<p id="ss-saved-note" hidden><b>You have a solitaire game in progress.</b> Creating a new game
|
||||||
replaces it permanently — there is no undo. Choose <b>Continue Existing Saved Game</b>
|
replaces it permanently — there is no undo. Choose <b>Continue saved game</b> to pick it
|
||||||
to pick it up where you left off.</p>
|
up where you left off.</p>
|
||||||
|
|
||||||
<menu class="ng-buttons">
|
<menu class="ng-buttons">
|
||||||
<button id="ss-resume" type="button" hidden>Continue Existing Saved Game</button>
|
<button id="ss-resume" type="button" hidden>Continue saved game</button>
|
||||||
<button id="ss-deal" type="button">Deal New Game</button>
|
<button id="ss-deal" type="button">Create new game</button>
|
||||||
</menu>
|
</menu>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
@@ -928,7 +930,7 @@ ul.blocked li{padding:2px 0}
|
|||||||
Deleting it removes the drift rather than re-wording it.
|
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
|
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. -->
|
to come straight back to it. -->
|
||||||
</div><!-- /gameui -->
|
</div><!-- /gameui -->
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user