v0.7.8 — the setup screen was unreachable for anyone who had ever played
Third report of the same symptom, this time with the build confirmed current on screen, which ruled out v0.7.7's caching fault and left the real cause exposed. v0.7.5 skipped the setup screen whenever load() found a save, reasoned as "a saved game is a game to resume". A browser that has ever played solitaire always has one, so the door could never reach the screen again — and the fresh private window that appeared to vindicate v0.7.7 simply had no save. Two real faults were stacked; the caching one is fixed and had been masking this. The door outranks a saved game now: ?solitaire is a request to set one up, while a bare reload still resumes (pinned by its own test). Since Deal clears the save, the screen carries #ss-resume and says what Deal costs, so the door cannot destroy a game in progress. Also, per Jesse, riding along rather than taking its own release: the splash footer now names both ways to play. 868 tests pass, four new. The reproduction was a failing test written before the fix. 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
af68aac78d
commit
193800a649
@@ -19,6 +19,47 @@ page as `v0.1.0 · <sha> · <date>`, so what is deployed can always be identifie
|
||||
|
||||
---
|
||||
|
||||
## 0.7.8 — 2026-08-30
|
||||
|
||||
### The setup screen was unreachable for anyone who had ever played
|
||||
|
||||
Third report of the same symptom, and this time the build was confirmed current on screen
|
||||
(`0.7.7-mtf7hyxc`), which ruled out the caching fault v0.7.7 had just fixed and left the actual
|
||||
cause with nowhere to hide.
|
||||
|
||||
**v0.7.5 skipped the setup screen whenever `load()` found a save**, reasoned in its own comment as
|
||||
"a saved game is a game to resume". The consequence went unnoticed: a browser that has ever played
|
||||
solitaire *always* has a save, so the door could never reach the screen again. Only a browser that
|
||||
had never played would see it — which is exactly why a fresh private window appeared to prove
|
||||
v0.7.7's cache fix. The private window had no save. Two genuine faults were stacked, the caching one
|
||||
was real and is fixed, and it masked this one.
|
||||
|
||||
**The door now outranks a saved game.** `?solitaire` is an explicit request to set a game up;
|
||||
clicking "Play solitaire" is not a request to resume. A BARE reload still resumes, which is the
|
||||
zero-friction case D11 is about and is pinned by its own test.
|
||||
|
||||
**Dealing from the door would have destroyed a game in progress**, since `commitNewGame` calls
|
||||
`clearSave()` — so the screen now carries `#ss-resume` ("Continue saved game") and states plainly
|
||||
that dealing replaces the save. Resuming navigates to the bare URL rather than building a session
|
||||
on the spot, so `start()` stays the only place that turns a URL into a game.
|
||||
|
||||
**Recorded because the failure was diagnostic, not technical.** The first two attempts each fixed
|
||||
something real that was not this, and both were reported as verified. The routing fix in v0.7.6 was
|
||||
verified by reading what the server served; v0.7.7's by the same. Neither ever exercised the actual
|
||||
path with the actual state a returning player has. The reproduction here is a failing test asserting
|
||||
the door with a save present — written before the fix, and it failed with "a saved game swallowed
|
||||
the door".
|
||||
|
||||
### The splash footer names both ways to play
|
||||
|
||||
Was "solitaire runs entirely in your browser — no server code required", written when solitaire was
|
||||
the only door. Now: "Multiplayer runs on StartOS server. Solitaire runs entirely in your browser."
|
||||
(Jesse, 2026-08-30, asked to ride along with the next change rather than take a release of its own.)
|
||||
|
||||
868 tests pass, four of them new.
|
||||
|
||||
---
|
||||
|
||||
## 0.7.7 — 2026-08-30
|
||||
|
||||
### Two releases shipped to a browser that never received them
|
||||
|
||||
Reference in New Issue
Block a user