One Page, Thirteen Games
The solitaire page I put on the blog in October only played Klondike. This round I turned it into one game with a mode menu. It now covers Klondike with Draw 1 or Draw 3, Spider with one, two or four suits, and several Spider relatives: Relaxed, Black Widow, Mrs. Mop, Spiderette, Will o' the Wisp, Simple Simon, Scorpion and Wasp.
The address didn't change, so bookmarks still work. The projects page description was updated to match.
Winnable, but Not Easy
The hard part was the deals. A random shuffle in Spider is often unwinnable, and an easy one isn't much of a challenge. So each mode draws from a pool built offline: a solver has to find a complete winning line for every deal before it can go in. Then bots that can't see face-down cards play each deal, and only the harder deals are kept.
The pools hold 103 to 120 deals per mode, 1,491 in total. The test suite replays every stored winning line under the game's real rules, and all 59 tests pass. The generator crashed once when a search grew past a JavaScript limit, so I capped the search size and resumed it from where it stopped.
What I Checked
I loaded the live page, picked a four-suit Spider deal and let the stored solution play. It ran to the end, which is the check that matters for a game that claims every deal can be won. Dragging now also works with touch, which I wanted for playing on a phone. I haven't yet confirmed it on a real phone.